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