feat: update to Vue3 (#2677)
* update packages for vue3 * fix make bundle and make checkbundle to include bundle-components * add lnbits/static/bundle-components.js --------- Co-authored-by: Pavol Rusnak <pavol@rusnak.io>
This commit is contained in:
parent
04aefc8077
commit
053ea20508
42 changed files with 17585 additions and 9612 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -35,6 +35,7 @@ __bundle__
|
||||||
coverage.xml
|
coverage.xml
|
||||||
node_modules
|
node_modules
|
||||||
lnbits/static/bundle.js
|
lnbits/static/bundle.js
|
||||||
|
lnbits/static/bundle-components.js
|
||||||
lnbits/static/bundle.css
|
lnbits/static/bundle.css
|
||||||
lnbits/static/bundle.min.js.old
|
lnbits/static/bundle.min.js.old
|
||||||
lnbits/static/bundle.min.css.old
|
lnbits/static/bundle.min.css.old
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
|
|
||||||
**/lnbits/static/vendor
|
**/lnbits/static/vendor
|
||||||
**/lnbits/static/bundle.*
|
**/lnbits/static/bundle.*
|
||||||
|
**/lnbits/static/bundle-components.*
|
||||||
**/lnbits/static/css/*
|
**/lnbits/static/css/*
|
||||||
|
|
||||||
flake.lock
|
flake.lock
|
||||||
|
|
|
||||||
11
Makefile
11
Makefile
|
|
@ -103,24 +103,21 @@ sass:
|
||||||
|
|
||||||
bundle:
|
bundle:
|
||||||
npm install
|
npm install
|
||||||
npm run sass
|
npm run bundle
|
||||||
npm run vendor_copy
|
|
||||||
npm run vendor_json
|
|
||||||
poetry run ./node_modules/.bin/prettier -w ./lnbits/static/vendor.json
|
poetry run ./node_modules/.bin/prettier -w ./lnbits/static/vendor.json
|
||||||
npm run vendor_bundle_css
|
|
||||||
npm run vendor_minify_css
|
|
||||||
npm run vendor_bundle_js
|
|
||||||
npm run vendor_minify_js
|
|
||||||
|
|
||||||
checkbundle:
|
checkbundle:
|
||||||
cp lnbits/static/bundle.min.js lnbits/static/bundle.min.js.old
|
cp lnbits/static/bundle.min.js lnbits/static/bundle.min.js.old
|
||||||
cp lnbits/static/bundle.min.css lnbits/static/bundle.min.css.old
|
cp lnbits/static/bundle.min.css lnbits/static/bundle.min.css.old
|
||||||
|
cp lnbits/static/bundle-components.min.js lnbits/static/bundle-components.min.js.old
|
||||||
make bundle
|
make bundle
|
||||||
diff -q lnbits/static/bundle.min.js lnbits/static/bundle.min.js.old || exit 1
|
diff -q lnbits/static/bundle.min.js lnbits/static/bundle.min.js.old || exit 1
|
||||||
diff -q lnbits/static/bundle.min.css lnbits/static/bundle.min.css.old || exit 1
|
diff -q lnbits/static/bundle.min.css lnbits/static/bundle.min.css.old || exit 1
|
||||||
|
diff -q lnbits/static/bundle-components.min.js lnbits/static/bundle-components.min.js.old || exit 1
|
||||||
@echo "Bundle is OK"
|
@echo "Bundle is OK"
|
||||||
rm lnbits/static/bundle.min.js.old
|
rm lnbits/static/bundle.min.js.old
|
||||||
rm lnbits/static/bundle.min.css.old
|
rm lnbits/static/bundle.min.css.old
|
||||||
|
rm lnbits/static/bundle-components.min.js.old
|
||||||
|
|
||||||
install-pre-commit-hook:
|
install-pre-commit-hook:
|
||||||
@echo "Installing pre-commit hook to git"
|
@echo "Installing pre-commit hook to git"
|
||||||
|
|
|
||||||
|
|
@ -901,7 +901,7 @@
|
||||||
</q-dialog>
|
</q-dialog>
|
||||||
{% endblock %} {% block scripts %} {{ window_vars(user) }}
|
{% endblock %} {% block scripts %} {{ window_vars(user) }}
|
||||||
<script>
|
<script>
|
||||||
new Vue({
|
window.app = Vue.createApp({
|
||||||
el: '#vue',
|
el: '#vue',
|
||||||
|
|
||||||
data: function () {
|
data: function () {
|
||||||
|
|
|
||||||
|
|
@ -154,10 +154,10 @@
|
||||||
<q-card>
|
<q-card>
|
||||||
<q-card-section class="text-center">
|
<q-card-section class="text-center">
|
||||||
<p v-text="$t('export_to_phone_desc')"></p>
|
<p v-text="$t('export_to_phone_desc')"></p>
|
||||||
<qrcode
|
<qrcode-vue
|
||||||
:value="'{{request.base_url}}wallet?usr={{user.id}}&wal={{wallet.id}}'"
|
:value="'{{request.base_url}}wallet?usr={{user.id}}&wal={{wallet.id}}'"
|
||||||
:options="{ width: 256 }"
|
:options="{ width: 256 }"
|
||||||
></qrcode>
|
></qrcode-vue>
|
||||||
</q-card-section>
|
</q-card-section>
|
||||||
<q-card-actions class="flex-center q-pb-md">
|
<q-card-actions class="flex-center q-pb-md">
|
||||||
<q-btn
|
<q-btn
|
||||||
|
|
|
||||||
|
|
@ -51,11 +51,11 @@
|
||||||
>
|
>
|
||||||
<a :href="'lightning:' + transactionDetailsDialog.data.bolt11">
|
<a :href="'lightning:' + transactionDetailsDialog.data.bolt11">
|
||||||
<q-responsive :ratio="1" class="q-mx-xl">
|
<q-responsive :ratio="1" class="q-mx-xl">
|
||||||
<qrcode
|
<qrcode-vue
|
||||||
:value="'lightning:' + transactionDetailsDialog.data.bolt11.toUpperCase()"
|
:value="'lightning:' + transactionDetailsDialog.data.bolt11.toUpperCase()"
|
||||||
:options="{width: 340}"
|
:options="{width: 340}"
|
||||||
class="rounded-borders"
|
class="rounded-borders"
|
||||||
></qrcode>
|
></qrcode-vue>
|
||||||
</q-responsive>
|
</q-responsive>
|
||||||
</a>
|
</a>
|
||||||
<q-btn
|
<q-btn
|
||||||
|
|
@ -138,11 +138,11 @@
|
||||||
>
|
>
|
||||||
<a :href="'lightning:' + props.row.bolt11">
|
<a :href="'lightning:' + props.row.bolt11">
|
||||||
<q-responsive :ratio="1" class="q-mx-xl">
|
<q-responsive :ratio="1" class="q-mx-xl">
|
||||||
<qrcode
|
<qrcode-vue
|
||||||
:value="'lightning:' + props.row.bolt11.toUpperCase()"
|
:value="'lightning:' + props.row.bolt11.toUpperCase()"
|
||||||
:options="{width: 340}"
|
:options="{width: 340}"
|
||||||
class="rounded-borders"
|
class="rounded-borders"
|
||||||
></qrcode>
|
></qrcode-vue>
|
||||||
</q-responsive>
|
</q-responsive>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,8 @@ include "users/_createWalletDialog.html" %}
|
||||||
</q-btn>
|
</q-btn>
|
||||||
</div>
|
</div>
|
||||||
<q-table
|
<q-table
|
||||||
:data="users"
|
row-key="id"
|
||||||
:row-key="usersTableRowKey"
|
:rows="users"
|
||||||
:columns="usersTable.columns"
|
:columns="usersTable.columns"
|
||||||
:pagination.sync="usersTable.pagination"
|
:pagination.sync="usersTable.pagination"
|
||||||
:no-data-label="$t('no_users')"
|
:no-data-label="$t('no_users')"
|
||||||
|
|
|
||||||
|
|
@ -100,12 +100,14 @@ def template_renderer(additional_folders: Optional[List] = None) -> Jinja2Templa
|
||||||
if settings.bundle_assets:
|
if settings.bundle_assets:
|
||||||
t.env.globals["INCLUDED_JS"] = ["bundle.min.js"]
|
t.env.globals["INCLUDED_JS"] = ["bundle.min.js"]
|
||||||
t.env.globals["INCLUDED_CSS"] = ["bundle.min.css"]
|
t.env.globals["INCLUDED_CSS"] = ["bundle.min.css"]
|
||||||
|
t.env.globals["INCLUDED_COMPONENTS"] = ["bundle-components.min.js"]
|
||||||
else:
|
else:
|
||||||
vendor_filepath = Path(settings.lnbits_path, "static", "vendor.json")
|
vendor_filepath = Path(settings.lnbits_path, "static", "vendor.json")
|
||||||
with open(vendor_filepath) as vendor_file:
|
with open(vendor_filepath) as vendor_file:
|
||||||
vendor_files = json.loads(vendor_file.read())
|
vendor_files = json.loads(vendor_file.read())
|
||||||
t.env.globals["INCLUDED_JS"] = vendor_files["js"]
|
t.env.globals["INCLUDED_JS"] = vendor_files["js"]
|
||||||
t.env.globals["INCLUDED_CSS"] = vendor_files["css"]
|
t.env.globals["INCLUDED_CSS"] = vendor_files["css"]
|
||||||
|
t.env.globals["INCLUDED_COMPONENTS"] = vendor_files["components"]
|
||||||
|
|
||||||
t.env.globals["WEBPUSH_PUBKEY"] = settings.lnbits_webpush_pubkey
|
t.env.globals["WEBPUSH_PUBKEY"] = settings.lnbits_webpush_pubkey
|
||||||
|
|
||||||
|
|
|
||||||
1
lnbits/static/bundle-components.min.js
vendored
Normal file
1
lnbits/static/bundle-components.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
lnbits/static/bundle.min.css
vendored
2
lnbits/static/bundle.min.css
vendored
File diff suppressed because one or more lines are too long
78
lnbits/static/bundle.min.js
vendored
78
lnbits/static/bundle.min.js
vendored
File diff suppressed because one or more lines are too long
|
|
@ -1,6 +1,6 @@
|
||||||
new Vue({
|
window.app = Vue.createApp({
|
||||||
el: '#vue',
|
el: '#vue',
|
||||||
mixins: [windowMixin],
|
mixins: [window.windowMixin],
|
||||||
data: function () {
|
data: function () {
|
||||||
return {
|
return {
|
||||||
user: null,
|
user: null,
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
new Vue({
|
window.app = Vue.createApp({
|
||||||
el: '#vue',
|
el: '#vue',
|
||||||
mixins: [windowMixin],
|
mixins: [windowMixin],
|
||||||
data: function () {
|
data: function () {
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,10 @@
|
||||||
/* globals crypto, moment, Vue, axios, Quasar, _ */
|
|
||||||
|
|
||||||
Vue.use(VueI18n)
|
|
||||||
|
|
||||||
window.LOCALE = 'en'
|
window.LOCALE = 'en'
|
||||||
window.i18n = new VueI18n({
|
window.i18n = new VueI18n.createI18n({
|
||||||
locale: window.LOCALE,
|
locale: window.LOCALE,
|
||||||
fallbackLocale: window.LOCALE,
|
fallbackLocale: window.LOCALE,
|
||||||
messages: window.localisation
|
messages: window.localisation
|
||||||
})
|
})
|
||||||
|
|
||||||
window.EventHub = new Vue()
|
|
||||||
window.LNbits = {
|
window.LNbits = {
|
||||||
api: {
|
api: {
|
||||||
request: function (method, url, apiKey, data) {
|
request: function (method, url, apiKey, data) {
|
||||||
|
|
@ -264,12 +259,12 @@ window.LNbits = {
|
||||||
fiat_currency: data.fiat_currency
|
fiat_currency: data.fiat_currency
|
||||||
}
|
}
|
||||||
|
|
||||||
obj.date = Quasar.utils.date.formatDate(
|
obj.date = Quasar.date.formatDate(
|
||||||
new Date(obj.time * 1000),
|
new Date(obj.time * 1000),
|
||||||
'YYYY-MM-DD HH:mm'
|
'YYYY-MM-DD HH:mm'
|
||||||
)
|
)
|
||||||
obj.dateFrom = moment(obj.date).fromNow()
|
obj.dateFrom = moment(obj.date).fromNow()
|
||||||
obj.expirydate = Quasar.utils.date.formatDate(
|
obj.expirydate = Quasar.date.formatDate(
|
||||||
new Date(obj.expiry * 1000),
|
new Date(obj.expiry * 1000),
|
||||||
'YYYY-MM-DD HH:mm'
|
'YYYY-MM-DD HH:mm'
|
||||||
)
|
)
|
||||||
|
|
@ -294,7 +289,7 @@ window.LNbits = {
|
||||||
},
|
},
|
||||||
utils: {
|
utils: {
|
||||||
confirmDialog: function (msg) {
|
confirmDialog: function (msg) {
|
||||||
return Quasar.plugins.Dialog.create({
|
return Quasar.Dialog.create({
|
||||||
message: msg,
|
message: msg,
|
||||||
ok: {
|
ok: {
|
||||||
flat: true,
|
flat: true,
|
||||||
|
|
@ -411,14 +406,14 @@ window.LNbits = {
|
||||||
)
|
)
|
||||||
.join('\r\n')
|
.join('\r\n')
|
||||||
|
|
||||||
var status = Quasar.utils.exportFile(
|
var status = Quasar.exportFile(
|
||||||
`${fileName || 'table-export'}.csv`,
|
`${fileName || 'table-export'}.csv`,
|
||||||
content,
|
content,
|
||||||
'text/csv'
|
'text/csv'
|
||||||
)
|
)
|
||||||
|
|
||||||
if (status !== true) {
|
if (status !== true) {
|
||||||
Quasar.plugins.Notify.create({
|
Quasar.Notify.create({
|
||||||
message: 'Browser denied file download...',
|
message: 'Browser denied file download...',
|
||||||
color: 'negative',
|
color: 'negative',
|
||||||
icon: null
|
icon: null
|
||||||
|
|
@ -432,16 +427,16 @@ window.LNbits = {
|
||||||
return converter.makeHtml(text)
|
return converter.makeHtml(text)
|
||||||
},
|
},
|
||||||
hexToRgb: function (hex) {
|
hexToRgb: function (hex) {
|
||||||
return Quasar.utils.colors.hexToRgb(hex)
|
return Quasar.colors.hexToRgb(hex)
|
||||||
},
|
},
|
||||||
hexDarken: function (hex, percent) {
|
hexDarken: function (hex, percent) {
|
||||||
return Quasar.utils.colors.lighten(hex, percent)
|
return Quasar.colors.lighten(hex, percent)
|
||||||
},
|
},
|
||||||
hexAlpha: function (hex, alpha) {
|
hexAlpha: function (hex, alpha) {
|
||||||
return Quasar.utils.colors.changeAlpha(hex, alpha)
|
return Quasar.colors.changeAlpha(hex, alpha)
|
||||||
},
|
},
|
||||||
getPaletteColor: function (color) {
|
getPaletteColor: function (color) {
|
||||||
return Quasar.utils.colors.getPaletteColor(color)
|
return Quasar.colors.getPaletteColor(color)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -494,7 +489,7 @@ window.windowMixin = {
|
||||||
},
|
},
|
||||||
copyText: function (text, message, position) {
|
copyText: function (text, message, position) {
|
||||||
var notify = this.$q.notify
|
var notify = this.$q.notify
|
||||||
Quasar.utils.copyToClipboard(text).then(function () {
|
Quasar.copyToClipboard(text).then(function () {
|
||||||
notify({
|
notify({
|
||||||
message: message || 'Copied to clipboard!',
|
message: message || 'Copied to clipboard!',
|
||||||
position: position || 'bottom'
|
position: position || 'bottom'
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
/* global _, Vue, moment, LNbits, EventHub, decryptLnurlPayAES */
|
window.app.component(QrcodeVue)
|
||||||
|
|
||||||
Vue.component('lnbits-fsat', {
|
window.app.component('lnbits-fsat', {
|
||||||
props: {
|
props: {
|
||||||
amount: {
|
amount: {
|
||||||
type: Number,
|
type: Number,
|
||||||
|
|
@ -15,12 +15,13 @@ Vue.component('lnbits-fsat', {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
Vue.component('lnbits-wallet-list', {
|
window.app.component('lnbits-wallet-list', {
|
||||||
|
props: ['balance'],
|
||||||
data: function () {
|
data: function () {
|
||||||
return {
|
return {
|
||||||
user: null,
|
user: null,
|
||||||
activeWallet: null,
|
activeWallet: null,
|
||||||
activeBalance: [],
|
balance: 0,
|
||||||
showForm: false,
|
showForm: false,
|
||||||
walletName: '',
|
walletName: '',
|
||||||
LNBITS_DENOMINATION: LNBITS_DENOMINATION
|
LNBITS_DENOMINATION: LNBITS_DENOMINATION
|
||||||
|
|
@ -74,7 +75,7 @@ Vue.component('lnbits-wallet-list', {
|
||||||
`,
|
`,
|
||||||
computed: {
|
computed: {
|
||||||
wallets: function () {
|
wallets: function () {
|
||||||
var bal = this.activeBalance
|
var bal = this.balance
|
||||||
return this.user.wallets.map(function (obj) {
|
return this.user.wallets.map(function (obj) {
|
||||||
obj.live_fsat =
|
obj.live_fsat =
|
||||||
bal.length && bal[0] === obj.id
|
bal.length && bal[0] === obj.id
|
||||||
|
|
@ -87,9 +88,6 @@ Vue.component('lnbits-wallet-list', {
|
||||||
methods: {
|
methods: {
|
||||||
createWallet: function () {
|
createWallet: function () {
|
||||||
LNbits.api.createWallet(this.user.wallets[0], this.walletName)
|
LNbits.api.createWallet(this.user.wallets[0], this.walletName)
|
||||||
},
|
|
||||||
updateWalletBalance: function (payload) {
|
|
||||||
this.activeBalance = payload
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created: function () {
|
created: function () {
|
||||||
|
|
@ -99,11 +97,11 @@ Vue.component('lnbits-wallet-list', {
|
||||||
if (window.wallet) {
|
if (window.wallet) {
|
||||||
this.activeWallet = LNbits.map.wallet(window.wallet)
|
this.activeWallet = LNbits.map.wallet(window.wallet)
|
||||||
}
|
}
|
||||||
EventHub.$on('update-wallet-balance', this.updateWalletBalance)
|
document.addEventListener('updateWalletBalance', this.updateWalletBalance)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
Vue.component('lnbits-extension-list', {
|
window.app.component('lnbits-extension-list', {
|
||||||
data: function () {
|
data: function () {
|
||||||
return {
|
return {
|
||||||
extensions: [],
|
extensions: [],
|
||||||
|
|
@ -169,7 +167,7 @@ Vue.component('lnbits-extension-list', {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
Vue.component('lnbits-manage', {
|
window.app.component('lnbits-manage', {
|
||||||
props: ['showAdmin', 'showNode', 'showExtensions', 'showUsers'],
|
props: ['showAdmin', 'showNode', 'showExtensions', 'showUsers'],
|
||||||
methods: {
|
methods: {
|
||||||
isActive: function (path) {
|
isActive: function (path) {
|
||||||
|
|
@ -229,9 +227,9 @@ Vue.component('lnbits-manage', {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
Vue.component('lnbits-payment-details', {
|
window.app.component('lnbits-payment-details', {
|
||||||
props: ['payment'],
|
props: ['payment'],
|
||||||
mixins: [windowMixin],
|
mixins: [window.windowMixin],
|
||||||
data: function () {
|
data: function () {
|
||||||
return {
|
return {
|
||||||
LNBITS_DENOMINATION: LNBITS_DENOMINATION
|
LNBITS_DENOMINATION: LNBITS_DENOMINATION
|
||||||
|
|
@ -345,7 +343,7 @@ Vue.component('lnbits-payment-details', {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
Vue.component('lnbits-lnurlpay-success-action', {
|
window.app.component('lnbits-lnurlpay-success-action', {
|
||||||
props: ['payment', 'success_action'],
|
props: ['payment', 'success_action'],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
@ -374,10 +372,12 @@ Vue.component('lnbits-lnurlpay-success-action', {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
Vue.component('lnbits-qrcode', {
|
window.app.component('lnbits-qrcode', {
|
||||||
mixins: [windowMixin],
|
mixins: [window.windowMixin],
|
||||||
|
components: {
|
||||||
|
QrcodeVue
|
||||||
|
},
|
||||||
props: ['value'],
|
props: ['value'],
|
||||||
components: {[VueQrcode.name]: VueQrcode},
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
logo: LNBITS_QR_LOGO
|
logo: LNBITS_QR_LOGO
|
||||||
|
|
@ -385,15 +385,14 @@ Vue.component('lnbits-qrcode', {
|
||||||
},
|
},
|
||||||
template: `
|
template: `
|
||||||
<div class="qrcode__wrapper">
|
<div class="qrcode__wrapper">
|
||||||
<qrcode :value="value"
|
<qrcode-vue :value="value" size="350" class="rounded-borders"></qrcode-vue>
|
||||||
:options="{errorCorrectionLevel: 'Q', width: 800}" class="rounded-borders"></qrcode>
|
|
||||||
<img class="qrcode__image" :src="logo" alt="..." />
|
<img class="qrcode__image" :src="logo" alt="..." />
|
||||||
</div>
|
</div>
|
||||||
`
|
`
|
||||||
})
|
})
|
||||||
|
|
||||||
Vue.component('lnbits-notifications-btn', {
|
window.app.component('lnbits-notifications-btn', {
|
||||||
mixins: [windowMixin],
|
mixins: [window.windowMixin],
|
||||||
props: ['pubkey'],
|
props: ['pubkey'],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
@ -605,8 +604,8 @@ Vue.component('lnbits-notifications-btn', {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
Vue.component('lnbits-dynamic-fields', {
|
window.app.component('lnbits-dynamic-fields', {
|
||||||
mixins: [windowMixin],
|
mixins: [window.windowMixin],
|
||||||
props: ['options', 'value'],
|
props: ['options', 'value'],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
@ -742,8 +741,8 @@ Vue.component('lnbits-dynamic-fields', {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
Vue.component('lnbits-update-balance', {
|
window.app.component('lnbits-update-balance', {
|
||||||
mixins: [windowMixin],
|
mixins: [window.windowMixin],
|
||||||
props: ['wallet_id', 'callback'],
|
props: ['wallet_id', 'callback'],
|
||||||
computed: {
|
computed: {
|
||||||
denomination() {
|
denomination() {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
Vue.component('lnbits-extension-rating', {
|
window.app.component('lnbits-extension-rating', {
|
||||||
name: 'lnbits-extension-rating',
|
name: 'lnbits-extension-rating',
|
||||||
props: ['rating'],
|
props: ['rating'],
|
||||||
template: `
|
template: `
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
Vue.component('lnbits-extension-settings-form', {
|
window.app.component('lnbits-extension-settings-form', {
|
||||||
name: 'lnbits-extension-settings-form',
|
name: 'lnbits-extension-settings-form',
|
||||||
props: ['options', 'adminkey', 'endpoint'],
|
props: ['options', 'adminkey', 'endpoint'],
|
||||||
methods: {
|
methods: {
|
||||||
updateSettings: async function () {
|
async updateSettings() {
|
||||||
if (!this.settings) {
|
if (!this.settings) {
|
||||||
return Quasar.plugins.Notify.create({
|
return this.$q.notify({
|
||||||
message: 'No settings to update',
|
message: 'No settings to update',
|
||||||
type: 'negative'
|
type: 'negative'
|
||||||
})
|
})
|
||||||
|
|
@ -66,7 +66,7 @@ Vue.component('lnbits-extension-settings-form', {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
Vue.component('lnbits-extension-settings-btn-dialog', {
|
window.app.component('lnbits-extension-settings-btn-dialog', {
|
||||||
name: 'lnbits-extension-settings-btn-dialog',
|
name: 'lnbits-extension-settings-btn-dialog',
|
||||||
props: ['options', 'adminkey', 'endpoint'],
|
props: ['options', 'adminkey', 'endpoint'],
|
||||||
template: `
|
template: `
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
Vue.component('lnbits-funding-sources', {
|
window.app.component('lnbits-funding-sources', {
|
||||||
mixins: [windowMixin],
|
mixins: [window.windowMixin],
|
||||||
props: ['form-data', 'allowed-funding-sources'],
|
props: ['form-data', 'allowed-funding-sources'],
|
||||||
methods: {
|
methods: {
|
||||||
getFundingSourceLabel(item) {
|
getFundingSourceLabel(item) {
|
||||||
|
|
|
||||||
|
|
@ -80,10 +80,10 @@ function generateChart(canvas, rawData) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
Vue.component('payment-chart', {
|
window.app.component('payment-chart', {
|
||||||
name: 'payment-chart',
|
name: 'payment-chart',
|
||||||
props: ['wallet'],
|
props: ['wallet'],
|
||||||
mixins: [windowMixin],
|
mixins: [window.windowMixin],
|
||||||
data: function () {
|
data: function () {
|
||||||
return {
|
return {
|
||||||
paymentsChart: {
|
paymentsChart: {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
Vue.component('payment-list', {
|
window.app.component('payment-list', {
|
||||||
name: 'payment-list',
|
name: 'payment-list',
|
||||||
props: ['update', 'wallet', 'mobileSimple', 'lazy'],
|
props: ['update', 'wallet', 'mobileSimple', 'lazy'],
|
||||||
mixins: [windowMixin],
|
mixins: [window.windowMixin],
|
||||||
data: function () {
|
data: function () {
|
||||||
return {
|
return {
|
||||||
denomination: LNBITS_DENOMINATION,
|
denomination: LNBITS_DENOMINATION,
|
||||||
|
|
@ -313,7 +313,7 @@ Vue.component('payment-list', {
|
||||||
<q-table
|
<q-table
|
||||||
dense
|
dense
|
||||||
flat
|
flat
|
||||||
:data="paymentsOmitter"
|
:rows="paymentsOmitter"
|
||||||
:row-key="paymentTableRowKey"
|
:row-key="paymentTableRowKey"
|
||||||
:columns="paymentsTable.columns"
|
:columns="paymentsTable.columns"
|
||||||
:pagination.sync="paymentsTable.pagination"
|
:pagination.sync="paymentsTable.pagination"
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
new Vue({
|
window.app = Vue.createApp({
|
||||||
el: '#vue',
|
el: '#vue',
|
||||||
mixins: [windowMixin],
|
mixins: [window.windowMixin],
|
||||||
data: function () {
|
data: function () {
|
||||||
return {
|
return {
|
||||||
disclaimerDialog: {
|
disclaimerDialog: {
|
||||||
|
|
@ -93,7 +93,6 @@ new Vue({
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.description = SITE_DESCRIPTION
|
this.description = SITE_DESCRIPTION
|
||||||
|
|
||||||
this.isUserAuthorized = !!this.$q.cookies.get('is_lnbits_user_authorized')
|
this.isUserAuthorized = !!this.$q.cookies.get('is_lnbits_user_authorized')
|
||||||
if (this.isUserAuthorized) {
|
if (this.isUserAuthorized) {
|
||||||
window.location.href = '/wallet'
|
window.location.href = '/wallet'
|
||||||
|
|
|
||||||
4
lnbits/static/js/init-app.js
Normal file
4
lnbits/static/js/init-app.js
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
window.app.use(VueQrcodeReader)
|
||||||
|
window.app.use(Quasar)
|
||||||
|
window.app.use(window.i18n)
|
||||||
|
window.app.mount('#vue')
|
||||||
|
|
@ -4,7 +4,7 @@ function shortenNodeId(nodeId) {
|
||||||
: '...'
|
: '...'
|
||||||
}
|
}
|
||||||
|
|
||||||
Vue.component('lnbits-node-ranks', {
|
window.app.component('lnbits-node-ranks', {
|
||||||
props: ['ranks'],
|
props: ['ranks'],
|
||||||
data: function () {
|
data: function () {
|
||||||
return {
|
return {
|
||||||
|
|
@ -35,7 +35,7 @@ Vue.component('lnbits-node-ranks', {
|
||||||
`
|
`
|
||||||
})
|
})
|
||||||
|
|
||||||
Vue.component('lnbits-channel-stats', {
|
window.app.component('lnbits-channel-stats', {
|
||||||
props: ['stats'],
|
props: ['stats'],
|
||||||
data: function () {
|
data: function () {
|
||||||
return {
|
return {
|
||||||
|
|
@ -71,7 +71,7 @@ Vue.component('lnbits-channel-stats', {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
Vue.component('lnbits-stat', {
|
window.app.component('lnbits-stat', {
|
||||||
props: ['title', 'amount', 'msat', 'btc'],
|
props: ['title', 'amount', 'msat', 'btc'],
|
||||||
computed: {
|
computed: {
|
||||||
value: function () {
|
value: function () {
|
||||||
|
|
@ -99,20 +99,20 @@ Vue.component('lnbits-stat', {
|
||||||
`
|
`
|
||||||
})
|
})
|
||||||
|
|
||||||
Vue.component('lnbits-node-qrcode', {
|
window.app.component('lnbits-node-qrcode', {
|
||||||
props: ['info'],
|
props: ['info'],
|
||||||
mixins: [windowMixin],
|
mixins: [window.windowMixin],
|
||||||
template: `
|
template: `
|
||||||
<q-card class="my-card">
|
<q-card class="my-card">
|
||||||
<q-card-section>
|
<q-card-section>
|
||||||
<div class="text-h6">
|
<div class="text-h6">
|
||||||
<div style="text-align: center">
|
<div style="text-align: center">
|
||||||
<qrcode
|
<vue-qrcode
|
||||||
:value="info.addresses[0]"
|
:value="info.addresses[0]"
|
||||||
:options="{width: 250}"
|
:options="{width: 250}"
|
||||||
v-if='info.addresses[0]'
|
v-if='info.addresses[0]'
|
||||||
class="rounded-borders"
|
class="rounded-borders"
|
||||||
></qrcode>
|
></vue-qrcode>
|
||||||
<div v-else class='text-subtitle1'>
|
<div v-else class='text-subtitle1'>
|
||||||
No addresses available
|
No addresses available
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -132,14 +132,14 @@ Vue.component('lnbits-node-qrcode', {
|
||||||
`
|
`
|
||||||
})
|
})
|
||||||
|
|
||||||
Vue.component('lnbits-node-info', {
|
window.app.component('lnbits-node-info', {
|
||||||
props: ['info'],
|
props: ['info'],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
showDialog: false
|
showDialog: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mixins: [windowMixin],
|
mixins: [window.windowMixin],
|
||||||
methods: {
|
methods: {
|
||||||
shortenNodeId
|
shortenNodeId
|
||||||
},
|
},
|
||||||
|
|
@ -177,7 +177,7 @@ Vue.component('lnbits-node-info', {
|
||||||
`
|
`
|
||||||
})
|
})
|
||||||
|
|
||||||
Vue.component('lnbits-stat', {
|
window.app.component('lnbits-stat', {
|
||||||
props: ['title', 'amount', 'msat', 'btc'],
|
props: ['title', 'amount', 'msat', 'btc'],
|
||||||
computed: {
|
computed: {
|
||||||
value: function () {
|
value: function () {
|
||||||
|
|
@ -205,7 +205,7 @@ Vue.component('lnbits-stat', {
|
||||||
`
|
`
|
||||||
})
|
})
|
||||||
|
|
||||||
Vue.component('lnbits-channel-balance', {
|
window.app.component('lnbits-channel-balance', {
|
||||||
props: ['balance', 'color'],
|
props: ['balance', 'color'],
|
||||||
methods: {
|
methods: {
|
||||||
formatMsat: function (msat) {
|
formatMsat: function (msat) {
|
||||||
|
|
@ -246,7 +246,7 @@ Vue.component('lnbits-channel-balance', {
|
||||||
`
|
`
|
||||||
})
|
})
|
||||||
|
|
||||||
Vue.component('lnbits-date', {
|
window.app.component('lnbits-date', {
|
||||||
props: ['ts'],
|
props: ['ts'],
|
||||||
computed: {
|
computed: {
|
||||||
date: function () {
|
date: function () {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
new Vue({
|
window.app = Vue.createApp({
|
||||||
el: '#vue',
|
el: '#vue',
|
||||||
mixins: [windowMixin],
|
mixins: [window.windowMixin],
|
||||||
data: function () {
|
data: function () {
|
||||||
return {
|
return {
|
||||||
isSuperUser: false,
|
isSuperUser: false,
|
||||||
|
|
@ -218,9 +218,6 @@ new Vue({
|
||||||
formatSat: function (value) {
|
formatSat: function (value) {
|
||||||
return LNbits.utils.formatSat(Math.floor(value / 1000))
|
return LNbits.utils.formatSat(Math.floor(value / 1000))
|
||||||
},
|
},
|
||||||
usersTableRowKey: function (row) {
|
|
||||||
return row.id
|
|
||||||
},
|
|
||||||
createUser() {
|
createUser() {
|
||||||
LNbits.api
|
LNbits.api
|
||||||
.request('POST', '/users/api/v1/user', null, this.createUserDialog.data)
|
.request('POST', '/users/api/v1/user', null, this.createUserDialog.data)
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,6 @@
|
||||||
/* globals windowMixin, decode, Vue, VueQrcodeReader, VueQrcode, Quasar, LNbits, _, EventHub, decryptLnurlPayAES */
|
window.app = Vue.createApp({
|
||||||
|
|
||||||
Vue.component(VueQrcode.name, VueQrcode)
|
|
||||||
Vue.use(VueQrcodeReader)
|
|
||||||
|
|
||||||
new Vue({
|
|
||||||
el: '#vue',
|
el: '#vue',
|
||||||
mixins: [windowMixin],
|
mixins: [window.windowMixin],
|
||||||
data: function () {
|
data: function () {
|
||||||
return {
|
return {
|
||||||
updatePayments: false,
|
updatePayments: false,
|
||||||
|
|
@ -321,7 +316,7 @@ new Vue({
|
||||||
var expireDate = new Date(
|
var expireDate = new Date(
|
||||||
(invoice.data.time_stamp + tag.value) * 1000
|
(invoice.data.time_stamp + tag.value) * 1000
|
||||||
)
|
)
|
||||||
cleanInvoice.expireDate = Quasar.utils.date.formatDate(
|
cleanInvoice.expireDate = this.$q.utils.date.formatDate(
|
||||||
expireDate,
|
expireDate,
|
||||||
'YYYY-MM-DDTHH:mm:ss.SSSZ'
|
'YYYY-MM-DDTHH:mm:ss.SSSZ'
|
||||||
)
|
)
|
||||||
|
|
@ -514,10 +509,11 @@ new Vue({
|
||||||
fetchBalance: function () {
|
fetchBalance: function () {
|
||||||
LNbits.api.getWallet(this.g.wallet).then(response => {
|
LNbits.api.getWallet(this.g.wallet).then(response => {
|
||||||
this.balance = Math.floor(response.data.balance / 1000)
|
this.balance = Math.floor(response.data.balance / 1000)
|
||||||
EventHub.$emit('update-wallet-balance', [
|
document.dispatchEvent(
|
||||||
this.g.wallet.id,
|
new CustomEvent('updateWalletBalance', {
|
||||||
this.balance
|
detail: [this.g.wallet.id, this.balance]
|
||||||
])
|
})
|
||||||
|
)
|
||||||
})
|
})
|
||||||
if (this.g.wallet.currency) {
|
if (this.g.wallet.currency) {
|
||||||
this.updateFiatBalance()
|
this.updateFiatBalance()
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,14 @@
|
||||||
"vendor/moment.js",
|
"vendor/moment.js",
|
||||||
"vendor/underscore.js",
|
"vendor/underscore.js",
|
||||||
"vendor/axios.js",
|
"vendor/axios.js",
|
||||||
"vendor/vue.js",
|
"vendor/vue.global.prod.js",
|
||||||
"vendor/vue-router.js",
|
"vendor/quasar.umd.prod.js",
|
||||||
"vendor/VueQrcodeReader.umd.js",
|
"vendor/vuex.global.js",
|
||||||
"vendor/vue-qrcode.js",
|
"vendor/vue-i18n.global.prod.js",
|
||||||
"vendor/vuex.js",
|
"vendor/vue-router.global.js",
|
||||||
"vendor/quasar.ie.polyfills.umd.min.js",
|
"vendor/vue-qrcode-reader.umd.js",
|
||||||
"vendor/quasar.umd.js",
|
"vendor/qrcode.vue.browser.js",
|
||||||
"vendor/Chart.bundle.js",
|
"vendor/chart.umd.js",
|
||||||
"vendor/vue-i18n.js",
|
|
||||||
"vendor/showdown.js",
|
"vendor/showdown.js",
|
||||||
"i18n/i18n.js",
|
"i18n/i18n.js",
|
||||||
"i18n/de.js",
|
"i18n/de.js",
|
||||||
|
|
@ -34,14 +33,17 @@
|
||||||
"i18n/kr.js",
|
"i18n/kr.js",
|
||||||
"i18n/fi.js",
|
"i18n/fi.js",
|
||||||
"js/base.js",
|
"js/base.js",
|
||||||
"js/components.js",
|
"js/event-reactions.js",
|
||||||
|
"js/bolt11-decoder.js"
|
||||||
|
],
|
||||||
|
"components": [
|
||||||
"js/components/lnbits-funding-sources.js",
|
"js/components/lnbits-funding-sources.js",
|
||||||
"js/components/extension-settings.js",
|
"js/components/extension-settings.js",
|
||||||
"js/components/extension-rating.js",
|
"js/components/extension-rating.js",
|
||||||
"js/components/payment-list.js",
|
"js/components/payment-list.js",
|
||||||
"js/components/payment-chart.js",
|
"js/components/payment-chart.js",
|
||||||
"js/event-reactions.js",
|
"js/components.js",
|
||||||
"js/bolt11-decoder.js"
|
"js/init-app.js"
|
||||||
],
|
],
|
||||||
"css": ["vendor/quasar.css", "vendor/Chart.css", "css/base.css"]
|
"css": ["vendor/quasar.css", "css/base.css"]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
310
lnbits/static/vendor/axios.js
vendored
310
lnbits/static/vendor/axios.js
vendored
|
|
@ -1,4 +1,4 @@
|
||||||
// Axios v1.7.5 Copyright (c) 2024 Matt Zabriskie and contributors
|
// Axios v1.7.7 Copyright (c) 2024 Matt Zabriskie and contributors
|
||||||
(function (global, factory) {
|
(function (global, factory) {
|
||||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||||
typeof define === 'function' && define.amd ? define(factory) :
|
typeof define === 'function' && define.amd ? define(factory) :
|
||||||
|
|
@ -3093,38 +3093,42 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
var composeSignals = function composeSignals(signals, timeout) {
|
var composeSignals = function composeSignals(signals, timeout) {
|
||||||
var controller = new AbortController();
|
var _signals = signals = signals ? signals.filter(Boolean) : [],
|
||||||
var aborted;
|
length = _signals.length;
|
||||||
var onabort = function onabort(cancel) {
|
if (timeout || length) {
|
||||||
if (!aborted) {
|
var controller = new AbortController();
|
||||||
aborted = true;
|
var aborted;
|
||||||
unsubscribe();
|
var onabort = function onabort(reason) {
|
||||||
var err = cancel instanceof Error ? cancel : this.reason;
|
if (!aborted) {
|
||||||
controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));
|
aborted = true;
|
||||||
}
|
unsubscribe();
|
||||||
};
|
var err = reason instanceof Error ? reason : this.reason;
|
||||||
var timer = timeout && setTimeout(function () {
|
controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));
|
||||||
onabort(new AxiosError("timeout ".concat(timeout, " of ms exceeded"), AxiosError.ETIMEDOUT));
|
}
|
||||||
}, timeout);
|
};
|
||||||
var unsubscribe = function unsubscribe() {
|
var timer = timeout && setTimeout(function () {
|
||||||
if (signals) {
|
|
||||||
timer && clearTimeout(timer);
|
|
||||||
timer = null;
|
timer = null;
|
||||||
signals.forEach(function (signal) {
|
onabort(new AxiosError("timeout ".concat(timeout, " of ms exceeded"), AxiosError.ETIMEDOUT));
|
||||||
signal && (signal.removeEventListener ? signal.removeEventListener('abort', onabort) : signal.unsubscribe(onabort));
|
}, timeout);
|
||||||
});
|
var unsubscribe = function unsubscribe() {
|
||||||
signals = null;
|
if (signals) {
|
||||||
}
|
timer && clearTimeout(timer);
|
||||||
};
|
timer = null;
|
||||||
signals.forEach(function (signal) {
|
signals.forEach(function (signal) {
|
||||||
return signal && signal.addEventListener && signal.addEventListener('abort', onabort);
|
signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);
|
||||||
});
|
});
|
||||||
var signal = controller.signal;
|
signals = null;
|
||||||
signal.unsubscribe = unsubscribe;
|
}
|
||||||
return [signal, function () {
|
};
|
||||||
timer && clearTimeout(timer);
|
signals.forEach(function (signal) {
|
||||||
timer = null;
|
return signal.addEventListener('abort', onabort);
|
||||||
}];
|
});
|
||||||
|
var signal = controller.signal;
|
||||||
|
signal.unsubscribe = function () {
|
||||||
|
return utils$1.asap(unsubscribe);
|
||||||
|
};
|
||||||
|
return signal;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
var composeSignals$1 = composeSignals;
|
var composeSignals$1 = composeSignals;
|
||||||
|
|
||||||
|
|
@ -3163,7 +3167,7 @@
|
||||||
}, streamChunk);
|
}, streamChunk);
|
||||||
});
|
});
|
||||||
var readBytes = /*#__PURE__*/function () {
|
var readBytes = /*#__PURE__*/function () {
|
||||||
var _ref = _wrapAsyncGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(iterable, chunkSize, encode) {
|
var _ref = _wrapAsyncGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(iterable, chunkSize) {
|
||||||
var _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, chunk;
|
var _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, chunk;
|
||||||
return _regeneratorRuntime().wrap(function _callee$(_context2) {
|
return _regeneratorRuntime().wrap(function _callee$(_context2) {
|
||||||
while (1) switch (_context2.prev = _context2.next) {
|
while (1) switch (_context2.prev = _context2.next) {
|
||||||
|
|
@ -3171,82 +3175,111 @@
|
||||||
_iteratorAbruptCompletion = false;
|
_iteratorAbruptCompletion = false;
|
||||||
_didIteratorError = false;
|
_didIteratorError = false;
|
||||||
_context2.prev = 2;
|
_context2.prev = 2;
|
||||||
_iterator = _asyncIterator(iterable);
|
_iterator = _asyncIterator(readStream(iterable));
|
||||||
case 4:
|
case 4:
|
||||||
_context2.next = 6;
|
_context2.next = 6;
|
||||||
return _awaitAsyncGenerator(_iterator.next());
|
return _awaitAsyncGenerator(_iterator.next());
|
||||||
case 6:
|
case 6:
|
||||||
if (!(_iteratorAbruptCompletion = !(_step = _context2.sent).done)) {
|
if (!(_iteratorAbruptCompletion = !(_step = _context2.sent).done)) {
|
||||||
_context2.next = 27;
|
_context2.next = 12;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
chunk = _step.value;
|
chunk = _step.value;
|
||||||
_context2.t0 = _asyncGeneratorDelegate;
|
return _context2.delegateYield(_asyncGeneratorDelegate(_asyncIterator(streamChunk(chunk, chunkSize))), "t0", 9);
|
||||||
_context2.t1 = _asyncIterator;
|
case 9:
|
||||||
_context2.t2 = streamChunk;
|
|
||||||
if (!ArrayBuffer.isView(chunk)) {
|
|
||||||
_context2.next = 15;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
_context2.t3 = chunk;
|
|
||||||
_context2.next = 18;
|
|
||||||
break;
|
|
||||||
case 15:
|
|
||||||
_context2.next = 17;
|
|
||||||
return _awaitAsyncGenerator(encode(String(chunk)));
|
|
||||||
case 17:
|
|
||||||
_context2.t3 = _context2.sent;
|
|
||||||
case 18:
|
|
||||||
_context2.t4 = _context2.t3;
|
|
||||||
_context2.t5 = chunkSize;
|
|
||||||
_context2.t6 = (0, _context2.t2)(_context2.t4, _context2.t5);
|
|
||||||
_context2.t7 = (0, _context2.t1)(_context2.t6);
|
|
||||||
_context2.t8 = _awaitAsyncGenerator;
|
|
||||||
return _context2.delegateYield((0, _context2.t0)(_context2.t7, _context2.t8), "t9", 24);
|
|
||||||
case 24:
|
|
||||||
_iteratorAbruptCompletion = false;
|
_iteratorAbruptCompletion = false;
|
||||||
_context2.next = 4;
|
_context2.next = 4;
|
||||||
break;
|
break;
|
||||||
case 27:
|
case 12:
|
||||||
_context2.next = 33;
|
_context2.next = 18;
|
||||||
break;
|
break;
|
||||||
case 29:
|
case 14:
|
||||||
_context2.prev = 29;
|
_context2.prev = 14;
|
||||||
_context2.t10 = _context2["catch"](2);
|
_context2.t1 = _context2["catch"](2);
|
||||||
_didIteratorError = true;
|
_didIteratorError = true;
|
||||||
_iteratorError = _context2.t10;
|
_iteratorError = _context2.t1;
|
||||||
case 33:
|
case 18:
|
||||||
_context2.prev = 33;
|
_context2.prev = 18;
|
||||||
_context2.prev = 34;
|
_context2.prev = 19;
|
||||||
if (!(_iteratorAbruptCompletion && _iterator["return"] != null)) {
|
if (!(_iteratorAbruptCompletion && _iterator["return"] != null)) {
|
||||||
_context2.next = 38;
|
_context2.next = 23;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
_context2.next = 38;
|
_context2.next = 23;
|
||||||
return _awaitAsyncGenerator(_iterator["return"]());
|
return _awaitAsyncGenerator(_iterator["return"]());
|
||||||
case 38:
|
case 23:
|
||||||
_context2.prev = 38;
|
_context2.prev = 23;
|
||||||
if (!_didIteratorError) {
|
if (!_didIteratorError) {
|
||||||
_context2.next = 41;
|
_context2.next = 26;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
throw _iteratorError;
|
throw _iteratorError;
|
||||||
case 41:
|
case 26:
|
||||||
return _context2.finish(38);
|
return _context2.finish(23);
|
||||||
case 42:
|
case 27:
|
||||||
return _context2.finish(33);
|
return _context2.finish(18);
|
||||||
case 43:
|
case 28:
|
||||||
case "end":
|
case "end":
|
||||||
return _context2.stop();
|
return _context2.stop();
|
||||||
}
|
}
|
||||||
}, _callee, null, [[2, 29, 33, 43], [34,, 38, 42]]);
|
}, _callee, null, [[2, 14, 18, 28], [19,, 23, 27]]);
|
||||||
}));
|
}));
|
||||||
return function readBytes(_x, _x2, _x3) {
|
return function readBytes(_x, _x2) {
|
||||||
return _ref.apply(this, arguments);
|
return _ref.apply(this, arguments);
|
||||||
};
|
};
|
||||||
}();
|
}();
|
||||||
var trackStream = function trackStream(stream, chunkSize, onProgress, onFinish, encode) {
|
var readStream = /*#__PURE__*/function () {
|
||||||
var iterator = readBytes(stream, chunkSize, encode);
|
var _ref2 = _wrapAsyncGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(stream) {
|
||||||
|
var reader, _yield$_awaitAsyncGen, done, value;
|
||||||
|
return _regeneratorRuntime().wrap(function _callee2$(_context3) {
|
||||||
|
while (1) switch (_context3.prev = _context3.next) {
|
||||||
|
case 0:
|
||||||
|
if (!stream[Symbol.asyncIterator]) {
|
||||||
|
_context3.next = 3;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return _context3.delegateYield(_asyncGeneratorDelegate(_asyncIterator(stream)), "t0", 2);
|
||||||
|
case 2:
|
||||||
|
return _context3.abrupt("return");
|
||||||
|
case 3:
|
||||||
|
reader = stream.getReader();
|
||||||
|
_context3.prev = 4;
|
||||||
|
case 5:
|
||||||
|
_context3.next = 7;
|
||||||
|
return _awaitAsyncGenerator(reader.read());
|
||||||
|
case 7:
|
||||||
|
_yield$_awaitAsyncGen = _context3.sent;
|
||||||
|
done = _yield$_awaitAsyncGen.done;
|
||||||
|
value = _yield$_awaitAsyncGen.value;
|
||||||
|
if (!done) {
|
||||||
|
_context3.next = 12;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return _context3.abrupt("break", 16);
|
||||||
|
case 12:
|
||||||
|
_context3.next = 14;
|
||||||
|
return value;
|
||||||
|
case 14:
|
||||||
|
_context3.next = 5;
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
_context3.prev = 16;
|
||||||
|
_context3.next = 19;
|
||||||
|
return _awaitAsyncGenerator(reader.cancel());
|
||||||
|
case 19:
|
||||||
|
return _context3.finish(16);
|
||||||
|
case 20:
|
||||||
|
case "end":
|
||||||
|
return _context3.stop();
|
||||||
|
}
|
||||||
|
}, _callee2, null, [[4,, 16, 20]]);
|
||||||
|
}));
|
||||||
|
return function readStream(_x3) {
|
||||||
|
return _ref2.apply(this, arguments);
|
||||||
|
};
|
||||||
|
}();
|
||||||
|
var trackStream = function trackStream(stream, chunkSize, onProgress, onFinish) {
|
||||||
|
var iterator = readBytes(stream, chunkSize);
|
||||||
var bytes = 0;
|
var bytes = 0;
|
||||||
var done;
|
var done;
|
||||||
var _onFinish = function _onFinish(e) {
|
var _onFinish = function _onFinish(e) {
|
||||||
|
|
@ -3257,25 +3290,25 @@
|
||||||
};
|
};
|
||||||
return new ReadableStream({
|
return new ReadableStream({
|
||||||
pull: function pull(controller) {
|
pull: function pull(controller) {
|
||||||
return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
||||||
var _yield$iterator$next, _done, value, len, loadedBytes;
|
var _yield$iterator$next, _done, value, len, loadedBytes;
|
||||||
return _regeneratorRuntime().wrap(function _callee2$(_context3) {
|
return _regeneratorRuntime().wrap(function _callee3$(_context4) {
|
||||||
while (1) switch (_context3.prev = _context3.next) {
|
while (1) switch (_context4.prev = _context4.next) {
|
||||||
case 0:
|
case 0:
|
||||||
_context3.prev = 0;
|
_context4.prev = 0;
|
||||||
_context3.next = 3;
|
_context4.next = 3;
|
||||||
return iterator.next();
|
return iterator.next();
|
||||||
case 3:
|
case 3:
|
||||||
_yield$iterator$next = _context3.sent;
|
_yield$iterator$next = _context4.sent;
|
||||||
_done = _yield$iterator$next.done;
|
_done = _yield$iterator$next.done;
|
||||||
value = _yield$iterator$next.value;
|
value = _yield$iterator$next.value;
|
||||||
if (!_done) {
|
if (!_done) {
|
||||||
_context3.next = 10;
|
_context4.next = 10;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
_onFinish();
|
_onFinish();
|
||||||
controller.close();
|
controller.close();
|
||||||
return _context3.abrupt("return");
|
return _context4.abrupt("return");
|
||||||
case 10:
|
case 10:
|
||||||
len = value.byteLength;
|
len = value.byteLength;
|
||||||
if (onProgress) {
|
if (onProgress) {
|
||||||
|
|
@ -3283,18 +3316,18 @@
|
||||||
onProgress(loadedBytes);
|
onProgress(loadedBytes);
|
||||||
}
|
}
|
||||||
controller.enqueue(new Uint8Array(value));
|
controller.enqueue(new Uint8Array(value));
|
||||||
_context3.next = 19;
|
_context4.next = 19;
|
||||||
break;
|
break;
|
||||||
case 15:
|
case 15:
|
||||||
_context3.prev = 15;
|
_context4.prev = 15;
|
||||||
_context3.t0 = _context3["catch"](0);
|
_context4.t0 = _context4["catch"](0);
|
||||||
_onFinish(_context3.t0);
|
_onFinish(_context4.t0);
|
||||||
throw _context3.t0;
|
throw _context4.t0;
|
||||||
case 19:
|
case 19:
|
||||||
case "end":
|
case "end":
|
||||||
return _context3.stop();
|
return _context4.stop();
|
||||||
}
|
}
|
||||||
}, _callee2, null, [[0, 15]]);
|
}, _callee3, null, [[0, 15]]);
|
||||||
}))();
|
}))();
|
||||||
},
|
},
|
||||||
cancel: function cancel(reason) {
|
cancel: function cancel(reason) {
|
||||||
|
|
@ -3377,6 +3410,7 @@
|
||||||
}(new Response());
|
}(new Response());
|
||||||
var getBodyLength = /*#__PURE__*/function () {
|
var getBodyLength = /*#__PURE__*/function () {
|
||||||
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(body) {
|
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(body) {
|
||||||
|
var _request;
|
||||||
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
||||||
while (1) switch (_context2.prev = _context2.next) {
|
while (1) switch (_context2.prev = _context2.next) {
|
||||||
case 0:
|
case 0:
|
||||||
|
|
@ -3393,32 +3427,36 @@
|
||||||
return _context2.abrupt("return", body.size);
|
return _context2.abrupt("return", body.size);
|
||||||
case 4:
|
case 4:
|
||||||
if (!utils$1.isSpecCompliantForm(body)) {
|
if (!utils$1.isSpecCompliantForm(body)) {
|
||||||
_context2.next = 8;
|
_context2.next = 9;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
_context2.next = 7;
|
_request = new Request(platform.origin, {
|
||||||
return new Request(body).arrayBuffer();
|
method: 'POST',
|
||||||
case 7:
|
body: body
|
||||||
return _context2.abrupt("return", _context2.sent.byteLength);
|
});
|
||||||
|
_context2.next = 8;
|
||||||
|
return _request.arrayBuffer();
|
||||||
case 8:
|
case 8:
|
||||||
|
return _context2.abrupt("return", _context2.sent.byteLength);
|
||||||
|
case 9:
|
||||||
if (!(utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body))) {
|
if (!(utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body))) {
|
||||||
_context2.next = 10;
|
_context2.next = 11;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return _context2.abrupt("return", body.byteLength);
|
return _context2.abrupt("return", body.byteLength);
|
||||||
case 10:
|
case 11:
|
||||||
if (utils$1.isURLSearchParams(body)) {
|
if (utils$1.isURLSearchParams(body)) {
|
||||||
body = body + '';
|
body = body + '';
|
||||||
}
|
}
|
||||||
if (!utils$1.isString(body)) {
|
if (!utils$1.isString(body)) {
|
||||||
_context2.next = 15;
|
_context2.next = 16;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
_context2.next = 14;
|
_context2.next = 15;
|
||||||
return encodeText(body);
|
return encodeText(body);
|
||||||
case 14:
|
|
||||||
return _context2.abrupt("return", _context2.sent.byteLength);
|
|
||||||
case 15:
|
case 15:
|
||||||
|
return _context2.abrupt("return", _context2.sent.byteLength);
|
||||||
|
case 16:
|
||||||
case "end":
|
case "end":
|
||||||
return _context2.stop();
|
return _context2.stop();
|
||||||
}
|
}
|
||||||
|
|
@ -3448,18 +3486,15 @@
|
||||||
}();
|
}();
|
||||||
var fetchAdapter = isFetchSupported && ( /*#__PURE__*/function () {
|
var fetchAdapter = isFetchSupported && ( /*#__PURE__*/function () {
|
||||||
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(config) {
|
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(config) {
|
||||||
var _resolveConfig, url, method, data, signal, cancelToken, timeout, onDownloadProgress, onUploadProgress, responseType, headers, _resolveConfig$withCr, withCredentials, fetchOptions, _ref5, _ref6, composedSignal, stopTimeout, finished, request, onFinish, requestContentLength, _request, contentTypeHeader, _progressEventDecorat, _progressEventDecorat2, onProgress, flush, isCredentialsSupported, response, isStreamResponse, options, responseContentLength, _ref7, _ref8, _onProgress, _flush, responseData;
|
var _resolveConfig, url, method, data, signal, cancelToken, timeout, onDownloadProgress, onUploadProgress, responseType, headers, _resolveConfig$withCr, withCredentials, fetchOptions, composedSignal, request, unsubscribe, requestContentLength, _request, contentTypeHeader, _progressEventDecorat, _progressEventDecorat2, onProgress, flush, isCredentialsSupported, response, isStreamResponse, options, responseContentLength, _ref5, _ref6, _onProgress, _flush, responseData;
|
||||||
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
||||||
while (1) switch (_context4.prev = _context4.next) {
|
while (1) switch (_context4.prev = _context4.next) {
|
||||||
case 0:
|
case 0:
|
||||||
_resolveConfig = resolveConfig(config), url = _resolveConfig.url, method = _resolveConfig.method, data = _resolveConfig.data, signal = _resolveConfig.signal, cancelToken = _resolveConfig.cancelToken, timeout = _resolveConfig.timeout, onDownloadProgress = _resolveConfig.onDownloadProgress, onUploadProgress = _resolveConfig.onUploadProgress, responseType = _resolveConfig.responseType, headers = _resolveConfig.headers, _resolveConfig$withCr = _resolveConfig.withCredentials, withCredentials = _resolveConfig$withCr === void 0 ? 'same-origin' : _resolveConfig$withCr, fetchOptions = _resolveConfig.fetchOptions;
|
_resolveConfig = resolveConfig(config), url = _resolveConfig.url, method = _resolveConfig.method, data = _resolveConfig.data, signal = _resolveConfig.signal, cancelToken = _resolveConfig.cancelToken, timeout = _resolveConfig.timeout, onDownloadProgress = _resolveConfig.onDownloadProgress, onUploadProgress = _resolveConfig.onUploadProgress, responseType = _resolveConfig.responseType, headers = _resolveConfig.headers, _resolveConfig$withCr = _resolveConfig.withCredentials, withCredentials = _resolveConfig$withCr === void 0 ? 'same-origin' : _resolveConfig$withCr, fetchOptions = _resolveConfig.fetchOptions;
|
||||||
responseType = responseType ? (responseType + '').toLowerCase() : 'text';
|
responseType = responseType ? (responseType + '').toLowerCase() : 'text';
|
||||||
_ref5 = signal || cancelToken || timeout ? composeSignals$1([signal, cancelToken], timeout) : [], _ref6 = _slicedToArray(_ref5, 2), composedSignal = _ref6[0], stopTimeout = _ref6[1];
|
composedSignal = composeSignals$1([signal, cancelToken && cancelToken.toAbortSignal()], timeout);
|
||||||
onFinish = function onFinish() {
|
unsubscribe = composedSignal && composedSignal.unsubscribe && function () {
|
||||||
!finished && setTimeout(function () {
|
composedSignal.unsubscribe();
|
||||||
composedSignal && composedSignal.unsubscribe();
|
|
||||||
});
|
|
||||||
finished = true;
|
|
||||||
};
|
};
|
||||||
_context4.prev = 4;
|
_context4.prev = 4;
|
||||||
_context4.t0 = onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head';
|
_context4.t0 = onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head';
|
||||||
|
|
@ -3487,7 +3522,7 @@
|
||||||
}
|
}
|
||||||
if (_request.body) {
|
if (_request.body) {
|
||||||
_progressEventDecorat = progressEventDecorator(requestContentLength, progressEventReducer(asyncDecorator(onUploadProgress))), _progressEventDecorat2 = _slicedToArray(_progressEventDecorat, 2), onProgress = _progressEventDecorat2[0], flush = _progressEventDecorat2[1];
|
_progressEventDecorat = progressEventDecorator(requestContentLength, progressEventReducer(asyncDecorator(onUploadProgress))), _progressEventDecorat2 = _slicedToArray(_progressEventDecorat, 2), onProgress = _progressEventDecorat2[0], flush = _progressEventDecorat2[1];
|
||||||
data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush, encodeText);
|
data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);
|
||||||
}
|
}
|
||||||
case 15:
|
case 15:
|
||||||
if (!utils$1.isString(withCredentials)) {
|
if (!utils$1.isString(withCredentials)) {
|
||||||
|
|
@ -3510,26 +3545,25 @@
|
||||||
case 20:
|
case 20:
|
||||||
response = _context4.sent;
|
response = _context4.sent;
|
||||||
isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');
|
isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');
|
||||||
if (supportsResponseStream && (onDownloadProgress || isStreamResponse)) {
|
if (supportsResponseStream && (onDownloadProgress || isStreamResponse && unsubscribe)) {
|
||||||
options = {};
|
options = {};
|
||||||
['status', 'statusText', 'headers'].forEach(function (prop) {
|
['status', 'statusText', 'headers'].forEach(function (prop) {
|
||||||
options[prop] = response[prop];
|
options[prop] = response[prop];
|
||||||
});
|
});
|
||||||
responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length'));
|
responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length'));
|
||||||
_ref7 = onDownloadProgress && progressEventDecorator(responseContentLength, progressEventReducer(asyncDecorator(onDownloadProgress), true)) || [], _ref8 = _slicedToArray(_ref7, 2), _onProgress = _ref8[0], _flush = _ref8[1];
|
_ref5 = onDownloadProgress && progressEventDecorator(responseContentLength, progressEventReducer(asyncDecorator(onDownloadProgress), true)) || [], _ref6 = _slicedToArray(_ref5, 2), _onProgress = _ref6[0], _flush = _ref6[1];
|
||||||
response = new Response(trackStream(response.body, DEFAULT_CHUNK_SIZE, _onProgress, function () {
|
response = new Response(trackStream(response.body, DEFAULT_CHUNK_SIZE, _onProgress, function () {
|
||||||
_flush && _flush();
|
_flush && _flush();
|
||||||
isStreamResponse && onFinish();
|
unsubscribe && unsubscribe();
|
||||||
}, encodeText), options);
|
}), options);
|
||||||
}
|
}
|
||||||
responseType = responseType || 'text';
|
responseType = responseType || 'text';
|
||||||
_context4.next = 26;
|
_context4.next = 26;
|
||||||
return resolvers[utils$1.findKey(resolvers, responseType) || 'text'](response, config);
|
return resolvers[utils$1.findKey(resolvers, responseType) || 'text'](response, config);
|
||||||
case 26:
|
case 26:
|
||||||
responseData = _context4.sent;
|
responseData = _context4.sent;
|
||||||
!isStreamResponse && onFinish();
|
!isStreamResponse && unsubscribe && unsubscribe();
|
||||||
stopTimeout && stopTimeout();
|
_context4.next = 30;
|
||||||
_context4.next = 31;
|
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
settle(resolve, reject, {
|
settle(resolve, reject, {
|
||||||
data: responseData,
|
data: responseData,
|
||||||
|
|
@ -3540,26 +3574,26 @@
|
||||||
request: request
|
request: request
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
case 31:
|
case 30:
|
||||||
return _context4.abrupt("return", _context4.sent);
|
return _context4.abrupt("return", _context4.sent);
|
||||||
case 34:
|
case 33:
|
||||||
_context4.prev = 34;
|
_context4.prev = 33;
|
||||||
_context4.t2 = _context4["catch"](4);
|
_context4.t2 = _context4["catch"](4);
|
||||||
onFinish();
|
unsubscribe && unsubscribe();
|
||||||
if (!(_context4.t2 && _context4.t2.name === 'TypeError' && /fetch/i.test(_context4.t2.message))) {
|
if (!(_context4.t2 && _context4.t2.name === 'TypeError' && /fetch/i.test(_context4.t2.message))) {
|
||||||
_context4.next = 39;
|
_context4.next = 38;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
throw Object.assign(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request), {
|
throw Object.assign(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request), {
|
||||||
cause: _context4.t2.cause || _context4.t2
|
cause: _context4.t2.cause || _context4.t2
|
||||||
});
|
});
|
||||||
case 39:
|
case 38:
|
||||||
throw AxiosError.from(_context4.t2, _context4.t2 && _context4.t2.code, config, request);
|
throw AxiosError.from(_context4.t2, _context4.t2 && _context4.t2.code, config, request);
|
||||||
case 40:
|
case 39:
|
||||||
case "end":
|
case "end":
|
||||||
return _context4.stop();
|
return _context4.stop();
|
||||||
}
|
}
|
||||||
}, _callee4, null, [[4, 34]]);
|
}, _callee4, null, [[4, 33]]);
|
||||||
}));
|
}));
|
||||||
return function (_x5) {
|
return function (_x5) {
|
||||||
return _ref4.apply(this, arguments);
|
return _ref4.apply(this, arguments);
|
||||||
|
|
@ -3683,7 +3717,7 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var VERSION = "1.7.5";
|
var VERSION = "1.7.7";
|
||||||
|
|
||||||
var validators$1 = {};
|
var validators$1 = {};
|
||||||
|
|
||||||
|
|
@ -4064,6 +4098,20 @@
|
||||||
this._listeners.splice(index, 1);
|
this._listeners.splice(index, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}, {
|
||||||
|
key: "toAbortSignal",
|
||||||
|
value: function toAbortSignal() {
|
||||||
|
var _this = this;
|
||||||
|
var controller = new AbortController();
|
||||||
|
var abort = function abort(err) {
|
||||||
|
controller.abort(err);
|
||||||
|
};
|
||||||
|
this.subscribe(abort);
|
||||||
|
controller.signal.unsubscribe = function () {
|
||||||
|
return _this.unsubscribe(abort);
|
||||||
|
};
|
||||||
|
return controller.signal;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an object that contains a new `CancelToken` and a function that, when called,
|
* Returns an object that contains a new `CancelToken` and a function that, when called,
|
||||||
|
|
|
||||||
14
lnbits/static/vendor/chart.umd.js
vendored
Normal file
14
lnbits/static/vendor/chart.umd.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1099
lnbits/static/vendor/qrcode.vue.browser.js
vendored
Normal file
1099
lnbits/static/vendor/qrcode.vue.browser.js
vendored
Normal file
File diff suppressed because it is too large
Load diff
6289
lnbits/static/vendor/quasar.css
vendored
6289
lnbits/static/vendor/quasar.css
vendored
File diff suppressed because it is too large
Load diff
127
lnbits/static/vendor/quasar.umd.prod.js
vendored
Normal file
127
lnbits/static/vendor/quasar.umd.prod.js
vendored
Normal file
File diff suppressed because one or more lines are too long
21
lnbits/static/vendor/underscore.js
vendored
21
lnbits/static/vendor/underscore.js
vendored
|
|
@ -7,13 +7,13 @@
|
||||||
exports.noConflict = function () { global._ = current; return exports; };
|
exports.noConflict = function () { global._ = current; return exports; };
|
||||||
}()));
|
}()));
|
||||||
}(this, (function () {
|
}(this, (function () {
|
||||||
// Underscore.js 1.13.6
|
// Underscore.js 1.13.7
|
||||||
// https://underscorejs.org
|
// https://underscorejs.org
|
||||||
// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors
|
// (c) 2009-2024 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors
|
||||||
// Underscore may be freely distributed under the MIT license.
|
// Underscore may be freely distributed under the MIT license.
|
||||||
|
|
||||||
// Current version.
|
// Current version.
|
||||||
var VERSION = '1.13.6';
|
var VERSION = '1.13.7';
|
||||||
|
|
||||||
// Establish the root object, `window` (`self`) in the browser, `global`
|
// Establish the root object, `window` (`self`) in the browser, `global`
|
||||||
// on the server, or `this` in some virtual machines. We use `self`
|
// on the server, or `this` in some virtual machines. We use `self`
|
||||||
|
|
@ -150,8 +150,11 @@
|
||||||
// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.
|
// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.
|
||||||
// In IE 11, the most common among them, this problem also applies to
|
// In IE 11, the most common among them, this problem also applies to
|
||||||
// `Map`, `WeakMap` and `Set`.
|
// `Map`, `WeakMap` and `Set`.
|
||||||
var hasStringTagBug = (
|
// Also, there are cases where an application can override the native
|
||||||
supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))
|
// `DataView` object, in cases like that we can't use the constructor
|
||||||
|
// safely and should just rely on alternate `DataView` checks
|
||||||
|
var hasDataViewBug = (
|
||||||
|
supportsDataView && (!/\[native code\]/.test(String(DataView)) || hasObjectTag(new DataView(new ArrayBuffer(8))))
|
||||||
),
|
),
|
||||||
isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));
|
isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));
|
||||||
|
|
||||||
|
|
@ -159,11 +162,13 @@
|
||||||
|
|
||||||
// In IE 10 - Edge 13, we need a different heuristic
|
// In IE 10 - Edge 13, we need a different heuristic
|
||||||
// to determine whether an object is a `DataView`.
|
// to determine whether an object is a `DataView`.
|
||||||
function ie10IsDataView(obj) {
|
// Also, in cases where the native `DataView` is
|
||||||
|
// overridden we can't rely on the tag itself.
|
||||||
|
function alternateIsDataView(obj) {
|
||||||
return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer);
|
return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView);
|
var isDataView$1 = (hasDataViewBug ? alternateIsDataView : isDataView);
|
||||||
|
|
||||||
// Is a given value an array?
|
// Is a given value an array?
|
||||||
// Delegates to ECMA5's native `Array.isArray`.
|
// Delegates to ECMA5's native `Array.isArray`.
|
||||||
|
|
@ -376,7 +381,7 @@
|
||||||
var className = toString.call(a);
|
var className = toString.call(a);
|
||||||
if (className !== toString.call(b)) return false;
|
if (className !== toString.call(b)) return false;
|
||||||
// Work around a bug in IE 10 - Edge 13.
|
// Work around a bug in IE 10 - Edge 13.
|
||||||
if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) {
|
if (hasDataViewBug && className == '[object Object]' && isDataView$1(a)) {
|
||||||
if (!isDataView$1(b)) return false;
|
if (!isDataView$1(b)) return false;
|
||||||
className = tagDataView;
|
className = tagDataView;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
6690
lnbits/static/vendor/vue-i18n.global.js
vendored
Normal file
6690
lnbits/static/vendor/vue-i18n.global.js
vendored
Normal file
File diff suppressed because it is too large
Load diff
6
lnbits/static/vendor/vue-i18n.global.prod.js
vendored
Normal file
6
lnbits/static/vendor/vue-i18n.global.prod.js
vendored
Normal file
File diff suppressed because one or more lines are too long
3
lnbits/static/vendor/vue-qrcode-reader.umd.js
vendored
Normal file
3
lnbits/static/vendor/vue-qrcode-reader.umd.js
vendored
Normal file
File diff suppressed because one or more lines are too long
5620
lnbits/static/vendor/vue-qrcode.js
vendored
5620
lnbits/static/vendor/vue-qrcode.js
vendored
File diff suppressed because it is too large
Load diff
3916
lnbits/static/vendor/vue-router.global.js
vendored
Normal file
3916
lnbits/static/vendor/vue-router.global.js
vendored
Normal file
File diff suppressed because it is too large
Load diff
9
lnbits/static/vendor/vue.global.prod.js
vendored
Normal file
9
lnbits/static/vendor/vue.global.prod.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1514
lnbits/static/vendor/vuex.global.js
vendored
Normal file
1514
lnbits/static/vendor/vuex.global.js
vendored
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -32,196 +32,198 @@
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body data-theme="bitcoin">
|
<body data-theme="bitcoin">
|
||||||
<q-layout id="vue" view="hHh lpR lfr" v-cloak>
|
<div id="vue">
|
||||||
<q-header bordered class="bg-marginal-bg">
|
<q-layout view="hHh lpR lfr" v-cloak>
|
||||||
<q-toolbar>
|
<q-header bordered class="bg-marginal-bg">
|
||||||
{% block drawer_toggle %}
|
<q-toolbar>
|
||||||
<q-btn
|
{% block drawer_toggle %}
|
||||||
dense
|
<q-btn
|
||||||
flat
|
dense
|
||||||
round
|
flat
|
||||||
icon="menu"
|
round
|
||||||
@click="g.visibleDrawer = !g.visibleDrawer"
|
icon="menu"
|
||||||
></q-btn>
|
@click="g.visibleDrawer = !g.visibleDrawer"
|
||||||
{% endblock %}
|
></q-btn>
|
||||||
<q-toolbar-title>
|
{% endblock %}
|
||||||
{% block toolbar_title %}
|
<q-toolbar-title>
|
||||||
<q-btn flat no-caps dense size="lg" type="a" href="/"
|
{% block toolbar_title %}
|
||||||
>{% if USE_CUSTOM_LOGO %}
|
<q-btn flat no-caps dense size="lg" type="a" href="/"
|
||||||
<img height="30px" alt="Logo" src="{{ USE_CUSTOM_LOGO }}" />
|
>{% if USE_CUSTOM_LOGO %}
|
||||||
{%else%} {% if SITE_TITLE != 'LNbits' %} {{ SITE_TITLE }} {% else
|
<img height="30px" alt="Logo" src="{{ USE_CUSTOM_LOGO }}" />
|
||||||
%}
|
{%else%} {% if SITE_TITLE != 'LNbits' %} {{ SITE_TITLE }} {%
|
||||||
<span><strong>LN</strong>bits</span> {% endif %} {%endif%} </q-btn
|
else %}
|
||||||
>{% endblock %} {% block toolbar_subtitle %}{%if user and
|
<span><strong>LN</strong>bits</span> {% endif %} {%endif%} </q-btn
|
||||||
user.super_user%}
|
>{% endblock %} {% block toolbar_subtitle %}{%if user and
|
||||||
<q-badge align="middle">Super User</q-badge>
|
user.super_user%}
|
||||||
{% elif user and user.admin %}
|
<q-badge align="middle">Super User</q-badge>
|
||||||
<q-badge align="middle">Admin User</q-badge>
|
{% elif user and user.admin %}
|
||||||
{%endif%}{% endblock %}
|
<q-badge align="middle">Admin User</q-badge>
|
||||||
</q-toolbar-title>
|
{%endif%}{% endblock %}
|
||||||
{% block beta %} {% if VOIDWALLET %}
|
</q-toolbar-title>
|
||||||
<q-badge
|
{% block beta %} {% if VOIDWALLET %}
|
||||||
v-text="$t('voidwallet_active')"
|
<q-badge
|
||||||
color="red"
|
v-text="$t('voidwallet_active')"
|
||||||
class="q-mr-md gt-md"
|
color="red"
|
||||||
>
|
class="q-mr-md gt-md"
|
||||||
</q-badge>
|
>
|
||||||
{%endif%}
|
</q-badge>
|
||||||
<q-badge
|
|
||||||
v-if="'{{LNBITS_CUSTOM_BADGE}}' && '{{LNBITS_CUSTOM_BADGE}}' != 'None'"
|
|
||||||
v-show="$q.screen.gt.sm"
|
|
||||||
color="{{ LNBITS_CUSTOM_BADGE_COLOR }}"
|
|
||||||
class="q-mr-md"
|
|
||||||
label="{{LNBITS_CUSTOM_BADGE}}"
|
|
||||||
>
|
|
||||||
</q-badge>
|
|
||||||
{% if LNBITS_SERVICE_FEE > 0 %}
|
|
||||||
<q-badge
|
|
||||||
v-show="$q.screen.gt.sm"
|
|
||||||
v-if="g.user"
|
|
||||||
color="green"
|
|
||||||
class="q-mr-md"
|
|
||||||
>
|
|
||||||
{% if LNBITS_SERVICE_FEE_MAX > 0 %}
|
|
||||||
<span
|
|
||||||
v-text='$t("service_fee_max", { amount: "{{ LNBITS_SERVICE_FEE }}", max: "{{ LNBITS_SERVICE_FEE_MAX }}"})'
|
|
||||||
></span>
|
|
||||||
{%else%}
|
|
||||||
<span
|
|
||||||
v-text='$t("service_fee", { amount: "{{ LNBITS_SERVICE_FEE }}" })'
|
|
||||||
></span>
|
|
||||||
{%endif%}
|
{%endif%}
|
||||||
<q-tooltip
|
<q-badge
|
||||||
><span v-text='$t("service_fee_tooltip")'></span
|
v-if="'{{LNBITS_CUSTOM_BADGE}}' && '{{LNBITS_CUSTOM_BADGE}}' != 'None'"
|
||||||
></q-tooltip>
|
v-show="$q.screen.gt.sm"
|
||||||
</q-badge>
|
color="{{ LNBITS_CUSTOM_BADGE_COLOR }}"
|
||||||
|
class="q-mr-md"
|
||||||
|
label="{{LNBITS_CUSTOM_BADGE}}"
|
||||||
|
>
|
||||||
|
</q-badge>
|
||||||
|
{% if LNBITS_SERVICE_FEE > 0 %}
|
||||||
|
<q-badge
|
||||||
|
v-show="$q.screen.gt.sm"
|
||||||
|
v-if="g.user"
|
||||||
|
color="green"
|
||||||
|
class="q-mr-md"
|
||||||
|
>
|
||||||
|
{% if LNBITS_SERVICE_FEE_MAX > 0 %}
|
||||||
|
<span
|
||||||
|
v-text='$t("service_fee_max", { amount: "{{ LNBITS_SERVICE_FEE }}", max: "{{ LNBITS_SERVICE_FEE_MAX }}"})'
|
||||||
|
></span>
|
||||||
|
{%else%}
|
||||||
|
<span
|
||||||
|
v-text='$t("service_fee", { amount: "{{ LNBITS_SERVICE_FEE }}" })'
|
||||||
|
></span>
|
||||||
|
{%endif%}
|
||||||
|
<q-tooltip
|
||||||
|
><span v-text='$t("service_fee_tooltip")'></span
|
||||||
|
></q-tooltip>
|
||||||
|
</q-badge>
|
||||||
|
|
||||||
{%endif%} {% endblock %}
|
{%endif%} {% endblock %}
|
||||||
<q-badge v-if="g.offline" color="red" class="q-mr-md">
|
<q-badge v-if="g.offline" color="red" class="q-mr-md">
|
||||||
<span>OFFLINE</span>
|
<span>OFFLINE</span>
|
||||||
</q-badge>
|
</q-badge>
|
||||||
|
|
||||||
<q-btn-dropdown
|
<q-btn-dropdown
|
||||||
v-if="isUserAuthorized"
|
v-if="isUserAuthorized"
|
||||||
dense
|
dense
|
||||||
flat
|
flat
|
||||||
round
|
round
|
||||||
size="sm"
|
size="sm"
|
||||||
class="q-pl-sm"
|
class="q-pl-sm"
|
||||||
>
|
>
|
||||||
<template v-slot:label>
|
<template v-slot:label>
|
||||||
<div>
|
<div>
|
||||||
{%if user and user.config and user.config.picture%}
|
{%if user and user.config and user.config.picture%}
|
||||||
<img src="{{user.config.picture}}" style="max-width: 32px" />
|
<img src="{{user.config.picture}}" style="max-width: 32px" />
|
||||||
{%else%}
|
{%else%}
|
||||||
<q-icon name="account_circle" />
|
<q-icon name="account_circle" />
|
||||||
{%endif%}
|
{%endif%}
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<q-list>
|
<q-list>
|
||||||
<q-item tag="a" href="/account" clickable v-close-popup
|
<q-item tag="a" href="/account" clickable v-close-popup
|
||||||
><q-item-section>
|
><q-item-section>
|
||||||
<q-icon name="person" />
|
<q-icon name="person" />
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
<q-item-section>
|
<q-item-section>
|
||||||
<q-item-label>
|
<q-item-label>
|
||||||
<span v-text="$t('my_account')"></span>
|
<span v-text="$t('my_account')"></span>
|
||||||
</q-item-label>
|
</q-item-label>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
<q-item-section>
|
<q-item-section>
|
||||||
<q-item-label> </q-item-label>
|
<q-item-label> </q-item-label>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
</q-item>
|
</q-item>
|
||||||
<q-separator></q-separator>
|
<q-separator></q-separator>
|
||||||
<q-item clickable v-close-popup @click="logout"
|
<q-item clickable v-close-popup @click="logout"
|
||||||
><q-item-section>
|
><q-item-section>
|
||||||
<q-icon name="logout" />
|
<q-icon name="logout" />
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
<q-item-section>
|
<q-item-section>
|
||||||
<q-item-label>
|
<q-item-label>
|
||||||
<span v-text="$t('logout')"></span>
|
<span v-text="$t('logout')"></span>
|
||||||
</q-item-label>
|
</q-item-label>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
<q-item-section>
|
<q-item-section>
|
||||||
<q-item-label> </q-item-label>
|
<q-item-label> </q-item-label>
|
||||||
</q-item-section>
|
</q-item-section>
|
||||||
</q-item>
|
</q-item>
|
||||||
</q-list>
|
</q-list>
|
||||||
</q-btn-dropdown>
|
</q-btn-dropdown>
|
||||||
</q-toolbar>
|
</q-toolbar>
|
||||||
</q-header>
|
</q-header>
|
||||||
|
|
||||||
{% block drawer %}
|
{% block drawer %}
|
||||||
<q-drawer
|
<q-drawer
|
||||||
v-model="g.visibleDrawer"
|
v-model="g.visibleDrawer"
|
||||||
side="left"
|
side="left"
|
||||||
:width="($q.screen.lt.md) ? 260 : 230"
|
:width="($q.screen.lt.md) ? 260 : 230"
|
||||||
show-if-above
|
show-if-above
|
||||||
:elevated="$q.screen.lt.md"
|
:elevated="$q.screen.lt.md"
|
||||||
>
|
>
|
||||||
<lnbits-wallet-list></lnbits-wallet-list>
|
<lnbits-wallet-list :balance="balance"></lnbits-wallet-list>
|
||||||
|
|
||||||
<lnbits-manage
|
<lnbits-manage
|
||||||
:show-admin="'{{LNBITS_ADMIN_UI}}' == 'True'"
|
:show-admin="'{{LNBITS_ADMIN_UI}}' == 'True'"
|
||||||
:show-users="'{{LNBITS_ADMIN_UI}}' == 'True'"
|
:show-users="'{{LNBITS_ADMIN_UI}}' == 'True'"
|
||||||
:show-node="'{{LNBITS_NODE_UI}}' == 'True'"
|
:show-node="'{{LNBITS_NODE_UI}}' == 'True'"
|
||||||
:show-extensions="'{{LNBITS_EXTENSIONS_DEACTIVATE_ALL}}' == 'False'"
|
:show-extensions="'{{LNBITS_EXTENSIONS_DEACTIVATE_ALL}}' == 'False'"
|
||||||
></lnbits-manage>
|
></lnbits-manage>
|
||||||
<lnbits-extension-list class="q-pb-xl"></lnbits-extension-list>
|
<lnbits-extension-list class="q-pb-xl"></lnbits-extension-list>
|
||||||
</q-drawer>
|
</q-drawer>
|
||||||
{% endblock %} {% block page_container %}
|
{% endblock %} {% block page_container %}
|
||||||
<q-page-container>
|
<q-page-container>
|
||||||
<q-page class="q-px-md q-py-lg" :class="{'q-px-lg': $q.screen.gt.xs}">
|
<q-page class="q-px-md q-py-lg" :class="{'q-px-lg': $q.screen.gt.xs}">
|
||||||
{% block page %}{% endblock %}
|
{% block page %}{% endblock %}
|
||||||
</q-page>
|
</q-page>
|
||||||
</q-page-container>
|
</q-page-container>
|
||||||
{% endblock %} {% block footer %}
|
{% endblock %} {% block footer %}
|
||||||
|
|
||||||
<q-footer
|
<q-footer
|
||||||
class="bg-transparent q-px-lg q-py-md"
|
class="bg-transparent q-px-lg q-py-md"
|
||||||
:class="{'text-dark': !$q.dark.isActive}"
|
:class="{'text-dark': !$q.dark.isActive}"
|
||||||
>
|
>
|
||||||
<q-space class="q-py-lg lt-md"></q-space>
|
<q-space class="q-py-lg lt-md"></q-space>
|
||||||
<q-toolbar class="gt-sm">
|
<q-toolbar class="gt-sm">
|
||||||
<q-toolbar-title class="text-caption">
|
<q-toolbar-title class="text-caption">
|
||||||
{{ SITE_TITLE }}, {{SITE_TAGLINE}}
|
{{ SITE_TITLE }}, {{SITE_TAGLINE}}
|
||||||
<br />
|
<br />
|
||||||
<small
|
<small
|
||||||
v-text="$t('lnbits_version') + ': {{LNBITS_VERSION}}'"
|
v-text="$t('lnbits_version') + ': {{LNBITS_VERSION}}'"
|
||||||
></small>
|
></small>
|
||||||
</q-toolbar-title>
|
</q-toolbar-title>
|
||||||
<q-space></q-space>
|
<q-space></q-space>
|
||||||
<q-btn
|
<q-btn
|
||||||
flat
|
flat
|
||||||
dense
|
dense
|
||||||
:color="($q.dark.isActive) ? 'white' : 'primary'"
|
:color="($q.dark.isActive) ? 'white' : 'primary'"
|
||||||
type="a"
|
type="a"
|
||||||
href="/docs"
|
href="/docs"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
>
|
>
|
||||||
<span v-text="$t('api_docs')"></span>
|
<span v-text="$t('api_docs')"></span>
|
||||||
<q-tooltip
|
<q-tooltip
|
||||||
><span v-text="$t('view_swagger_docs')"></span
|
><span v-text="$t('view_swagger_docs')"></span
|
||||||
></q-tooltip>
|
></q-tooltip>
|
||||||
</q-btn>
|
</q-btn>
|
||||||
<q-btn
|
<q-btn
|
||||||
flat
|
flat
|
||||||
dense
|
dense
|
||||||
:color="($q.dark.isActive) ? 'white' : 'primary'"
|
:color="($q.dark.isActive) ? 'white' : 'primary'"
|
||||||
icon="code"
|
icon="code"
|
||||||
type="a"
|
type="a"
|
||||||
href="https://github.com/lnbits/lnbits"
|
href="https://github.com/lnbits/lnbits"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
>
|
>
|
||||||
<q-tooltip><span v-text="$t('view_github')"></span></q-tooltip>
|
<q-tooltip><span v-text="$t('view_github')"></span></q-tooltip>
|
||||||
</q-btn>
|
</q-btn>
|
||||||
</q-toolbar>
|
</q-toolbar>
|
||||||
</q-footer>
|
</q-footer>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
</q-layout>
|
</q-layout>
|
||||||
|
</div>
|
||||||
|
|
||||||
{% block vue_templates %}{% endblock %}
|
{% block vue_templates %}{% endblock %}
|
||||||
<!---->
|
<!---->
|
||||||
|
|
@ -258,6 +260,8 @@
|
||||||
{ value: 'fi', label: 'Suomi', display: '🇫🇮 FI' }
|
{ value: 'fi', label: 'Suomi', display: '🇫🇮 FI' }
|
||||||
]
|
]
|
||||||
</script>
|
</script>
|
||||||
{% block scripts %}{% endblock %}
|
{% block scripts %}{% endblock %} {% for url in INCLUDED_COMPONENTS %}
|
||||||
|
<script src="{{ static_url_for('static', url) }}"></script>
|
||||||
|
{% endfor %}
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
825
package-lock.json
generated
825
package-lock.json
generated
File diff suppressed because it is too large
Load diff
72
package.json
72
package.json
|
|
@ -6,45 +6,46 @@
|
||||||
"vendor_json": "node -e \"require('fs').writeFileSync('./lnbits/static/vendor.json', JSON.stringify(require('./package.json').bundle))\"",
|
"vendor_json": "node -e \"require('fs').writeFileSync('./lnbits/static/vendor.json', JSON.stringify(require('./package.json').bundle))\"",
|
||||||
"vendor_bundle_css": "node -e \"require('concat')(require('./package.json').bundle.css.map(a => 'lnbits/static/'+a), './lnbits/static/bundle.css')\"",
|
"vendor_bundle_css": "node -e \"require('concat')(require('./package.json').bundle.css.map(a => 'lnbits/static/'+a), './lnbits/static/bundle.css')\"",
|
||||||
"vendor_bundle_js": "node -e \"require('concat')(require('./package.json').bundle.js.map(a => 'lnbits/static/'+a),'./lnbits/static/bundle.js')\"",
|
"vendor_bundle_js": "node -e \"require('concat')(require('./package.json').bundle.js.map(a => 'lnbits/static/'+a),'./lnbits/static/bundle.js')\"",
|
||||||
|
"vendor_bundle_components": "node -e \"require('concat')(require('./package.json').bundle.components.map(a => 'lnbits/static/'+a), './lnbits/static/bundle-components.js')\"",
|
||||||
"vendor_minify_css": "./node_modules/.bin/minify ./lnbits/static/bundle.css > ./lnbits/static/bundle.min.css",
|
"vendor_minify_css": "./node_modules/.bin/minify ./lnbits/static/bundle.css > ./lnbits/static/bundle.min.css",
|
||||||
"vendor_minify_js": "./node_modules/.bin/minify ./lnbits/static/bundle.js > ./lnbits/static/bundle.min.js"
|
"vendor_minify_js": "./node_modules/.bin/minify ./lnbits/static/bundle.js > ./lnbits/static/bundle.min.js",
|
||||||
|
"vendor_minify_components": "./node_modules/.bin/minify ./lnbits/static/bundle-components.js > ./lnbits/static/bundle-components.min.js",
|
||||||
|
"bundle": "npm run sass && npm run vendor_copy && npm run vendor_json && npm run vendor_bundle_css && npm run vendor_bundle_js && npm run vendor_bundle_components && npm run vendor_minify_css && npm run vendor_minify_js && npm run vendor_minify_components"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"concat": "^1.0.3",
|
"concat": "^1.0.3",
|
||||||
"minify": "^9.2.0",
|
"minify": "^9.2.0",
|
||||||
"prettier": "^3.3.3",
|
"prettier": "^3.3.3",
|
||||||
"pyright": "1.1.289",
|
"pyright": "1.1.289",
|
||||||
"sass": "^1.60.0"
|
"sass": "^1.78.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@chenfengyuan/vue-qrcode": "1.0.2",
|
"axios": "^1.7.7",
|
||||||
"axios": "^1.7.5",
|
"chart.js": "^4.4.4",
|
||||||
"chart.js": "^2.9.4",
|
|
||||||
"moment": "^2.30.1",
|
"moment": "^2.30.1",
|
||||||
"quasar": "1.13.2",
|
"qrcode.vue": "^3.4.1",
|
||||||
|
"quasar": "2.16.10",
|
||||||
"showdown": "^2.1.0",
|
"showdown": "^2.1.0",
|
||||||
"underscore": "^1.13.6",
|
"underscore": "^1.13.7",
|
||||||
"vue": "2.6.12",
|
"vue": "3.5.2",
|
||||||
"vue-i18n": "^8.28.2",
|
"vue-i18n": "^9.14.0",
|
||||||
"vue-qrcode-reader": "^2.3.18",
|
"vue-qrcode-reader": "^5.5.7",
|
||||||
"vue-router": "3.4.3",
|
"vue-router": "4.4.3",
|
||||||
"vuex": "3.5.1"
|
"vuex": "4.1.0"
|
||||||
},
|
},
|
||||||
"vendor": [
|
"vendor": [
|
||||||
"./node_modules/moment/moment.js",
|
"./node_modules/moment/moment.js",
|
||||||
"./node_modules/underscore/underscore.js",
|
"./node_modules/underscore/underscore.js",
|
||||||
"./node_modules/axios/dist/axios.js",
|
"./node_modules/axios/dist/axios.js",
|
||||||
"./node_modules/vue/dist/vue.js",
|
"./node_modules/vue/dist/vue.global.prod.js",
|
||||||
"./node_modules/vue-router/dist/vue-router.js",
|
"./node_modules/quasar/dist/quasar.umd.prod.js",
|
||||||
"./node_modules/vue-qrcode-reader/dist/VueQrcodeReader.umd.js",
|
"./node_modules/vuex/dist/vuex.global.js",
|
||||||
"./node_modules/@chenfengyuan/vue-qrcode/dist/vue-qrcode.js",
|
"./node_modules/vue-i18n/dist/vue-i18n.global.prod.js",
|
||||||
"./node_modules/vuex/dist/vuex.js",
|
"./node_modules/vue-router/dist/vue-router.global.js",
|
||||||
"./node_modules/quasar/dist/quasar.ie.polyfills.umd.min.js",
|
"./node_modules/vue-qrcode-reader/dist/vue-qrcode-reader.umd.js",
|
||||||
"./node_modules/quasar/dist/quasar.umd.js",
|
"./node_modules/qrcode.vue/dist/qrcode.vue.browser.js",
|
||||||
"./node_modules/chart.js/dist/Chart.bundle.js",
|
"./node_modules/chart.js/dist/chart.umd.js",
|
||||||
"./node_modules/quasar/dist/quasar.css",
|
"./node_modules/quasar/dist/quasar.css",
|
||||||
"./node_modules/chart.js/dist/Chart.css",
|
|
||||||
"./node_modules/vue-i18n/dist/vue-i18n.js",
|
|
||||||
"./node_modules/showdown/dist/showdown.js"
|
"./node_modules/showdown/dist/showdown.js"
|
||||||
],
|
],
|
||||||
"bundle": {
|
"bundle": {
|
||||||
|
|
@ -52,15 +53,14 @@
|
||||||
"vendor/moment.js",
|
"vendor/moment.js",
|
||||||
"vendor/underscore.js",
|
"vendor/underscore.js",
|
||||||
"vendor/axios.js",
|
"vendor/axios.js",
|
||||||
"vendor/vue.js",
|
"vendor/vue.global.prod.js",
|
||||||
"vendor/vue-router.js",
|
"vendor/quasar.umd.prod.js",
|
||||||
"vendor/VueQrcodeReader.umd.js",
|
"vendor/vuex.global.js",
|
||||||
"vendor/vue-qrcode.js",
|
"vendor/vue-i18n.global.prod.js",
|
||||||
"vendor/vuex.js",
|
"vendor/vue-router.global.js",
|
||||||
"vendor/quasar.ie.polyfills.umd.min.js",
|
"vendor/vue-qrcode-reader.umd.js",
|
||||||
"vendor/quasar.umd.js",
|
"vendor/qrcode.vue.browser.js",
|
||||||
"vendor/Chart.bundle.js",
|
"vendor/chart.umd.js",
|
||||||
"vendor/vue-i18n.js",
|
|
||||||
"vendor/showdown.js",
|
"vendor/showdown.js",
|
||||||
"i18n/i18n.js",
|
"i18n/i18n.js",
|
||||||
"i18n/de.js",
|
"i18n/de.js",
|
||||||
|
|
@ -83,18 +83,20 @@
|
||||||
"i18n/kr.js",
|
"i18n/kr.js",
|
||||||
"i18n/fi.js",
|
"i18n/fi.js",
|
||||||
"js/base.js",
|
"js/base.js",
|
||||||
"js/components.js",
|
"js/event-reactions.js",
|
||||||
|
"js/bolt11-decoder.js"
|
||||||
|
],
|
||||||
|
"components": [
|
||||||
"js/components/lnbits-funding-sources.js",
|
"js/components/lnbits-funding-sources.js",
|
||||||
"js/components/extension-settings.js",
|
"js/components/extension-settings.js",
|
||||||
"js/components/extension-rating.js",
|
"js/components/extension-rating.js",
|
||||||
"js/components/payment-list.js",
|
"js/components/payment-list.js",
|
||||||
"js/components/payment-chart.js",
|
"js/components/payment-chart.js",
|
||||||
"js/event-reactions.js",
|
"js/components.js",
|
||||||
"js/bolt11-decoder.js"
|
"js/init-app.js"
|
||||||
],
|
],
|
||||||
"css": [
|
"css": [
|
||||||
"vendor/quasar.css",
|
"vendor/quasar.css",
|
||||||
"vendor/Chart.css",
|
|
||||||
"css/base.css"
|
"css/base.css"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue