From bba758cc09f8cfac2fb0cca80b1b80ea6ae2b3eb Mon Sep 17 00:00:00 2001 From: Pawan Paudel Date: Mon, 9 Feb 2026 12:34:18 +0545 Subject: [PATCH 1/8] fix: update firefox build --- .github/workflows/submit-ff.yml | 7 +- package.json | 34 +- patches/patch-plasmo-bundler.js | 26 ++ scripts/split-large-bundles.js | 344 ++++++++++++++++ yarn.lock | 684 +++++++++++++++++++++----------- 5 files changed, 845 insertions(+), 250 deletions(-) create mode 100644 patches/patch-plasmo-bundler.js create mode 100644 scripts/split-large-bundles.js diff --git a/.github/workflows/submit-ff.yml b/.github/workflows/submit-ff.yml index 261e21ea1..9d1982e7f 100644 --- a/.github/workflows/submit-ff.yml +++ b/.github/workflows/submit-ff.yml @@ -30,8 +30,11 @@ jobs: echo "PLASMO_PUBLIC_GA_MEASUREMENT_ID=${{ secrets.GA_MEASUREMENT_ID }}" >> .env echo "PLASMO_PUBLIC_GA_API_SECRET=${{ secrets.GA_API_SECRET }}" >> .env - - name: Build and Package the Firefox extension into a zip artifact - run: yarn build:firefox --zip + - name: Build the Firefox extension (includes bundle splitting) + run: yarn build:firefox + + - name: Package into zip artifact + run: cd build && zip -r firefox-mv3-prod.zip firefox-mv3-prod/ - name: Prepare submission keys id: prepare-keys diff --git a/package.json b/package.json index 606ed5bc8..059247c58 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "wander", "displayName": "Wander", - "version": "1.40.0", + "version": "1.41.3", "description": "__MSG_extensionDescription__", "author": "th8ta", "packageManager": "yarn@1.22.18", @@ -10,7 +10,7 @@ "dev:chrome": "yarn patch:math-intrinsics && cross-env PARCEL_WORKER_BACKEND=process plasmo dev", "build:chrome": "yarn patch:math-intrinsics && cross-env PARCEL_WORKER_BACKEND=process plasmo build --no-hoist", "dev:firefox": "yarn patch:math-intrinsics && cross-env PARCEL_WORKER_BACKEND=process plasmo dev --target=firefox-mv3", - "build:firefox": "yarn patch:math-intrinsics && cross-env PARCEL_WORKER_BACKEND=process plasmo build --target=firefox-mv3 --no-hoist", + "build:firefox": "yarn patch:math-intrinsics && node patches/patch-plasmo-bundler.js && cross-env PARCEL_WORKER_BACKEND=process plasmo build --target=firefox-mv3 && node scripts/split-large-bundles.js", "dev:iframe": "vite", "build:iframe": "vite build && yarn build:assets", "preview:iframe": "vite preview", @@ -55,16 +55,27 @@ "*://*/*" ] } - ] + ], + "browser_specific_settings": { + "gecko": { + "id": "{6c337925-991d-4139-8b64-8380cd30517a}", + "data_collection_permissions": { + "required": [], + "optional": [ + "technicalAndInteraction" + ] + } + } + } }, "dependencies": { - "@ar.io/sdk": "^3.18.0", + "@ar.io/sdk": "^3.23.1", "@arconnect/components": "^1.0.0", "@arconnect/keystone-sdk": "^0.0.5", "@dha-team/arbundles": "^1.0.2", "@iconicicons/react": "^1.5.0", - "@keystonehq/arweave-keyring": "^0.1.1-alpha.0", - "@keystonehq/bc-ur-registry-arweave": "^0.1.1-alpha.0", + "@keystonehq/arweave-keyring": "^0.5.3", + "@keystonehq/bc-ur-registry-arweave": "^0.5.3", "@ngraveio/bc-ur": "^1.1.6", "@noble/curves": "^1.9.2", "@number-flow/react": "^0.5.5", @@ -129,6 +140,7 @@ }, "devDependencies": { "@changesets/cli": "^2.27.1", + "@plasmohq/bms": "^2.6.1", "@semantic-release/git": "^10.0.1", "@semantic-release/github": "^9.2.6", "@types/chrome": "^0.0.319", @@ -182,5 +194,15 @@ }, "lint-staged": { "*.{js,ts,tsx,html,css,scss,md,json}": "prettier --write" + }, + "@plasmohq/parcel-config": { + "minBundles": 2, + "minBundleSize": 3000, + "maxParallelRequests": 30 + }, + "@parcel/bundler-default": { + "minBundles": 2, + "minBundleSize": 3000, + "maxParallelRequests": 30 } } diff --git a/patches/patch-plasmo-bundler.js b/patches/patch-plasmo-bundler.js new file mode 100644 index 000000000..7c224fbe8 --- /dev/null +++ b/patches/patch-plasmo-bundler.js @@ -0,0 +1,26 @@ +const fs = require("fs"); + +try { + console.log("Patching @plasmohq/parcel-bundler for Firefox bundle splitting"); + + const bundlerPath = require.resolve("@plasmohq/parcel-bundler/dist/index.js"); + let content = fs.readFileSync(bundlerPath, "utf-8"); + + const target = "minBundles:2,minBundleSize:1e3,maxParallelRequests:100"; + + if (content.includes(target)) { + console.log("Already patched"); + } else { + // Match any variant of the EXTENSION_OPTIONS pattern + const re = /minBundles:\s*[\d.e]+\s*,\s*minBundleSize:\s*[\d.e]+\s*,\s*maxParallelRequests:\s*[\d.e]+/; + if (re.test(content)) { + content = content.replace(re, target); + fs.writeFileSync(bundlerPath, content); + console.log("Patched: minBundles->2, minBundleSize->1000, maxParallelRequests->100"); + } else { + console.error("Could not find EXTENSION_OPTIONS pattern in bundler - skipping patch"); + } + } +} catch (err) { + console.error("Failed to patch @plasmohq/parcel-bundler:", err.message); +} diff --git a/scripts/split-large-bundles.js b/scripts/split-large-bundles.js new file mode 100644 index 000000000..b0b38d1bf --- /dev/null +++ b/scripts/split-large-bundles.js @@ -0,0 +1,344 @@ +#!/usr/bin/env node + +/** + * Post-build script to split large JS bundles for Firefox AMO compliance. + * Firefox's validator rejects JS files larger than 5MB (FILE_TOO_LARGE error). + * + * Approach (no eval required - CSP-safe for MV3): + * 1. Parse the Parcel bundle to find the module registry boundaries + * 2. Split module entries across multiple chunk files using Object.assign + * 3. Each chunk contains real executable JS (not strings) + * 4. Bootstrap file runs the Parcel runtime with the accumulated modules + * 5. HTML files and manifest.json are updated to load chunks before bootstrap + */ + +const fs = require("fs"); +const path = require("path"); + +const BUILD_DIR = path.join(__dirname, "../build/firefox-mv3-prod"); +const MAX_CHUNK_BYTES = 4 * 1024 * 1024; // 4MB per chunk (safe margin under 5MB) +const GLOBAL_NAME = "__pm"; + +function findFilesWithExt(dir, ext) { + const results = []; + for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { + const full = path.join(dir, entry.name); + if (entry.isDirectory()) { + results.push(...findFilesWithExt(full, ext)); + } else if (entry.name.endsWith(ext)) { + results.push(full); + } + } + return results; +} + +/** + * Find the Parcel module registry boundaries in the bundle code. + * Returns { preambleAndRuntime, registryContent, postamble } or null. + * + * Parcel bundle structure: + * var r,n;"function"==typeof(r=globalThis.define)&&(n=r,r=null), + * function(n,i,s,o,a){ RUNTIME }({ + * MODULE_REGISTRY + * },["entries"],"main","parcelRequireXXX"),globalThis.define=n; + */ +function parseParcelBundle(code) { + // Find }({ which marks: runtime } + call ( + registry { + // This is the boundary between the runtime function and the registry object + const callOpen = code.indexOf("}({"); + if (callOpen === -1) return null; + + // Everything up to and including the runtime's closing } + const preambleAndRuntime = code.slice(0, callOpen + 1); + const registryOpenBrace = callOpen + 2; // position of { + + // Find "parcelRequire" from the end to locate the end of the bundle + const pqIdx = code.lastIndexOf('"parcelRequire'); + if (pqIdx === -1) return null; + + // Find the closing } of the registry object by looking for }]} pattern + // }]} means: } closes last deps obj, ] closes last module array, } closes registry + let registryCloseBrace = -1; + for (let i = pqIdx; i > pqIdx - 500 && i >= 0; i--) { + if (code[i] === "}" && code[i + 1] === "]" && code[i + 2] === "}") { + registryCloseBrace = i + 2; // the } that closes the registry + break; + } + } + + if (registryCloseBrace === -1) return null; + + const registryContent = code.slice(registryOpenBrace, registryCloseBrace + 1); // {..} + const postamble = code.slice(registryCloseBrace + 1); // ,["entries"],...),globalThis.define=n; + + return { preambleAndRuntime, registryContent, postamble }; +} + +/** + * Find module boundaries in the registry using pattern matching. + * Returns array of split positions (byte offsets into registryContent). + */ +function findModuleBoundaries(registryContent) { + // Module boundary pattern: ],"identifier":[function( or ],identifier:[function( + const pattern = /\],("?[a-zA-Z0-9_]{2,12}"?):\[function\(/g; + const boundaries = []; + let match; + while ((match = pattern.exec(registryContent)) !== null) { + // Split point is right after the ] (before the comma) + boundaries.push(match.index + 1); // position of , + } + return boundaries; +} + +/** + * Split registry content into groups that fit under MAX_CHUNK_BYTES. + */ +function splitRegistry(registryContent, boundaries) { + if (boundaries.length === 0) { + return [registryContent]; + } + + // Include the end of registry as an implicit boundary so the tail + // content (after the last real boundary) is also size-checked. + const endPos = registryContent.length - 1; // position of closing } + const allPositions = [...boundaries, endPos]; + + const groups = []; + let groupStart = 1; // skip opening { + let groupByteSize = 0; + + // Overhead per chunk: Object.assign wrapper (~80 bytes) + const overhead = 100; + + for (let i = 0; i < allPositions.length; i++) { + const pos = allPositions[i]; + const prevPos = i === 0 ? 1 : allPositions[i - 1]; + const segmentBytes = Buffer.byteLength(registryContent.slice(prevPos, pos), "utf8"); + + if (groupByteSize + segmentBytes + overhead > MAX_CHUNK_BYTES && groupByteSize > 0) { + // Current group is full, finalize it + groups.push(registryContent.slice(groupStart, prevPos)); + groupStart = prevPos; + groupByteSize = segmentBytes; // start new group with current segment + } else { + groupByteSize += segmentBytes; + } + } + + // Last group: from groupStart to end (before closing }) + const lastContent = registryContent.slice(groupStart, registryContent.length - 1); + if (lastContent.length > 0) { + groups.push(lastContent); + } + + // Clean up: strip leading comma from groups + return groups.map((g) => (g.startsWith(",") ? g.slice(1) : g)); +} + +/** + * Verify split integrity by reconstructing the registry from chunks + * and comparing byte-for-byte against the original. + * Critical for wallet safety — a dropped module could break signing/transactions. + */ +function verifyIntegrity(registryContent, groups) { + const reconstructed = "{" + groups.join(",") + "}"; + + if (reconstructed.length !== registryContent.length) { + console.error( + ` INTEGRITY FAILURE: length mismatch (original=${registryContent.length}, reconstructed=${reconstructed.length})`, + ); + return false; + } + + if (reconstructed !== registryContent) { + for (let i = 0; i < reconstructed.length; i++) { + if (reconstructed[i] !== registryContent[i]) { + console.error(` INTEGRITY FAILURE: content mismatch at position ${i}`); + console.error(` Expected: ...${registryContent.slice(Math.max(0, i - 30), i + 30)}...`); + console.error(` Got: ...${reconstructed.slice(Math.max(0, i - 30), i + 30)}...`); + break; + } + } + return false; + } + + return true; +} + +function processFile(filePath) { + const content = fs.readFileSync(filePath, "utf8"); + const fileSize = Buffer.byteLength(content, "utf8"); + + if (fileSize <= 5 * 1024 * 1024) { + return null; + } + + console.log(` Original size: ${(fileSize / 1024 / 1024).toFixed(2)}MB`); + + const parsed = parseParcelBundle(content); + if (!parsed) { + console.error(" FATAL: Could not parse Parcel bundle structure for file >5MB — cannot split safely"); + process.exit(1); + } + + const { preambleAndRuntime, registryContent, postamble } = parsed; + console.log(` Registry: ${(Buffer.byteLength(registryContent, "utf8") / 1024 / 1024).toFixed(2)}MB`); + + const boundaries = findModuleBoundaries(registryContent); + console.log(` Module boundaries found: ${boundaries.length}`); + + if (boundaries.length === 0) { + console.error(" FATAL: No module boundaries found in file >5MB — cannot split safely"); + process.exit(1); + } + + const groups = splitRegistry(registryContent, boundaries); + + if (groups.length <= 1) { + console.error(" FATAL: Registry fits in one chunk but file >5MB — cannot split further"); + process.exit(1); + } + + console.log(` Split into ${groups.length} module chunks`); + + // Verify split integrity before writing any files + if (!verifyIntegrity(registryContent, groups)) { + console.error(" FATAL: Split integrity check failed — aborting to protect wallet code"); + process.exit(1); + } + console.log(" Integrity check passed"); + + const baseName = path.basename(filePath, ".js").replace(/[^a-zA-Z0-9]/g, "_"); + const dir = path.dirname(filePath); + const chunkPaths = []; + + // Write module chunks + for (let i = 0; i < groups.length; i++) { + const assignTarget = + i === 0 ? `globalThis.${GLOBAL_NAME}=globalThis.${GLOBAL_NAME}||{}` : `globalThis.${GLOBAL_NAME}`; + + const chunkContent = `Object.assign(${assignTarget},{${groups[i]}});\n`; + const chunkFileName = `${baseName}.p${i}.js`; + const chunkPath = path.join(dir, chunkFileName); + + fs.writeFileSync(chunkPath, chunkContent); + chunkPaths.push(chunkPath); + + const chunkBytes = Buffer.byteLength(chunkContent, "utf8"); + if (chunkBytes > 5 * 1024 * 1024) { + console.error( + ` FATAL: Chunk ${chunkFileName} is ${(chunkBytes / 1024 / 1024).toFixed(2)}MB (>5MB) — a single module may be too large to split`, + ); + process.exit(1); + } + console.log(` -> ${chunkFileName} (${(chunkBytes / 1024 / 1024).toFixed(2)}MB)`); + } + + // Write bootstrap (replaces original file) + // This runs the Parcel runtime with the accumulated module registry + const bootstrap = `${preambleAndRuntime}(globalThis.${GLOBAL_NAME}${postamble}delete globalThis.${GLOBAL_NAME};\n`; + fs.writeFileSync(filePath, bootstrap); + + const bootBytes = Buffer.byteLength(bootstrap, "utf8"); + console.log(` -> ${path.basename(filePath)} (${(bootBytes / 1024).toFixed(1)}KB) [bootstrap]`); + + return { mainFile: filePath, chunkPaths }; +} + +function updateHtmlFiles(buildDir, mainFilePath, chunkPaths) { + const relMain = "/" + path.relative(buildDir, mainFilePath).replace(/\\/g, "/"); + const htmlFiles = findFilesWithExt(buildDir, ".html"); + + for (const htmlFile of htmlFiles) { + let html = fs.readFileSync(htmlFile, "utf8"); + if (!html.includes(relMain)) continue; + + const chunkTags = chunkPaths + .map((p) => "/" + path.relative(buildDir, p).replace(/\\/g, "/")) + .map((rel) => ``) + .join(""); + + // Insert chunk scripts before the main (bootstrap) script + // Handle both deferred and non-deferred script tags + const deferTag = ``; + const plainTag = ``; + + if (html.includes(deferTag)) { + const chunkTagsDefer = chunkPaths + .map((p) => "/" + path.relative(buildDir, p).replace(/\\/g, "/")) + .map((rel) => ``) + .join(""); + html = html.replace(deferTag, `${chunkTagsDefer}${deferTag}`); + } else if (html.includes(plainTag)) { + html = html.replace(plainTag, `${chunkTags}${plainTag}`); + } + + fs.writeFileSync(htmlFile, html); + console.log(` Updated: ${path.basename(htmlFile)}`); + } +} + +function updateManifest(buildDir, mainFilePath, chunkPaths) { + const relMain = path.relative(buildDir, mainFilePath).replace(/\\/g, "/"); + const manifestPath = path.join(buildDir, "manifest.json"); + + if (!fs.existsSync(manifestPath)) return; + + const manifest = JSON.parse(fs.readFileSync(manifestPath, "utf8")); + + if (manifest.background && manifest.background.scripts) { + const idx = manifest.background.scripts.indexOf(relMain); + if (idx !== -1) { + const chunkRels = chunkPaths.map((p) => path.relative(buildDir, p).replace(/\\/g, "/")); + manifest.background.scripts.splice(idx, 0, ...chunkRels); + fs.writeFileSync(manifestPath, JSON.stringify(manifest)); + console.log(` Updated: manifest.json (background.scripts)`); + } + } +} + +function main() { + if (!fs.existsSync(BUILD_DIR)) { + console.error(`Build directory not found: ${BUILD_DIR}`); + process.exit(1); + } + + console.log(`Build dir: ${BUILD_DIR}`); + console.log(`Max chunk size: ${(MAX_CHUNK_BYTES / 1024 / 1024).toFixed(1)}MB\n`); + + const jsFiles = findFilesWithExt(BUILD_DIR, ".js"); + const largeFiles = jsFiles.filter((f) => fs.statSync(f).size > 5 * 1024 * 1024); + + if (largeFiles.length === 0) { + console.log("All files are under 5MB. No splitting needed."); + return; + } + + console.log(`Found ${largeFiles.length} file(s) exceeding 5MB:\n`); + + for (const file of largeFiles) { + console.log(`Processing: ${path.relative(BUILD_DIR, file)}`); + const result = processFile(file); + if (result) { + updateHtmlFiles(BUILD_DIR, result.mainFile, result.chunkPaths); + updateManifest(BUILD_DIR, result.mainFile, result.chunkPaths); + } + console.log(""); + } + + // Final verification + const remaining = findFilesWithExt(BUILD_DIR, ".js").filter((f) => fs.statSync(f).size > 5 * 1024 * 1024); + + if (remaining.length > 0) { + console.error("WARNING: The following files still exceed 5MB:"); + for (const f of remaining) { + const size = fs.statSync(f).size; + console.error(` ${path.relative(BUILD_DIR, f)} (${(size / 1024 / 1024).toFixed(2)}MB)`); + } + process.exit(1); + } + + console.log("All files are now under 5MB."); +} + +main(); diff --git a/yarn.lock b/yarn.lock index ee7c3a461..36b2e707d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -63,23 +63,18 @@ resolved "https://registry.npmjs.org/@analytics/type-utils/-/type-utils-0.6.4.tgz#b309211ace40691c25e8640c911fcd31ce082c1e" integrity sha512-Ou1gQxFakOWLcPnbFVsrPb8g1wLLUZYYJXDPjHkG07+5mustGs5yqACx42UAu4A6NszNN6Z5gGxhyH45zPWRxw== -"@ar.io/sdk@^3.18.0": - version "3.18.3" - resolved "https://registry.npmjs.org/@ar.io/sdk/-/sdk-3.18.3.tgz#5a19b386db0a685aa3b07ef43e06a44d714e40d4" - integrity sha512-RA2wXmSbKkn5uRgTwpA0j+FrkEWs7b21ZPK1AmFm24qKFCtkaXURC5V5xtBsNveh+0vh/O0xxNA2WTsmTO/3yA== +"@ar.io/sdk@^3.23.1": + version "3.23.1" + resolved "https://registry.npmjs.org/@ar.io/sdk/-/sdk-3.23.1.tgz#4d4bb4921047f8d78d3f16a12642f272900dd23a" + integrity sha512-QNLbynCb0qoowNwLhWF38Diox2ZQXa4wy8jlfGd8odJ7aLh04o10OwguL5t4IDVqteHCEW669Is6JmL81OXoyw== dependencies: "@dha-team/arbundles" "^1.0.1" "@permaweb/aoconnect" "0.0.68" arweave "1.15.5" - axios "1.8.4" - axios-retry "^4.3.0" + axios "^1.13.2" commander "^12.1.0" eventemitter3 "^5.0.1" - plimit-lit "^3.0.1" prompts "^2.4.2" - uuid "^11.1.0" - winston "^3.13.0" - zod "^3.23.8" "@arconnect/components@^1.0.0": version "1.0.0" @@ -490,11 +485,6 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@colors/colors@1.6.0", "@colors/colors@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" - integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== - "@csstools/color-helpers@^5.0.2": version "5.0.2" resolved "https://registry.yarnpkg.com/@csstools/color-helpers/-/color-helpers-5.0.2.tgz#82592c9a7c2b83c293d9161894e2a6471feb97b8" @@ -523,38 +513,29 @@ resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz#333fedabc3fd1a8e5d0100013731cf19e6a8c5d3" integrity sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw== -"@dabh/diagnostics@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" - integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== - dependencies: - colorspace "1.1.x" - enabled "2.0.x" - kuler "^2.0.0" - "@dha-team/arbundles@^1.0.1", "@dha-team/arbundles@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@dha-team/arbundles/-/arbundles-1.0.3.tgz#4080514945a830e7d61f3d079401f28e8bd198d2" - integrity sha512-/XelOo5V/1o1M8VchCQ+F7N5kxwirWh5jD5zg1KECaV80Qld6aKBSgG19VLlBsRUXbRUfjM+LDRPJm9Hjfmycg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/providers" "^5.7.2" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/wallet" "^5.7.0" - "@noble/ed25519" "^1.6.1" - arweave "^1.15.7" - base64url "^3.0.1" - bs58 "^4.0.1" - keccak "^3.0.2" - secp256k1 "^5.0.0" + version "1.0.4" + resolved "https://registry.npmjs.org/@dha-team/arbundles/-/arbundles-1.0.4.tgz#6204602675eccf6713edd943fa12a0f873d51024" + integrity sha512-T/4pv6bosp4caV32EubHTqDzLAqL6481Bsqd348JO0h+HSaMysloY/pFSLwZf9U3IvkJngIZ4njrYQUkjSkkwA== + dependencies: + "@ethersproject/bytes" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@noble/ed25519" "1.6.1" + arweave "1.15.7" + base64url "3.0.1" + bs58 "4.0.1" + keccak "3.0.2" + secp256k1 "5.0.0" optionalDependencies: - "@randlabs/myalgo-connect" "^1.1.2" - algosdk "^1.13.1" - arweave-stream-tx "^1.1.0" - multistream "^4.1.0" - tmp-promise "^3.0.2" + "@randlabs/myalgo-connect" "1.1.2" + algosdk "1.13.1" + arweave-stream-tx "1.1.0" + multistream "4.1.0" + tmp-promise "3.0.2" "@emnapi/runtime@^1.2.0": version "1.4.5" @@ -844,7 +825,7 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz#610d7ea539d2fcdbe39237b5cc175eb2c4451f9c" integrity sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw== -"@ethersproject/abstract-provider@^5.8.0": +"@ethersproject/abstract-provider@^5.7.0", "@ethersproject/abstract-provider@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz#7581f9be601afa1d02b95d26b9d9840926a35b0c" integrity sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg== @@ -857,7 +838,7 @@ "@ethersproject/transactions" "^5.8.0" "@ethersproject/web" "^5.8.0" -"@ethersproject/abstract-signer@^5.8.0": +"@ethersproject/abstract-signer@^5.7.0", "@ethersproject/abstract-signer@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz#8d7417e95e4094c1797a9762e6789c7356db0754" integrity sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA== @@ -868,7 +849,7 @@ "@ethersproject/logger" "^5.8.0" "@ethersproject/properties" "^5.8.0" -"@ethersproject/address@^5.8.0": +"@ethersproject/address@^5.7.0", "@ethersproject/address@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.8.0.tgz#3007a2c352eee566ad745dca1dbbebdb50a6a983" integrity sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA== @@ -879,14 +860,14 @@ "@ethersproject/logger" "^5.8.0" "@ethersproject/rlp" "^5.8.0" -"@ethersproject/base64@^5.8.0": +"@ethersproject/base64@^5.7.0", "@ethersproject/base64@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.8.0.tgz#61c669c648f6e6aad002c228465d52ac93ee83eb" integrity sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ== dependencies: "@ethersproject/bytes" "^5.8.0" -"@ethersproject/basex@^5.8.0": +"@ethersproject/basex@^5.7.0", "@ethersproject/basex@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.8.0.tgz#1d279a90c4be84d1c1139114a1f844869e57d03a" integrity sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q== @@ -894,7 +875,7 @@ "@ethersproject/bytes" "^5.8.0" "@ethersproject/properties" "^5.8.0" -"@ethersproject/bignumber@^5.8.0": +"@ethersproject/bignumber@^5.7.0", "@ethersproject/bignumber@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.8.0.tgz#c381d178f9eeb370923d389284efa19f69efa5d7" integrity sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA== @@ -903,6 +884,13 @@ "@ethersproject/logger" "^5.8.0" bn.js "^5.2.1" +"@ethersproject/bytes@5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + "@ethersproject/bytes@^5.7.0", "@ethersproject/bytes@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.8.0.tgz#9074820e1cac7507a34372cadeb035461463be34" @@ -910,13 +898,28 @@ dependencies: "@ethersproject/logger" "^5.8.0" -"@ethersproject/constants@^5.8.0": +"@ethersproject/constants@^5.7.0", "@ethersproject/constants@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.8.0.tgz#12f31c2f4317b113a4c19de94e50933648c90704" integrity sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg== dependencies: "@ethersproject/bignumber" "^5.8.0" +"@ethersproject/hash@5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/hash@^5.7.0", "@ethersproject/hash@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.8.0.tgz#b8893d4629b7f8462a90102572f8cd65a0192b4c" @@ -932,7 +935,7 @@ "@ethersproject/properties" "^5.8.0" "@ethersproject/strings" "^5.8.0" -"@ethersproject/hdnode@^5.8.0": +"@ethersproject/hdnode@^5.7.0", "@ethersproject/hdnode@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.8.0.tgz#a51ae2a50bcd48ef6fd108c64cbae5e6ff34a761" integrity sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA== @@ -950,9 +953,9 @@ "@ethersproject/transactions" "^5.8.0" "@ethersproject/wordlists" "^5.8.0" -"@ethersproject/json-wallets@^5.8.0": +"@ethersproject/json-wallets@^5.7.0", "@ethersproject/json-wallets@^5.8.0": version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz#d18de0a4cf0f185f232eb3c17d5e0744d97eb8c9" + resolved "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz#d18de0a4cf0f185f232eb3c17d5e0744d97eb8c9" integrity sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w== dependencies: "@ethersproject/abstract-signer" "^5.8.0" @@ -969,7 +972,7 @@ aes-js "3.0.0" scrypt-js "3.0.1" -"@ethersproject/keccak256@^5.8.0": +"@ethersproject/keccak256@^5.7.0", "@ethersproject/keccak256@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.8.0.tgz#d2123a379567faf2d75d2aaea074ffd4df349e6a" integrity sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng== @@ -977,12 +980,12 @@ "@ethersproject/bytes" "^5.8.0" js-sha3 "0.8.0" -"@ethersproject/logger@^5.8.0": +"@ethersproject/logger@^5.7.0", "@ethersproject/logger@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.8.0.tgz#f0232968a4f87d29623a0481690a2732662713d6" integrity sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA== -"@ethersproject/networks@^5.8.0": +"@ethersproject/networks@^5.7.0", "@ethersproject/networks@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.8.0.tgz#8b4517a3139380cba9fb00b63ffad0a979671fde" integrity sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg== @@ -997,13 +1000,39 @@ "@ethersproject/bytes" "^5.8.0" "@ethersproject/sha2" "^5.8.0" -"@ethersproject/properties@^5.8.0": +"@ethersproject/properties@^5.7.0", "@ethersproject/properties@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.8.0.tgz#405a8affb6311a49a91dabd96aeeae24f477020e" integrity sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw== dependencies: "@ethersproject/logger" "^5.8.0" +"@ethersproject/providers@5.7.2": + version "5.7.2" + resolved "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + "@ethersproject/providers@^5.7.2": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.8.0.tgz#6c2ae354f7f96ee150439f7de06236928bc04cb4" @@ -1030,15 +1059,15 @@ bech32 "1.1.4" ws "8.18.0" -"@ethersproject/random@^5.8.0": +"@ethersproject/random@^5.7.0", "@ethersproject/random@^5.8.0": version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.8.0.tgz#1bced04d49449f37c6437c701735a1a022f0057a" + resolved "https://registry.npmjs.org/@ethersproject/random/-/random-5.8.0.tgz#1bced04d49449f37c6437c701735a1a022f0057a" integrity sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A== dependencies: "@ethersproject/bytes" "^5.8.0" "@ethersproject/logger" "^5.8.0" -"@ethersproject/rlp@^5.8.0": +"@ethersproject/rlp@^5.7.0", "@ethersproject/rlp@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.8.0.tgz#5a0d49f61bc53e051532a5179472779141451de5" integrity sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q== @@ -1046,15 +1075,27 @@ "@ethersproject/bytes" "^5.8.0" "@ethersproject/logger" "^5.8.0" -"@ethersproject/sha2@^5.8.0": +"@ethersproject/sha2@^5.7.0", "@ethersproject/sha2@^5.8.0": version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.8.0.tgz#8954a613bb78dac9b46829c0a95de561ef74e5e1" + resolved "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.8.0.tgz#8954a613bb78dac9b46829c0a95de561ef74e5e1" integrity sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A== dependencies: "@ethersproject/bytes" "^5.8.0" "@ethersproject/logger" "^5.8.0" hash.js "1.1.7" +"@ethersproject/signing-key@5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + "@ethersproject/signing-key@^5.7.0", "@ethersproject/signing-key@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.8.0.tgz#9797e02c717b68239c6349394ea85febf8893119" @@ -1067,7 +1108,7 @@ elliptic "6.6.1" hash.js "1.1.7" -"@ethersproject/strings@^5.8.0": +"@ethersproject/strings@^5.7.0", "@ethersproject/strings@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.8.0.tgz#ad79fafbf0bd272d9765603215ac74fd7953908f" integrity sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg== @@ -1076,6 +1117,21 @@ "@ethersproject/constants" "^5.8.0" "@ethersproject/logger" "^5.8.0" +"@ethersproject/transactions@5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions@^5.7.0", "@ethersproject/transactions@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.8.0.tgz#1e518822403abc99def5a043d1c6f6fe0007e46b" @@ -1091,6 +1147,27 @@ "@ethersproject/rlp" "^5.8.0" "@ethersproject/signing-key" "^5.8.0" +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + "@ethersproject/wallet@^5.7.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.8.0.tgz#49c300d10872e6986d953e8310dc33d440da8127" @@ -1112,7 +1189,7 @@ "@ethersproject/transactions" "^5.8.0" "@ethersproject/wordlists" "^5.8.0" -"@ethersproject/web@^5.8.0": +"@ethersproject/web@^5.7.0", "@ethersproject/web@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.8.0.tgz#3e54badc0013b7a801463a7008a87988efce8a37" integrity sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw== @@ -1123,7 +1200,7 @@ "@ethersproject/properties" "^5.8.0" "@ethersproject/strings" "^5.8.0" -"@ethersproject/wordlists@^5.8.0": +"@ethersproject/wordlists@^5.7.0", "@ethersproject/wordlists@^5.8.0": version "5.8.0" resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.8.0.tgz#7a5654ee8d1bb1f4dbe43f91d217356d650ad821" integrity sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg== @@ -1617,43 +1694,42 @@ resolved "https://registry.yarnpkg.com/@keystonehq/alias-sampling/-/alias-sampling-0.1.2.tgz#63af931ffe6500aef4c0d87775a5b279189abf8d" integrity sha512-5ukLB3bcgltgaFfQfYKYwHDUbwHicekYo53fSEa7xhVkAEqsA74kxdIwoBIURmGUtXe3EVIRm4SYlgcrt2Ri0w== -"@keystonehq/arweave-keyring@^0.1.1-alpha.0": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@keystonehq/arweave-keyring/-/arweave-keyring-0.1.6.tgz#71fc0c751ed493ce02137c10db3476cccaa98947" - integrity sha512-uBYlLtAZAU0mJFwaQ1fiVxMjdQ0CzjvDVqeDSt1h5L4OHFIZPHf/BPeo1EJlyMWtXDIQV9JuLhHeZDOOyzsFRA== +"@keystonehq/arweave-keyring@^0.5.3": + version "0.5.3" + resolved "https://registry.npmjs.org/@keystonehq/arweave-keyring/-/arweave-keyring-0.5.3.tgz#3521ef7e5dfe77db25c556b89a41d02c5a6e628b" + integrity sha512-/BiyqtPU6nijU3DwhhwPV7sJefORoD290FBKwECi9l64bw3sEEfH9F6SJxlbrZ+QrW4T3FJobkq1s/dlHXgpuA== dependencies: - "@keystonehq/bc-ur-registry-arweave" "^0.1.6" - "@keystonehq/sdk" "^0.14.1-alpha.2" + "@keystonehq/bc-ur-registry-arweave" "^0.5.2" + "@keystonehq/sdk" "^0.19.2" uuid "^8.3.2" -"@keystonehq/bc-ur-registry-arweave@^0.1.1-alpha.0", "@keystonehq/bc-ur-registry-arweave@^0.1.6": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry-arweave/-/bc-ur-registry-arweave-0.1.6.tgz#b93315acada744582adf26dea361b96e41306c58" - integrity sha512-v3ZchIClnejXlGPoUpbDKScjQzmuApJae5EATpmxYei/2wfMyTdNVeQSrLQKcGvRb0cmh5jixbzT2moXeQpAbg== +"@keystonehq/bc-ur-registry-arweave@^0.5.2", "@keystonehq/bc-ur-registry-arweave@^0.5.3": + version "0.5.3" + resolved "https://registry.npmjs.org/@keystonehq/bc-ur-registry-arweave/-/bc-ur-registry-arweave-0.5.3.tgz#881259fcfdb8aecf2fc81328cf8061a2c988a965" + integrity sha512-b5OAzhW7HLaOX7OEyWA+Bz+4EJIzCT7c+JXU0TElzpBD5rGo4ylf+StuyV6WnuKx5NV11fv9k2XDyHit26CCLA== dependencies: - "@keystonehq/bc-ur-registry" "0.5.4" + "@keystonehq/bc-ur-registry" "^0.6.4" uuid "^8.3.2" -"@keystonehq/bc-ur-registry@0.5.4": - version "0.5.4" - resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.5.4.tgz#5802486a29f5d772520d15579d40fba02860e27f" - integrity sha512-z7bZe10I5k0zz9znmDTXh+o3Rzb5XsRVpwAzexubOaLxVdZ0F7aMbe2LoEsw766Hpox/7zARi7UGmLz5C8BAzA== +"@keystonehq/bc-ur-registry@^0.6.4": + version "0.6.4" + resolved "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz#9c57ff9687cafdc0d2bbd04dc36676d3a38c1485" + integrity sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ== dependencies: "@ngraveio/bc-ur" "^1.1.5" bs58check "^2.1.2" tslib "^2.3.0" -"@keystonehq/sdk@^0.14.1-alpha.2": - version "0.14.1-alpha.2" - resolved "https://registry.yarnpkg.com/@keystonehq/sdk/-/sdk-0.14.1-alpha.2.tgz#77c2fdd7a1105898a2241e58b0942ea7f97de1d9" - integrity sha512-SUvg4vNd4zJeuLdFwt4s3UtU1+YYHEjO7lLBJkCRh+wuFp/MieFNF58FzEKelLhVsgjA7bQ5v84P33drbgbZwA== +"@keystonehq/sdk@^0.19.2": + version "0.19.2" + resolved "https://registry.npmjs.org/@keystonehq/sdk/-/sdk-0.19.2.tgz#2c7e35b93fc8c853b1161f32c1f0f68d272b43f3" + integrity sha512-ilA7xAhPKvpHWlxjzv3hjMehD6IKYda4C1TeG2/DhFgX9VSffzv77Eebf8kVwzPLdYV4LjX1KQ2ZDFoN1MsSFQ== dependencies: "@ngraveio/bc-ur" "^1.0.0" qrcode.react "^1.0.1" react-modal "^3.12.1" react-qr-reader "^2.2.1" rxjs "^6.6.3" - typescript "^4.6.2" "@lezer/common@^0.15.0", "@lezer/common@^0.15.7": version "0.15.12" @@ -1986,6 +2062,11 @@ dependencies: "@noble/hashes" "1.8.0" +"@noble/ed25519@1.6.1": + version "1.6.1" + resolved "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.6.1.tgz#bad3e77008c7825a0859304ab8b4177703cd438d" + integrity sha512-Gptpue6qPmg7p1E5LBO5GDtXw5WMc2DVtUmu4EQequOcoCvum1dT9sY6s9M8aSJWq9YopCN4jmTOAvqMdw3q7w== + "@noble/ed25519@^1.6.1": version "1.7.5" resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.5.tgz#94df8bdb9fec9c4644a56007eecb57b0e9fbd0d7" @@ -3282,6 +3363,26 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@plasmohq/bms@^2.6.1": + version "2.6.1" + resolved "https://registry.npmjs.org/@plasmohq/bms/-/bms-2.6.1.tgz#4680dad4fac98d65e4709e76fcae935daf147e8f" + integrity sha512-Hr67hTI9jvv1piXiXRyYaD+dOej39uP+DXMlVYbshyKxrFzd03VmqNIMbPHm03kGDyHH8uVe3n9YVBYrYXXU4A== + dependencies: + "@plasmohq/chrome-webstore-api" "2.11.0" + "@plasmohq/edge-addons-api" "2.0.0" + "@plasmohq/itero-testbed-api" "0.7.0" + "@plasmohq/mozilla-addons-api" "2.8.1" + compare-versions "6.1.1" + fflate "0.8.2" + parse-duration "1.1.0" + +"@plasmohq/chrome-webstore-api@2.11.0": + version "2.11.0" + resolved "https://registry.npmjs.org/@plasmohq/chrome-webstore-api/-/chrome-webstore-api-2.11.0.tgz#5f305756455e298ec053989f08fb8f822ea6f94e" + integrity sha512-AJ+MMLElkhp48sAAvRWNhpfDCdvucQe45il1fTrBzcz5aEnH7xf2db+EFkbgJ3rH9/T5b2cZcAWXS7z3ww/tCQ== + dependencies: + got "14.4.4" + "@plasmohq/consolidate@0.17.0": version "0.17.0" resolved "https://registry.yarnpkg.com/@plasmohq/consolidate/-/consolidate-0.17.0.tgz#10d57149fad4da07de8d393a5f123bc7d90ccfe0" @@ -3289,11 +3390,35 @@ dependencies: bluebird "^3.7.2" +"@plasmohq/edge-addons-api@2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@plasmohq/edge-addons-api/-/edge-addons-api-2.0.0.tgz#13d76e7d5c7a40338fa1941aa7ba3916a081fbbe" + integrity sha512-kqtXxYF/kXJrDlCkewk3sUUAFGmRRpzcNv5vuf0mvNIcVKEuU1ixDWSFYw/amSnju5QkcwAtsceLvCmfy+6NBA== + dependencies: + got "14.4.4" + "@plasmohq/init@0.7.0": version "0.7.0" resolved "https://registry.yarnpkg.com/@plasmohq/init/-/init-0.7.0.tgz#8705db28c3da7e570e8d6f404a4ca1892268d16c" integrity sha512-P75g48dqOGneJ+n0AcqnLE/TYflcaPc3B7h6EopnCBBYUDnCNBMwYmKAkaf5pnhsEB0ybPS6TU1C2DTGfqaW7A== +"@plasmohq/itero-testbed-api@0.7.0": + version "0.7.0" + resolved "https://registry.npmjs.org/@plasmohq/itero-testbed-api/-/itero-testbed-api-0.7.0.tgz#5cf0367c4a40c0e4f195f1c25e0cbd3308d01040" + integrity sha512-7GJiGKqQtAnQujhvpbNf4WQHeUMr57qZPqbTKqkvC0KVCDvYqE8qz2bmlHwDyhd4y+46u2R6fkVR1Bp73XxTWA== + dependencies: + got "12.6.0" + +"@plasmohq/mozilla-addons-api@2.8.1": + version "2.8.1" + resolved "https://registry.npmjs.org/@plasmohq/mozilla-addons-api/-/mozilla-addons-api-2.8.1.tgz#18cc6ee9fab088103f89b6f536451c5f67e477cc" + integrity sha512-JnmodAzBdfi/ka2sS+RiQDeISVoYyEokWdMsVmlzgCo81tzIb7eKx0FqM0d53jW+0GhiLsDH59cqn0GG1J5jsA== + dependencies: + form-data-encoder "4.0.2" + formdata-node "6.0.3" + got "14.4.4" + jsonwebtoken "9.0.2" + "@plasmohq/parcel-bundler@0.5.6": version "0.5.6" resolved "https://registry.yarnpkg.com/@plasmohq/parcel-bundler/-/parcel-bundler-0.5.6.tgz#05c6c60c6ecc213ab0ce75f05d7c98981ffe858c" @@ -3598,11 +3723,18 @@ dependencies: "@prisma/debug" "6.11.1" -"@randlabs/communication-bridge@1.0.1": +"@randlabs/communication-bridge@1.0.1", "@randlabs/communication-bridge@^1.0.0": version "1.0.1" - resolved "https://registry.yarnpkg.com/@randlabs/communication-bridge/-/communication-bridge-1.0.1.tgz#d1ecfc29157afcbb0ca2d73122d67905eecb5bf3" + resolved "https://registry.npmjs.org/@randlabs/communication-bridge/-/communication-bridge-1.0.1.tgz#d1ecfc29157afcbb0ca2d73122d67905eecb5bf3" integrity sha512-CzS0U8IFfXNK7QaJFE4pjbxDGfPjbXBEsEaCn9FN15F+ouSAEUQkva3Gl66hrkBZOGexKFEWMwUHIDKpZ2hfVg== +"@randlabs/myalgo-connect@1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@randlabs/myalgo-connect/-/myalgo-connect-1.1.2.tgz#ea52c119bcbe5581c478dbb9e8c7ea0446615c90" + integrity sha512-UPsdWfZmnRvEuGL83MNolSzVRDfCo4cURA5Bxi9whRcoglEte3hUgEwbxesaeCnpByvgLNYM9YBbjBb8Bh9PqQ== + dependencies: + "@randlabs/communication-bridge" "^1.0.0" + "@randlabs/myalgo-connect@^1.1.2": version "1.4.2" resolved "https://registry.yarnpkg.com/@randlabs/myalgo-connect/-/myalgo-connect-1.4.2.tgz#ce3ad97b3889ea21da75852187511d3f6be0fa05" @@ -4688,11 +4820,6 @@ "@types/react" "*" csstype "^3.0.2" -"@types/triple-beam@^1.3.2": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" - integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== - "@types/trusted-types@2.0.7": version "2.0.7" resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" @@ -5075,6 +5202,22 @@ algo-msgpack-with-bigint@^2.1.1: resolved "https://registry.yarnpkg.com/algo-msgpack-with-bigint/-/algo-msgpack-with-bigint-2.1.1.tgz#38bb717220525b3ff42232eefdcd9efb9ad405d6" integrity sha512-F1tGh056XczEaEAqu7s+hlZUDWwOBT70Eq0lfMpBP2YguSQVyxRbprLq5rELXKQOyOaixTWYhMeMQMzP0U5FoQ== +algosdk@1.13.1: + version "1.13.1" + resolved "https://registry.npmjs.org/algosdk/-/algosdk-1.13.1.tgz#c6b5b12121cb24efb5fb518e7886e81d87ed44e1" + integrity sha512-htyJI1/zVcOzpNZVT8PHn4K0yXXTS+b7RXplc7nmFqGVThbM8+ufbnBLChxVPh3BVxqqpqS13VTsQcNArK10jg== + dependencies: + algo-msgpack-with-bigint "^2.1.1" + buffer "^6.0.2" + hi-base32 "^0.5.1" + js-sha256 "^0.9.0" + js-sha3 "^0.8.0" + js-sha512 "^0.8.0" + json-bigint "^1.0.0" + superagent "^6.1.0" + tweetnacl "^1.0.3" + url-parse "^1.5.1" + algosdk@^1.13.1: version "1.24.1" resolved "https://registry.yarnpkg.com/algosdk/-/algosdk-1.24.1.tgz#afc4102457ae0c38a32de6b84f4d713aedfc9e89" @@ -5276,6 +5419,14 @@ arweave-multihost@^0.1.0: arweave "^1.10.15" axios "^0.21.1" +arweave-stream-tx@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/arweave-stream-tx/-/arweave-stream-tx-1.1.0.tgz#288fbaee30f6aa5cadb0b7cd2efd5b34147e867f" + integrity sha512-1BEYGFSP+FP1ACfclTjSjSTWx5PV/7a+0TwGZu+MlkmnnZTQ3hCOr5Md2Pi/T6dc69Fj+BRezSckiIhKFwTc3g== + dependencies: + exponential-backoff "^3.1.0" + stream-chunker "^1.2.8" + arweave-stream-tx@^1.1.0: version "1.2.2" resolved "https://registry.yarnpkg.com/arweave-stream-tx/-/arweave-stream-tx-1.2.2.tgz#2d5c66554301baacd02586a152fbb198b422112f" @@ -5293,7 +5444,7 @@ arweave@1.15.5: base64-js "^1.5.1" bignumber.js "^9.0.2" -arweave@^1.10.13, arweave@^1.10.15, arweave@^1.10.16, arweave@^1.13.7, arweave@^1.15.7: +arweave@1.15.7, arweave@^1.10.13, arweave@^1.10.15, arweave@^1.10.16, arweave@^1.13.7, arweave@^1.15.7: version "1.15.7" resolved "https://registry.yarnpkg.com/arweave/-/arweave-1.15.7.tgz#d09265d128e93a471203649de083ba7fec52cb29" integrity sha512-F+Y4iWU1qea9IsKQ/YNmLsY4DHQVsaJBuhEbFxQn9cfGHOmtXE+bwo14oY8xqymsqSNf/e1PeIfLk7G7qN/hVA== @@ -5345,11 +5496,6 @@ async-retry@^1.3.3: dependencies: retry "0.13.1" -async@^3.2.3: - version "3.2.6" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" - integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -5362,14 +5508,7 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" -axios-retry@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/axios-retry/-/axios-retry-4.5.0.tgz#441fdc32cedf63d6abd5de5d53db3667afd4c39b" - integrity sha512-aR99oXhpEDGo0UuAlYcn2iGRds30k366Zfa05XWScR9QaQD4JYiP3/1Qt1u7YlefUOK+cn0CcwoL1oefavQUlQ== - dependencies: - is-retry-allowed "^2.2.0" - -axios@1.8.4, axios@^0.21.1, axios@^1.4.0, axios@^1.6.0, axios@^1.6.7, axios@^1.7.2: +axios@^0.21.1, axios@^1.13.2, axios@^1.4.0, axios@^1.6.0, axios@^1.6.7, axios@^1.7.2: version "1.9.0" resolved "https://registry.yarnpkg.com/axios/-/axios-1.9.0.tgz#25534e3b72b54540077d33046f77e3b8d7081901" integrity sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg== @@ -5419,7 +5558,7 @@ base64-js@^1.3.1, base64-js@^1.5.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -base64url@^3.0.1: +base64url@3.0.1, base64url@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== @@ -5476,7 +5615,7 @@ bip39-web-crypto@^4.0.1: bip39@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.1.0.tgz#c55a418deaf48826a6ceb34ac55b3ee1577e18a3" + resolved "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz#c55a418deaf48826a6ceb34ac55b3ee1577e18a3" integrity sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A== dependencies: "@noble/hashes" "^1.2.0" @@ -5623,9 +5762,9 @@ browserslist@^4.24.0, browserslist@^4.6.6: node-releases "^2.0.19" update-browserslist-db "^1.1.3" -bs58@^4.0.0, bs58@^4.0.1: +bs58@4.0.1, bs58@^4.0.0, bs58@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== dependencies: base-x "^3.0.2" @@ -6040,7 +6179,7 @@ code-red@^1.0.3: estree-walker "^3.0.3" periscopic "^3.1.0" -color-convert@^1.9.0, color-convert@^1.9.3: +color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -6064,7 +6203,7 @@ color-name@^1.0.0, color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.6.0, color-string@^1.9.0: +color-string@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== @@ -6072,14 +6211,6 @@ color-string@^1.6.0, color-string@^1.9.0: color-name "^1.0.0" simple-swizzle "^0.2.2" -color@^3.1.3: - version "3.2.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" - integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== - dependencies: - color-convert "^1.9.3" - color-string "^1.6.0" - color@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" @@ -6093,14 +6224,6 @@ colorette@^2.0.20: resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== -colorspace@1.1.x: - version "1.1.4" - resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" - integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== - dependencies: - color "^3.1.3" - text-hex "1.0.x" - combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -6141,11 +6264,16 @@ compare-func@^2.0.0: array-ify "^1.0.0" dot-prop "^5.1.0" -compare-versions@^6.1.1: +compare-versions@6.1.1, compare-versions@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-6.1.1.tgz#7af3cc1099ba37d244b3145a9af5201b629148a9" integrity sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg== +component-emitter@^1.3.0: + version "1.3.1" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17" + integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -6233,6 +6361,11 @@ cookie@^1.0.1: resolved "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz#27360701532116bd3f1f9416929d176afe1e4610" integrity sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA== +cookiejar@^2.1.2: + version "2.1.4" + resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" + integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== + copy-anything@^2.0.1: version "2.0.6" resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" @@ -6576,6 +6709,13 @@ debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.3.4, debug@^4.4.0, d dependencies: ms "^2.1.3" +debug@^4.1.1: + version "4.4.3" + resolved "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" + integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== + dependencies: + ms "^2.1.3" + decimal.js-light@^2.5.1: version "2.5.1" resolved "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz#134fd32508f19e208f4fb2f8dac0d2626a867934" @@ -6811,7 +6951,20 @@ electron-to-chromium@^1.4.535, electron-to-chromium@^1.5.173: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.190.tgz#f0ac8be182291a45e8154dbb12f18d2b2318e4ac" integrity sha512-k4McmnB2091YIsdCgkS0fMVMPOJgxl93ltFzaryXqwip1AaxeDqKCGLxkXODDA5Ab/D+tV5EL5+aTx76RvLRxw== -elliptic@6.6.1, elliptic@^6.5.3, elliptic@^6.5.5, elliptic@^6.5.7: +elliptic@6.5.4: + version "6.5.4" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +elliptic@6.6.1, elliptic@^6.5.3, elliptic@^6.5.4, elliptic@^6.5.5, elliptic@^6.5.7: version "6.6.1" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.1.tgz#3b8ffb02670bf69e382c7f65bf524c97c5405c06" integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== @@ -6886,11 +7039,6 @@ emojilib@^2.4.0: resolved "https://registry.yarnpkg.com/emojilib/-/emojilib-2.4.0.tgz#ac518a8bb0d5f76dda57289ccb2fdf9d39ae721e" integrity sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw== -enabled@2.0.x: - version "2.0.0" - resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" - integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== - encoding@^0.1.13: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" @@ -7239,6 +7387,11 @@ fast-glob@3.3.3, fast-glob@^3.2.9, fast-glob@^3.3.3: merge2 "^1.3.0" micromatch "^4.0.8" +fast-safe-stringify@^2.0.7: + version "2.1.1" + resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + fast-uri@^3.0.1: version "3.0.6" resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" @@ -7261,11 +7414,6 @@ fdir@^6.4.4, fdir@^6.4.6: resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.6.tgz#2b268c0232697063111bbf3f64810a2a741ba281" integrity sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w== -fecha@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" - integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== - fflate@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.2.tgz#fc8631f5347812ad6028bbe4a2308b2792aa1dea" @@ -7328,11 +7476,6 @@ find-versions@^6.0.0: semver-regex "^4.0.5" super-regex "^1.0.0" -fn.name@1.x.x: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" - integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== - follow-redirects@^1.15.6: version "1.15.9" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" @@ -7353,6 +7496,11 @@ foreground-child@^3.1.0: cross-spawn "^7.0.6" signal-exit "^4.0.1" +form-data-encoder@4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-4.0.2.tgz#dd286fd5f9049e8ded1d44ce427f5e29185c7c12" + integrity sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw== + form-data-encoder@^2.1.2: version "2.1.4" resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.4.tgz#261ea35d2a70d48d30ec7a9603130fa5515e9cd5" @@ -7363,6 +7511,17 @@ form-data-encoder@^4.0.2: resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-4.1.0.tgz#497cedc94810bd5d53b99b5d4f6c152d5cbc9db2" integrity sha512-G6NsmEW15s0Uw9XnCg+33H3ViYRyiM0hMrMhhqQOR8NFc5GhYrI+6I3u7OTw7b91J2g8rtvMBZJDbcGb2YUniw== +form-data@^3.0.0: + version "3.0.4" + resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.4.tgz#938273171d3f999286a4557528ce022dc2c98df1" + integrity sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" + mime-types "^2.1.35" + form-data@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4" @@ -7374,6 +7533,16 @@ form-data@^4.0.0: hasown "^2.0.2" mime-types "^2.1.12" +formdata-node@6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/formdata-node/-/formdata-node-6.0.3.tgz#48f8e2206ae2befded82af621ef015f08168dc6d" + integrity sha512-8e1++BCiTzUno9v5IZ2J6bv4RU+3UKDmqWUQD0MIMVCd9AdhWkO1gw57oo1mNEX1dMq2EGI+FbWz4B92pscSQg== + +formidable@^1.2.2: + version "1.2.6" + resolved "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz#d2a51d60162bbc9b4a055d8457a7c75315d1a168" + integrity sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ== + framer-motion@^11.11.7: version "11.18.2" resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-11.18.2.tgz#0c6bd05677f4cfd3b3bdead4eb5ecdd5ed245718" @@ -7608,6 +7777,23 @@ gopd@^1.0.1, gopd@^1.2.0: resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== +got@12.6.0: + version "12.6.0" + resolved "https://registry.npmjs.org/got/-/got-12.6.0.tgz#8d382ee5de4432c086e83c133efdd474484f6ac7" + integrity sha512-WTcaQ963xV97MN3x0/CbAriXFZcXCfgxVp91I+Ze6pawQOa7SgzwSx2zIJJsX+kTajMnVs0xcFD1TxZKFqhdnQ== + dependencies: + "@sindresorhus/is" "^5.2.0" + "@szmarczak/http-timer" "^5.0.1" + cacheable-lookup "^7.0.0" + cacheable-request "^10.2.8" + decompress-response "^6.0.0" + form-data-encoder "^2.1.2" + get-stream "^6.0.1" + http2-wrapper "^2.1.10" + lowercase-keys "^3.0.0" + p-cancelable "^3.0.0" + responselike "^3.0.0" + got@13.0.0: version "13.0.0" resolved "https://registry.yarnpkg.com/got/-/got-13.0.0.tgz#a2402862cef27a5d0d1b07c0fb25d12b58175422" @@ -7625,6 +7811,23 @@ got@13.0.0: p-cancelable "^3.0.0" responselike "^3.0.0" +got@14.4.4: + version "14.4.4" + resolved "https://registry.npmjs.org/got/-/got-14.4.4.tgz#de6ae81e09dea32f11295e7896fd9fd80a49dbcd" + integrity sha512-tqiF7eSgTBwQkxb1LxsEpva8TaMYVisbhplrFVmw9GQE3855Z+MH/mnsXLLOkDxR6hZJRFMj5VTAZ8lmTF8ZOA== + dependencies: + "@sindresorhus/is" "^7.0.1" + "@szmarczak/http-timer" "^5.0.1" + cacheable-lookup "^7.0.0" + cacheable-request "^12.0.1" + decompress-response "^6.0.0" + form-data-encoder "^4.0.2" + http2-wrapper "^2.2.1" + lowercase-keys "^3.0.0" + p-cancelable "^4.0.1" + responselike "^3.0.0" + type-fest "^4.26.1" + got@14.4.6: version "14.4.6" resolved "https://registry.yarnpkg.com/got/-/got-14.4.6.tgz#c8c4ca3250296686e47b16ec155c684e1a588348" @@ -8236,11 +8439,6 @@ is-regex@^1.2.1: has-tostringtag "^1.0.2" hasown "^2.0.2" -is-retry-allowed@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz#88f34cbd236e043e71b6932d09b0c65fb7b4d71d" - integrity sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg== - is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" @@ -8550,7 +8748,7 @@ jsonparse@^1.2.0, jsonparse@^1.3.1: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== -jsonwebtoken@^9.0.2: +jsonwebtoken@9.0.2, jsonwebtoken@^9.0.2: version "9.0.2" resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3" integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== @@ -8603,6 +8801,15 @@ jwt-decode@^4.0.0: resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-4.0.0.tgz#2270352425fd413785b2faf11f6e755c5151bd4b" integrity sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA== +keccak@3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" + integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + keccak@^3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d" @@ -8634,11 +8841,6 @@ kolorist@^1.8.0: resolved "https://registry.yarnpkg.com/kolorist/-/kolorist-1.8.0.tgz#edddbbbc7894bc13302cdf740af6374d4a04743c" integrity sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ== -kuler@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" - integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== - ky@^1.2.0: version "1.8.2" resolved "https://registry.yarnpkg.com/ky/-/ky-1.8.2.tgz#161cba76e4a86b43829565b9a9c8d21d03e602db" @@ -9131,18 +9333,6 @@ log-update@^6.1.0: strip-ansi "^7.1.0" wrap-ansi "^9.0.0" -logform@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/logform/-/logform-2.7.0.tgz#cfca97528ef290f2e125a08396805002b2d060d1" - integrity sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ== - dependencies: - "@colors/colors" "1.6.0" - "@types/triple-beam" "^1.3.2" - fecha "^4.2.0" - ms "^2.1.1" - safe-stable-stringify "^2.3.1" - triple-beam "^1.3.0" - loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -9289,6 +9479,11 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +methods@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" @@ -9310,7 +9505,7 @@ mime-db@1.52.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12: +mime-types@^2.1.12, mime-types@^2.1.35: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -9322,9 +9517,9 @@ mime@^1.4.1: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.4.4: +mime@^2.4.4, mime@^2.4.6: version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== mime@^4.0.0: @@ -9542,9 +9737,9 @@ muggle-string@^0.4.1: resolved "https://registry.yarnpkg.com/muggle-string/-/muggle-string-0.4.1.tgz#3b366bd43b32f809dc20659534dd30e7c8a0d328" integrity sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ== -multistream@^4.1.0: +multistream@4.1.0, multistream@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/multistream/-/multistream-4.1.0.tgz#7bf00dfd119556fbc153cff3de4c6d477909f5a8" + resolved "https://registry.npmjs.org/multistream/-/multistream-4.1.0.tgz#7bf00dfd119556fbc153cff3de4c6d477909f5a8" integrity sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw== dependencies: once "^1.4.0" @@ -10038,13 +10233,6 @@ once@^1.4.0: dependencies: wrappy "1" -one-time@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" - integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== - dependencies: - fn.name "1.x.x" - onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" @@ -10298,6 +10486,11 @@ parse-conflict-json@^4.0.0: just-diff "^6.0.0" just-diff-apply "^5.2.0" +parse-duration@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/parse-duration/-/parse-duration-1.1.0.tgz#5192084c5d8f2a3fd676d04a451dbd2e05a1819c" + integrity sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ== + parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -10856,9 +11049,9 @@ qrloop@^1.4.1: buffer "^6.0.3" md5 "^2.3.0" -qs@^6.12.3: +qs@^6.12.3, qs@^6.9.4: version "6.14.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" + resolved "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== dependencies: side-channel "^1.1.0" @@ -10873,6 +11066,11 @@ querystring-es3@^0.2.1: resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + queue-lit@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/queue-lit/-/queue-lit-3.0.0.tgz#5062f815e49c28759a2dc12124ab1723d563b932" @@ -11120,7 +11318,7 @@ readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.3.8, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0, readable-stream@^3.6.2: +readable-stream@^3.5.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -11220,6 +11418,11 @@ require-from-string@^2.0.2: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + reselect@5.1.1, reselect@^5.1.0: version "5.1.1" resolved "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz#c766b1eb5d558291e5e550298adb0becc24bb72e" @@ -11394,11 +11597,6 @@ safe-regex-test@^1.1.0: es-errors "^1.3.0" is-regex "^1.2.1" -safe-stable-stringify@^2.3.1: - version "2.5.0" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" - integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== - "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -11449,6 +11647,15 @@ sdp@^2.12.0, sdp@^2.6.0: resolved "https://registry.yarnpkg.com/sdp/-/sdp-2.12.0.tgz#338a106af7560c86e4523f858349680350d53b22" integrity sha512-jhXqQAQVM+8Xj5EjJGVweuEzgtGWb3tmEEpl3CLP3cStInSbVHSg0QWOGQzNq8pSID4JkpeV2mPqlMDLrm0/Vw== +secp256k1@5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/secp256k1/-/secp256k1-5.0.0.tgz#be6f0c8c7722e2481e9773336d351de8cddd12f7" + integrity sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^5.0.0" + node-gyp-build "^4.2.0" + secp256k1@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-5.0.1.tgz#dc2c86187d48ff2da756f0f7e96417ee03c414b1" @@ -11901,11 +12108,6 @@ stable@^0.1.8: resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== -stack-trace@0.0.x: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== - stackback@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" @@ -11924,6 +12126,13 @@ stream-browserify@^3.0.0: inherits "~2.0.4" readable-stream "^3.5.0" +stream-chunker@^1.2.8: + version "1.2.8" + resolved "https://registry.npmjs.org/stream-chunker/-/stream-chunker-1.2.8.tgz#eb3af2c8aee5256cde76f0a1fea86348336d04f7" + integrity sha512-1j0PRZxgxJ8pPRyLlFu6Eer2imfhx1f++644xu/ZGRReDanv4frTSTWwNidtZOHJKwi86ue2KOWHFyikkQWN8w== + dependencies: + through2 "~2.0.0" + stream-combiner2@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" @@ -12107,6 +12316,23 @@ super-regex@^1.0.0: function-timeout "^1.0.1" time-span "^5.1.0" +superagent@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz#09f08807bc41108ef164cfb4be293cebd480f4a6" + integrity sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg== + dependencies: + component-emitter "^1.3.0" + cookiejar "^2.1.2" + debug "^4.1.1" + fast-safe-stringify "^2.0.7" + form-data "^3.0.0" + formidable "^1.2.2" + methods "^1.1.2" + mime "^2.4.6" + qs "^6.9.4" + readable-stream "^3.6.0" + semver "^7.3.2" + superjson@^2.2.2: version "2.2.2" resolved "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz#9d52bf0bf6b5751a3c3472f1292e714782ba3173" @@ -12244,11 +12470,6 @@ text-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-2.4.0.tgz#a1cfcc50cf34da41bfd047cc744f804d1680ea34" integrity sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g== -text-hex@1.0.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" - integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== - text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -12355,6 +12576,13 @@ tldts@^6.1.32: dependencies: tldts-core "^6.1.86" +tmp-promise@3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.2.tgz#6e933782abff8b00c3119d63589ca1fb9caaa62a" + integrity sha512-OyCLAKU1HzBjL6Ev3gxUeraJNlbNingmi8IrHHEsYH8LTmEuhvYfqvhn2F/je+mjf4N58UmZ96OMEy1JanSCpA== + dependencies: + tmp "^0.2.0" + tmp-promise@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" @@ -12436,11 +12664,6 @@ treeverse@^3.0.0: resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-3.0.0.tgz#dd82de9eb602115c6ebd77a574aae67003cb48c8" integrity sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ== -triple-beam@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" - integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== - ts-algebra@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ts-algebra/-/ts-algebra-2.0.0.tgz#4e3e0953878f26518fce7f6bb115064a65388b7a" @@ -12559,11 +12782,6 @@ typescript@5.8.2: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.2.tgz#8170b3702f74b79db2e5a96207c15e65807999e4" integrity sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ== -typescript@^4.6.2: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== - typescript@^5.8.3: version "5.8.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" @@ -12667,6 +12885,14 @@ url-join@^5.0.0: resolved "https://registry.yarnpkg.com/url-join/-/url-join-5.0.0.tgz#c2f1e5cbd95fa91082a93b58a1f42fecb4bdbcf1" integrity sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA== +url-parse@^1.5.1: + version "1.5.10" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + url@^0.11.0, url@^0.11.4: version "0.11.4" resolved "https://registry.yarnpkg.com/url/-/url-0.11.4.tgz#adca77b3562d56b72746e76b330b7f27b6721f3c" @@ -12701,11 +12927,6 @@ utility-types@^3.10.0: resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.11.0.tgz#607c40edb4f258915e901ea7995607fdf319424c" integrity sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw== -uuid@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.1.0.tgz#9549028be1753bb934fc96e2bca09bb4105ae912" - integrity sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A== - uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" @@ -13020,32 +13241,6 @@ why-is-node-running@^2.3.0: siginfo "^2.0.0" stackback "0.0.2" -winston-transport@^4.9.0: - version "4.9.0" - resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.9.0.tgz#3bba345de10297654ea6f33519424560003b3bf9" - integrity sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A== - dependencies: - logform "^2.7.0" - readable-stream "^3.6.2" - triple-beam "^1.3.0" - -winston@^3.13.0: - version "3.17.0" - resolved "https://registry.yarnpkg.com/winston/-/winston-3.17.0.tgz#74b8665ce9b4ea7b29d0922cfccf852a08a11423" - integrity sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw== - dependencies: - "@colors/colors" "^1.6.0" - "@dabh/diagnostics" "^2.0.2" - async "^3.2.3" - is-stream "^2.0.0" - logform "^2.7.0" - one-time "^1.0.0" - readable-stream "^3.4.0" - safe-stable-stringify "^2.3.1" - stack-trace "0.0.x" - triple-beam "^1.3.0" - winston-transport "^4.9.0" - wordwrap@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" @@ -13110,6 +13305,11 @@ write-file-atomic@^6.0.0: imurmurhash "^0.1.4" signal-exit "^4.0.1" +ws@7.4.6: + version "7.4.6" + resolved "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + ws@8.18.0: version "8.18.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" @@ -13239,7 +13439,7 @@ zod@^3.22.4, zod@^3.23.5: resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.4.tgz#e2e2cca5faaa012d76e527d0d36622e0a90c315f" integrity sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg== -zod@^3.23.8, zod@^3.24.1, zod@^3.24.4: +zod@^3.24.1, zod@^3.24.4: version "3.25.76" resolved "https://registry.yarnpkg.com/zod/-/zod-3.25.76.tgz#26841c3f6fd22a6a2760e7ccb719179768471e34" integrity sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ== From e354fbd1eb4c327b0a67630225a55c9e7beddd58 Mon Sep 17 00:00:00 2001 From: Pawan Paudel Date: Mon, 9 Feb 2026 12:46:49 +0545 Subject: [PATCH 2/8] chore: comment out production branch condition in submit-ff workflow --- .github/workflows/submit-ff.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/submit-ff.yml b/.github/workflows/submit-ff.yml index 9d1982e7f..5e45eef52 100644 --- a/.github/workflows/submit-ff.yml +++ b/.github/workflows/submit-ff.yml @@ -6,7 +6,7 @@ jobs: build: runs-on: ubuntu-latest # Only run on production branch - if: github.ref == 'refs/heads/production' + # if: github.ref == 'refs/heads/production' steps: - uses: actions/checkout@v3 - name: Set up Node.js From 7bc8939722d9cdf39d900778e30d891fabc0aa5b Mon Sep 17 00:00:00 2001 From: Pawan Paudel Date: Mon, 9 Feb 2026 12:55:20 +0545 Subject: [PATCH 3/8] refactor: simplify JSON key preparation in submit-ff workflow --- .github/workflows/submit-ff.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/submit-ff.yml b/.github/workflows/submit-ff.yml index 5e45eef52..73ce1b4dc 100644 --- a/.github/workflows/submit-ff.yml +++ b/.github/workflows/submit-ff.yml @@ -39,12 +39,11 @@ jobs: - name: Prepare submission keys id: prepare-keys run: | - # Take the base keys JSON and replace placeholder values with actual secrets - KEYS_JSON='${{ secrets.SUBMIT_KEYS_PRODUCTION_FF }}' - KEYS_JSON=$(echo "$KEYS_JSON" | jq --arg extId "${{ secrets.FIREFOX_EXT_ID }}" \ + KEYS_JSON=$(jq -n \ + --arg extId "${{ secrets.FIREFOX_EXT_ID }}" \ --arg apiKey "${{ secrets.FIREFOX_API_KEY }}" \ --arg apiSecret "${{ secrets.FIREFOX_API_SECRET }}" \ - '.firefox.extId = $extId | .firefox.apiKey = $apiKey | .firefox.apiSecret = $apiSecret') + '{firefox: {extId: $extId, apiKey: $apiKey, apiSecret: $apiSecret}}') echo "KEYS_JSON<> $GITHUB_ENV echo "$KEYS_JSON" >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV From c79be0f75e231a4f93fc0886abcbb4bca02f0809 Mon Sep 17 00:00:00 2001 From: Pawan Paudel Date: Mon, 9 Feb 2026 13:05:21 +0545 Subject: [PATCH 4/8] refactor: streamline key output handling in submit-ff workflow --- .github/workflows/submit-ff.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/submit-ff.yml b/.github/workflows/submit-ff.yml index 73ce1b4dc..e58b4a2a1 100644 --- a/.github/workflows/submit-ff.yml +++ b/.github/workflows/submit-ff.yml @@ -39,17 +39,15 @@ jobs: - name: Prepare submission keys id: prepare-keys run: | - KEYS_JSON=$(jq -n \ + KEYS_JSON=$(jq -cn \ --arg extId "${{ secrets.FIREFOX_EXT_ID }}" \ --arg apiKey "${{ secrets.FIREFOX_API_KEY }}" \ --arg apiSecret "${{ secrets.FIREFOX_API_SECRET }}" \ '{firefox: {extId: $extId, apiKey: $apiKey, apiSecret: $apiSecret}}') - echo "KEYS_JSON<> $GITHUB_ENV - echo "$KEYS_JSON" >> $GITHUB_ENV - echo "EOF" >> $GITHUB_ENV + echo "keys=$KEYS_JSON" >> $GITHUB_OUTPUT - name: Browser Platform Publish uses: PlasmoHQ/bpp@v3 with: - keys: ${{ env.KEYS_JSON }} + keys: ${{ steps.prepare-keys.outputs.keys }} artifact: build/firefox-mv3-prod.zip From cf088e1b47325c8f5019a477e4b274e972b192ee Mon Sep 17 00:00:00 2001 From: Pawan Paudel Date: Mon, 9 Feb 2026 13:17:46 +0545 Subject: [PATCH 5/8] refactor: inline JSON key handling in submit-ff workflow --- .github/workflows/submit-ff.yml | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/.github/workflows/submit-ff.yml b/.github/workflows/submit-ff.yml index e58b4a2a1..29e47b7fc 100644 --- a/.github/workflows/submit-ff.yml +++ b/.github/workflows/submit-ff.yml @@ -36,18 +36,8 @@ jobs: - name: Package into zip artifact run: cd build && zip -r firefox-mv3-prod.zip firefox-mv3-prod/ - - name: Prepare submission keys - id: prepare-keys - run: | - KEYS_JSON=$(jq -cn \ - --arg extId "${{ secrets.FIREFOX_EXT_ID }}" \ - --arg apiKey "${{ secrets.FIREFOX_API_KEY }}" \ - --arg apiSecret "${{ secrets.FIREFOX_API_SECRET }}" \ - '{firefox: {extId: $extId, apiKey: $apiKey, apiSecret: $apiSecret}}') - echo "keys=$KEYS_JSON" >> $GITHUB_OUTPUT - - name: Browser Platform Publish uses: PlasmoHQ/bpp@v3 with: - keys: ${{ steps.prepare-keys.outputs.keys }} + keys: '{"firefox":{"extId":"${{ secrets.FIREFOX_EXT_ID }}","apiKey":"${{ secrets.FIREFOX_API_KEY }}","apiSecret":"${{ secrets.FIREFOX_API_SECRET }}"}}' artifact: build/firefox-mv3-prod.zip From e20bd3ae4a2af2101ae19a64a1fc47101997ccd5 Mon Sep 17 00:00:00 2001 From: Pawan Paudel Date: Mon, 9 Feb 2026 13:49:19 +0545 Subject: [PATCH 6/8] refactor: enhance key preparation and packaging in submit-ff workflow --- .github/workflows/submit-ff.yml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/workflows/submit-ff.yml b/.github/workflows/submit-ff.yml index 29e47b7fc..947e8cf2f 100644 --- a/.github/workflows/submit-ff.yml +++ b/.github/workflows/submit-ff.yml @@ -34,10 +34,23 @@ jobs: run: yarn build:firefox - name: Package into zip artifact - run: cd build && zip -r firefox-mv3-prod.zip firefox-mv3-prod/ + run: cd build/firefox-mv3-prod && zip -r ../firefox-mv3-prod.zip . + + - name: Prepare submission keys + id: prepare-keys + run: | + # Take the base keys JSON and replace placeholder values with actual secrets + KEYS_JSON='${{ secrets.SUBMIT_KEYS_PRODUCTION_FF }}' + KEYS_JSON=$(echo "$KEYS_JSON" | jq --arg extId "${{ secrets.FIREFOX_EXT_ID }}" \ + --arg apiKey "${{ secrets.FIREFOX_API_KEY }}" \ + --arg apiSecret "${{ secrets.FIREFOX_API_SECRET }}" \ + '.firefox.extId = $extId | .firefox.apiKey = $apiKey | .firefox.apiSecret = $apiSecret') + echo "KEYS_JSON<> $GITHUB_ENV + echo "$KEYS_JSON" >> $GITHUB_ENV + echo "EOF" >> $GITHUB_ENV - name: Browser Platform Publish uses: PlasmoHQ/bpp@v3 with: - keys: '{"firefox":{"extId":"${{ secrets.FIREFOX_EXT_ID }}","apiKey":"${{ secrets.FIREFOX_API_KEY }}","apiSecret":"${{ secrets.FIREFOX_API_SECRET }}"}}' + keys: ${{ env.KEYS_JSON }} artifact: build/firefox-mv3-prod.zip From 4dc430005cdd7a980b88c364154d949f13cf0c83 Mon Sep 17 00:00:00 2001 From: Pawan Paudel Date: Mon, 9 Feb 2026 15:50:30 +0545 Subject: [PATCH 7/8] chore: add script for building and submitting Firefox extension --- .github/workflows/submit-ff.yml | 2 +- package.json | 4 +- scripts/submit-firefox.sh | 88 +++++++++++++++++++++++++++++++++ 3 files changed, 92 insertions(+), 2 deletions(-) create mode 100755 scripts/submit-firefox.sh diff --git a/.github/workflows/submit-ff.yml b/.github/workflows/submit-ff.yml index 947e8cf2f..c8147a482 100644 --- a/.github/workflows/submit-ff.yml +++ b/.github/workflows/submit-ff.yml @@ -6,7 +6,7 @@ jobs: build: runs-on: ubuntu-latest # Only run on production branch - # if: github.ref == 'refs/heads/production' + if: github.ref == 'refs/heads/production' steps: - uses: actions/checkout@v3 - name: Set up Node.js diff --git a/package.json b/package.json index 059247c58..783b36fd0 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,9 @@ "gecko": { "id": "{6c337925-991d-4139-8b64-8380cd30517a}", "data_collection_permissions": { - "required": [], + "required": [ + "none" + ], "optional": [ "technicalAndInteraction" ] diff --git a/scripts/submit-firefox.sh b/scripts/submit-firefox.sh new file mode 100755 index 000000000..cb58ae255 --- /dev/null +++ b/scripts/submit-firefox.sh @@ -0,0 +1,88 @@ +#!/bin/bash + +# Script to build and submit Firefox extension locally +# Usage: ./scripts/submit-firefox.sh + +set -e + +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" + +# Load all variables from .env +if [ -f "$PROJECT_ROOT/.env" ]; then + echo -e "${GREEN}Loading .env file...${NC}" + set -a + source "$PROJECT_ROOT/.env" + set +a +else + echo -e "${YELLOW}No .env file found. Using environment variables only.${NC}" +fi + +# Check required vars +for var in FIREFOX_EXT_ID FIREFOX_API_KEY FIREFOX_API_SECRET; do + if [ -z "${!var}" ]; then + echo -e "${RED}Error: $var is not set${NC}" + echo -e "${YELLOW}Add it to .env or export it in your shell.${NC}" + exit 1 + fi +done + +# Warn about missing optional build vars +for var in PLASMO_PUBLIC_TRANSAK_API_KEY PLASMO_PUBLIC_TRANSAK_TOP_TIER_API_KEY PLASMO_PUBLIC_GA_MEASUREMENT_ID PLASMO_PUBLIC_GA_API_SECRET; do + if [ -z "${!var}" ]; then + echo -e "${YELLOW}Warning: $var is not set${NC}" + fi +done + +cd "$PROJECT_ROOT" + +# Build +echo -e "${GREEN}Building Firefox extension...${NC}" +yarn build:firefox + +if [ ! -d "build/firefox-mv3-prod" ]; then + echo -e "${RED}Error: Build failed - build/firefox-mv3-prod/ not found${NC}" + exit 1 +fi + +# Package zip with manifest.json at root +echo -e "${GREEN}Packaging into zip...${NC}" +rm -f build/firefox-mv3-prod.zip +(cd build/firefox-mv3-prod && zip -r ../firefox-mv3-prod.zip .) + +echo -e "${GREEN}Build successful!${NC}" + +# Submit via web-ext +if ! command -v web-ext &> /dev/null; then + echo -e "${RED}Error: web-ext is not installed. Install it with:${NC}" + echo " npm install -g web-ext" + exit 1 +fi + +echo -e "${GREEN}Submitting to Firefox Add-ons via web-ext...${NC}" + +TEMP_DIR=$(mktemp -d) +trap 'rm -rf "$TEMP_DIR"' EXIT + +unzip -q "build/firefox-mv3-prod.zip" -d "$TEMP_DIR" + +# Inject extension ID into manifest.json if needed +if command -v jq &> /dev/null; then + if ! jq -e '.browser_specific_settings.gecko.id' "$TEMP_DIR/manifest.json" > /dev/null 2>&1; then + jq --arg extId "$FIREFOX_EXT_ID" '. + {browser_specific_settings: {gecko: {id: $extId}}}' \ + "$TEMP_DIR/manifest.json" > "$TEMP_DIR/manifest.json.tmp" && mv "$TEMP_DIR/manifest.json.tmp" "$TEMP_DIR/manifest.json" + echo -e "${GREEN}Injected extension ID into manifest.json${NC}" + fi +fi + +export WEB_EXT_API_KEY="$FIREFOX_API_KEY" +export WEB_EXT_API_SECRET="$FIREFOX_API_SECRET" + +web-ext sign --source-dir="$TEMP_DIR" --channel=listed + +echo -e "${GREEN}Submission successful!${NC}" From 2a5f4be799eab7810d973aa3265b5dbd5bb4cd26 Mon Sep 17 00:00:00 2001 From: Pawan Paudel Date: Mon, 9 Feb 2026 18:18:31 +0545 Subject: [PATCH 8/8] refactor: update Firefox submission workflow with input validation and channel options --- .github/workflows/submit-ff.yml | 57 ++++++++++++++++++++------------- scripts/submit-firefox.sh | 21 +----------- 2 files changed, 36 insertions(+), 42 deletions(-) diff --git a/.github/workflows/submit-ff.yml b/.github/workflows/submit-ff.yml index c8147a482..a69c35a90 100644 --- a/.github/workflows/submit-ff.yml +++ b/.github/workflows/submit-ff.yml @@ -1,13 +1,32 @@ name: "Submit to Firefox Add-ons" on: workflow_dispatch: + inputs: + channel: + description: "Submission channel" + required: true + type: choice + options: + - listed + - unlisted + default: listed + version: + description: "Version override (unlisted/beta only, e.g. 1.41.3.1)" + required: false + type: string jobs: build: runs-on: ubuntu-latest - # Only run on production branch - if: github.ref == 'refs/heads/production' + # Only allow "listed" on production branch + if: ${{ inputs.channel == 'unlisted' || github.ref == 'refs/heads/production' }} steps: + - name: Validate inputs + if: inputs.channel == 'unlisted' && inputs.version == '' + run: | + echo "::error::Version is required for unlisted channel" + exit 1 + - uses: actions/checkout@v3 - name: Set up Node.js uses: actions/setup-node@v4.0.1 @@ -30,27 +49,21 @@ jobs: echo "PLASMO_PUBLIC_GA_MEASUREMENT_ID=${{ secrets.GA_MEASUREMENT_ID }}" >> .env echo "PLASMO_PUBLIC_GA_API_SECRET=${{ secrets.GA_API_SECRET }}" >> .env + - name: Modify package.json for beta (unlisted) + if: inputs.channel == 'unlisted' + run: | + jq '.displayName = "Wander BETA"' package.json > temp.json && mv temp.json package.json + jq --arg version "${{ inputs.version }}" '.version = $version' package.json > temp.json && mv temp.json package.json + cp -rf assets-beta/* assets/ + - name: Build the Firefox extension (includes bundle splitting) run: yarn build:firefox - - name: Package into zip artifact - run: cd build/firefox-mv3-prod && zip -r ../firefox-mv3-prod.zip . + - name: Install web-ext + run: npm install -g web-ext - - name: Prepare submission keys - id: prepare-keys - run: | - # Take the base keys JSON and replace placeholder values with actual secrets - KEYS_JSON='${{ secrets.SUBMIT_KEYS_PRODUCTION_FF }}' - KEYS_JSON=$(echo "$KEYS_JSON" | jq --arg extId "${{ secrets.FIREFOX_EXT_ID }}" \ - --arg apiKey "${{ secrets.FIREFOX_API_KEY }}" \ - --arg apiSecret "${{ secrets.FIREFOX_API_SECRET }}" \ - '.firefox.extId = $extId | .firefox.apiKey = $apiKey | .firefox.apiSecret = $apiSecret') - echo "KEYS_JSON<> $GITHUB_ENV - echo "$KEYS_JSON" >> $GITHUB_ENV - echo "EOF" >> $GITHUB_ENV - - - name: Browser Platform Publish - uses: PlasmoHQ/bpp@v3 - with: - keys: ${{ env.KEYS_JSON }} - artifact: build/firefox-mv3-prod.zip + - name: Submit via web-ext + env: + WEB_EXT_API_KEY: ${{ secrets.FIREFOX_API_KEY }} + WEB_EXT_API_SECRET: ${{ secrets.FIREFOX_API_SECRET }} + run: web-ext sign --source-dir=build/firefox-mv3-prod --channel=${{ inputs.channel }} diff --git a/scripts/submit-firefox.sh b/scripts/submit-firefox.sh index cb58ae255..b3637a7b3 100755 --- a/scripts/submit-firefox.sh +++ b/scripts/submit-firefox.sh @@ -50,11 +50,6 @@ if [ ! -d "build/firefox-mv3-prod" ]; then exit 1 fi -# Package zip with manifest.json at root -echo -e "${GREEN}Packaging into zip...${NC}" -rm -f build/firefox-mv3-prod.zip -(cd build/firefox-mv3-prod && zip -r ../firefox-mv3-prod.zip .) - echo -e "${GREEN}Build successful!${NC}" # Submit via web-ext @@ -66,23 +61,9 @@ fi echo -e "${GREEN}Submitting to Firefox Add-ons via web-ext...${NC}" -TEMP_DIR=$(mktemp -d) -trap 'rm -rf "$TEMP_DIR"' EXIT - -unzip -q "build/firefox-mv3-prod.zip" -d "$TEMP_DIR" - -# Inject extension ID into manifest.json if needed -if command -v jq &> /dev/null; then - if ! jq -e '.browser_specific_settings.gecko.id' "$TEMP_DIR/manifest.json" > /dev/null 2>&1; then - jq --arg extId "$FIREFOX_EXT_ID" '. + {browser_specific_settings: {gecko: {id: $extId}}}' \ - "$TEMP_DIR/manifest.json" > "$TEMP_DIR/manifest.json.tmp" && mv "$TEMP_DIR/manifest.json.tmp" "$TEMP_DIR/manifest.json" - echo -e "${GREEN}Injected extension ID into manifest.json${NC}" - fi -fi - export WEB_EXT_API_KEY="$FIREFOX_API_KEY" export WEB_EXT_API_SECRET="$FIREFOX_API_SECRET" -web-ext sign --source-dir="$TEMP_DIR" --channel=listed +web-ext sign --source-dir=build/firefox-mv3-prod --channel=listed echo -e "${GREEN}Submission successful!${NC}"