From 6f966d5a2d1247082fcc7a7d5fb4ab1d5d0bf0e7 Mon Sep 17 00:00:00 2001 From: protom Date: Wed, 19 Aug 2026 21:06:17 +0200 Subject: [PATCH] build: lnurlcash-kit fork dependency, pwa tooling and test config --- package-lock.json | 67 +++++++++++++++++++++++++++++++++++++++++++++-- package.json | 3 +++ quasar.config.ts | 4 +-- vitest.config.ts | 8 +++--- 4 files changed, 73 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3661378..7bcbfd9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.1", "hasInstallScript": true, "dependencies": { + "@agicash/qr-scanner": "^0.1.2", "@fontsource/noto-sans": "^5.3.0", "@noble/curves": "^2.3.0", "@noble/hashes": "^2.3.0", @@ -17,6 +18,7 @@ "@scure/bip39": "^2.3.0", "lnurlcash-kit": "github:tompro/lnurlcash-kit#prepare-git-install", "pinia": "^4.0.2", + "qrcode.vue": "^3.10.0", "quasar": "^2.25.1", "vue": "^3.5.22", "vue-i18n": "^11.3.0", @@ -34,6 +36,7 @@ "eslint": "^10.8.0", "eslint-plugin-vue": "^10.8.0", "globals": "^17.4.0", + "lnurlcash-conformance": "github:TheCryptoDonkey/lnurlcash-conformance", "postcss": "^8.5.8", "prettier": "^3.8.1", "sass": "^1.102.0", @@ -47,6 +50,15 @@ "node": ">= 26 || ^24 || ^22.12" } }, + "node_modules/@agicash/qr-scanner": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@agicash/qr-scanner/-/qr-scanner-0.1.2.tgz", + "integrity": "sha512-7qNJoDRqBbHSm12qZ1l0O2JDof0sXNiooebsCXGZOsJpCLBYF9bAJXuy/4Q/jFwbiH0knFZq8myRI5v6IFqpEQ==", + "license": "MIT", + "dependencies": { + "zxing-wasm": "2.2.4" + } + }, "node_modules/@babel/code-frame": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", @@ -2657,6 +2669,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/emscripten": { + "version": "1.41.5", + "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.41.5.tgz", + "integrity": "sha512-cMQm7pxu6BxtHyqJ7mQZ2kXWV5SLmugybFdHCBbJ5eHzOo6VhBckEgAT3//rP5FwPHNPeEiq4SmQ5ucBwsOo4Q==", + "license": "MIT" + }, "node_modules/@types/esrecurse": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", @@ -5290,6 +5308,31 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/lnurlcash-conformance": { + "version": "0.1.0", + "resolved": "git+ssh://git@github.com/TheCryptoDonkey/lnurlcash-conformance.git#3d63f8ac3f3b8b87f5b490ff4a55c310afe4e5e2", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/curves": "^2.3.0", + "@noble/hashes": "^2.3.0", + "@scure/base": "^1.2.4" + }, + "bin": { + "lnurlcash-conform": "runner/cli.mjs", + "lnurlcash-mock-mint": "mock-mint/index.mjs" + } + }, + "node_modules/lnurlcash-conformance/node_modules/@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/lnurlcash-kit": { "version": "0.1.0", "resolved": "git+ssh://git@github.com/tompro/lnurlcash-kit.git#78c9ca2ed597da354629306f280eeb722b9223db", @@ -6000,6 +6043,15 @@ "node": ">=16.0.0" } }, + "node_modules/qrcode.vue": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/qrcode.vue/-/qrcode.vue-3.10.0.tgz", + "integrity": "sha512-1bjeBds9hRKMszZuBuYQZor9HdJYWtb0S44HG1JofZ9uicpJpdF+TtDvqo3+2ZlH0k80WVIkmiKB4hq0/N6/rA==", + "license": "MIT", + "peerDependencies": { + "vue": "^3.0.0" + } + }, "node_modules/quansync": { "version": "0.2.11", "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", @@ -6475,7 +6527,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", - "dev": true, "license": "MIT", "engines": { "node": ">=20" @@ -6655,7 +6706,6 @@ "version": "5.8.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.8.0.tgz", "integrity": "sha512-YGYEVz3Fm5iy/AybuA0oyNFq7H4CgQNfRp/qfe8nurE1kuCeNm3/vfm9X4Mtl+qLyaKJUh5xrFZwogr41SMjYA==", - "dev": true, "license": "(MIT OR CC0-1.0)", "dependencies": { "tagged-tag": "^1.0.0" @@ -7413,6 +7463,19 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zxing-wasm": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/zxing-wasm/-/zxing-wasm-2.2.4.tgz", + "integrity": "sha512-1gq5zs4wuNTs5umWLypzNNeuJoluFvwmvjiiT3L9z/TMlVveeJRWy7h90xyUqCe+Qq0zL0w7o5zkdDMWDr9aZA==", + "license": "MIT", + "dependencies": { + "@types/emscripten": "^1.41.5", + "type-fest": "^5.2.0" + }, + "peerDependencies": { + "@types/emscripten": ">=1.39.6" + } } } } diff --git a/package.json b/package.json index 6893f29..487b857 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "postinstall": "quasar prepare --silent" }, "dependencies": { + "@agicash/qr-scanner": "^0.1.2", "@fontsource/noto-sans": "^5.3.0", "@noble/curves": "^2.3.0", "@noble/hashes": "^2.3.0", @@ -24,6 +25,7 @@ "@scure/bip39": "^2.3.0", "lnurlcash-kit": "github:tompro/lnurlcash-kit#prepare-git-install", "pinia": "^4.0.2", + "qrcode.vue": "^3.10.0", "quasar": "^2.25.1", "vue": "^3.5.22", "vue-i18n": "^11.3.0", @@ -41,6 +43,7 @@ "eslint": "^10.8.0", "eslint-plugin-vue": "^10.8.0", "globals": "^17.4.0", + "lnurlcash-conformance": "github:TheCryptoDonkey/lnurlcash-conformance", "postcss": "^8.5.8", "prettier": "^3.8.1", "sass": "^1.102.0", diff --git a/quasar.config.ts b/quasar.config.ts index c07f971..cdc843c 100644 --- a/quasar.config.ts +++ b/quasar.config.ts @@ -11,7 +11,7 @@ export default defineConfig((ctx) => { // app boot file (/src/boot) // --> boot files are part of "main.js" // https://v2.quasar.dev/quasar-cli-vite/boot-files - boot: ['i18n'], + boot: ['i18n', 'wallet'], // https://v2.quasar.dev/quasar-cli-vite/quasar-config-file#css css: ['app.scss'], @@ -115,7 +115,7 @@ export default defineConfig((ctx) => { // directives: [], // Quasar plugins - plugins: [], + plugins: ['Notify'], }, // animations: 'all', // --- includes all animations diff --git a/vitest.config.ts b/vitest.config.ts index 79ba8d1..8bbf734 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -2,12 +2,10 @@ import { defineConfig } from 'vitest/config'; export default defineConfig({ test: { - // the tested modules are pure crypto/codec helpers - node's own - // WebCrypto (crypto.subtle) covers everything they need, no jsdom + // the tested modules are pure crypto/codec/protocol logic - node's own + // WebCrypto (crypto.subtle) and fetch cover everything they need, no + // jsdom. The ops suite spins real mock-mint HTTP servers on loopback. environment: 'node', include: ['src/**/*.test.ts'], - // protocol tests live in lnurlcash-kit (its conformance suite); app tests - // arrive with M2 flows. Don't fail CI until then. - passWithNoTests: true, }, });