diff --git a/.gitignore b/.gitignore index c613076..059f0c4 100644 --- a/.gitignore +++ b/.gitignore @@ -2,8 +2,7 @@ node_modules *.build.js *.zip *.xpi -/extension/releases/*.zip -/extension/releases/*.xpi +/extension/releases/*/* /extension/output/*.js /extension/output/*.html /extension/output/*.css diff --git a/biome.json b/biome.json index c65cbae..e643a77 100644 --- a/biome.json +++ b/biome.json @@ -1,55 +1,38 @@ { - "$schema": "https://biomejs.dev/schemas/2.4.10/schema.json", - "vcs": { - "enabled": true, - "clientKind": "git", - "useIgnoreFile": true - }, - "files": { - "ignoreUnknown": true, - "ignore": [ - "extension/output/**", - "extension/**/*.test.js", - "extension/test-utils.js", - "extension/style.css" - ] - }, - "formatter": { - "enabled": true, - "indentStyle": "space", - "indentWidth": 2, - "lineWidth": 80 - }, - "linter": { - "enabled": true, - "rules": { - "recommended": true, - "correctness": { - "noUnusedVariables": "warn" - }, - "style": { - "noNonNullAssertion": "off" - }, - "a11y": { - "recommended": true - }, - "complexity": { - "recommended": true - }, - "suspicious": { - "recommended": true - } - } - }, - "javascript": { - "formatter": { - "quoteStyle": "single", - "semicolons": "asNeeded", - "trailingCommas": "none", - "arrowParentheses": "always" - } - } -} + "$schema": "https://biomejs.dev/schemas/2.4.10/schema.json", + "vcs": { + "enabled": true, + "clientKind": "git", + "useIgnoreFile": true + }, + "files": { + "ignoreUnknown": true + }, + "formatter": { + "enabled": true, + "indentStyle": "space", + "indentWidth": 2, + "lineWidth": 80 + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "correctness": { + "noUnusedVariables": "warn" + }, + "style": { + "noNonNullAssertion": "off" + }, + "a11y": { + "recommended": true + }, + "complexity": { + "recommended": true + }, + "suspicious": { + "recommended": true + } } }, "javascript": { diff --git a/build.js b/build.js index b2aafee..3eb7941 100755 --- a/build.js +++ b/build.js @@ -1,25 +1,27 @@ #!/usr/bin/env node -const {copy} = require('esbuild-plugin-copy') -const esbuild = require('esbuild') +const { copy } = require("esbuild-plugin-copy"); +const esbuild = require("esbuild"); -const isProd = process.argv.indexOf('prod') !== -1 -const isFirefox = process.argv.indexOf('firefox') !== -1 +const isProd = process.argv.indexOf("prod") !== -1; +const isFirefox = process.argv.indexOf("firefox") !== -1; esbuild .build({ bundle: true, entryPoints: { - 'popup.build': './extension/popup.jsx', - 'prompt.build': './extension/prompt.jsx', - 'options.build': './extension/options.jsx', - 'background.build': './extension/background.js', - 'content-script.build': './extension/content-script.js' + "popup.build": "./extension/popup.jsx", + "prompt.build": "./extension/prompt.jsx", + "options.build": "./extension/options.jsx", + "background.build": "./extension/background.js", + "content-script.build": "./extension/content-script.js", }, - outdir: './extension/output', - sourcemap: isProd ? false : 'inline', + outdir: "./extension/output", + sourcemap: isProd ? false : "inline", + jsx: "automatic", + jsxImportSource: "react", define: { - window: 'self', - global: 'self' + window: "self", + global: "self", }, plugins: [ copy({ @@ -27,30 +29,30 @@ esbuild { from: [ isFirefox - ? './extension/firefox/manifest.json' - : './extension/chrome/manifest.json' + ? "./extension/firefox/manifest.json" + : "./extension/chrome/manifest.json", ], - to: ['./'] + to: ["./"], }, { - from: ['./extension/*.html'], - to: ['./'] + from: ["./extension/*.html"], + to: ["./"], }, { - from: ['./extension/common.js'], - to: ['./'] + from: ["./extension/common.js"], + to: ["./"], }, { - from: ['./extension/nostr-provider.js'], - to: ['./'] + from: ["./extension/nostr-provider.js"], + to: ["./"], }, { - from: ['./extension/icons/*'], - to: ['./icons'] - } - ] - }) - ] + from: ["./extension/icons/*"], + to: ["./icons"], + }, + ], + }), + ], }) - .then(() => console.log('Build success.')) - .catch(err => console.error('Build error.', err)) + .then(() => console.log("Build success.")) + .catch((err) => console.error("Build error.", err)); diff --git a/bun.lock b/bun.lock index b555175..0f5188f 100644 --- a/bun.lock +++ b/bun.lock @@ -9,12 +9,9 @@ "@radix-ui/react-tabs": "^1.1.13", "async-mutex": "^0.3.2", "esbuild": "^0.14.54", - "eslint": "^8.57.1", - "eslint-plugin-babel": "^5.3.1", - "eslint-plugin-react": "^7.37.5", "events": "^3.3.0", "minidenticons": "^4.2.1", - "prettier": "^2.8.8", + "nostr-tools": "^2.8.1", "react": "^17.0.2", "react-dom": "^17.0.2", "react-native-svg": "^13.14.1", @@ -25,14 +22,23 @@ }, "devDependencies": { "@biomejs/biome": "^2.4.10", + "@vitejs/plugin-react": "^6.0.1", "esbuild-plugin-copy": "^2.1.1", + "jsdom": "^29.0.2", "tailwindcss": "^3.4.19", + "vitest": "^4.1.3", }, }, }, "packages": { "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], + "@asamuzakjp/css-color": ["@asamuzakjp/css-color@5.1.8", "", { "dependencies": { "@csstools/css-calc": "^3.1.1", "@csstools/css-color-parser": "^4.0.2", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0" } }, "sha512-OISPR9c2uPo23rUdvfEQiLPjoMLOpEeLNnP5iGkxr6tDDxJd3NjD+6fxY0mdaMbIPUjFGL4HFOJqLvow5q4aqQ=="], + + "@asamuzakjp/dom-selector": ["@asamuzakjp/dom-selector@7.0.8", "", { "dependencies": { "@asamuzakjp/nwsapi": "^2.3.9", "bidi-js": "^1.0.3", "css-tree": "^3.2.1", "is-potential-custom-element-name": "^1.0.1" } }, "sha512-erMO6FgtM02dC24NGm0xufMzWz5OF0wXKR7BpvGD973bq/GbmR8/DbxNZbj0YevQ5hlToJaWSVK/G9/NDgGEVw=="], + + "@asamuzakjp/nwsapi": ["@asamuzakjp/nwsapi@2.3.9", "", {}, "sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q=="], + "@babel/code-frame": ["@babel/code-frame@7.29.0", "", { "dependencies": { "@babel/helper-validator-identifier": "7.28.5", "js-tokens": "4.0.0", "picocolors": "1.1.1" } }, "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw=="], "@babel/compat-data": ["@babel/compat-data@7.29.0", "", {}, "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg=="], @@ -297,26 +303,34 @@ "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.4.10", "", { "os": "win32", "cpu": "x64" }, "sha512-aW/JU5GuyH4uxMrNYpoC2kjaHlyJGLgIa3XkhPEZI0uKhZhJZU8BuEyJmvgzSPQNGozBwWjC972RaNdcJ9KyJg=="], + "@bramus/specificity": ["@bramus/specificity@2.4.2", "", { "dependencies": { "css-tree": "^3.0.0" }, "bin": { "specificity": "bin/cli.js" } }, "sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw=="], + + "@csstools/color-helpers": ["@csstools/color-helpers@6.0.2", "", {}, "sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q=="], + + "@csstools/css-calc": ["@csstools/css-calc@3.1.1", "", { "peerDependencies": { "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0" } }, "sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ=="], + + "@csstools/css-color-parser": ["@csstools/css-color-parser@4.0.2", "", { "dependencies": { "@csstools/color-helpers": "^6.0.2", "@csstools/css-calc": "^3.1.1" }, "peerDependencies": { "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0" } }, "sha512-0GEfbBLmTFf0dJlpsNU7zwxRIH0/BGEMuXLTCvFYxuL1tNhqzTbtnFICyJLTNK4a+RechKP75e7w42ClXSnJQw=="], + + "@csstools/css-parser-algorithms": ["@csstools/css-parser-algorithms@4.0.0", "", { "peerDependencies": { "@csstools/css-tokenizer": "^4.0.0" } }, "sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w=="], + + "@csstools/css-syntax-patches-for-csstree": ["@csstools/css-syntax-patches-for-csstree@1.1.2", "", { "peerDependencies": { "css-tree": "^3.2.1" }, "optionalPeers": ["css-tree"] }, "sha512-5GkLzz4prTIpoyeUiIu3iV6CSG3Plo7xRVOFPKI7FVEJ3mZ0A8SwK0XU3Gl7xAkiQ+mDyam+NNp875/C5y+jSA=="], + + "@csstools/css-tokenizer": ["@csstools/css-tokenizer@4.0.0", "", {}, "sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA=="], + + "@emnapi/core": ["@emnapi/core@1.9.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.0", "tslib": "^2.4.0" } }, "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA=="], + + "@emnapi/runtime": ["@emnapi/runtime@1.9.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA=="], + + "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg=="], + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.14.54", "", { "os": "linux", "cpu": "none" }, "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw=="], - "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.1", "", { "dependencies": { "eslint-visitor-keys": "3.4.3" }, "peerDependencies": { "eslint": "8.57.1" } }, "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ=="], - - "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="], - - "@eslint/eslintrc": ["@eslint/eslintrc@2.1.4", "", { "dependencies": { "ajv": "6.14.0", "debug": "4.4.3", "espree": "9.6.1", "globals": "13.24.0", "ignore": "5.3.2", "import-fresh": "3.3.1", "js-yaml": "4.1.1", "minimatch": "3.1.5", "strip-json-comments": "3.1.1" } }, "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ=="], - - "@eslint/js": ["@eslint/js@8.57.1", "", {}, "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q=="], + "@exodus/bytes": ["@exodus/bytes@1.15.0", "", { "peerDependencies": { "@noble/hashes": "^1.8.0 || ^2.0.0" }, "optionalPeers": ["@noble/hashes"] }, "sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ=="], "@hapi/hoek": ["@hapi/hoek@9.3.0", "", {}, "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ=="], "@hapi/topo": ["@hapi/topo@5.1.0", "", { "dependencies": { "@hapi/hoek": "9.3.0" } }, "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg=="], - "@humanwhocodes/config-array": ["@humanwhocodes/config-array@0.13.0", "", { "dependencies": { "@humanwhocodes/object-schema": "2.0.3", "debug": "4.4.3", "minimatch": "3.1.5" } }, "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw=="], - - "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="], - - "@humanwhocodes/object-schema": ["@humanwhocodes/object-schema@2.0.3", "", {}, "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA=="], - "@jest/create-cache-key-function": ["@jest/create-cache-key-function@29.7.0", "", { "dependencies": { "@jest/types": "29.6.3" } }, "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA=="], "@jest/environment": ["@jest/environment@29.7.0", "", { "dependencies": { "@jest/fake-timers": "29.7.0", "@jest/types": "29.6.3", "@types/node": "25.5.2", "jest-mock": "29.7.0" } }, "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw=="], @@ -339,6 +353,8 @@ "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "3.1.2", "@jridgewell/sourcemap-codec": "1.5.5" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.2", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw=="], + "@noble/ciphers": ["@noble/ciphers@2.1.1", "", {}, "sha512-bysYuiVfhxNJuldNXlFEitTVdNnYUc+XNJZd7Qm2a5j1vZHgY+fazadNFWFaMK/2vye0JVlxV3gHmC0WDfAOQw=="], "@noble/curves": ["@noble/curves@2.0.1", "", { "dependencies": { "@noble/hashes": "2.0.1" } }, "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw=="], @@ -353,6 +369,8 @@ "@nostr/tools": ["@jsr/nostr__tools@2.23.3", "https://npm.jsr.io/@jsr/nostr__tools/-/nostr__tools-2.23.3.tgz", { "dependencies": { "@noble/ciphers": "2.1.1", "@noble/curves": "2.0.1", "@noble/hashes": "2.0.1", "@scure/base": "2.0.0", "@scure/bip32": "2.0.1", "@scure/bip39": "2.0.1", "nostr-wasm": "0.1.0" } }, "sha512-jknaAXP0YMnibM7hd4K6+CpASOMHuP5b8fBV9i5OKv5KHvcjTZClW1epBbwdybFrsi01RcmWwiYdSwUGnfmGAA=="], + "@oxc-project/types": ["@oxc-project/types@0.123.0", "", {}, "sha512-YtECP/y8Mj1lSHiUWGSRzy/C6teUKlS87dEfuVKT09LgQbUsBW1rNg+MiJ4buGu3yuADV60gbIvo9/HplA56Ew=="], + "@radix-ui/primitive": ["@radix-ui/primitive@1.1.3", "", {}, "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg=="], "@radix-ui/react-checkbox": ["@radix-ui/react-checkbox@1.3.3", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "optionalDependencies": { "@types/react": "19.0.2", "@types/react-dom": "19.0.2" }, "peerDependencies": { "react": "17.0.2", "react-dom": "17.0.2" } }, "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw=="], @@ -425,6 +443,38 @@ "@react-native/virtualized-lists": ["@react-native/virtualized-lists@0.72.8", "", { "dependencies": { "invariant": "2.2.4", "nullthrows": "1.1.1" }, "peerDependencies": { "react-native": "0.72.7" } }, "sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw=="], + "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.0-rc.13", "", { "os": "android", "cpu": "arm64" }, "sha512-5ZiiecKH2DXAVJTNN13gNMUcCDg4Jy8ZjbXEsPnqa248wgOVeYRX0iqXXD5Jz4bI9BFHgKsI2qmyJynstbmr+g=="], + + "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.0-rc.13", "", { "os": "darwin", "cpu": "arm64" }, "sha512-tz/v/8G77seu8zAB3A5sK3UFoOl06zcshEzhUO62sAEtrEuW/H1CcyoupOrD+NbQJytYgA4CppXPzlrmp4JZKA=="], + + "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.0-rc.13", "", { "os": "darwin", "cpu": "x64" }, "sha512-8DakphqOz8JrMYWTJmWA+vDJxut6LijZ8Xcdc4flOlAhU7PNVwo2MaWBF9iXjJAPo5rC/IxEFZDhJ3GC7NHvug=="], + + "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.0-rc.13", "", { "os": "freebsd", "cpu": "x64" }, "sha512-4wBQFfjDuXYN/SVI8inBF3Aa+isq40rc6VMFbk5jcpolUBTe5cYnMsHZ51nFWsx3PVyyNN3vgoESki0Hmr/4BA=="], + + "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.13", "", { "os": "linux", "cpu": "arm" }, "sha512-JW/e4yPIXLms+jmnbwwy5LA/LxVwZUWLN8xug+V200wzaVi5TEGIWQlh8o91gWYFxW609euI98OCCemmWGuPrw=="], + + "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.0-rc.13", "", { "os": "linux", "cpu": "arm64" }, "sha512-ZfKWpXiUymDnavepCaM6KG/uGydJ4l2nBmMxg60Ci4CbeefpqjPWpfaZM7PThOhk2dssqBAcwLc6rAyr0uTdXg=="], + + "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.0-rc.13", "", { "os": "linux", "cpu": "arm64" }, "sha512-bmRg3O6Z0gq9yodKKWCIpnlH051sEfdVwt+6m5UDffAQMUUqU0xjnQqqAUm+Gu7ofAAly9DqiQDtKu2nPDEABA=="], + + "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.13", "", { "os": "linux", "cpu": "ppc64" }, "sha512-8Wtnbw4k7pMYN9B/mOEAsQ8HOiq7AZ31Ig4M9BKn2So4xRaFEhtCSa4ZJaOutOWq50zpgR4N5+L/opnlaCx8wQ=="], + + "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.0.0-rc.13", "", { "os": "linux", "cpu": "s390x" }, "sha512-D/0Nlo8mQuxSMohNJUF2lDXWRsFDsHldfRRgD9bRgktj+EndGPj4DOV37LqDKPYS+osdyhZEH7fTakTAEcW7qg=="], + + "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.0-rc.13", "", { "os": "linux", "cpu": "x64" }, "sha512-eRrPvat2YaVQcwwKi/JzOP6MKf1WRnOCr+VaI3cTWz3ZoLcP/654z90lVCJ4dAuMEpPdke0n+qyAqXDZdIC4rA=="], + + "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.0-rc.13", "", { "os": "linux", "cpu": "x64" }, "sha512-PsdONiFRp8hR8KgVjTWjZ9s7uA3uueWL0t74/cKHfM4dR5zXYv4AjB8BvA+QDToqxAFg4ZkcVEqeu5F7inoz5w=="], + + "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.0-rc.13", "", { "os": "none", "cpu": "arm64" }, "sha512-hCNXgC5dI3TVOLrPT++PKFNZ+1EtS0mLQwfXXXSUD/+rGlB65gZDwN/IDuxLpQP4x8RYYHqGomlUXzpO8aVI2w=="], + + "@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.0.0-rc.13", "", { "dependencies": { "@emnapi/core": "1.9.1", "@emnapi/runtime": "1.9.1", "@napi-rs/wasm-runtime": "^1.1.2" }, "cpu": "none" }, "sha512-viLS5C5et8NFtLWw9Sw3M/w4vvnVkbWkO7wSNh3C+7G1+uCkGpr6PcjNDSFcNtmXY/4trjPBqUfcOL+P3sWy/g=="], + + "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.0-rc.13", "", { "os": "win32", "cpu": "arm64" }, "sha512-Fqa3Tlt1xL4wzmAYxGNFV36Hb+VfPc9PYU+E25DAnswXv3ODDu/yyWjQDbXMo5AGWkQVjLgQExuVu8I/UaZhPQ=="], + + "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.0-rc.13", "", { "os": "win32", "cpu": "x64" }, "sha512-/pLI5kPkGEi44TDlnbio3St/5gUFeN51YWNAk/Gnv6mEQBOahRBh52qVFVBpmrnU01n2yysvBML9Ynu7K4kGAQ=="], + + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.7", "", {}, "sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA=="], + "@scure/base": ["@scure/base@2.0.0", "", {}, "sha512-3E1kpuZginKkek01ovG8krQ0Z44E3DHPjc5S2rjJw9lZn3KSQOs8S7wqikF/AH7iRanHypj85uGyxk0XAyC37w=="], "@scure/bip32": ["@scure/bip32@2.0.1", "", { "dependencies": { "@noble/curves": "2.0.1", "@noble/hashes": "2.0.1", "@scure/base": "2.0.0" } }, "sha512-4Md1NI5BzoVP+bhyJaY3K6yMesEFzNS1sE/cP+9nuvE7p/b0kx9XbpDHHFl8dHtufcbdHRUUQdRqLIPHN/s7yA=="], @@ -443,6 +493,16 @@ "@sinonjs/fake-timers": ["@sinonjs/fake-timers@10.3.0", "", { "dependencies": { "@sinonjs/commons": "3.0.1" } }, "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA=="], + "@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + + "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], + + "@types/chai": ["@types/chai@5.2.3", "", { "dependencies": { "@types/deep-eql": "*", "assertion-error": "^2.0.1" } }, "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA=="], + + "@types/deep-eql": ["@types/deep-eql@4.0.2", "", {}, "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw=="], + + "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], + "@types/istanbul-lib-coverage": ["@types/istanbul-lib-coverage@2.0.6", "", {}, "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w=="], "@types/istanbul-lib-report": ["@types/istanbul-lib-report@3.0.3", "", { "dependencies": { "@types/istanbul-lib-coverage": "2.0.6" } }, "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA=="], @@ -461,7 +521,21 @@ "@types/yargs-parser": ["@types/yargs-parser@21.0.3", "", {}, "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ=="], - "@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="], + "@vitejs/plugin-react": ["@vitejs/plugin-react@6.0.1", "", { "dependencies": { "@rolldown/pluginutils": "1.0.0-rc.7" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler"] }, "sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ=="], + + "@vitest/expect": ["@vitest/expect@4.1.3", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.3", "@vitest/utils": "4.1.3", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-CW8Q9KMtXDGHj0vCsqui0M5KqRsu0zm0GNDW7Gd3U7nZ2RFpPKSCpeCXoT+/+5zr1TNlsoQRDEz+LzZUyq6gnQ=="], + + "@vitest/mocker": ["@vitest/mocker@4.1.3", "", { "dependencies": { "@vitest/spy": "4.1.3", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-XN3TrycitDQSzGRnec/YWgoofkYRhouyVQj4YNsJ5r/STCUFqMrP4+oxEv3e7ZbLi4og5kIHrZwekDJgw6hcjw=="], + + "@vitest/pretty-format": ["@vitest/pretty-format@4.1.3", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-hYqqwuMbpkkBodpRh4k4cQSOELxXky1NfMmQvOfKvV8zQHz8x8Dla+2wzElkMkBvSAJX5TRGHJAQvK0TcOafwg=="], + + "@vitest/runner": ["@vitest/runner@4.1.3", "", { "dependencies": { "@vitest/utils": "4.1.3", "pathe": "^2.0.3" } }, "sha512-VwgOz5MmT0KhlUj40h02LWDpUBVpflZ/b7xZFA25F29AJzIrE+SMuwzFf0b7t4EXdwRNX61C3B6auIXQTR3ttA=="], + + "@vitest/snapshot": ["@vitest/snapshot@4.1.3", "", { "dependencies": { "@vitest/pretty-format": "4.1.3", "@vitest/utils": "4.1.3", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-9l+k/J9KG5wPJDX9BcFFzhhwNjwkRb8RsnYhaT1vPY7OufxmQFc9sZzScRCPTiETzl37mrIWVY9zxzmdVeJwDQ=="], + + "@vitest/spy": ["@vitest/spy@4.1.3", "", {}, "sha512-ujj5Uwxagg4XUIfAUyRQxAg631BP6e9joRiN99mr48Bg9fRs+5mdUElhOoZ6rP5mBr8Bs3lmrREnkrQWkrsTCw=="], + + "@vitest/utils": ["@vitest/utils@4.1.3", "", { "dependencies": { "@vitest/pretty-format": "4.1.3", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-Pc/Oexse/khOWsGB+w3q4yzA4te7W4gpZZAvk+fr8qXfTURZUMj5i7kuxsNK5mP/dEB6ao3jfr0rs17fHhbHdw=="], "abort-controller": ["abort-controller@3.0.0", "", { "dependencies": { "event-target-shim": "5.0.1" } }, "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="], @@ -469,10 +543,6 @@ "acorn": ["acorn@8.16.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw=="], - "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "8.16.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], - - "ajv": ["ajv@6.14.0", "", { "dependencies": { "fast-deep-equal": "3.1.3", "fast-json-stable-stringify": "2.1.0", "json-schema-traverse": "0.4.1", "uri-js": "4.4.1" } }, "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw=="], - "anser": ["anser@1.4.10", "", {}, "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww=="], "ansi-fragments": ["ansi-fragments@0.2.1", "", { "dependencies": { "colorette": "1.4.0", "slice-ansi": "2.1.0", "strip-ansi": "5.2.0" } }, "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w=="], @@ -489,40 +559,24 @@ "arg": ["arg@5.0.2", "", {}, "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="], - "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - - "array-buffer-byte-length": ["array-buffer-byte-length@1.0.2", "", { "dependencies": { "call-bound": "1.0.4", "is-array-buffer": "3.0.5" } }, "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw=="], - - "array-includes": ["array-includes@3.1.9", "", { "dependencies": { "call-bind": "1.0.8", "call-bound": "1.0.4", "define-properties": "1.2.1", "es-abstract": "1.24.2", "es-object-atoms": "1.1.1", "get-intrinsic": "1.3.0", "is-string": "1.1.1", "math-intrinsics": "1.1.0" } }, "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ=="], + "argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "1.0.3" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], "array-union": ["array-union@2.1.0", "", {}, "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="], - "array.prototype.findlast": ["array.prototype.findlast@1.2.5", "", { "dependencies": { "call-bind": "1.0.8", "define-properties": "1.2.1", "es-abstract": "1.24.2", "es-errors": "1.3.0", "es-object-atoms": "1.1.1", "es-shim-unscopables": "1.1.0" } }, "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ=="], - - "array.prototype.flat": ["array.prototype.flat@1.3.3", "", { "dependencies": { "call-bind": "1.0.8", "define-properties": "1.2.1", "es-abstract": "1.24.2", "es-shim-unscopables": "1.1.0" } }, "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg=="], - - "array.prototype.flatmap": ["array.prototype.flatmap@1.3.3", "", { "dependencies": { "call-bind": "1.0.8", "define-properties": "1.2.1", "es-abstract": "1.24.2", "es-shim-unscopables": "1.1.0" } }, "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg=="], - - "array.prototype.tosorted": ["array.prototype.tosorted@1.1.4", "", { "dependencies": { "call-bind": "1.0.8", "define-properties": "1.2.1", "es-abstract": "1.24.2", "es-errors": "1.3.0", "es-shim-unscopables": "1.1.0" } }, "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA=="], - - "arraybuffer.prototype.slice": ["arraybuffer.prototype.slice@1.0.4", "", { "dependencies": { "array-buffer-byte-length": "1.0.2", "call-bind": "1.0.8", "define-properties": "1.2.1", "es-abstract": "1.24.2", "es-errors": "1.3.0", "get-intrinsic": "1.3.0", "is-array-buffer": "3.0.5" } }, "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ=="], - "asap": ["asap@2.0.6", "", {}, "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="], + "assertion-error": ["assertion-error@2.0.1", "", {}, "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA=="], + "ast-types": ["ast-types@0.15.2", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg=="], "astral-regex": ["astral-regex@1.0.0", "", {}, "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg=="], "async": ["async@3.2.6", "", {}, "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="], - "async-function": ["async-function@1.0.0", "", {}, "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA=="], - "async-limiter": ["async-limiter@1.0.1", "", {}, "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="], "async-mutex": ["async-mutex@0.3.2", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-HuTK7E7MT7jZEh1P9GtRW9+aTWiDWWi9InbZ5hjxrnRa39KS4BW04+xLBhYNS2aXhHUIKZSw3gj4Pn1pj+qGAA=="], - "available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "1.1.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="], - "babel-core": ["babel-core@7.0.0-bridge.0", "", { "peerDependencies": { "@babel/core": "7.29.0" } }, "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg=="], "babel-plugin-polyfill-corejs2": ["babel-plugin-polyfill-corejs2@0.4.17", "", { "dependencies": { "@babel/compat-data": "7.29.0", "@babel/helper-define-polyfill-provider": "0.6.8", "semver": "6.3.1" }, "peerDependencies": { "@babel/core": "7.29.0" } }, "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w=="], @@ -543,6 +597,8 @@ "baseline-browser-mapping": ["baseline-browser-mapping@2.10.16", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-Lyf3aK28zpsD1yQMiiHD4RvVb6UdMoo8xzG2XzFIfR9luPzOpcBlAsT/qfB1XWS1bxWT+UtE4WmQgsp297FYOA=="], + "bidi-js": ["bidi-js@1.0.3", "", { "dependencies": { "require-from-string": "^2.0.2" } }, "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw=="], + "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], "bl": ["bl@4.1.0", "", { "dependencies": { "buffer": "5.7.1", "inherits": "2.0.4", "readable-stream": "3.6.2" } }, "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="], @@ -563,17 +619,11 @@ "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], - "call-bind": ["call-bind@1.0.8", "", { "dependencies": { "call-bind-apply-helpers": "1.0.2", "es-define-property": "1.0.1", "get-intrinsic": "1.3.0", "set-function-length": "1.2.2" } }, "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww=="], - - "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "1.3.0", "function-bind": "1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], - - "call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "1.0.2", "get-intrinsic": "1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="], - "caller-callsite": ["caller-callsite@2.0.0", "", { "dependencies": { "callsites": "2.0.0" } }, "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ=="], "caller-path": ["caller-path@2.0.0", "", { "dependencies": { "caller-callsite": "2.0.0" } }, "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A=="], - "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], + "callsites": ["callsites@2.0.0", "", {}, "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ=="], "camelcase": ["camelcase@6.3.0", "", {}, "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="], @@ -581,6 +631,8 @@ "caniuse-lite": ["caniuse-lite@1.0.30001786", "", {}, "sha512-4oxTZEvqmLLrERwxO76yfKM7acZo310U+v4kqexI2TL1DkkUEMT8UijrxxcnVdxR3qkVf5awGRX+4Z6aPHVKrA=="], + "chai": ["chai@6.2.2", "", {}, "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg=="], + "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "4.3.0", "supports-color": "7.2.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], "chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "3.1.3", "braces": "3.0.3", "glob-parent": "5.1.2", "is-binary-path": "2.1.0", "is-glob": "4.0.3", "normalize-path": "3.0.0", "readdirp": "3.6.0" }, "optionalDependencies": { "fsevents": "2.3.3" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], @@ -629,7 +681,7 @@ "css-select": ["css-select@5.2.2", "", { "dependencies": { "boolbase": "1.0.0", "css-what": "6.2.2", "domhandler": "5.0.3", "domutils": "3.2.2", "nth-check": "2.1.1" } }, "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw=="], - "css-tree": ["css-tree@1.1.3", "", { "dependencies": { "mdn-data": "2.0.14", "source-map": "0.6.1" } }, "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q=="], + "css-tree": ["css-tree@3.2.1", "", { "dependencies": { "mdn-data": "2.27.1", "source-map-js": "^1.2.1" } }, "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA=="], "css-what": ["css-what@6.2.2", "", {}, "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA=="], @@ -637,11 +689,7 @@ "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], - "data-view-buffer": ["data-view-buffer@1.0.2", "", { "dependencies": { "call-bound": "1.0.4", "es-errors": "1.3.0", "is-data-view": "1.0.2" } }, "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ=="], - - "data-view-byte-length": ["data-view-byte-length@1.0.2", "", { "dependencies": { "call-bound": "1.0.4", "es-errors": "1.3.0", "is-data-view": "1.0.2" } }, "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ=="], - - "data-view-byte-offset": ["data-view-byte-offset@1.0.1", "", { "dependencies": { "call-bound": "1.0.4", "es-errors": "1.3.0", "is-data-view": "1.0.2" } }, "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ=="], + "data-urls": ["data-urls@7.0.0", "", { "dependencies": { "whatwg-mimetype": "^5.0.0", "whatwg-url": "^16.0.0" } }, "sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA=="], "dayjs": ["dayjs@1.11.20", "", {}, "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ=="], @@ -649,16 +697,12 @@ "decamelize": ["decamelize@1.2.0", "", {}, "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="], - "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], + "decimal.js": ["decimal.js@10.6.0", "", {}, "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg=="], "deepmerge": ["deepmerge@4.3.1", "", {}, "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A=="], "defaults": ["defaults@1.0.4", "", { "dependencies": { "clone": "1.0.4" } }, "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A=="], - "define-data-property": ["define-data-property@1.1.4", "", { "dependencies": { "es-define-property": "1.0.1", "es-errors": "1.3.0", "gopd": "1.2.0" } }, "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A=="], - - "define-properties": ["define-properties@1.2.1", "", { "dependencies": { "define-data-property": "1.1.4", "has-property-descriptors": "1.0.2", "object-keys": "1.1.1" } }, "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg=="], - "denodeify": ["denodeify@1.2.1", "", {}, "sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg=="], "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], @@ -667,14 +711,14 @@ "destroy": ["destroy@1.2.0", "", {}, "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="], + "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], + "didyoumean": ["didyoumean@1.2.2", "", {}, "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="], "dir-glob": ["dir-glob@3.0.1", "", { "dependencies": { "path-type": "4.0.0" } }, "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA=="], "dlv": ["dlv@1.1.3", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="], - "doctrine": ["doctrine@3.0.0", "", { "dependencies": { "esutils": "2.0.3" } }, "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w=="], - "dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "2.3.0", "domhandler": "5.0.3", "entities": "4.5.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="], "domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="], @@ -683,8 +727,6 @@ "domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "2.0.0", "domelementtype": "2.3.0", "domhandler": "5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="], - "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "1.0.2", "es-errors": "1.3.0", "gopd": "1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], - "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="], "electron-to-chromium": ["electron-to-chromium@1.5.332", "", {}, "sha512-7OOtytmh/rINMLwaFTbcMVvYXO3AUm029X0LcyfYk0B557RlPkdpTpnH9+htMlfu5dKwOmT0+Zs2Aw+lnn6TeQ=="], @@ -693,7 +735,7 @@ "encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="], - "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + "entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], "envinfo": ["envinfo@7.21.0", "", { "bin": { "envinfo": "dist/cli.js" } }, "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow=="], @@ -703,21 +745,7 @@ "errorhandler": ["errorhandler@1.5.2", "", { "dependencies": { "accepts": "1.3.8", "escape-html": "1.0.3" } }, "sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw=="], - "es-abstract": ["es-abstract@1.24.2", "", { "dependencies": { "array-buffer-byte-length": "1.0.2", "arraybuffer.prototype.slice": "1.0.4", "available-typed-arrays": "1.0.7", "call-bind": "1.0.8", "call-bound": "1.0.4", "data-view-buffer": "1.0.2", "data-view-byte-length": "1.0.2", "data-view-byte-offset": "1.0.1", "es-define-property": "1.0.1", "es-errors": "1.3.0", "es-object-atoms": "1.1.1", "es-set-tostringtag": "2.1.0", "es-to-primitive": "1.3.0", "function.prototype.name": "1.1.8", "get-intrinsic": "1.3.0", "get-proto": "1.0.1", "get-symbol-description": "1.1.0", "globalthis": "1.0.4", "gopd": "1.2.0", "has-property-descriptors": "1.0.2", "has-proto": "1.2.0", "has-symbols": "1.1.0", "hasown": "2.0.2", "internal-slot": "1.1.0", "is-array-buffer": "3.0.5", "is-callable": "1.2.7", "is-data-view": "1.0.2", "is-negative-zero": "2.0.3", "is-regex": "1.2.1", "is-set": "2.0.3", "is-shared-array-buffer": "1.0.4", "is-string": "1.1.1", "is-typed-array": "1.1.15", "is-weakref": "1.1.1", "math-intrinsics": "1.1.0", "object-inspect": "1.13.4", "object-keys": "1.1.1", "object.assign": "4.1.7", "own-keys": "1.0.1", "regexp.prototype.flags": "1.5.4", "safe-array-concat": "1.1.3", "safe-push-apply": "1.0.0", "safe-regex-test": "1.1.0", "set-proto": "1.0.0", "stop-iteration-iterator": "1.1.0", "string.prototype.trim": "1.2.10", "string.prototype.trimend": "1.0.9", "string.prototype.trimstart": "1.0.8", "typed-array-buffer": "1.0.3", "typed-array-byte-length": "1.0.3", "typed-array-byte-offset": "1.0.4", "typed-array-length": "1.0.7", "unbox-primitive": "1.1.0", "which-typed-array": "1.1.20" } }, "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg=="], - - "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], - - "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], - - "es-iterator-helpers": ["es-iterator-helpers@1.3.1", "", { "dependencies": { "call-bind": "1.0.8", "call-bound": "1.0.4", "define-properties": "1.2.1", "es-abstract": "1.24.2", "es-errors": "1.3.0", "es-set-tostringtag": "2.1.0", "function-bind": "1.1.2", "get-intrinsic": "1.3.0", "globalthis": "1.0.4", "gopd": "1.2.0", "has-property-descriptors": "1.0.2", "has-proto": "1.2.0", "has-symbols": "1.1.0", "internal-slot": "1.1.0", "iterator.prototype": "1.1.5", "math-intrinsics": "1.1.0", "safe-array-concat": "1.1.3" } }, "sha512-zWwRvqWiuBPr0muUG/78cW3aHROFCNIQ3zpmYDpwdbnt2m+xlNyRWpHBpa2lJjSBit7BQ+RXA1iwbSmu5yJ/EQ=="], - - "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], - - "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "1.3.0", "get-intrinsic": "1.3.0", "has-tostringtag": "1.0.2", "hasown": "2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], - - "es-shim-unscopables": ["es-shim-unscopables@1.1.0", "", { "dependencies": { "hasown": "2.0.2" } }, "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw=="], - - "es-to-primitive": ["es-to-primitive@1.3.0", "", { "dependencies": { "is-callable": "1.2.7", "is-date-object": "1.1.0", "is-symbol": "1.1.1" } }, "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g=="], + "es-module-lexer": ["es-module-lexer@2.0.0", "", {}, "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw=="], "esbuild": ["esbuild@0.14.54", "", { "optionalDependencies": { "@esbuild/linux-loong64": "0.14.54", "esbuild-android-64": "0.14.54", "esbuild-android-arm64": "0.14.54", "esbuild-darwin-64": "0.14.54", "esbuild-darwin-arm64": "0.14.54", "esbuild-freebsd-64": "0.14.54", "esbuild-freebsd-arm64": "0.14.54", "esbuild-linux-32": "0.14.54", "esbuild-linux-64": "0.14.54", "esbuild-linux-arm": "0.14.54", "esbuild-linux-arm64": "0.14.54", "esbuild-linux-mips64le": "0.14.54", "esbuild-linux-ppc64le": "0.14.54", "esbuild-linux-riscv64": "0.14.54", "esbuild-linux-s390x": "0.14.54", "esbuild-netbsd-64": "0.14.54", "esbuild-openbsd-64": "0.14.54", "esbuild-sunos-64": "0.14.54", "esbuild-windows-32": "0.14.54", "esbuild-windows-64": "0.14.54", "esbuild-windows-arm64": "0.14.54" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA=="], @@ -767,29 +795,11 @@ "escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="], - "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], - - "eslint": ["eslint@8.57.1", "", { "dependencies": { "@eslint-community/eslint-utils": "4.9.1", "@eslint-community/regexpp": "4.12.2", "@eslint/eslintrc": "2.1.4", "@eslint/js": "8.57.1", "@humanwhocodes/config-array": "0.13.0", "@humanwhocodes/module-importer": "1.0.1", "@nodelib/fs.walk": "1.2.8", "@ungap/structured-clone": "1.3.0", "ajv": "6.14.0", "chalk": "4.1.2", "cross-spawn": "7.0.6", "debug": "4.4.3", "doctrine": "3.0.0", "escape-string-regexp": "4.0.0", "eslint-scope": "7.2.2", "eslint-visitor-keys": "3.4.3", "espree": "9.6.1", "esquery": "1.7.0", "esutils": "2.0.3", "fast-deep-equal": "3.1.3", "file-entry-cache": "6.0.1", "find-up": "5.0.0", "glob-parent": "6.0.2", "globals": "13.24.0", "graphemer": "1.4.0", "ignore": "5.3.2", "imurmurhash": "0.1.4", "is-glob": "4.0.3", "is-path-inside": "3.0.3", "js-yaml": "4.1.1", "json-stable-stringify-without-jsonify": "1.0.1", "levn": "0.4.1", "lodash.merge": "4.6.2", "minimatch": "3.1.5", "natural-compare": "1.4.0", "optionator": "0.9.4", "strip-ansi": "6.0.1", "text-table": "0.2.0" }, "bin": { "eslint": "bin/eslint.js" } }, "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA=="], - - "eslint-plugin-babel": ["eslint-plugin-babel@5.3.1", "", { "dependencies": { "eslint-rule-composer": "0.3.0" }, "peerDependencies": { "eslint": "8.57.1" } }, "sha512-VsQEr6NH3dj664+EyxJwO4FCYm/00JhYb3Sk3ft8o+fpKuIfQ9TaW6uVUfvwMXHcf/lsnRIoyFPsLMyiWCSL/g=="], - - "eslint-plugin-react": ["eslint-plugin-react@7.37.5", "", { "dependencies": { "array-includes": "3.1.9", "array.prototype.findlast": "1.2.5", "array.prototype.flatmap": "1.3.3", "array.prototype.tosorted": "1.1.4", "doctrine": "2.1.0", "es-iterator-helpers": "1.3.1", "estraverse": "5.3.0", "hasown": "2.0.2", "jsx-ast-utils": "3.3.5", "minimatch": "3.1.5", "object.entries": "1.1.9", "object.fromentries": "2.0.8", "object.values": "1.2.1", "prop-types": "15.8.1", "resolve": "2.0.0-next.6", "semver": "6.3.1", "string.prototype.matchall": "4.0.12", "string.prototype.repeat": "1.0.0" }, "peerDependencies": { "eslint": "8.57.1" } }, "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA=="], - - "eslint-rule-composer": ["eslint-rule-composer@0.3.0", "", {}, "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg=="], - - "eslint-scope": ["eslint-scope@7.2.2", "", { "dependencies": { "esrecurse": "4.3.0", "estraverse": "5.3.0" } }, "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg=="], - - "eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], - - "espree": ["espree@9.6.1", "", { "dependencies": { "acorn": "8.16.0", "acorn-jsx": "5.3.2", "eslint-visitor-keys": "3.4.3" } }, "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ=="], + "escape-string-regexp": ["escape-string-regexp@2.0.0", "", {}, "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="], "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], - "esquery": ["esquery@1.7.0", "", { "dependencies": { "estraverse": "5.3.0" } }, "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g=="], - - "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "5.3.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], - - "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], + "estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], @@ -801,14 +811,10 @@ "execa": ["execa@5.1.1", "", { "dependencies": { "cross-spawn": "7.0.6", "get-stream": "6.0.1", "human-signals": "2.1.0", "is-stream": "2.0.1", "merge-stream": "2.0.0", "npm-run-path": "4.0.1", "onetime": "5.1.2", "signal-exit": "3.0.7", "strip-final-newline": "2.0.0" } }, "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="], - "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], + "expect-type": ["expect-type@1.3.0", "", {}, "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA=="], "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "@nodelib/fs.walk": "1.2.8", "glob-parent": "5.1.2", "merge2": "1.4.1", "micromatch": "4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], - "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], - - "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], - "fast-xml-parser": ["fast-xml-parser@4.5.6", "", { "dependencies": { "strnum": "1.1.2" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-Yd4vkROfJf8AuJrDIVMVmYfULKmIJszVsMv7Vo71aocsKgFxpdlpSHXSaInvyYfgw2PRuObQSW2GFpVMUjxu9A=="], "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "1.1.0" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="], @@ -817,26 +823,18 @@ "fdir": ["fdir@6.5.0", "", { "optionalDependencies": { "picomatch": "4.0.4" } }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], - "file-entry-cache": ["file-entry-cache@6.0.1", "", { "dependencies": { "flat-cache": "3.2.0" } }, "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg=="], - "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], "finalhandler": ["finalhandler@1.1.2", "", { "dependencies": { "debug": "2.6.9", "encodeurl": "1.0.2", "escape-html": "1.0.3", "on-finished": "2.3.0", "parseurl": "1.3.3", "statuses": "1.5.0", "unpipe": "1.0.0" } }, "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA=="], "find-cache-dir": ["find-cache-dir@2.1.0", "", { "dependencies": { "commondir": "1.0.1", "make-dir": "2.1.0", "pkg-dir": "3.0.0" } }, "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ=="], - "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "6.0.0", "path-exists": "4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], - - "flat-cache": ["flat-cache@3.2.0", "", { "dependencies": { "flatted": "3.4.2", "keyv": "4.5.4", "rimraf": "3.0.2" } }, "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw=="], - - "flatted": ["flatted@3.4.2", "", {}, "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA=="], + "find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "5.0.0", "path-exists": "4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="], "flow-enums-runtime": ["flow-enums-runtime@0.0.5", "", {}, "sha512-PSZF9ZuaZD03sT9YaIs0FrGJ7lSUw7rHZIex+73UYVXg46eL/wxN5PaVcPJFudE2cJu5f0fezitV5aBkLHPUOQ=="], "flow-parser": ["flow-parser@0.206.0", "", {}, "sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w=="], - "for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="], - "fresh": ["fresh@0.5.2", "", {}, "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="], "fs-extra": ["fs-extra@10.1.0", "", { "dependencies": { "graceful-fs": "4.2.11", "jsonfile": "6.2.0", "universalify": "2.0.1" } }, "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ=="], @@ -847,52 +845,22 @@ "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], - "function.prototype.name": ["function.prototype.name@1.1.8", "", { "dependencies": { "call-bind": "1.0.8", "call-bound": "1.0.4", "define-properties": "1.2.1", "functions-have-names": "1.2.3", "hasown": "2.0.2", "is-callable": "1.2.7" } }, "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q=="], - - "functions-have-names": ["functions-have-names@1.2.3", "", {}, "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="], - - "generator-function": ["generator-function@2.0.1", "", {}, "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g=="], - "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], - "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "1.0.2", "es-define-property": "1.0.1", "es-errors": "1.3.0", "es-object-atoms": "1.1.1", "function-bind": "1.1.2", "get-proto": "1.0.1", "gopd": "1.2.0", "has-symbols": "1.1.0", "hasown": "2.0.2", "math-intrinsics": "1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], - - "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "1.0.1", "es-object-atoms": "1.1.1" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], - "get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], - "get-symbol-description": ["get-symbol-description@1.1.0", "", { "dependencies": { "call-bound": "1.0.4", "es-errors": "1.3.0", "get-intrinsic": "1.3.0" } }, "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg=="], - "glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "1.0.0", "inflight": "1.0.6", "inherits": "2.0.4", "minimatch": "3.1.5", "once": "1.4.0", "path-is-absolute": "1.0.1" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="], "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], - "globals": ["globals@13.24.0", "", { "dependencies": { "type-fest": "0.20.2" } }, "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ=="], - - "globalthis": ["globalthis@1.0.4", "", { "dependencies": { "define-properties": "1.2.1", "gopd": "1.2.0" } }, "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ=="], - "globby": ["globby@11.1.0", "", { "dependencies": { "array-union": "2.1.0", "dir-glob": "3.0.1", "fast-glob": "3.3.3", "ignore": "5.3.2", "merge2": "1.4.1", "slash": "3.0.0" } }, "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g=="], - "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], - "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], - "graphemer": ["graphemer@1.4.0", "", {}, "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="], - - "has-bigints": ["has-bigints@1.1.0", "", {}, "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg=="], - "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], - "has-property-descriptors": ["has-property-descriptors@1.0.2", "", { "dependencies": { "es-define-property": "1.0.1" } }, "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg=="], - - "has-proto": ["has-proto@1.2.0", "", { "dependencies": { "dunder-proto": "1.0.1" } }, "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ=="], - - "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], - - "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "1.1.0" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], - "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], "hermes-estree": ["hermes-estree@0.12.0", "", {}, "sha512-+e8xR6SCen0wyAKrMT3UD0ZCCLymKhRgjEB5sS28rKiFir/fXgLoeRilRUssFCILmGHb+OvHDUlhxs0+IEyvQw=="], @@ -901,6 +869,8 @@ "hermes-profile-transformer": ["hermes-profile-transformer@0.0.6", "", { "dependencies": { "source-map": "0.7.6" } }, "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ=="], + "html-encoding-sniffer": ["html-encoding-sniffer@6.0.0", "", { "dependencies": { "@exodus/bytes": "^1.6.0" } }, "sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg=="], + "http-errors": ["http-errors@2.0.1", "", { "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", "statuses": "2.0.2", "toidentifier": "1.0.1" } }, "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="], "human-signals": ["human-signals@2.1.0", "", {}, "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="], @@ -911,7 +881,7 @@ "image-size": ["image-size@1.2.1", "", { "dependencies": { "queue": "6.0.2" }, "bin": { "image-size": "bin/image-size.js" } }, "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw=="], - "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "1.0.1", "resolve-from": "4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], + "import-fresh": ["import-fresh@2.0.0", "", { "dependencies": { "caller-path": "2.0.0", "resolve-from": "3.0.0" } }, "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg=="], "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], @@ -919,90 +889,44 @@ "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], - "internal-slot": ["internal-slot@1.1.0", "", { "dependencies": { "es-errors": "1.3.0", "hasown": "2.0.2", "side-channel": "1.1.0" } }, "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw=="], - "invariant": ["invariant@2.2.4", "", { "dependencies": { "loose-envify": "1.4.0" } }, "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA=="], "ip": ["ip@1.1.9", "", {}, "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ=="], - "is-array-buffer": ["is-array-buffer@3.0.5", "", { "dependencies": { "call-bind": "1.0.8", "call-bound": "1.0.4", "get-intrinsic": "1.3.0" } }, "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A=="], - "is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="], - "is-async-function": ["is-async-function@2.1.1", "", { "dependencies": { "async-function": "1.0.0", "call-bound": "1.0.4", "get-proto": "1.0.1", "has-tostringtag": "1.0.2", "safe-regex-test": "1.1.0" } }, "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ=="], - - "is-bigint": ["is-bigint@1.1.0", "", { "dependencies": { "has-bigints": "1.1.0" } }, "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ=="], - "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "2.3.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="], - "is-boolean-object": ["is-boolean-object@1.2.2", "", { "dependencies": { "call-bound": "1.0.4", "has-tostringtag": "1.0.2" } }, "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A=="], - - "is-callable": ["is-callable@1.2.7", "", {}, "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="], - "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], - "is-data-view": ["is-data-view@1.0.2", "", { "dependencies": { "call-bound": "1.0.4", "get-intrinsic": "1.3.0", "is-typed-array": "1.1.15" } }, "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw=="], - - "is-date-object": ["is-date-object@1.1.0", "", { "dependencies": { "call-bound": "1.0.4", "has-tostringtag": "1.0.2" } }, "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg=="], - "is-directory": ["is-directory@0.3.1", "", {}, "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw=="], "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], - "is-finalizationregistry": ["is-finalizationregistry@1.1.1", "", { "dependencies": { "call-bound": "1.0.4" } }, "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg=="], - "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], - "is-generator-function": ["is-generator-function@1.1.2", "", { "dependencies": { "call-bound": "1.0.4", "generator-function": "2.0.1", "get-proto": "1.0.1", "has-tostringtag": "1.0.2", "safe-regex-test": "1.1.0" } }, "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA=="], - "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], "is-interactive": ["is-interactive@1.0.0", "", {}, "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w=="], - "is-map": ["is-map@2.0.3", "", {}, "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw=="], - - "is-negative-zero": ["is-negative-zero@2.0.3", "", {}, "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw=="], - "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], - "is-number-object": ["is-number-object@1.1.1", "", { "dependencies": { "call-bound": "1.0.4", "has-tostringtag": "1.0.2" } }, "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw=="], - - "is-path-inside": ["is-path-inside@3.0.3", "", {}, "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="], - "is-plain-object": ["is-plain-object@2.0.4", "", { "dependencies": { "isobject": "3.0.1" } }, "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og=="], - "is-regex": ["is-regex@1.2.1", "", { "dependencies": { "call-bound": "1.0.4", "gopd": "1.2.0", "has-tostringtag": "1.0.2", "hasown": "2.0.2" } }, "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g=="], - - "is-set": ["is-set@2.0.3", "", {}, "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg=="], - - "is-shared-array-buffer": ["is-shared-array-buffer@1.0.4", "", { "dependencies": { "call-bound": "1.0.4" } }, "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A=="], + "is-potential-custom-element-name": ["is-potential-custom-element-name@1.0.1", "", {}, "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ=="], "is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], - "is-string": ["is-string@1.1.1", "", { "dependencies": { "call-bound": "1.0.4", "has-tostringtag": "1.0.2" } }, "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA=="], - - "is-symbol": ["is-symbol@1.1.1", "", { "dependencies": { "call-bound": "1.0.4", "has-symbols": "1.1.0", "safe-regex-test": "1.1.0" } }, "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w=="], - - "is-typed-array": ["is-typed-array@1.1.15", "", { "dependencies": { "which-typed-array": "1.1.20" } }, "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ=="], - "is-unicode-supported": ["is-unicode-supported@0.1.0", "", {}, "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw=="], - "is-weakmap": ["is-weakmap@2.0.2", "", {}, "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w=="], - - "is-weakref": ["is-weakref@1.1.1", "", { "dependencies": { "call-bound": "1.0.4" } }, "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew=="], - - "is-weakset": ["is-weakset@2.0.4", "", { "dependencies": { "call-bound": "1.0.4", "get-intrinsic": "1.3.0" } }, "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ=="], - "is-wsl": ["is-wsl@1.1.0", "", {}, "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw=="], - "isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="], + "isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], "isobject": ["isobject@3.0.1", "", {}, "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg=="], - "iterator.prototype": ["iterator.prototype@1.1.5", "", { "dependencies": { "define-data-property": "1.1.4", "es-object-atoms": "1.1.1", "get-intrinsic": "1.3.0", "get-proto": "1.0.1", "has-symbols": "1.1.0", "set-function-name": "2.0.2" } }, "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g=="], - "jest-environment-node": ["jest-environment-node@29.7.0", "", { "dependencies": { "@jest/environment": "29.7.0", "@jest/fake-timers": "29.7.0", "@jest/types": "29.6.3", "@types/node": "25.5.2", "jest-mock": "29.7.0", "jest-util": "29.7.0" } }, "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw=="], "jest-get-type": ["jest-get-type@29.6.3", "", {}, "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw=="], @@ -1025,7 +949,7 @@ "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], + "js-yaml": ["js-yaml@3.14.2", "", { "dependencies": { "argparse": "1.0.10", "esprima": "4.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="], "jsc-android": ["jsc-android@250231.0.0", "", {}, "sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw=="], @@ -1033,42 +957,54 @@ "jscodeshift": ["jscodeshift@0.14.0", "", { "dependencies": { "@babel/core": "7.29.0", "@babel/parser": "7.29.2", "@babel/plugin-proposal-class-properties": "7.18.6", "@babel/plugin-proposal-nullish-coalescing-operator": "7.18.6", "@babel/plugin-proposal-optional-chaining": "7.21.0", "@babel/plugin-transform-modules-commonjs": "7.28.6", "@babel/preset-flow": "7.27.1", "@babel/preset-typescript": "7.28.5", "@babel/register": "7.28.6", "babel-core": "7.0.0-bridge.0", "chalk": "4.1.2", "flow-parser": "0.206.0", "graceful-fs": "4.2.11", "micromatch": "4.0.8", "neo-async": "2.6.2", "node-dir": "0.1.17", "recast": "0.21.5", "temp": "0.8.4", "write-file-atomic": "2.4.3" }, "peerDependencies": { "@babel/preset-env": "7.23.3" }, "bin": { "jscodeshift": "bin/jscodeshift.js" } }, "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA=="], + "jsdom": ["jsdom@29.0.2", "", { "dependencies": { "@asamuzakjp/css-color": "^5.1.5", "@asamuzakjp/dom-selector": "^7.0.6", "@bramus/specificity": "^2.4.2", "@csstools/css-syntax-patches-for-csstree": "^1.1.1", "@exodus/bytes": "^1.15.0", "css-tree": "^3.2.1", "data-urls": "^7.0.0", "decimal.js": "^10.6.0", "html-encoding-sniffer": "^6.0.0", "is-potential-custom-element-name": "^1.0.1", "lru-cache": "^11.2.7", "parse5": "^8.0.0", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", "tough-cookie": "^6.0.1", "undici": "^7.24.5", "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^8.0.1", "whatwg-mimetype": "^5.0.0", "whatwg-url": "^16.0.1", "xml-name-validator": "^5.0.0" }, "peerDependencies": { "canvas": "^3.0.0" }, "optionalPeers": ["canvas"] }, "sha512-9VnGEBosc/ZpwyOsJBCQ/3I5p7Q5ngOY14a9bf5btenAORmZfDse1ZEheMiWcJ3h81+Fv7HmJFdS0szo/waF2w=="], + "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], - "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="], - "json-parse-better-errors": ["json-parse-better-errors@1.0.2", "", {}, "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="], - "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], - - "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="], - "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], "jsonfile": ["jsonfile@6.2.0", "", { "dependencies": { "universalify": "2.0.1" }, "optionalDependencies": { "graceful-fs": "4.2.11" } }, "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg=="], - "jsx-ast-utils": ["jsx-ast-utils@3.3.5", "", { "dependencies": { "array-includes": "3.1.9", "array.prototype.flat": "1.3.3", "object.assign": "4.1.7", "object.values": "1.2.1" } }, "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ=="], - - "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], - "kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="], "kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="], "leven": ["leven@3.1.0", "", {}, "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="], - "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "1.2.1", "type-check": "0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], + "lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], + + "lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], + + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="], + + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w=="], + + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig=="], + + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw=="], + + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ=="], + + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg=="], + + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA=="], + + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg=="], + + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw=="], + + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="], "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="], "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], - "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], + "locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], "lodash.debounce": ["lodash.debounce@4.0.8", "", {}, "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="], - "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], - "lodash.throttle": ["lodash.throttle@4.1.1", "", {}, "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ=="], "log-symbols": ["log-symbols@4.1.0", "", { "dependencies": { "chalk": "4.1.2", "is-unicode-supported": "0.1.0" } }, "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg=="], @@ -1077,15 +1013,15 @@ "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], - "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "3.1.1" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], + "lru-cache": ["lru-cache@11.3.2", "", {}, "sha512-wgWa6FWQ3QRRJbIjbsldRJZxdxYngT/dO0I5Ynmlnin8qy7tC6xYzbcJjtN4wHLXtkbVwHzk0C+OejVw1XM+DQ=="], + + "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], "make-dir": ["make-dir@2.1.0", "", { "dependencies": { "pify": "4.0.1", "semver": "5.7.2" } }, "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA=="], "makeerror": ["makeerror@1.0.12", "", { "dependencies": { "tmpl": "1.0.5" } }, "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg=="], - "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], - - "mdn-data": ["mdn-data@2.0.14", "", {}, "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="], + "mdn-data": ["mdn-data@2.27.1", "", {}, "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ=="], "memoize-one": ["memoize-one@5.2.1", "", {}, "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q=="], @@ -1153,8 +1089,6 @@ "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], - "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], - "negotiator": ["negotiator@0.6.4", "", {}, "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w=="], "neo-async": ["neo-async@2.6.2", "", {}, "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="], @@ -1165,8 +1099,6 @@ "node-dir": ["node-dir@0.1.17", "", { "dependencies": { "minimatch": "3.1.5" } }, "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg=="], - "node-exports-info": ["node-exports-info@1.6.0", "", { "dependencies": { "array.prototype.flatmap": "1.3.3", "es-errors": "1.3.0", "object.entries": "1.1.9", "semver": "6.3.1" } }, "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw=="], - "node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "5.0.0" } }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], "node-int64": ["node-int64@0.4.0", "", {}, "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw=="], @@ -1177,6 +1109,8 @@ "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], + "nostr-tools": ["nostr-tools@2.23.3", "", { "dependencies": { "@noble/ciphers": "2.1.1", "@noble/curves": "2.0.1", "@noble/hashes": "2.0.1", "@scure/base": "2.0.0", "@scure/bip32": "2.0.1", "@scure/bip39": "2.0.1", "nostr-wasm": "0.1.0" }, "peerDependencies": { "typescript": ">=5.0.0" }, "optionalPeers": ["typescript"] }, "sha512-AALyt9k8xPdF4UV2mlLJ2mgCn4kpTB0DZ8t2r6wjdUh6anfx2cTVBsHUlo9U0EY/cKC5wcNyiMAmRJV5OVEalA=="], + "nostr-wasm": ["nostr-wasm@0.1.0", "", {}, "sha512-78BTryCLcLYv96ONU8Ws3Q1JzjlAt+43pWQhIl86xZmWeegYCNLPml7yQ+gG3vR6V5h4XGj+TxO+SS5dsThQIA=="], "npm-run-path": ["npm-run-path@4.0.1", "", { "dependencies": { "path-key": "3.1.1" } }, "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="], @@ -1191,17 +1125,7 @@ "object-hash": ["object-hash@3.0.0", "", {}, "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="], - "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], - - "object-keys": ["object-keys@1.1.1", "", {}, "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="], - - "object.assign": ["object.assign@4.1.7", "", { "dependencies": { "call-bind": "1.0.8", "call-bound": "1.0.4", "define-properties": "1.2.1", "es-object-atoms": "1.1.1", "has-symbols": "1.1.0", "object-keys": "1.1.1" } }, "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw=="], - - "object.entries": ["object.entries@1.1.9", "", { "dependencies": { "call-bind": "1.0.8", "call-bound": "1.0.4", "define-properties": "1.2.1", "es-object-atoms": "1.1.1" } }, "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw=="], - - "object.fromentries": ["object.fromentries@2.0.8", "", { "dependencies": { "call-bind": "1.0.8", "define-properties": "1.2.1", "es-abstract": "1.24.2", "es-object-atoms": "1.1.1" } }, "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ=="], - - "object.values": ["object.values@1.2.1", "", { "dependencies": { "call-bind": "1.0.8", "call-bound": "1.0.4", "define-properties": "1.2.1", "es-object-atoms": "1.1.1" } }, "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA=="], + "obug": ["obug@2.1.1", "", {}, "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ=="], "on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="], @@ -1213,22 +1137,18 @@ "open": ["open@6.4.0", "", { "dependencies": { "is-wsl": "1.1.0" } }, "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg=="], - "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "0.1.4", "fast-levenshtein": "2.0.6", "levn": "0.4.1", "prelude-ls": "1.2.1", "type-check": "0.4.0", "word-wrap": "1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], - "ora": ["ora@5.4.1", "", { "dependencies": { "bl": "4.1.0", "chalk": "4.1.2", "cli-cursor": "3.1.0", "cli-spinners": "2.9.2", "is-interactive": "1.0.0", "is-unicode-supported": "0.1.0", "log-symbols": "4.1.0", "strip-ansi": "6.0.1", "wcwidth": "1.0.1" } }, "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ=="], - "own-keys": ["own-keys@1.0.1", "", { "dependencies": { "get-intrinsic": "1.3.0", "object-keys": "1.1.1", "safe-push-apply": "1.0.0" } }, "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg=="], + "p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "2.2.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], - "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], - - "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "3.1.0" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], + "p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "2.3.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="], "p-try": ["p-try@2.2.0", "", {}, "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="], - "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "3.1.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], - "parse-json": ["parse-json@4.0.0", "", { "dependencies": { "error-ex": "1.3.4", "json-parse-better-errors": "1.0.2" } }, "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw=="], + "parse5": ["parse5@8.0.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA=="], + "parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="], "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], @@ -1241,9 +1161,11 @@ "path-type": ["path-type@4.0.0", "", {}, "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="], + "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - "picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], + "picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="], "pify": ["pify@2.3.0", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="], @@ -1251,8 +1173,6 @@ "pkg-dir": ["pkg-dir@3.0.0", "", { "dependencies": { "find-up": "3.0.0" } }, "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw=="], - "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], - "postcss": ["postcss@8.5.9", "", { "dependencies": { "nanoid": "3.3.11", "picocolors": "1.1.1", "source-map-js": "1.2.1" } }, "sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw=="], "postcss-import": ["postcss-import@15.1.0", "", { "dependencies": { "postcss-value-parser": "4.2.0", "read-cache": "1.0.0", "resolve": "1.22.11" }, "peerDependencies": { "postcss": "8.5.9" } }, "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew=="], @@ -1267,10 +1187,6 @@ "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], - "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], - - "prettier": ["prettier@2.8.8", "", { "bin": { "prettier": "bin-prettier.js" } }, "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q=="], - "pretty-format": ["pretty-format@26.6.2", "", { "dependencies": { "@jest/types": "26.6.2", "ansi-regex": "5.0.1", "ansi-styles": "4.3.0", "react-is": "17.0.2" } }, "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg=="], "process-nextick-args": ["process-nextick-args@2.0.1", "", {}, "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="], @@ -1319,16 +1235,12 @@ "recast": ["recast@0.21.5", "", { "dependencies": { "ast-types": "0.15.2", "esprima": "4.0.1", "source-map": "0.6.1", "tslib": "2.8.1" } }, "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg=="], - "reflect.getprototypeof": ["reflect.getprototypeof@1.0.10", "", { "dependencies": { "call-bind": "1.0.8", "define-properties": "1.2.1", "es-abstract": "1.24.2", "es-errors": "1.3.0", "es-object-atoms": "1.1.1", "get-intrinsic": "1.3.0", "get-proto": "1.0.1", "which-builtin-type": "1.2.1" } }, "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw=="], - "regenerate": ["regenerate@1.4.2", "", {}, "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="], "regenerate-unicode-properties": ["regenerate-unicode-properties@10.2.2", "", { "dependencies": { "regenerate": "1.4.2" } }, "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g=="], "regenerator-runtime": ["regenerator-runtime@0.13.11", "", {}, "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="], - "regexp.prototype.flags": ["regexp.prototype.flags@1.5.4", "", { "dependencies": { "call-bind": "1.0.8", "define-properties": "1.2.1", "es-errors": "1.3.0", "get-proto": "1.0.1", "gopd": "1.2.0", "set-function-name": "2.0.2" } }, "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA=="], - "regexpu-core": ["regexpu-core@6.4.0", "", { "dependencies": { "regenerate": "1.4.2", "regenerate-unicode-properties": "10.2.2", "regjsgen": "0.8.0", "regjsparser": "0.13.1", "unicode-match-property-ecmascript": "2.0.0", "unicode-match-property-value-ecmascript": "2.2.1" } }, "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA=="], "regjsgen": ["regjsgen@0.8.0", "", {}, "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q=="], @@ -1337,11 +1249,13 @@ "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="], + "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], + "require-main-filename": ["require-main-filename@2.0.0", "", {}, "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="], "resolve": ["resolve@1.22.11", "", { "dependencies": { "is-core-module": "2.16.1", "path-parse": "1.0.7", "supports-preserve-symlinks-flag": "1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="], - "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], + "resolve-from": ["resolve-from@3.0.0", "", {}, "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw=="], "restore-cursor": ["restore-cursor@3.1.0", "", { "dependencies": { "onetime": "5.1.2", "signal-exit": "3.0.7" } }, "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA=="], @@ -1349,19 +1263,17 @@ "rimraf": ["rimraf@3.0.2", "", { "dependencies": { "glob": "7.2.3" }, "bin": { "rimraf": "bin.js" } }, "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA=="], - "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "1.2.3" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], + "rolldown": ["rolldown@1.0.0-rc.13", "", { "dependencies": { "@oxc-project/types": "=0.123.0", "@rolldown/pluginutils": "1.0.0-rc.13" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-rc.13", "@rolldown/binding-darwin-arm64": "1.0.0-rc.13", "@rolldown/binding-darwin-x64": "1.0.0-rc.13", "@rolldown/binding-freebsd-x64": "1.0.0-rc.13", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.13", "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.13", "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.13", "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.13", "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.13", "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.13", "@rolldown/binding-linux-x64-musl": "1.0.0-rc.13", "@rolldown/binding-openharmony-arm64": "1.0.0-rc.13", "@rolldown/binding-wasm32-wasi": "1.0.0-rc.13", "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.13", "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.13" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-bvVj8YJmf0rq4pSFmH7laLa6pYrhghv3PRzrCdRAr23g66zOKVJ4wkvFtgohtPLWmthgg8/rkaqRHrpUEh0Zbw=="], - "safe-array-concat": ["safe-array-concat@1.1.3", "", { "dependencies": { "call-bind": "1.0.8", "call-bound": "1.0.4", "get-intrinsic": "1.3.0", "has-symbols": "1.1.0", "isarray": "2.0.5" } }, "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q=="], + "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "1.2.3" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], - "safe-push-apply": ["safe-push-apply@1.0.0", "", { "dependencies": { "es-errors": "1.3.0", "isarray": "2.0.5" } }, "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA=="], - - "safe-regex-test": ["safe-regex-test@1.1.0", "", { "dependencies": { "call-bound": "1.0.4", "es-errors": "1.3.0", "is-regex": "1.2.1" } }, "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw=="], + "saxes": ["saxes@6.0.0", "", { "dependencies": { "xmlchars": "^2.2.0" } }, "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA=="], "scheduler": ["scheduler@0.20.2", "", { "dependencies": { "loose-envify": "1.4.0", "object-assign": "4.1.1" } }, "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ=="], - "semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], "send": ["send@0.19.2", "", { "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "encodeurl": "2.0.0", "escape-html": "1.0.3", "etag": "1.8.1", "fresh": "0.5.2", "http-errors": "2.0.1", "mime": "1.6.0", "ms": "2.1.3", "on-finished": "2.4.1", "range-parser": "1.2.1", "statuses": "2.0.2" } }, "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg=="], @@ -1371,12 +1283,6 @@ "set-blocking": ["set-blocking@2.0.0", "", {}, "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="], - "set-function-length": ["set-function-length@1.2.2", "", { "dependencies": { "define-data-property": "1.1.4", "es-errors": "1.3.0", "function-bind": "1.1.2", "get-intrinsic": "1.3.0", "gopd": "1.2.0", "has-property-descriptors": "1.0.2" } }, "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg=="], - - "set-function-name": ["set-function-name@2.0.2", "", { "dependencies": { "define-data-property": "1.1.4", "es-errors": "1.3.0", "functions-have-names": "1.2.3", "has-property-descriptors": "1.0.2" } }, "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ=="], - - "set-proto": ["set-proto@1.0.0", "", { "dependencies": { "dunder-proto": "1.0.1", "es-errors": "1.3.0", "es-object-atoms": "1.1.1" } }, "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw=="], - "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="], "shallow-clone": ["shallow-clone@3.0.1", "", { "dependencies": { "kind-of": "6.0.3" } }, "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA=="], @@ -1387,13 +1293,7 @@ "shell-quote": ["shell-quote@1.8.3", "", {}, "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw=="], - "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "1.3.0", "object-inspect": "1.13.4", "side-channel-list": "1.0.0", "side-channel-map": "1.0.1", "side-channel-weakmap": "1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], - - "side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "1.3.0", "object-inspect": "1.13.4" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="], - - "side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "1.0.4", "es-errors": "1.3.0", "get-intrinsic": "1.3.0", "object-inspect": "1.13.4" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="], - - "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "1.0.4", "es-errors": "1.3.0", "get-intrinsic": "1.3.0", "object-inspect": "1.13.4", "side-channel-map": "1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], + "siginfo": ["siginfo@2.0.0", "", {}, "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g=="], "signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], @@ -1413,34 +1313,24 @@ "stack-utils": ["stack-utils@2.0.6", "", { "dependencies": { "escape-string-regexp": "2.0.0" } }, "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ=="], + "stackback": ["stackback@0.0.2", "", {}, "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw=="], + "stackframe": ["stackframe@1.3.4", "", {}, "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="], "stacktrace-parser": ["stacktrace-parser@0.1.11", "", { "dependencies": { "type-fest": "0.7.1" } }, "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg=="], "statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], - "stop-iteration-iterator": ["stop-iteration-iterator@1.1.0", "", { "dependencies": { "es-errors": "1.3.0", "internal-slot": "1.1.0" } }, "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ=="], + "std-env": ["std-env@4.0.0", "", {}, "sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ=="], "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "8.0.0", "is-fullwidth-code-point": "3.0.0", "strip-ansi": "6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - "string.prototype.matchall": ["string.prototype.matchall@4.0.12", "", { "dependencies": { "call-bind": "1.0.8", "call-bound": "1.0.4", "define-properties": "1.2.1", "es-abstract": "1.24.2", "es-errors": "1.3.0", "es-object-atoms": "1.1.1", "get-intrinsic": "1.3.0", "gopd": "1.2.0", "has-symbols": "1.1.0", "internal-slot": "1.1.0", "regexp.prototype.flags": "1.5.4", "set-function-name": "2.0.2", "side-channel": "1.1.0" } }, "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA=="], - - "string.prototype.repeat": ["string.prototype.repeat@1.0.0", "", { "dependencies": { "define-properties": "1.2.1", "es-abstract": "1.24.2" } }, "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w=="], - - "string.prototype.trim": ["string.prototype.trim@1.2.10", "", { "dependencies": { "call-bind": "1.0.8", "call-bound": "1.0.4", "define-data-property": "1.1.4", "define-properties": "1.2.1", "es-abstract": "1.24.2", "es-object-atoms": "1.1.1", "has-property-descriptors": "1.0.2" } }, "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA=="], - - "string.prototype.trimend": ["string.prototype.trimend@1.0.9", "", { "dependencies": { "call-bind": "1.0.8", "call-bound": "1.0.4", "define-properties": "1.2.1", "es-object-atoms": "1.1.1" } }, "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ=="], - - "string.prototype.trimstart": ["string.prototype.trimstart@1.0.8", "", { "dependencies": { "call-bind": "1.0.8", "define-properties": "1.2.1", "es-object-atoms": "1.1.1" } }, "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg=="], - "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "5.2.1" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], - "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "strip-ansi": ["strip-ansi@5.2.0", "", { "dependencies": { "ansi-regex": "4.1.1" } }, "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA=="], "strip-final-newline": ["strip-final-newline@2.0.0", "", {}, "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="], - "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], - "strnum": ["strnum@1.1.2", "", {}, "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA=="], "sucrase": ["sucrase@3.35.1", "", { "dependencies": { "@jridgewell/gen-mapping": "0.3.13", "commander": "4.1.1", "lines-and-columns": "1.2.4", "mz": "2.7.0", "pirates": "4.0.7", "tinyglobby": "0.2.16", "ts-interface-checker": "0.1.13" }, "bin": { "sucrase": "bin/sucrase", "sucrase-node": "bin/sucrase-node" } }, "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw=="], @@ -1451,14 +1341,14 @@ "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], + "symbol-tree": ["symbol-tree@3.2.4", "", {}, "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="], + "tailwindcss": ["tailwindcss@3.4.19", "", { "dependencies": { "@alloc/quick-lru": "5.2.0", "arg": "5.0.2", "chokidar": "3.6.0", "didyoumean": "1.2.2", "dlv": "1.1.3", "fast-glob": "3.3.3", "glob-parent": "6.0.2", "is-glob": "4.0.3", "jiti": "1.21.7", "lilconfig": "3.1.3", "micromatch": "4.0.8", "normalize-path": "3.0.0", "object-hash": "3.0.0", "picocolors": "1.1.1", "postcss": "8.5.9", "postcss-import": "15.1.0", "postcss-js": "4.1.0", "postcss-load-config": "6.0.1", "postcss-nested": "6.2.0", "postcss-selector-parser": "6.1.2", "resolve": "1.22.11", "sucrase": "3.35.1" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" } }, "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ=="], "temp": ["temp@0.8.4", "", { "dependencies": { "rimraf": "2.6.3" } }, "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg=="], "terser": ["terser@5.46.1", "", { "dependencies": { "@jridgewell/source-map": "0.3.11", "acorn": "8.16.0", "commander": "2.20.3", "source-map-support": "0.5.21" }, "bin": { "terser": "bin/terser" } }, "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ=="], - "text-table": ["text-table@0.2.0", "", {}, "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="], - "thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "1.3.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="], "thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": "3.3.1" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="], @@ -1467,37 +1357,39 @@ "through2": ["through2@2.0.5", "", { "dependencies": { "readable-stream": "2.3.8", "xtend": "4.0.2" } }, "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ=="], + "tinybench": ["tinybench@2.9.0", "", {}, "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg=="], + + "tinyexec": ["tinyexec@1.1.1", "", {}, "sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg=="], + "tinyglobby": ["tinyglobby@0.2.16", "", { "dependencies": { "fdir": "6.5.0", "picomatch": "4.0.4" } }, "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg=="], + "tinyrainbow": ["tinyrainbow@3.1.0", "", {}, "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw=="], + + "tldts": ["tldts@7.0.28", "", { "dependencies": { "tldts-core": "^7.0.28" }, "bin": { "tldts": "bin/cli.js" } }, "sha512-+Zg3vWhRUv8B1maGSTFdev9mjoo8Etn2Ayfs4cnjlD3CsGkxXX4QyW3j2WJ0wdjYcYmy7Lx2RDsZMhgCWafKIw=="], + + "tldts-core": ["tldts-core@7.0.28", "", {}, "sha512-7W5Efjhsc3chVdFhqtaU0KtK32J37Zcr9RKtID54nG+tIpcY79CQK/veYPODxtD/LJ4Lue66jvrQzIX2Z2/pUQ=="], + "tmpl": ["tmpl@1.0.5", "", {}, "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw=="], "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], - "tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="], + "tough-cookie": ["tough-cookie@6.0.1", "", { "dependencies": { "tldts": "^7.0.5" } }, "sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw=="], + + "tr46": ["tr46@6.0.0", "", { "dependencies": { "punycode": "^2.3.1" } }, "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw=="], "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="], "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], - "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], - "type-detect": ["type-detect@4.0.8", "", {}, "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g=="], - "type-fest": ["type-fest@0.20.2", "", {}, "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="], - - "typed-array-buffer": ["typed-array-buffer@1.0.3", "", { "dependencies": { "call-bound": "1.0.4", "es-errors": "1.3.0", "is-typed-array": "1.1.15" } }, "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw=="], - - "typed-array-byte-length": ["typed-array-byte-length@1.0.3", "", { "dependencies": { "call-bind": "1.0.8", "for-each": "0.3.5", "gopd": "1.2.0", "has-proto": "1.2.0", "is-typed-array": "1.1.15" } }, "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg=="], - - "typed-array-byte-offset": ["typed-array-byte-offset@1.0.4", "", { "dependencies": { "available-typed-arrays": "1.0.7", "call-bind": "1.0.8", "for-each": "0.3.5", "gopd": "1.2.0", "has-proto": "1.2.0", "is-typed-array": "1.1.15", "reflect.getprototypeof": "1.0.10" } }, "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ=="], - - "typed-array-length": ["typed-array-length@1.0.7", "", { "dependencies": { "call-bind": "1.0.8", "for-each": "0.3.5", "gopd": "1.2.0", "is-typed-array": "1.1.15", "possible-typed-array-names": "1.1.0", "reflect.getprototypeof": "1.0.10" } }, "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg=="], + "type-fest": ["type-fest@0.7.1", "", {}, "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg=="], "uglify-es": ["uglify-es@3.3.9", "", { "dependencies": { "commander": "2.13.0", "source-map": "0.6.1" }, "bin": { "uglifyjs": "bin/uglifyjs" } }, "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ=="], - "unbox-primitive": ["unbox-primitive@1.1.0", "", { "dependencies": { "call-bound": "1.0.4", "has-bigints": "1.1.0", "has-symbols": "1.1.0", "which-boxed-primitive": "1.1.1" } }, "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw=="], + "undici": ["undici@7.24.7", "", {}, "sha512-H/nlJ/h0ggGC+uRL3ovD+G0i4bqhvsDOpbDv7At5eFLlj2b41L8QliGbnl2H7SnDiYhENphh1tQFJZf+MyfLsQ=="], "undici-types": ["undici-types@7.18.2", "", {}, "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w=="], @@ -1515,8 +1407,6 @@ "update-browserslist-db": ["update-browserslist-db@1.2.3", "", { "dependencies": { "escalade": "3.2.0", "picocolors": "1.1.1" }, "peerDependencies": { "browserslist": "4.28.2" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="], - "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "2.3.1" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], - "use-boolean-state": ["use-boolean-state@1.0.2", "", { "peerDependencies": { "react": "17.0.2" } }, "sha512-2qjR94L8GSbBKr7/qZrf14DH0PEREbtVMGeJ9kxAbpdgFp2xDux7rShCcHdnya5ca8jG+5fiRdX/aJqXi56BxA=="], "use-debounce": ["use-debounce@7.0.1", "", { "peerDependencies": { "react": "17.0.2" } }, "sha512-fOrzIw2wstbAJuv8PC9Vg4XgwyTLEOdq4y/Z3IhVl8DAE4svRcgyEUvrEXu+BMNgMoc3YND6qLT61kkgEKXh7Q=="], @@ -1529,33 +1419,33 @@ "vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="], + "vite": ["vite@8.0.7", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", "postcss": "^8.5.8", "rolldown": "1.0.0-rc.13", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.1.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-P1PbweD+2/udplnThz3btF4cf6AgPky7kk23RtHUkJIU5BIxwPprhRGmOAHs6FTI7UiGbTNrgNP6jSYD6JaRnw=="], + + "vitest": ["vitest@4.1.3", "", { "dependencies": { "@vitest/expect": "4.1.3", "@vitest/mocker": "4.1.3", "@vitest/pretty-format": "4.1.3", "@vitest/runner": "4.1.3", "@vitest/snapshot": "4.1.3", "@vitest/spy": "4.1.3", "@vitest/utils": "4.1.3", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.3", "@vitest/browser-preview": "4.1.3", "@vitest/browser-webdriverio": "4.1.3", "@vitest/coverage-istanbul": "4.1.3", "@vitest/coverage-v8": "4.1.3", "@vitest/ui": "4.1.3", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-DBc4Tx0MPNsqb9isoyOq00lHftVx/KIU44QOm2q59npZyLUkENn8TMFsuzuO+4U2FUa9rgbbPt3udrP25GcjXw=="], + "vlq": ["vlq@1.0.1", "", {}, "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w=="], + "w3c-xmlserializer": ["w3c-xmlserializer@5.0.0", "", { "dependencies": { "xml-name-validator": "^5.0.0" } }, "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA=="], + "walker": ["walker@1.0.8", "", { "dependencies": { "makeerror": "1.0.12" } }, "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ=="], "wcwidth": ["wcwidth@1.0.1", "", { "dependencies": { "defaults": "1.0.4" } }, "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg=="], "webextension-polyfill": ["webextension-polyfill@0.8.0", "", {}, "sha512-a19+DzlT6Kp9/UI+mF9XQopeZ+n2ussjhxHJ4/pmIGge9ijCDz7Gn93mNnjpZAk95T4Tae8iHZ6sSf869txqiQ=="], - "webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="], + "webidl-conversions": ["webidl-conversions@8.0.1", "", {}, "sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ=="], "whatwg-fetch": ["whatwg-fetch@3.6.20", "", {}, "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg=="], - "whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "0.0.3", "webidl-conversions": "3.0.1" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="], + "whatwg-mimetype": ["whatwg-mimetype@5.0.0", "", {}, "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw=="], + + "whatwg-url": ["whatwg-url@16.0.1", "", { "dependencies": { "@exodus/bytes": "^1.11.0", "tr46": "^6.0.0", "webidl-conversions": "^8.0.1" } }, "sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw=="], "which": ["which@2.0.2", "", { "dependencies": { "isexe": "2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], - "which-boxed-primitive": ["which-boxed-primitive@1.1.1", "", { "dependencies": { "is-bigint": "1.1.0", "is-boolean-object": "1.2.2", "is-number-object": "1.1.1", "is-string": "1.1.1", "is-symbol": "1.1.1" } }, "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA=="], - - "which-builtin-type": ["which-builtin-type@1.2.1", "", { "dependencies": { "call-bound": "1.0.4", "function.prototype.name": "1.1.8", "has-tostringtag": "1.0.2", "is-async-function": "2.1.1", "is-date-object": "1.1.0", "is-finalizationregistry": "1.1.1", "is-generator-function": "1.1.2", "is-regex": "1.2.1", "is-weakref": "1.1.1", "isarray": "2.0.5", "which-boxed-primitive": "1.1.1", "which-collection": "1.0.2", "which-typed-array": "1.1.20" } }, "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q=="], - - "which-collection": ["which-collection@1.0.2", "", { "dependencies": { "is-map": "2.0.3", "is-set": "2.0.3", "is-weakmap": "2.0.2", "is-weakset": "2.0.4" } }, "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw=="], - "which-module": ["which-module@2.0.1", "", {}, "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="], - "which-typed-array": ["which-typed-array@1.1.20", "", { "dependencies": { "available-typed-arrays": "1.0.7", "call-bind": "1.0.8", "call-bound": "1.0.4", "for-each": "0.3.5", "get-proto": "1.0.1", "gopd": "1.2.0", "has-tostringtag": "1.0.2" } }, "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg=="], - - "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], + "why-is-node-running": ["why-is-node-running@2.3.0", "", { "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" }, "bin": { "why-is-node-running": "cli.js" } }, "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w=="], "wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "4.3.0", "string-width": "4.2.3", "strip-ansi": "6.0.1" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], @@ -1565,6 +1455,10 @@ "ws": ["ws@6.2.3", "", { "dependencies": { "async-limiter": "1.0.1" } }, "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA=="], + "xml-name-validator": ["xml-name-validator@5.0.0", "", {}, "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg=="], + + "xmlchars": ["xmlchars@2.2.0", "", {}, "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="], + "xtend": ["xtend@4.0.2", "", {}, "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="], "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], @@ -1579,56 +1473,56 @@ "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], + "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "3.1.1" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], + + "@babel/helper-compilation-targets/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@babel/helper-create-class-features-plugin/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@babel/helper-create-regexp-features-plugin/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "@babel/plugin-transform-runtime/babel-plugin-polyfill-corejs3": ["babel-plugin-polyfill-corejs3@0.13.0", "", { "dependencies": { "@babel/helper-define-polyfill-provider": "0.6.8", "core-js-compat": "3.49.0" }, "peerDependencies": { "@babel/core": "7.29.0" } }, "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A=="], "@babel/plugin-transform-runtime/babel-plugin-polyfill-regenerator": ["babel-plugin-polyfill-regenerator@0.6.8", "", { "dependencies": { "@babel/helper-define-polyfill-provider": "0.6.8" }, "peerDependencies": { "@babel/core": "7.29.0" } }, "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg=="], - "@react-native-community/cli/commander": ["commander@9.5.0", "", {}, "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ=="], + "@babel/plugin-transform-runtime/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], - "@react-native-community/cli/find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "5.0.0", "path-exists": "4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="], + "@babel/preset-env/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "@react-native-community/cli/commander": ["commander@9.5.0", "", {}, "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ=="], "@react-native-community/cli/fs-extra": ["fs-extra@8.1.0", "", { "dependencies": { "graceful-fs": "4.2.11", "jsonfile": "4.0.0", "universalify": "0.1.2" } }, "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g=="], - "@react-native-community/cli/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], - - "@react-native-community/cli-doctor/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], - - "@react-native-community/cli-doctor/strip-ansi": ["strip-ansi@5.2.0", "", { "dependencies": { "ansi-regex": "4.1.1" } }, "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA=="], - "@react-native-community/cli-server-api/ws": ["ws@7.5.10", "", {}, "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ=="], - "@react-native-community/cli-tools/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], + "@react-native-community/cli-tools/find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "6.0.0", "path-exists": "4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], "accepts/negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], - "ansi-fragments/strip-ansi": ["strip-ansi@5.2.0", "", { "dependencies": { "ansi-regex": "4.1.1" } }, "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA=="], + "anymatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], + + "babel-plugin-polyfill-corejs2/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], "babel-plugin-polyfill-corejs3/@babel/helper-define-polyfill-provider": ["@babel/helper-define-polyfill-provider@0.4.4", "", { "dependencies": { "@babel/helper-compilation-targets": "7.28.6", "@babel/helper-plugin-utils": "7.28.6", "debug": "4.4.3", "lodash.debounce": "4.0.8", "resolve": "1.22.11" }, "peerDependencies": { "@babel/core": "7.29.0" } }, "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA=="], "babel-plugin-polyfill-regenerator/@babel/helper-define-polyfill-provider": ["@babel/helper-define-polyfill-provider@0.5.0", "", { "dependencies": { "@babel/helper-compilation-targets": "7.28.6", "@babel/helper-plugin-utils": "7.28.6", "debug": "4.4.3", "lodash.debounce": "4.0.8", "resolve": "1.22.11" }, "peerDependencies": { "@babel/core": "7.29.0" } }, "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q=="], - "caller-callsite/callsites": ["callsites@2.0.0", "", {}, "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ=="], - "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "4.0.3" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + "cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "compressible/mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], "compression/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], "connect/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], - "cosmiconfig/import-fresh": ["import-fresh@2.0.0", "", { "dependencies": { "caller-path": "2.0.0", "resolve-from": "3.0.0" } }, "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg=="], - - "cosmiconfig/js-yaml": ["js-yaml@3.14.2", "", { "dependencies": { "argparse": "1.0.10", "esprima": "4.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="], - - "eslint-plugin-react/doctrine": ["doctrine@2.1.0", "", { "dependencies": { "esutils": "2.0.3" } }, "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="], - - "eslint-plugin-react/resolve": ["resolve@2.0.0-next.6", "", { "dependencies": { "es-errors": "1.3.0", "is-core-module": "2.16.1", "node-exports-info": "1.6.0", "object-keys": "1.1.1", "path-parse": "1.0.7", "supports-preserve-symlinks-flag": "1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA=="], + "dom-serializer/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "4.0.3" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], - "fdir/picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="], - "finalhandler/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], "finalhandler/encodeurl": ["encodeurl@1.0.2", "", {}, "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="], @@ -1641,6 +1535,8 @@ "jest-message-util/pretty-format": ["pretty-format@29.7.0", "", { "dependencies": { "@jest/schemas": "29.6.3", "ansi-styles": "5.2.0", "react-is": "18.3.1" } }, "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ=="], + "jest-util/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], + "jest-validate/pretty-format": ["pretty-format@29.7.0", "", { "dependencies": { "@jest/schemas": "29.6.3", "ansi-styles": "5.2.0", "react-is": "18.3.1" } }, "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ=="], "jest-worker/supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], @@ -1657,6 +1553,8 @@ "metro/source-map": ["source-map@0.5.7", "", {}, "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="], + "metro/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "metro/ws": ["ws@7.5.10", "", {}, "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ=="], "metro-file-map/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], @@ -1671,6 +1569,12 @@ "metro-symbolicate/source-map": ["source-map@0.5.7", "", {}, "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="], + "micromatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], + + "node-fetch/whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "0.0.3", "webidl-conversions": "3.0.1" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="], + + "ora/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "pkg-dir/find-up": ["find-up@3.0.0", "", { "dependencies": { "locate-path": "3.0.0" } }, "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg=="], "pretty-format/@jest/types": ["@jest/types@26.6.2", "", { "dependencies": { "@types/istanbul-lib-coverage": "2.0.6", "@types/istanbul-reports": "3.0.4", "@types/node": "25.5.2", "@types/yargs": "15.0.20", "chalk": "4.1.2" } }, "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ=="], @@ -1681,8 +1585,14 @@ "react-native/scheduler": ["scheduler@0.24.0-canary-efb381bbf-20230505", "", { "dependencies": { "loose-envify": "1.4.0" } }, "sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA=="], + "react-native-svg/css-tree": ["css-tree@1.1.3", "", { "dependencies": { "mdn-data": "2.0.14", "source-map": "0.6.1" } }, "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q=="], + "react-shallow-renderer/react-is": ["react-is@18.3.1", "", {}, "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="], + "readdirp/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], + + "rolldown/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.13", "", {}, "sha512-3ngTAv6F/Py35BsYbeeLeecvhMKdsKm4AoOETVhAA+Qc8nrA2I0kF7oa93mE9qnIurngOSpMnQ0x2nQY2FPviA=="], + "send/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], "send/mime": ["mime@1.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="], @@ -1691,9 +1601,9 @@ "slice-ansi/is-fullwidth-code-point": ["is-fullwidth-code-point@2.0.0", "", {}, "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w=="], - "stack-utils/escape-string-regexp": ["escape-string-regexp@2.0.0", "", {}, "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="], + "string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "stacktrace-parser/type-fest": ["type-fest@0.7.1", "", {}, "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg=="], + "strip-ansi/ansi-regex": ["ansi-regex@4.1.1", "", {}, "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g=="], "temp/rimraf": ["rimraf@2.6.3", "", { "dependencies": { "glob": "7.2.3" }, "bin": { "rimraf": "./bin.js" } }, "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA=="], @@ -1701,28 +1611,20 @@ "through2/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "1.0.3", "inherits": "2.0.4", "isarray": "1.0.0", "process-nextick-args": "2.0.1", "safe-buffer": "5.1.2", "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], - "tinyglobby/picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="], - "uglify-es/commander": ["commander@2.13.0", "", {}, "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA=="], - "@react-native-community/cli-doctor/strip-ansi/ansi-regex": ["ansi-regex@4.1.1", "", {}, "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g=="], + "wrap-ansi/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "@react-native-community/cli/find-up/locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], + "@react-native-community/cli-tools/find-up/locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], "@react-native-community/cli/fs-extra/jsonfile": ["jsonfile@4.0.0", "", { "optionalDependencies": { "graceful-fs": "4.2.11" } }, "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg=="], "@react-native-community/cli/fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], - "ansi-fragments/strip-ansi/ansi-regex": ["ansi-regex@4.1.1", "", {}, "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g=="], - "compression/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], "connect/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], - "cosmiconfig/import-fresh/resolve-from": ["resolve-from@3.0.0", "", {}, "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw=="], - - "cosmiconfig/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "1.0.3" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], - "finalhandler/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], "jest-message-util/pretty-format/ansi-styles": ["ansi-styles@5.2.0", "", {}, "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="], @@ -1735,8 +1637,6 @@ "logkitty/yargs/cliui": ["cliui@6.0.0", "", { "dependencies": { "string-width": "4.2.3", "strip-ansi": "6.0.1", "wrap-ansi": "6.2.0" } }, "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ=="], - "logkitty/yargs/find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "5.0.0", "path-exists": "4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="], - "logkitty/yargs/y18n": ["y18n@4.0.3", "", {}, "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="], "logkitty/yargs/yargs-parser": ["yargs-parser@18.1.3", "", { "dependencies": { "camelcase": "5.3.1", "decamelize": "1.2.0" } }, "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ=="], @@ -1745,30 +1645,36 @@ "metro-file-map/jest-util/@jest/types": ["@jest/types@27.5.1", "", { "dependencies": { "@types/istanbul-lib-coverage": "2.0.6", "@types/istanbul-reports": "3.0.4", "@types/node": "25.5.2", "@types/yargs": "16.0.11", "chalk": "4.1.2" } }, "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw=="], + "metro-file-map/jest-util/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], + "metro-inspector-proxy/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], "metro/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + "node-fetch/whatwg-url/tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="], + + "node-fetch/whatwg-url/webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="], + "pkg-dir/find-up/locate-path": ["locate-path@3.0.0", "", { "dependencies": { "p-locate": "3.0.0", "path-exists": "3.0.0" } }, "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A=="], "pretty-format/@jest/types/@types/yargs": ["@types/yargs@15.0.20", "", { "dependencies": { "@types/yargs-parser": "21.0.3" } }, "sha512-KIkX+/GgfFitlASYCGoSF+T4XRXhOubJLhkLVtSfsRTe9jWMmuM2g28zQ41BtPTG7TRBb2xHW+LCNVE9QR/vsg=="], + "react-native-svg/css-tree/mdn-data": ["mdn-data@2.0.14", "", {}, "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="], + "send/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], "slice-ansi/ansi-styles/color-convert": ["color-convert@1.9.3", "", { "dependencies": { "color-name": "1.1.3" } }, "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="], - "through2/readable-stream/isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], - "through2/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], "through2/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "5.1.2" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], - "@react-native-community/cli/find-up/locate-path/p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "2.3.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="], + "@react-native-community/cli-tools/find-up/locate-path/p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "3.1.0" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], + + "logkitty/yargs/cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], "logkitty/yargs/cliui/wrap-ansi": ["wrap-ansi@6.2.0", "", { "dependencies": { "ansi-styles": "4.3.0", "string-width": "4.2.3", "strip-ansi": "6.0.1" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="], - "logkitty/yargs/find-up/locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], - "logkitty/yargs/yargs-parser/camelcase": ["camelcase@5.3.1", "", {}, "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="], "metro-file-map/jest-util/@jest/types/@types/yargs": ["@types/yargs@16.0.11", "", { "dependencies": { "@types/yargs-parser": "21.0.3" } }, "sha512-sbtvk8wDN+JvEdabmZExoW/HNr1cB7D/j4LT08rMiuikfA7m/JNJg7ATQcgzs34zHnoScDkY0ZRSl29Fkmk36g=="], @@ -1779,12 +1685,6 @@ "slice-ansi/ansi-styles/color-convert/color-name": ["color-name@1.1.3", "", {}, "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="], - "@react-native-community/cli/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "2.2.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], - - "logkitty/yargs/find-up/locate-path/p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "2.3.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="], - - "pkg-dir/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "2.2.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], - - "logkitty/yargs/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "2.2.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], + "@react-native-community/cli-tools/find-up/locate-path/p-locate/p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], } } diff --git a/extension/background.js b/extension/background.js index 0318938..5cbc565 100644 --- a/extension/background.js +++ b/extension/background.js @@ -1,273 +1,273 @@ -import browser from "webextension-polyfill"; +import browser from 'webextension-polyfill' import { validateEvent, finalizeEvent, getEventHash, getPublicKey, nip19, - utils, -} from "nostr-tools"; -import { nip04 } from "nostr-tools"; -import * as nip44 from "nostr-tools/nip44"; -import { Mutex } from "async-mutex"; -import { LRUCache } from "./utils"; + utils +} from 'nostr-tools' +import { nip04 } from 'nostr-tools' +import * as nip44 from 'nostr-tools/nip44' +import { Mutex } from 'async-mutex' +import { LRUCache } from './utils' -const { hexToBytes } = utils; +const { hexToBytes } = utils import { NO_PERMISSIONS_REQUIRED, getPermissionStatus, updatePermission, showNotification, - getPosition, -} from "./common"; + getPosition +} from './common' -const { encrypt, decrypt } = nip04; +const { encrypt, decrypt } = nip04 -let openPrompt = null; -const promptMutex = new Mutex(); -let releasePromptMutex = () => {}; -const secretsCache = new LRUCache(100); -const previousSk = null; +let openPrompt = null +const promptMutex = new Mutex() +let releasePromptMutex = () => {} +const secretsCache = new LRUCache(100) +const previousSk = null function getSharedSecret(sk, peer) { if (previousSk !== sk) { - secretsCache.clear(); + secretsCache.clear() } - let key = secretsCache.get(peer); + let key = secretsCache.get(peer) if (!key) { - key = nip44.v2.utils.getConversationKey(sk, peer); - secretsCache.set(peer, key); + key = nip44.v2.utils.getConversationKey(sk, peer) + secretsCache.set(peer, key) } - return key; + return key } -const width = 440; -const height = 420; +const width = 440 +const height = 420 browser.runtime.onInstalled.addListener((_, __, reason) => { - if (reason === "install") browser.runtime.openOptionsPage(); -}); + if (reason === 'install') browser.runtime.openOptionsPage() +}) browser.runtime.onMessage.addListener(async (req, sender) => { - const { prompt } = req; + const { prompt } = req if (prompt) { - handlePromptMessage(req, sender); + handlePromptMessage(req, sender) } else { - return handleContentScriptMessage(req); + return handleContentScriptMessage(req) } -}); +}) browser.runtime.onMessageExternal.addListener( async ({ type, params }, sender) => { - const extensionId = new URL(sender.url).host; - return handleContentScriptMessage({ type, params, host: extensionId }); + const extensionId = new URL(sender.url).host + return handleContentScriptMessage({ type, params, host: extensionId }) } -); +) browser.windows.onRemoved.addListener((_windowId) => { if (openPrompt) { // calling this with a simple "no" response will not store anything, so it's fine // it will just return a failure - handlePromptMessage({ accept: false }, null); + handlePromptMessage({ accept: false }, null) } -}); +}) async function handleContentScriptMessage({ type, params, host }) { if (NO_PERMISSIONS_REQUIRED[type]) { switch (type) { - case "peekPublicKey": { - const allowed = await getPermissionStatus(host, "getPublicKey"); - if (allowed === true) return performOperation("getPublicKey", params); - return ""; + case 'peekPublicKey': { + const allowed = await getPermissionStatus(host, 'getPublicKey') + if (allowed === true) return performOperation('getPublicKey', params) + return '' } - case "replaceURL": { + case 'replaceURL': { const { protocol_handler: ph } = await browser.storage.local.get([ - "protocol_handler", - ]); - if (!ph) return false; + 'protocol_handler' + ]) + if (!ph) return false - const { url } = params; - const raw = url.split("nostr:")[1]; - const { type, data } = nip19.decode(raw); + const { url } = params + const raw = url.split('nostr:')[1] + const { type, data } = nip19.decode(raw) const replacements = { raw, hrp: type, hex: - type === "npub" || type === "note" + type === 'npub' || type === 'note' ? data - : type === "nprofile" - ? data.pubkey - : type === "nevent" - ? data.id - : null, - p_or_e: { npub: "p", note: "e", nprofile: "p", nevent: "e" }[type], - u_or_n: { npub: "u", note: "n", nprofile: "u", nevent: "n" }[type], - relay0: type === "nprofile" ? data.relays[0] : null, - relay1: type === "nprofile" ? data.relays[1] : null, - relay2: type === "nprofile" ? data.relays[2] : null, - }; - let result = ph; + : type === 'nprofile' + ? data.pubkey + : type === 'nevent' + ? data.id + : null, + p_or_e: { npub: 'p', note: 'e', nprofile: 'p', nevent: 'e' }[type], + u_or_n: { npub: 'u', note: 'n', nprofile: 'u', nevent: 'n' }[type], + relay0: type === 'nprofile' ? data.relays[0] : null, + relay1: type === 'nprofile' ? data.relays[1] : null, + relay2: type === 'nprofile' ? data.relays[2] : null + } + let result = ph Object.entries(replacements).forEach(([pattern, value]) => { - result = result.replace(new RegExp(`{ *${pattern} *}`, "g"), value); - }); + result = result.replace(new RegExp(`{ *${pattern} *}`, 'g'), value) + }) - return result; + return result } } - return; + return } else { // acquire mutex here before reading policies - releasePromptMutex = await promptMutex.acquire(); + releasePromptMutex = await promptMutex.acquire() const allowed = await getPermissionStatus( host, type, - type === "signEvent" ? params.event : undefined - ); + type === 'signEvent' ? params.event : undefined + ) if (allowed === true) { // authorized, proceed - releasePromptMutex(); - showNotification(host, allowed, type, params); + releasePromptMutex() + showNotification(host, allowed, type, params) } else if (allowed === false) { // denied, just refuse immediately - releasePromptMutex(); - showNotification(host, allowed, type, params); + releasePromptMutex() + showNotification(host, allowed, type, params) return { - error: "denied", - }; + error: 'denied' + } } else { // ask for authorization try { - const id = Math.random().toString().slice(4); + const id = Math.random().toString().slice(4) const qs = new URLSearchParams({ host, id, params: JSON.stringify(params), - type, - }); + type + }) // prompt will be resolved with true or false const accept = await new Promise((resolve, reject) => { - openPrompt = { resolve, reject }; + openPrompt = { resolve, reject } const url = `${browser.runtime.getURL( - "prompt.html" - )}?${qs.toString()}`; + 'prompt.html' + )}?${qs.toString()}` // center prompt - const { top, left } = getPosition(width, height); + const { top, left } = getPosition(width, height) if (browser.windows) { browser.windows.create({ url, - type: "popup", + type: 'popup', width: width, height: height, top: top, - left: left, - }); + left: left + }) } else { browser.tabs.create({ url, - active: true, - }); + active: true + }) } - }); + }) // denied, stop here - if (!accept) return { error: { message: "denied" } }; + if (!accept) return { error: { message: 'denied' } } } catch (err) { // errored, stop here - releasePromptMutex(); + releasePromptMutex() return { - error: { message: err.message, stack: err.stack }, - }; + error: { message: err.message, stack: err.stack } + } } } } // if we're here this means it was accepted - const results = await browser.storage.local.get("private_key"); + const results = await browser.storage.local.get('private_key') if (!results?.private_key) { - return { error: "no private key found" }; + return { error: 'no private key found' } } - const sk = results.private_key; + const sk = results.private_key try { switch (type) { - case "getPublicKey": { - return getPublicKey(hexToBytes(sk)); + case 'getPublicKey': { + return getPublicKey(hexToBytes(sk)) } - case "getRelays": { - const results = await browser.storage.local.get("relays"); - return results.relays || {}; + case 'getRelays': { + const results = await browser.storage.local.get('relays') + return results.relays || {} } - case "signEvent": { - const { event } = params; + case 'signEvent': { + const { event } = params - if (!event.pubkey) event.pubkey = getPublicKey(hexToBytes(sk)); - if (!event.id) event.id = getEventHash(event); + if (!event.pubkey) event.pubkey = getPublicKey(hexToBytes(sk)) + if (!event.id) event.id = getEventHash(event) if (!validateEvent(event)) - return { error: { message: "invalid event" } }; + return { error: { message: 'invalid event' } } - const signedEvent = finalizeEvent(event, hexToBytes(sk)); - return signedEvent; + const signedEvent = finalizeEvent(event, hexToBytes(sk)) + return signedEvent } - case "nip04.encrypt": { - const { peer, plaintext } = params; - return encrypt(sk, peer, plaintext); + case 'nip04.encrypt': { + const { peer, plaintext } = params + return encrypt(sk, peer, plaintext) } - case "nip04.decrypt": { - const { peer, ciphertext } = params; - return decrypt(sk, peer, ciphertext); + case 'nip04.decrypt': { + const { peer, ciphertext } = params + return decrypt(sk, peer, ciphertext) } - case "nip44.encrypt": { - const { peer, plaintext } = params; - const key = getSharedSecret(sk, peer); + case 'nip44.encrypt': { + const { peer, plaintext } = params + const key = getSharedSecret(sk, peer) - return nip44.v2.encrypt(plaintext, key); + return nip44.v2.encrypt(plaintext, key) } - case "nip44.decrypt": { - const { peer, ciphertext } = params; - const key = getSharedSecret(sk, peer); + case 'nip44.decrypt': { + const { peer, ciphertext } = params + const key = getSharedSecret(sk, peer) - return nip44.v2.decrypt(ciphertext, key); + return nip44.v2.decrypt(ciphertext, key) } } } catch (error) { - return { error: { message: error.message, stack: error.stack } }; + return { error: { message: error.message, stack: error.stack } } } } async function handlePromptMessage({ host, type, accept, conditions }, sender) { // return response - openPrompt?.resolve?.(accept); + openPrompt?.resolve?.(accept) // update policies if (conditions) { - await updatePermission(host, type, accept, conditions); + await updatePermission(host, type, accept, conditions) } // cleanup this - openPrompt = null; + openPrompt = null // release mutex here after updating policies - releasePromptMutex(); + releasePromptMutex() // close prompt if (sender) { if (browser.windows) { - browser.windows.remove(sender.tab.windowId); + browser.windows.remove(sender.tab.windowId) } else { // Android Firefox - browser.tabs.remove(sender.tab.id); + browser.tabs.remove(sender.tab.id) } } } diff --git a/extension/common.js b/extension/common.js index 8ca08f9..eb08e5b 100644 --- a/extension/common.js +++ b/extension/common.js @@ -1,125 +1,125 @@ -import browser from "webextension-polyfill"; +import browser from 'webextension-polyfill' export const NO_PERMISSIONS_REQUIRED = { replaceURL: true, - peekPublicKey: true, -}; + peekPublicKey: true +} export const PERMISSION_NAMES = Object.fromEntries([ - ["getPublicKey", "read your public key"], - ["signEvent", "sign events using your private key"], - ["nip04.encrypt", "encrypt messages to peers"], - ["nip04.decrypt", "decrypt messages from peers"], - ["nip44.encrypt", "encrypt messages to peers"], - ["nip44.decrypt", "decrypt messages from peers"], -]); + ['getPublicKey', 'read your public key'], + ['signEvent', 'sign events using your private key'], + ['nip04.encrypt', 'encrypt messages to peers'], + ['nip04.decrypt', 'decrypt messages from peers'], + ['nip44.encrypt', 'encrypt messages to peers'], + ['nip44.decrypt', 'decrypt messages from peers'] +]) function matchConditions(conditions, event) { if (conditions?.kinds) { - if (event.kind in conditions.kinds) return true; - else return false; + if (event.kind in conditions.kinds) return true + else return false } - return true; + return true } export async function getPermissionStatus(host, type, event) { - const { policies } = await browser.storage.local.get("policies"); + const { policies } = await browser.storage.local.get('policies') - const answers = [true, false]; + const answers = [true, false] for (let i = 0; i < answers.length; i++) { - const accept = answers[i]; - const { conditions } = policies?.[host]?.[accept]?.[type] || {}; + const accept = answers[i] + const { conditions } = policies?.[host]?.[accept]?.[type] || {} if (conditions) { - if (type === "signEvent") { + if (type === 'signEvent') { if (matchConditions(conditions, event)) { - return accept; // may be true or false + return accept // may be true or false } else { } } else { - return accept; // may be true or false + return accept // may be true or false } } } - return undefined; + return undefined } export async function updatePermission(host, type, accept, conditions) { - const { policies = {} } = await browser.storage.local.get("policies"); + const { policies = {} } = await browser.storage.local.get('policies') // if the new conditions is "match everything", override the previous if (Object.keys(conditions).length === 0) { - conditions = {}; + conditions = {} } else { // if we already had a policy for this, merge the conditions - const existingConditions = policies[host]?.[accept]?.[type]?.conditions; + const existingConditions = policies[host]?.[accept]?.[type]?.conditions if (existingConditions) { if (existingConditions.kinds && conditions.kinds) { Object.keys(existingConditions.kinds).forEach((kind) => { - conditions.kinds[kind] = true; - }); + conditions.kinds[kind] = true + }) } } } // if we have a reverse policy (accept / reject) that is exactly equal to this, remove it - const other = !accept; - const reverse = policies?.[host]?.[other]?.[type]; + const other = !accept + const reverse = policies?.[host]?.[other]?.[type] if ( reverse && JSON.stringify(reverse.conditions) === JSON.stringify(conditions) ) { - delete policies[host][other][type]; + delete policies[host][other][type] } // insert our new policy - policies[host] = policies[host] || {}; - policies[host][accept] = policies[host][accept] || {}; + policies[host] = policies[host] || {} + policies[host][accept] = policies[host][accept] || {} policies[host][accept][type] = { conditions, // filter that must match the event (in case of signEvent) - created_at: Math.round(Date.now() / 1000), - }; + created_at: Math.round(Date.now() / 1000) + } - browser.storage.local.set({ policies }); + browser.storage.local.set({ policies }) } export async function removePermissions(host, accept, type) { - const { policies = {} } = await browser.storage.local.get("policies"); - delete policies[host]?.[accept]?.[type]; - browser.storage.local.set({ policies }); + const { policies = {} } = await browser.storage.local.get('policies') + delete policies[host]?.[accept]?.[type] + browser.storage.local.set({ policies }) } export async function showNotification(host, answer, type, params) { - const { notifications } = await browser.storage.local.get("notifications"); + const { notifications } = await browser.storage.local.get('notifications') if (notifications) { - const action = answer ? "allowed" : "denied"; + const action = answer ? 'allowed' : 'denied' browser.notifications.create(undefined, { - type: "basic", + type: 'basic', title: `${type} ${action} for ${host}`, message: JSON.stringify( params?.event ? { kind: params.event.kind, content: params.event.content, - tags: params.event.tags, + tags: params.event.tags } : params, null, 2 ), - iconUrl: "icons/48x48.png", - }); + iconUrl: 'icons/48x48.png' + }) } } export async function getPosition(width, height) { - let left = 0; - let top = 0; + let left = 0 + let top = 0 try { - const lastFocused = await browser.windows.getLastFocused(); + const lastFocused = await browser.windows.getLastFocused() if ( lastFocused && @@ -128,17 +128,17 @@ export async function getPosition(width, height) { lastFocused.width !== undefined && lastFocused.height !== undefined ) { - top = Math.round(lastFocused.top + (lastFocused.height - height) / 2); - left = Math.round(lastFocused.left + (lastFocused.width - width) / 2); + top = Math.round(lastFocused.top + (lastFocused.height - height) / 2) + left = Math.round(lastFocused.left + (lastFocused.width - width) / 2) } else { - console.error("Last focused window properties are undefined."); + console.error('Last focused window properties are undefined.') } } catch (error) { - console.error("Error getting window position:", error); + console.error('Error getting window position:', error) } return { top, - left, - }; + left + } } diff --git a/extension/content-script.js b/extension/content-script.js index b0fe4a4..dc43810 100644 --- a/extension/content-script.js +++ b/extension/content-script.js @@ -1,36 +1,36 @@ -import browser from "webextension-polyfill"; +import browser from 'webextension-polyfill' -const EXTENSION = "nostrconnect"; +const EXTENSION = 'nostrconnect' // inject the script that will provide window.nostr -const script = document.createElement("script"); -script.setAttribute("async", "false"); -script.setAttribute("type", "text/javascript"); -script.setAttribute("src", browser.runtime.getURL("nostr-provider.js")); -document.head.appendChild(script); +const script = document.createElement('script') +script.setAttribute('async', 'false') +script.setAttribute('type', 'text/javascript') +script.setAttribute('src', browser.runtime.getURL('nostr-provider.js')) +document.head.appendChild(script) // listen for messages from that script -window.addEventListener("message", async (message) => { - if (message.source !== window) return; - if (!message.data) return; - if (!message.data.params) return; - if (message.data.ext !== EXTENSION) return; +window.addEventListener('message', async (message) => { + if (message.source !== window) return + if (!message.data) return + if (!message.data.params) return + if (message.data.ext !== EXTENSION) return // pass on to background - var response; + var response try { response = await browser.runtime.sendMessage({ type: message.data.type, params: message.data.params, - host: location.host, - }); + host: location.host + }) } catch (error) { - response = { error }; + response = { error } } // return response window.postMessage( { id: message.data.id, ext: EXTENSION, response }, message.origin - ); -}); + ) +}) diff --git a/extension/options.jsx b/extension/options.jsx index fd01718..c50a48c 100644 --- a/extension/options.jsx +++ b/extension/options.jsx @@ -7,21 +7,22 @@ import * as Tabs from '@radix-ui/react-tabs' import { LogoIcon } from './icons' import { removePermissions } from './common' import * as Checkbox from '@radix-ui/react-checkbox' +import { hexToBytes, bytesToHex } from 'nostr-tools/utils' function Options() { const [privKey, setPrivKey] = useState('') const [relays, setRelays] = useState([]) const [newRelayURL, setNewRelayURL] = useState('') const [policies, setPermissions] = useState([]) - const [protocolHandler, setProtocolHandler] = useState( - 'https://njump.me/{raw}' - ) const [hidingPrivateKey, hidePrivateKey] = useState(true) const [showNotifications, setNotifications] = useState(false) const [messages, setMessages] = useState([]) const [handleNostrLinks, setHandleNostrLinks] = useState(false) const [showProtocolHandlerHelp, setShowProtocolHandlerHelp] = useState(false) const [unsavedChanges, setUnsavedChanges] = useState([]) + const [protocolHandler, setProtocolHandler] = useState( + 'https://njump.me/{raw}' + ) const showMessage = useCallback((msg) => { messages.push(msg) @@ -528,22 +529,17 @@ examples: showMessage('PRIVATE KEY IS INVALID! did not save private key.') return } - let hexOrEmptyKey = privKey - try { const { type, data } = nip19.decode(privKey) - if (type === 'nsec') hexOrEmptyKey = data + if (type === 'nsec') hexOrEmptyKey = bytesToHex(data) } catch (_) {} - await browser.storage.local.set({ private_key: hexOrEmptyKey }) - if (hexOrEmptyKey !== '') { - setPrivKey(nip19.nsecEncode(hexOrEmptyKey)) + setPrivKey(nip19.nsecEncode(hexToBytes(hexOrEmptyKey))) } - showMessage('saved private key!') } diff --git a/extension/output/common.js b/extension/output/common.js index 8ca08f9..1fbc0e9 100644 --- a/extension/output/common.js +++ b/extension/output/common.js @@ -1,144 +1,144 @@ import browser from "webextension-polyfill"; export const NO_PERMISSIONS_REQUIRED = { - replaceURL: true, - peekPublicKey: true, + replaceURL: true, + peekPublicKey: true, }; export const PERMISSION_NAMES = Object.fromEntries([ - ["getPublicKey", "read your public key"], - ["signEvent", "sign events using your private key"], - ["nip04.encrypt", "encrypt messages to peers"], - ["nip04.decrypt", "decrypt messages from peers"], - ["nip44.encrypt", "encrypt messages to peers"], - ["nip44.decrypt", "decrypt messages from peers"], + ["getPublicKey", "read your public key"], + ["signEvent", "sign events using your private key"], + ["nip04.encrypt", "encrypt messages to peers"], + ["nip04.decrypt", "decrypt messages from peers"], + ["nip44.encrypt", "encrypt messages to peers"], + ["nip44.decrypt", "decrypt messages from peers"], ]); function matchConditions(conditions, event) { - if (conditions?.kinds) { - if (event.kind in conditions.kinds) return true; - else return false; - } + if (conditions?.kinds) { + if (event.kind in conditions.kinds) return true; + else return false; + } - return true; + return true; } export async function getPermissionStatus(host, type, event) { - const { policies } = await browser.storage.local.get("policies"); + const { policies } = await browser.storage.local.get("policies"); - const answers = [true, false]; - for (let i = 0; i < answers.length; i++) { - const accept = answers[i]; - const { conditions } = policies?.[host]?.[accept]?.[type] || {}; + const answers = [true, false]; + for (let i = 0; i < answers.length; i++) { + const accept = answers[i]; + const { conditions } = policies?.[host]?.[accept]?.[type] || {}; - if (conditions) { - if (type === "signEvent") { - if (matchConditions(conditions, event)) { - return accept; // may be true or false - } else { - } - } else { - return accept; // may be true or false - } - } - } + if (conditions) { + if (type === "signEvent") { + if (matchConditions(conditions, event)) { + return accept; // may be true or false + } else { + } + } else { + return accept; // may be true or false + } + } + } - return undefined; + return undefined; } export async function updatePermission(host, type, accept, conditions) { - const { policies = {} } = await browser.storage.local.get("policies"); + const { policies = {} } = await browser.storage.local.get("policies"); - // if the new conditions is "match everything", override the previous - if (Object.keys(conditions).length === 0) { - conditions = {}; - } else { - // if we already had a policy for this, merge the conditions - const existingConditions = policies[host]?.[accept]?.[type]?.conditions; - if (existingConditions) { - if (existingConditions.kinds && conditions.kinds) { - Object.keys(existingConditions.kinds).forEach((kind) => { - conditions.kinds[kind] = true; - }); - } - } - } + // if the new conditions is "match everything", override the previous + if (Object.keys(conditions).length === 0) { + conditions = {}; + } else { + // if we already had a policy for this, merge the conditions + const existingConditions = policies[host]?.[accept]?.[type]?.conditions; + if (existingConditions) { + if (existingConditions.kinds && conditions.kinds) { + Object.keys(existingConditions.kinds).forEach((kind) => { + conditions.kinds[kind] = true; + }); + } + } + } - // if we have a reverse policy (accept / reject) that is exactly equal to this, remove it - const other = !accept; - const reverse = policies?.[host]?.[other]?.[type]; - if ( - reverse && - JSON.stringify(reverse.conditions) === JSON.stringify(conditions) - ) { - delete policies[host][other][type]; - } + // if we have a reverse policy (accept / reject) that is exactly equal to this, remove it + const other = !accept; + const reverse = policies?.[host]?.[other]?.[type]; + if ( + reverse && + JSON.stringify(reverse.conditions) === JSON.stringify(conditions) + ) { + delete policies[host][other][type]; + } - // insert our new policy - policies[host] = policies[host] || {}; - policies[host][accept] = policies[host][accept] || {}; - policies[host][accept][type] = { - conditions, // filter that must match the event (in case of signEvent) - created_at: Math.round(Date.now() / 1000), - }; + // insert our new policy + policies[host] = policies[host] || {}; + policies[host][accept] = policies[host][accept] || {}; + policies[host][accept][type] = { + conditions, // filter that must match the event (in case of signEvent) + created_at: Math.round(Date.now() / 1000), + }; - browser.storage.local.set({ policies }); + browser.storage.local.set({ policies }); } export async function removePermissions(host, accept, type) { - const { policies = {} } = await browser.storage.local.get("policies"); - delete policies[host]?.[accept]?.[type]; - browser.storage.local.set({ policies }); + const { policies = {} } = await browser.storage.local.get("policies"); + delete policies[host]?.[accept]?.[type]; + browser.storage.local.set({ policies }); } export async function showNotification(host, answer, type, params) { - const { notifications } = await browser.storage.local.get("notifications"); - if (notifications) { - const action = answer ? "allowed" : "denied"; - browser.notifications.create(undefined, { - type: "basic", - title: `${type} ${action} for ${host}`, - message: JSON.stringify( - params?.event - ? { - kind: params.event.kind, - content: params.event.content, - tags: params.event.tags, - } - : params, - null, - 2 - ), - iconUrl: "icons/48x48.png", - }); - } + const { notifications } = await browser.storage.local.get("notifications"); + if (notifications) { + const action = answer ? "allowed" : "denied"; + browser.notifications.create(undefined, { + type: "basic", + title: `${type} ${action} for ${host}`, + message: JSON.stringify( + params?.event + ? { + kind: params.event.kind, + content: params.event.content, + tags: params.event.tags, + } + : params, + null, + 2, + ), + iconUrl: "icons/48x48.png", + }); + } } export async function getPosition(width, height) { - let left = 0; - let top = 0; + let left = 0; + let top = 0; - try { - const lastFocused = await browser.windows.getLastFocused(); + try { + const lastFocused = await browser.windows.getLastFocused(); - if ( - lastFocused && - lastFocused.top !== undefined && - lastFocused.left !== undefined && - lastFocused.width !== undefined && - lastFocused.height !== undefined - ) { - top = Math.round(lastFocused.top + (lastFocused.height - height) / 2); - left = Math.round(lastFocused.left + (lastFocused.width - width) / 2); - } else { - console.error("Last focused window properties are undefined."); - } - } catch (error) { - console.error("Error getting window position:", error); - } + if ( + lastFocused && + lastFocused.top !== undefined && + lastFocused.left !== undefined && + lastFocused.width !== undefined && + lastFocused.height !== undefined + ) { + top = Math.round(lastFocused.top + (lastFocused.height - height) / 2); + left = Math.round(lastFocused.left + (lastFocused.width - width) / 2); + } else { + console.error("Last focused window properties are undefined."); + } + } catch (error) { + console.error("Error getting window position:", error); + } - return { - top, - left, - }; + return { + top, + left, + }; } diff --git a/extension/output/nostr-provider.js b/extension/output/nostr-provider.js index 57afcc2..7bd0a30 100644 --- a/extension/output/nostr-provider.js +++ b/extension/output/nostr-provider.js @@ -1,130 +1,132 @@ -const EXTENSION = 'nostrconnect' +const EXTENSION = "nostrconnect"; window.nostr = { - _requests: {}, - _pubkey: null, + _requests: {}, + _pubkey: null, - async getPublicKey() { - if (this._pubkey) return this._pubkey - this._pubkey = await this._call('getPublicKey', {}) - return this._pubkey - }, + async getPublicKey() { + if (this._pubkey) return this._pubkey; + this._pubkey = await this._call("getPublicKey", {}); + return this._pubkey; + }, - async peekPublicKey() { - return this._call('peekPublicKey', {}) - }, + async peekPublicKey() { + return this._call("peekPublicKey", {}); + }, - async signEvent(event) { - return this._call('signEvent', { event }) - }, + async signEvent(event) { + return this._call("signEvent", { event }); + }, - async getRelays() { - return {} - }, + async getRelays() { + return {}; + }, - nip04: { - async encrypt(peer, plaintext) { - return window.nostr._call('nip04.encrypt', { peer, plaintext }) - }, + nip04: { + async encrypt(peer, plaintext) { + return window.nostr._call("nip04.encrypt", { peer, plaintext }); + }, - async decrypt(peer, ciphertext) { - return window.nostr._call('nip04.decrypt', { peer, ciphertext }) - } - }, + async decrypt(peer, ciphertext) { + return window.nostr._call("nip04.decrypt", { peer, ciphertext }); + }, + }, - nip44: { - async encrypt(peer, plaintext) { - return window.nostr._call('nip44.encrypt', { peer, plaintext }) - }, + nip44: { + async encrypt(peer, plaintext) { + return window.nostr._call("nip44.encrypt", { peer, plaintext }); + }, - async decrypt(peer, ciphertext) { - return window.nostr._call('nip44.decrypt', { peer, ciphertext }) - } - }, + async decrypt(peer, ciphertext) { + return window.nostr._call("nip44.decrypt", { peer, ciphertext }); + }, + }, - _call(type, params) { - const id = Math.random().toString().slice(-4) - console.log( - '%c[nostrconnect:%c' + - id + - '%c]%c calling %c' + - type + - '%c with %c' + - JSON.stringify(params || {}), - 'background-color:#f1b912;font-weight:bold;color:white', - 'background-color:#f1b912;font-weight:bold;color:#a92727', - 'background-color:#f1b912;color:white;font-weight:bold', - 'color:auto', - 'font-weight:bold;color:#08589d;font-family:monospace', - 'color:auto', - 'font-weight:bold;color:#90b12d;font-family:monospace' - ) - return new Promise((resolve, reject) => { - this._requests[id] = { resolve, reject } - window.postMessage( - { - id, - ext: EXTENSION, - type, - params - }, - '*' - ) - }) - } -} + _call(type, params) { + const id = Math.random().toString().slice(-4); + console.log( + "%c[nostrconnect:%c" + + id + + "%c]%c calling %c" + + type + + "%c with %c" + + JSON.stringify(params || {}), + "background-color:#f1b912;font-weight:bold;color:white", + "background-color:#f1b912;font-weight:bold;color:#a92727", + "background-color:#f1b912;color:white;font-weight:bold", + "color:auto", + "font-weight:bold;color:#08589d;font-family:monospace", + "color:auto", + "font-weight:bold;color:#90b12d;font-family:monospace", + ); + return new Promise((resolve, reject) => { + this._requests[id] = { resolve, reject }; + window.postMessage( + { + id, + ext: EXTENSION, + type, + params, + }, + "*", + ); + }); + }, +}; -window.addEventListener('message', (message) => { - if ( - !message.data || - message.data.response === null || - message.data.response === undefined || - message.data.ext !== EXTENSION || - !window.nostr._requests[message.data.id] - ) - return +window.addEventListener("message", (message) => { + if ( + !message.data || + message.data.response === null || + message.data.response === undefined || + message.data.ext !== EXTENSION || + !window.nostr._requests[message.data.id] + ) + return; - if (message.data.response.error) { - const error = new Error( - `${EXTENSION}: ${message.data.response.error.message}` - ) - error.stack = message.data.response.error.stack - window.nostr._requests[message.data.id].reject(error) - } else { - window.nostr._requests[message.data.id].resolve(message.data.response) - } + if (message.data.response.error) { + const error = new Error( + `${EXTENSION}: ${message.data.response.error.message}`, + ); + error.stack = message.data.response.error.stack; + window.nostr._requests[message.data.id].reject(error); + } else { + window.nostr._requests[message.data.id].resolve(message.data.response); + } - console.log( - '%c[nostrconnect:%c' + - message.data.id + - '%c]%c result: %c' + - JSON.stringify( - message?.data?.response || message?.data?.response?.error?.message || {} - ), - 'background-color:#f1b912;font-weight:bold;color:white', - 'background-color:#f1b912;font-weight:bold;color:#a92727', - 'background-color:#f1b912;color:white;font-weight:bold', - 'color:auto', - 'font-weight:bold;color:#08589d' - ) + console.log( + "%c[nostrconnect:%c" + + message.data.id + + "%c]%c result: %c" + + JSON.stringify( + message?.data?.response || + message?.data?.response?.error?.message || + {}, + ), + "background-color:#f1b912;font-weight:bold;color:white", + "background-color:#f1b912;font-weight:bold;color:#a92727", + "background-color:#f1b912;color:white;font-weight:bold", + "color:auto", + "font-weight:bold;color:#08589d", + ); - delete window.nostr._requests[message.data.id] -}) + delete window.nostr._requests[message.data.id]; +}); // hack to replace nostr:nprofile.../etc links with something else -let replacing = null -document.addEventListener('mousedown', replaceNostrSchemeLink) +let replacing = null; +document.addEventListener("mousedown", replaceNostrSchemeLink); async function replaceNostrSchemeLink(e) { - if (e.target.tagName !== 'A' || !e.target.href.startsWith('nostr:')) return - if (replacing === false) return + if (e.target.tagName !== "A" || !e.target.href.startsWith("nostr:")) return; + if (replacing === false) return; - const response = await window.nostr._call('replaceURL', { - url: e.target.href - }) - if (response === false) { - replacing = false - return - } + const response = await window.nostr._call("replaceURL", { + url: e.target.href, + }); + if (response === false) { + replacing = false; + return; + } - e.target.href = response + e.target.href = response; } diff --git a/extension/output/options.build.js b/extension/output/options.build.js index b8b6fd1..49f2939 100644 --- a/extension/output/options.build.js +++ b/extension/output/options.build.js @@ -3443,11 +3443,11 @@ if (true) { (function() { "use strict"; - var React18 = require_react(); + var React17 = require_react(); var _assign = require_object_assign(); var Scheduler = require_scheduler(); var tracing = require_tracing(); - var ReactSharedInternals = React18.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + var ReactSharedInternals = React17.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; function warn(format) { { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { @@ -3479,7 +3479,7 @@ Function.prototype.apply.call(console[level], console, argsWithFormat); } } - if (!React18) { + if (!React17) { { throw Error("ReactDOM was loaded before React. Make sure you load the React package before loading ReactDOM."); } @@ -4815,7 +4815,7 @@ var didWarnInvalidChild = false; function flattenChildren(children) { var content = ""; - React18.Children.forEach(children, function(child) { + React17.Children.forEach(children, function(child) { if (child == null) { return; } @@ -4826,7 +4826,7 @@ function validateProps(element, props) { { if (typeof props.children === "object" && props.children !== null) { - React18.Children.forEach(props.children, function(child) { + React17.Children.forEach(props.children, function(child) { if (child == null) { return; } @@ -12029,7 +12029,7 @@ } var fakeInternalInstance = {}; var isArray = Array.isArray; - var emptyRefsObject = new React18.Component().refs; + var emptyRefsObject = new React17.Component().refs; var didWarnAboutStateAssignmentForComponent; var didWarnAboutUninitializedState; var didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate; @@ -23415,7 +23415,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); if (true) { (function() { "use strict"; - var React18 = require_react(); + var React17 = require_react(); var _assign = require_object_assign(); var REACT_ELEMENT_TYPE = 60103; var REACT_PORTAL_TYPE = 60106; @@ -23472,7 +23472,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } return null; } - var ReactSharedInternals = React18.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + var ReactSharedInternals = React17.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; function error(format) { { for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { @@ -24242,10 +24242,10 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); return jsxWithValidation(type, props, key, false); } } - var jsx9 = jsxWithValidationDynamic; - var jsxs2 = jsxWithValidationStatic; - exports.jsx = jsx9; - exports.jsxs = jsxs2; + var jsx11 = jsxWithValidationDynamic; + var jsxs4 = jsxWithValidationStatic; + exports.jsx = jsx11; + exports.jsxs = jsxs4; })(); } } @@ -30370,7 +30370,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); var import_react_qr_code = __toESM(require_lib()); // node_modules/.pnpm/@radix-ui+react-tabs@1.1.13_@types+react-dom@19.0.2_@types+react@19.0.2__@types+react@1_07a8406c49e3b49a1525c388b85a0cee/node_modules/@radix-ui/react-tabs/dist/index.mjs - var React14 = __toESM(require_react(), 1); + var React13 = __toESM(require_react(), 1); // node_modules/.pnpm/@radix-ui+primitive@1.1.3/node_modules/@radix-ui/primitive/dist/index.mjs var canUseDOM = !!(typeof self !== "undefined" && self.document && self.document.createElement); @@ -30384,24 +30384,24 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } // node_modules/.pnpm/@radix-ui+react-context@1.1.2_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-context/dist/index.mjs - var React2 = __toESM(require_react(), 1); + var React = __toESM(require_react(), 1); var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); function createContextScope(scopeName, createContextScopeDeps = []) { let defaultContexts = []; function createContext3(rootComponentName, defaultContext) { - const BaseContext = React2.createContext(defaultContext); + const BaseContext = React.createContext(defaultContext); const index = defaultContexts.length; defaultContexts = [...defaultContexts, defaultContext]; const Provider = (props) => { const { scope, children, ...context } = props; const Context = scope?.[scopeName]?.[index] || BaseContext; - const value = React2.useMemo(() => context, Object.values(context)); + const value = React.useMemo(() => context, Object.values(context)); return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Context.Provider, { value, children }); }; Provider.displayName = rootComponentName + "Provider"; function useContext22(consumerName, scope) { const Context = scope?.[scopeName]?.[index] || BaseContext; - const context = React2.useContext(Context); + const context = React.useContext(Context); if (context) return context; if (defaultContext !== void 0) @@ -30412,11 +30412,11 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } const createScope = () => { const scopeContexts = defaultContexts.map((defaultContext) => { - return React2.createContext(defaultContext); + return React.createContext(defaultContext); }); return function useScope(scope) { const contexts = scope?.[scopeName] || scopeContexts; - return React2.useMemo( + return React.useMemo( () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }), [scope, contexts] ); @@ -30440,7 +30440,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); const currentScope = scopeProps[`__scope${scopeName}`]; return { ...nextScopes2, ...currentScope }; }, {}); - return React2.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]); + return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]); }; }; createScope.scopeName = baseScope.scopeName; @@ -30448,13 +30448,13 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } // node_modules/.pnpm/@radix-ui+react-roving-focus@1.1.11_@types+react-dom@19.0.2_@types+react@19.0.2__@types_04f6d74bc65ad693200463421fbc77b6/node_modules/@radix-ui/react-roving-focus/dist/index.mjs - var React12 = __toESM(require_react(), 1); + var React11 = __toESM(require_react(), 1); // node_modules/.pnpm/@radix-ui+react-collection@1.1.7_@types+react-dom@19.0.2_@types+react@19.0.2__@types+re_a0241bee01f1f2b3ebba2085e3e5e66a/node_modules/@radix-ui/react-collection/dist/index.mjs var import_react = __toESM(require_react(), 1); // node_modules/.pnpm/@radix-ui+react-compose-refs@1.1.2_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-compose-refs/dist/index.mjs - var React3 = __toESM(require_react(), 1); + var React2 = __toESM(require_react(), 1); function setRef(ref, value) { if (typeof ref === "function") { return ref(value); @@ -30487,30 +30487,30 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); }; } function useComposedRefs(...refs) { - return React3.useCallback(composeRefs(...refs), refs); + return React2.useCallback(composeRefs(...refs), refs); } // node_modules/.pnpm/@radix-ui+react-slot@1.2.3_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-slot/dist/index.mjs - var React4 = __toESM(require_react(), 1); + var React3 = __toESM(require_react(), 1); var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); function createSlot(ownerName) { const SlotClone = /* @__PURE__ */ createSlotClone(ownerName); - const Slot2 = React4.forwardRef((props, forwardedRef) => { + const Slot2 = React3.forwardRef((props, forwardedRef) => { const { children, ...slotProps } = props; - const childrenArray = React4.Children.toArray(children); + const childrenArray = React3.Children.toArray(children); const slottable = childrenArray.find(isSlottable); if (slottable) { const newElement = slottable.props.children; const newChildren = childrenArray.map((child) => { if (child === slottable) { - if (React4.Children.count(newElement) > 1) - return React4.Children.only(null); - return React4.isValidElement(newElement) ? newElement.props.children : null; + if (React3.Children.count(newElement) > 1) + return React3.Children.only(null); + return React3.isValidElement(newElement) ? newElement.props.children : null; } else { return child; } }); - return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: React4.isValidElement(newElement) ? React4.cloneElement(newElement, void 0, newChildren) : null }); + return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: React3.isValidElement(newElement) ? React3.cloneElement(newElement, void 0, newChildren) : null }); } return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children }); }); @@ -30518,24 +30518,24 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); return Slot2; } function createSlotClone(ownerName) { - const SlotClone = React4.forwardRef((props, forwardedRef) => { + const SlotClone = React3.forwardRef((props, forwardedRef) => { const { children, ...slotProps } = props; - if (React4.isValidElement(children)) { + if (React3.isValidElement(children)) { const childrenRef = getElementRef(children); const props2 = mergeProps(slotProps, children.props); - if (children.type !== React4.Fragment) { + if (children.type !== React3.Fragment) { props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef; } - return React4.cloneElement(children, props2); + return React3.cloneElement(children, props2); } - return React4.Children.count(children) > 1 ? React4.Children.only(null) : null; + return React3.Children.count(children) > 1 ? React3.Children.only(null) : null; }); SlotClone.displayName = `${ownerName}.SlotClone`; return SlotClone; } var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable"); function isSlottable(child) { - return React4.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER; + return React3.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER; } function mergeProps(slotProps, childProps) { const overrideProps = { ...childProps }; @@ -30645,18 +30645,18 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } // node_modules/.pnpm/@radix-ui+react-id@1.1.1_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-id/dist/index.mjs - var React7 = __toESM(require_react(), 1); + var React6 = __toESM(require_react(), 1); // node_modules/.pnpm/@radix-ui+react-use-layout-effect@1.1.1_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs - var React6 = __toESM(require_react(), 1); - var useLayoutEffect2 = globalThis?.document ? React6.useLayoutEffect : () => { + var React5 = __toESM(require_react(), 1); + var useLayoutEffect2 = globalThis?.document ? React5.useLayoutEffect : () => { }; // node_modules/.pnpm/@radix-ui+react-id@1.1.1_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-id/dist/index.mjs - var useReactId = React7[" useId ".trim().toString()] || (() => void 0); + var useReactId = React6[" useId ".trim().toString()] || (() => void 0); var count = 0; function useId(deterministicId) { - const [id, setId] = React7.useState(useReactId()); + const [id, setId] = React6.useState(useReactId()); useLayoutEffect2(() => { if (!deterministicId) setId((reactId) => reactId ?? String(count++)); @@ -30665,7 +30665,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } // node_modules/.pnpm/@radix-ui+react-primitive@2.1.3_@types+react-dom@19.0.2_@types+react@19.0.2__@types+rea_4d2f7b7fa17f2c71e22e7a2adbe76a73/node_modules/@radix-ui/react-primitive/dist/index.mjs - var React8 = __toESM(require_react(), 1); + var React7 = __toESM(require_react(), 1); var ReactDOM = __toESM(require_react_dom(), 1); var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); var NODES = [ @@ -30689,7 +30689,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); ]; var Primitive = NODES.reduce((primitive, node) => { const Slot = createSlot(`Primitive.${node}`); - const Node2 = React8.forwardRef((props, forwardedRef) => { + const Node2 = React7.forwardRef((props, forwardedRef) => { const { asChild, ...primitiveProps } = props; const Comp = asChild ? Slot : node; if (typeof self !== "undefined") { @@ -30702,19 +30702,19 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); }, {}); // node_modules/.pnpm/@radix-ui+react-use-callback-ref@1.1.1_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs - var React9 = __toESM(require_react(), 1); + var React8 = __toESM(require_react(), 1); function useCallbackRef(callback) { - const callbackRef = React9.useRef(callback); - React9.useEffect(() => { + const callbackRef = React8.useRef(callback); + React8.useEffect(() => { callbackRef.current = callback; }); - return React9.useMemo(() => (...args) => callbackRef.current?.(...args), []); + return React8.useMemo(() => (...args) => callbackRef.current?.(...args), []); } // node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.2.2_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs - var React10 = __toESM(require_react(), 1); + var React9 = __toESM(require_react(), 1); var React23 = __toESM(require_react(), 1); - var useInsertionEffect = React10[" useInsertionEffect ".trim().toString()] || useLayoutEffect2; + var useInsertionEffect = React9[" useInsertionEffect ".trim().toString()] || useLayoutEffect2; function useControllableState({ prop, defaultProp, @@ -30729,8 +30729,8 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); const isControlled = prop !== void 0; const value = isControlled ? prop : uncontrolledProp; if (true) { - const isControlledRef = React10.useRef(prop !== void 0); - React10.useEffect(() => { + const isControlledRef = React9.useRef(prop !== void 0); + React9.useEffect(() => { const wasControlled = isControlledRef.current; if (wasControlled !== isControlled) { const from = wasControlled ? "controlled" : "uncontrolled"; @@ -30742,7 +30742,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); isControlledRef.current = isControlled; }, [isControlled, caller]); } - const setValue = React10.useCallback( + const setValue = React9.useCallback( (nextValue) => { if (isControlled) { const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue; @@ -30761,13 +30761,13 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); defaultProp, onChange }) { - const [value, setValue] = React10.useState(defaultProp); - const prevValueRef = React10.useRef(value); - const onChangeRef = React10.useRef(onChange); + const [value, setValue] = React9.useState(defaultProp); + const prevValueRef = React9.useRef(value); + const onChangeRef = React9.useRef(onChange); useInsertionEffect(() => { onChangeRef.current = onChange; }, [onChange]); - React10.useEffect(() => { + React9.useEffect(() => { if (prevValueRef.current !== value) { onChangeRef.current?.(value); prevValueRef.current = value; @@ -30781,11 +30781,11 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); var SYNC_STATE = Symbol("RADIX:SYNC_STATE"); // node_modules/.pnpm/@radix-ui+react-direction@1.1.1_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-direction/dist/index.mjs - var React11 = __toESM(require_react(), 1); + var React10 = __toESM(require_react(), 1); var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); - var DirectionContext = React11.createContext(void 0); + var DirectionContext = React10.createContext(void 0); function useDirection(localDir) { - const globalDir = React11.useContext(DirectionContext); + const globalDir = React10.useContext(DirectionContext); return localDir || globalDir || "ltr"; } @@ -30801,13 +30801,13 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); [createCollectionScope] ); var [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME); - var RovingFocusGroup = React12.forwardRef( + var RovingFocusGroup = React11.forwardRef( (props, forwardedRef) => { return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) }); } ); RovingFocusGroup.displayName = GROUP_NAME; - var RovingFocusGroupImpl = React12.forwardRef((props, forwardedRef) => { + var RovingFocusGroupImpl = React11.forwardRef((props, forwardedRef) => { const { __scopeRovingFocusGroup, orientation, @@ -30820,7 +30820,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); preventScrollOnEntryFocus = false, ...groupProps } = props; - const ref = React12.useRef(null); + const ref = React11.useRef(null); const composedRefs = useComposedRefs(forwardedRef, ref); const direction = useDirection(dir); const [currentTabStopId, setCurrentTabStopId] = useControllableState({ @@ -30829,12 +30829,12 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); onChange: onCurrentTabStopIdChange, caller: GROUP_NAME }); - const [isTabbingBackOut, setIsTabbingBackOut] = React12.useState(false); + const [isTabbingBackOut, setIsTabbingBackOut] = React11.useState(false); const handleEntryFocus = useCallbackRef(onEntryFocus); const getItems = useCollection(__scopeRovingFocusGroup); - const isClickFocusRef = React12.useRef(false); - const [focusableItemsCount, setFocusableItemsCount] = React12.useState(0); - React12.useEffect(() => { + const isClickFocusRef = React11.useRef(false); + const [focusableItemsCount, setFocusableItemsCount] = React11.useState(0); + React11.useEffect(() => { const node = ref.current; if (node) { node.addEventListener(ENTRY_FOCUS, handleEntryFocus); @@ -30849,16 +30849,16 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); dir: direction, loop, currentTabStopId, - onItemFocus: React12.useCallback( + onItemFocus: React11.useCallback( (tabStopId) => setCurrentTabStopId(tabStopId), [setCurrentTabStopId] ), - onItemShiftTab: React12.useCallback(() => setIsTabbingBackOut(true), []), - onFocusableItemAdd: React12.useCallback( + onItemShiftTab: React11.useCallback(() => setIsTabbingBackOut(true), []), + onFocusableItemAdd: React11.useCallback( () => setFocusableItemsCount((prevCount) => prevCount + 1), [] ), - onFocusableItemRemove: React12.useCallback( + onFocusableItemRemove: React11.useCallback( () => setFocusableItemsCount((prevCount) => prevCount - 1), [] ), @@ -30898,7 +30898,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); ); }); var ITEM_NAME = "RovingFocusGroupItem"; - var RovingFocusGroupItem = React12.forwardRef( + var RovingFocusGroupItem = React11.forwardRef( (props, forwardedRef) => { const { __scopeRovingFocusGroup, @@ -30914,7 +30914,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); const isCurrentTabStop = context.currentTabStopId === id; const getItems = useCollection(__scopeRovingFocusGroup); const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context; - React12.useEffect(() => { + React11.useEffect(() => { if (focusable) { onFocusableItemAdd(); return () => onFocusableItemRemove(); @@ -31015,10 +31015,10 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); // node_modules/.pnpm/@radix-ui+react-presence@1.1.5_@types+react-dom@19.0.2_@types+react@19.0.2__@types+reac_100e8a92f6fdf86fd4a0d9e34245f26e/node_modules/@radix-ui/react-presence/dist/index.mjs var React24 = __toESM(require_react(), 1); - var React13 = __toESM(require_react(), 1); + var React12 = __toESM(require_react(), 1); "use client"; function useStateMachine(initialState, machine) { - return React13.useReducer((state, event) => { + return React12.useReducer((state, event) => { const nextState = machine[state][event]; return nextState ?? state; }, initialState); @@ -31149,7 +31149,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); ]); var useRovingFocusGroupScope = createRovingFocusGroupScope(); var [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME); - var Tabs = React14.forwardRef( + var Tabs = React13.forwardRef( (props, forwardedRef) => { const { __scopeTabs, @@ -31193,7 +31193,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); ); Tabs.displayName = TABS_NAME; var TAB_LIST_NAME = "TabsList"; - var TabsList = React14.forwardRef( + var TabsList = React13.forwardRef( (props, forwardedRef) => { const { __scopeTabs, loop = true, ...listProps } = props; const context = useTabsContext(TAB_LIST_NAME, __scopeTabs); @@ -31221,7 +31221,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); ); TabsList.displayName = TAB_LIST_NAME; var TRIGGER_NAME = "TabsTrigger"; - var TabsTrigger = React14.forwardRef( + var TabsTrigger = React13.forwardRef( (props, forwardedRef) => { const { __scopeTabs, value, disabled = false, ...triggerProps } = props; const context = useTabsContext(TRIGGER_NAME, __scopeTabs); @@ -31274,15 +31274,15 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); ); TabsTrigger.displayName = TRIGGER_NAME; var CONTENT_NAME = "TabsContent"; - var TabsContent = React14.forwardRef( + var TabsContent = React13.forwardRef( (props, forwardedRef) => { const { __scopeTabs, value, forceMount, children, ...contentProps } = props; const context = useTabsContext(CONTENT_NAME, __scopeTabs); const triggerId = makeTriggerId(context.baseId, value); const contentId = makeContentId(context.baseId, value); const isSelected = value === context.value; - const isMountAnimationPreventedRef = React14.useRef(isSelected); - React14.useEffect(() => { + const isMountAnimationPreventedRef = React13.useRef(isSelected); + React13.useEffect(() => { const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false); return () => cancelAnimationFrame(rAF); }, []); @@ -31320,66 +31320,86 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); var Content = TabsContent; // extension/icons.jsx + var import_jsx_runtime = __toESM(require_jsx_runtime()); function LogoIcon() { - return /* @__PURE__ */ React.createElement("svg", { + return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { xmlns: "http://www.w3.org/2000/svg", width: "56", height: "56", fill: "none", viewBox: "0 0 56 56", - "aria-label": "Nostr Connect logo" - }, /* @__PURE__ */ React.createElement("rect", { - width: "56", - height: "56", - fill: "#EEECFD", - rx: "16" - }), /* @__PURE__ */ React.createElement("rect", { - width: "55", - height: "55", - x: "0.5", - y: "0.5", - stroke: "#5A41F4", - strokeOpacity: "0.25", - rx: "15.5" - }), /* @__PURE__ */ React.createElement("rect", { - width: "39", - height: "39", - x: "8.5", - y: "8.5", - fill: "url(#paint0_linear_24_2379)", - rx: "19.5" - }), /* @__PURE__ */ React.createElement("rect", { - width: "39", - height: "39", - x: "8.5", - y: "8.5", - stroke: "#6149F6", - rx: "19.5" - }), /* @__PURE__ */ React.createElement("g", { - fill: "#fff", - stroke: "#6149F6", - clipPath: "url(#clip0_24_2379)" - }, /* @__PURE__ */ React.createElement("path", { - d: "M23.78 20.634l.408-.235-.21-.422a4.432 4.432 0 01-.458-1.797l-.031-.78-.696.355A11.533 11.533 0 0016.5 27.998h0V28c.002.87.103 1.738.302 2.585a3.525 3.525 0 102.843-1.058A8.377 8.377 0 0119.5 28a8.523 8.523 0 014.28-7.366zM36.5 28.023v.468l.467.03c.621.042 1.227.212 1.778.5l.687.36.044-.774.005-.075c.01-.166.02-.349.02-.532v-.001a11.524 11.524 0 00-8.142-10.99 3.526 3.526 0 10-.501 2.989A8.524 8.524 0 0136.5 28s0 0 0 0v.022zM33.185 32.622a3.49 3.49 0 00.311 1.844 8.442 8.442 0 01-9.766.877l-.407-.239-.262.392c-.343.514-.79.95-1.311 1.282l-.652.414.645.425a11.39 11.39 0 0014.092-1.23c.264.069.536.107.81.113h.01a3.5 3.5 0 002.803-5.6h.556l-1.603-.932a3.49 3.49 0 00-5.226 2.654z" - })), /* @__PURE__ */ React.createElement("defs", null, /* @__PURE__ */ React.createElement("linearGradient", { - id: "paint0_linear_24_2379", - x1: "28", - x2: "28", - y1: "8", - y2: "48", - gradientUnits: "userSpaceOnUse" - }, /* @__PURE__ */ React.createElement("stop", { - stopColor: "#8E7CFF" - }), /* @__PURE__ */ React.createElement("stop", { - offset: "1", - stopColor: "#5A41F4" - })), /* @__PURE__ */ React.createElement("clipPath", { - id: "clip0_24_2379" - }, /* @__PURE__ */ React.createElement("path", { - fill: "#fff", - d: "M0 0H24V24H0z", - transform: "translate(16 15)" - })))); + "aria-label": "Nostr Connect logo", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", { + width: "56", + height: "56", + fill: "#EEECFD", + rx: "16" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", { + width: "55", + height: "55", + x: "0.5", + y: "0.5", + stroke: "#5A41F4", + strokeOpacity: "0.25", + rx: "15.5" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", { + width: "39", + height: "39", + x: "8.5", + y: "8.5", + fill: "url(#paint0_linear_24_2379)", + rx: "19.5" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", { + width: "39", + height: "39", + x: "8.5", + y: "8.5", + stroke: "#6149F6", + rx: "19.5" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", { + fill: "#fff", + stroke: "#6149F6", + clipPath: "url(#clip0_24_2379)", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { + d: "M23.78 20.634l.408-.235-.21-.422a4.432 4.432 0 01-.458-1.797l-.031-.78-.696.355A11.533 11.533 0 0016.5 27.998h0V28c.002.87.103 1.738.302 2.585a3.525 3.525 0 102.843-1.058A8.377 8.377 0 0119.5 28a8.523 8.523 0 014.28-7.366zM36.5 28.023v.468l.467.03c.621.042 1.227.212 1.778.5l.687.36.044-.774.005-.075c.01-.166.02-.349.02-.532v-.001a11.524 11.524 0 00-8.142-10.99 3.526 3.526 0 10-.501 2.989A8.524 8.524 0 0136.5 28s0 0 0 0v.022zM33.185 32.622a3.49 3.49 0 00.311 1.844 8.442 8.442 0 01-9.766.877l-.407-.239-.262.392c-.343.514-.79.95-1.311 1.282l-.652.414.645.425a11.39 11.39 0 0014.092-1.23c.264.069.536.107.81.113h.01a3.5 3.5 0 002.803-5.6h.556l-1.603-.932a3.49 3.49 0 00-5.226 2.654z" + }) + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("defs", { + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("linearGradient", { + id: "paint0_linear_24_2379", + x1: "28", + x2: "28", + y1: "8", + y2: "48", + gradientUnits: "userSpaceOnUse", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("stop", { + stopColor: "#8E7CFF" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("stop", { + offset: "1", + stopColor: "#5A41F4" + }) + ] + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("clipPath", { + id: "clip0_24_2379", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { + fill: "#fff", + d: "M0 0H24V24H0z", + transform: "translate(16 15)" + }) + }) + ] + }) + ] + }); } // extension/common.js @@ -31399,13 +31419,13 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } // node_modules/.pnpm/@radix-ui+react-checkbox@1.3.3_@types+react-dom@19.0.2_@types+react@19.0.2__@types+reac_d96e45962cc5ba292a62810b70da3303/node_modules/@radix-ui/react-checkbox/dist/index.mjs - var React17 = __toESM(require_react(), 1); + var React16 = __toESM(require_react(), 1); // node_modules/.pnpm/@radix-ui+react-use-previous@1.1.1_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-use-previous/dist/index.mjs - var React15 = __toESM(require_react(), 1); + var React14 = __toESM(require_react(), 1); function usePrevious(value) { - const ref = React15.useRef({ value, previous: value }); - return React15.useMemo(() => { + const ref = React14.useRef({ value, previous: value }); + return React14.useMemo(() => { if (ref.current.value !== value) { ref.current.previous = ref.current.value; ref.current.value = value; @@ -31415,9 +31435,9 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } // node_modules/.pnpm/@radix-ui+react-use-size@1.1.1_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-use-size/dist/index.mjs - var React16 = __toESM(require_react(), 1); + var React15 = __toESM(require_react(), 1); function useSize(element) { - const [size, setSize] = React16.useState(void 0); + const [size, setSize] = React15.useState(void 0); useLayoutEffect2(() => { if (element) { setSize({ width: element.offsetWidth, height: element.offsetHeight }); @@ -31477,9 +31497,9 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); onChange: onCheckedChange, caller: CHECKBOX_NAME }); - const [control, setControl] = React17.useState(null); - const [bubbleInput, setBubbleInput] = React17.useState(null); - const hasConsumerStoppedPropagationRef = React17.useRef(false); + const [control, setControl] = React16.useState(null); + const [bubbleInput, setBubbleInput] = React16.useState(null); + const hasConsumerStoppedPropagationRef = React16.useRef(false); const isFormControl = control ? !!form || !!control.closest("form") : true; const context = { checked, @@ -31507,7 +31527,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); ); } var TRIGGER_NAME2 = "CheckboxTrigger"; - var CheckboxTrigger = React17.forwardRef( + var CheckboxTrigger = React16.forwardRef( ({ __scopeCheckbox, onKeyDown, onClick, ...checkboxProps }, forwardedRef) => { const { control, @@ -31522,8 +31542,8 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); bubbleInput } = useCheckboxContext(TRIGGER_NAME2, __scopeCheckbox); const composedRefs = useComposedRefs(forwardedRef, setControl); - const initialCheckedStateRef = React17.useRef(checked); - React17.useEffect(() => { + const initialCheckedStateRef = React16.useRef(checked); + React16.useEffect(() => { const form = control?.form; if (form) { const reset = () => setChecked(initialCheckedStateRef.current); @@ -31561,7 +31581,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } ); CheckboxTrigger.displayName = TRIGGER_NAME2; - var Checkbox = React17.forwardRef( + var Checkbox = React16.forwardRef( (props, forwardedRef) => { const { __scopeCheckbox, @@ -31609,7 +31629,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); ); Checkbox.displayName = CHECKBOX_NAME; var INDICATOR_NAME = "CheckboxIndicator"; - var CheckboxIndicator = React17.forwardRef( + var CheckboxIndicator = React16.forwardRef( (props, forwardedRef) => { const { __scopeCheckbox, forceMount, ...indicatorProps } = props; const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox); @@ -31633,7 +31653,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); ); CheckboxIndicator.displayName = INDICATOR_NAME; var BUBBLE_INPUT_NAME = "CheckboxBubbleInput"; - var CheckboxBubbleInput = React17.forwardRef( + var CheckboxBubbleInput = React16.forwardRef( ({ __scopeCheckbox, ...props }, forwardedRef) => { const { control, @@ -31651,7 +31671,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); const composedRefs = useComposedRefs(forwardedRef, setBubbleInput); const prevChecked = usePrevious(checked); const controlSize = useSize(control); - React17.useEffect(() => { + React16.useEffect(() => { const input = bubbleInput; if (!input) return; @@ -31669,7 +31689,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); input.dispatchEvent(event); } }, [bubbleInput, prevChecked, checked, hasConsumerStoppedPropagationRef]); - const defaultCheckedRef = React17.useRef(isIndeterminate(checked) ? false : checked); + const defaultCheckedRef = React16.useRef(isIndeterminate(checked) ? false : checked); return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( Primitive.input, { @@ -31708,21 +31728,26 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); return isIndeterminate(checked) ? "indeterminate" : checked ? "checked" : "unchecked"; } + // node_modules/.pnpm/nostr-tools@2.23.3/node_modules/nostr-tools/lib/esm/utils.js + var utf8Decoder2 = new TextDecoder("utf-8"); + var utf8Encoder2 = new TextEncoder(); + // extension/options.jsx + var import_jsx_runtime = __toESM(require_jsx_runtime()); function Options() { const [privKey, setPrivKey] = (0, import_react3.useState)(""); const [relays, setRelays] = (0, import_react3.useState)([]); const [newRelayURL, setNewRelayURL] = (0, import_react3.useState)(""); const [policies, setPermissions] = (0, import_react3.useState)([]); - const [protocolHandler, setProtocolHandler] = (0, import_react3.useState)( - "https://njump.me/{raw}" - ); const [hidingPrivateKey, hidePrivateKey] = (0, import_react3.useState)(true); const [showNotifications, setNotifications] = (0, import_react3.useState)(false); const [messages, setMessages] = (0, import_react3.useState)([]); const [handleNostrLinks, setHandleNostrLinks] = (0, import_react3.useState)(false); const [showProtocolHandlerHelp, setShowProtocolHandlerHelp] = (0, import_react3.useState)(false); const [unsavedChanges, setUnsavedChanges] = (0, import_react3.useState)([]); + const [protocolHandler, setProtocolHandler] = (0, import_react3.useState)( + "https://njump.me/{raw}" + ); const showMessage = (0, import_react3.useCallback)((msg) => { messages.push(msg); setMessages(messages); @@ -31774,289 +31799,494 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); (0, import_react3.useEffect)(() => { loadPermissions(); }, [loadPermissions]); - return /* @__PURE__ */ React.createElement("div", { - className: "w-screen h-screen flex flex-col items-center justify-center" - }, /* @__PURE__ */ React.createElement("div", { - className: "p-8 shadow-primary border border-primary rounded-2xl max-w-xl mx-auto flex flex-col gap-4" - }, /* @__PURE__ */ React.createElement("div", { - className: "flex items-center gap-4" - }, /* @__PURE__ */ React.createElement(LogoIcon, null), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("h1", { - className: "text-lg font-semibold" - }, "Nostr Connect"), /* @__PURE__ */ React.createElement("p", { - className: "text-sm text-muted font-medium" - }, "Nostr signer"))), /* @__PURE__ */ React.createElement("div", { - className: "flex flex-col" - }, /* @__PURE__ */ React.createElement("div", { - className: "mb-4 flex flex-col gap-2" - }, /* @__PURE__ */ React.createElement("div", { - className: "font-semibold text-base" - }, "Private key:"), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { - className: "flex gap-2" - }, /* @__PURE__ */ React.createElement("input", { - type: hidingPrivateKey ? "password" : "text", - value: privKey, - onChange: handleKeyChange, - className: "flex-1 h-9 bg-transparent border border-primary px-3 py-1 rounded-lg" - }), /* @__PURE__ */ React.createElement("div", { - className: "shrink-0" - }, !privKey && /* @__PURE__ */ React.createElement("button", { - type: "button", - onClick: generate, - className: "px-3 h-9 font-semibold border w-24 border-primary shadow-sm rounded-lg inline-flex items-center justify-center disabled:text-muted" - }, "Generate"), privKey && hidingPrivateKey && /* @__PURE__ */ React.createElement("button", { - type: "button", - onClick: () => hidePrivateKey(false), - className: "px-3 h-9 font-bold border w-24 border-primary shadow-sm rounded-lg inline-flex items-center justify-center disabled:text-muted" - }, "Show key"), privKey && !hidingPrivateKey && /* @__PURE__ */ React.createElement("button", { - type: "button", - onClick: () => hidePrivateKey(true), - className: "px-3 h-9 font-bold border w-24 border-primary shadow-sm rounded-lg inline-flex items-center justify-center disabled:text-muted" - }, "Hide key"))), /* @__PURE__ */ React.createElement("div", { - className: "mt-1 text-sm" - }, privKey && !isKeyValid() ? /* @__PURE__ */ React.createElement("p", { - className: "text-red-500" - }, "Private key is invalid!") : /* @__PURE__ */ React.createElement("p", { - className: "text-gray-500" - }, "Your key is stored locally. The developer has no way of seeing your keys.")), !hidingPrivateKey && isKeyValid() && /* @__PURE__ */ React.createElement("div", { - className: "mt-5 flex flex-col items-center" - }, /* @__PURE__ */ React.createElement(import_react_qr_code.default, { - size: 256, - value: privKey.toUpperCase(), - viewBox: `0 0 256 256`, - className: "w-full max-w-full" - })))), /* @__PURE__ */ React.createElement(Root2, { - className: "mb-4", - defaultValue: "relays" - }, /* @__PURE__ */ React.createElement(List, { - className: "mb-4 w-full border-b border-primary h-11 flex items-center gap-6" - }, /* @__PURE__ */ React.createElement(Trigger, { - className: "font-medium flex items-center text-muted gap-2 h-11 data-[state=active]:text-primary data-[state=active]:border-b data-[state=active]:border-secondary", - value: "relays" - }, "Relays", /* @__PURE__ */ React.createElement("span", { - className: "px-3 h-6 inline-flex items-center justify-center bg-muted data-[state=active]:text-primary rounded-full" - }, relays.length)), /* @__PURE__ */ React.createElement(Trigger, { - className: "font-medium flex items-center text-muted gap-2 h-11 data-[state=active]:text-primary data-[state=active]:border-b data-[state=active]:border-secondary", - value: "permissions" - }, "Permissions", /* @__PURE__ */ React.createElement("span", { - className: "px-3 h-6 inline-flex items-center justify-center bg-muted data-[state=active]:text-primary rounded-full" - }, policies.length))), /* @__PURE__ */ React.createElement(Content, { - value: "relays" - }, /* @__PURE__ */ React.createElement("div", { - className: "flex flex-col gap-2" - }, /* @__PURE__ */ React.createElement("div", { - className: "font-semibold text-base" - }, "Preferred Relays:"), /* @__PURE__ */ React.createElement("div", { - className: "flex flex-col gap-2" - }, relays.map(({ url, policy }, i2) => /* @__PURE__ */ React.createElement("div", { - key: url, - className: "flex items-center gap-4" - }, /* @__PURE__ */ React.createElement("input", { - value: url, - onChange: changeRelayURL.bind(null, i2), - className: "flex-1 h-9 bg-transparent border px-3 py-1 border-primary rounded-lg placeholder:text-muted" - }), /* @__PURE__ */ React.createElement("div", { - className: "flex items-center gap-2" - }, /* @__PURE__ */ React.createElement("div", { - className: "inline-flex items-center gap-2" - }, /* @__PURE__ */ React.createElement(Checkbox, { - id: `read-${i2}`, - checked: policy.read, - onCheckedChange: toggleRelayPolicy.bind( - null, - i2, - "read" - ), - className: "flex h-6 w-6 appearance-none items-center justify-center rounded-lg bg-white outline-none border border-primary data-[state=checked]:bg-primary data-[state=checked]:border-secondary" - }, /* @__PURE__ */ React.createElement(CheckboxIndicator, { - className: "text-white" - }, /* @__PURE__ */ React.createElement("svg", { - xmlns: "http://www.w3.org/2000/svg", - fill: "none", - viewBox: "0 0 24 24", - strokeWidth: 1.5, - stroke: "currentColor", - className: "w-4 h-4", - "aria-hidden": "true" - }, /* @__PURE__ */ React.createElement("path", { - strokeLinecap: "round", - strokeLinejoin: "round", - d: "M4.5 12.75l6 6 9-13.5" - })))), /* @__PURE__ */ React.createElement("label", { - htmlFor: `read-${i2}`, - className: "text-muted font-medium" - }, "Read")), /* @__PURE__ */ React.createElement("div", { - className: "inline-flex items-center gap-2" - }, /* @__PURE__ */ React.createElement(Checkbox, { - id: `write-${i2}`, - checked: policy.write, - onCheckedChange: toggleRelayPolicy.bind( - null, - i2, - "write" - ), - className: "flex h-6 w-6 appearance-none items-center justify-center rounded-lg bg-white outline-none border border-primary data-[state=checked]:bg-primary data-[state=checked]:border-secondary" - }, /* @__PURE__ */ React.createElement(CheckboxIndicator, { - className: "text-white" - }, /* @__PURE__ */ React.createElement("svg", { - xmlns: "http://www.w3.org/2000/svg", - fill: "none", - viewBox: "0 0 24 24", - strokeWidth: 1.5, - stroke: "currentColor", - className: "w-4 h-4", - "aria-hidden": "true" - }, /* @__PURE__ */ React.createElement("path", { - strokeLinecap: "round", - strokeLinejoin: "round", - d: "M4.5 12.75l6 6 9-13.5" - })))), /* @__PURE__ */ React.createElement("label", { - htmlFor: `write-${i2}`, - className: "text-muted font-medium" - }, "Write"))), /* @__PURE__ */ React.createElement("button", { - type: "button", - onClick: removeRelay.bind(null, i2), - className: "shrink-0 px-3 w-24 h-9 font-semibold border border-primary shadow-sm rounded-lg inline-flex items-center justify-center disabled:text-muted" - }, "Remove"))), /* @__PURE__ */ React.createElement("div", { - className: "flex gap-2" - }, /* @__PURE__ */ React.createElement("input", { - value: newRelayURL, - onChange: (e) => setNewRelayURL(e.target.value), - onKeyDown: (e) => { - if (e.key === "Enter") - addNewRelay(); - }, - placeholder: "wss://", - className: "flex-1 h-9 bg-transparent border px-3 py-1 border-primary rounded-lg placeholder:text-muted" - }), /* @__PURE__ */ React.createElement("button", { - type: "button", - disabled: !newRelayURL, - onClick: addNewRelay, - className: "shrink-0 px-3 w-24 h-9 font-semibold border border-primary shadow-sm rounded-lg inline-flex items-center justify-center disabled:text-muted" - }, "Add Relay"))))), /* @__PURE__ */ React.createElement(Content, { - value: "permissions" - }, /* @__PURE__ */ React.createElement("div", { - className: "flex flex-col gap-2" - }, /* @__PURE__ */ React.createElement("div", { - className: "font-semibold text-base" - }, "Permissions:"), !policies.length ? /* @__PURE__ */ React.createElement("div", { - className: "text-muted" - }, "You haven't granted any permissions to any apps yet") : /* @__PURE__ */ React.createElement("table", { - className: "table-auto" - }, /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement("tr", { - className: "mb-2" - }, /* @__PURE__ */ React.createElement("th", { - className: "text-left border-b-8 border-transparent" - }, "Domain"), /* @__PURE__ */ React.createElement("th", { - className: "text-left border-b-8 border-transparent" - }, "Permission"), /* @__PURE__ */ React.createElement("th", { - className: "text-left border-b-8 border-transparent" - }, "Answer"), /* @__PURE__ */ React.createElement("th", { - className: "text-left border-b-8 border-transparent" - }, "Conditions"), /* @__PURE__ */ React.createElement("th", { - className: "text-left border-b-8 border-transparent" - }, "Since"), /* @__PURE__ */ React.createElement("th", null))), /* @__PURE__ */ React.createElement("tbody", null, policies.map( - ({ host, type, accept, conditions, created_at }) => /* @__PURE__ */ React.createElement("tr", { - key: host + type + accept + JSON.stringify(conditions) - }, /* @__PURE__ */ React.createElement("td", { - className: "font-semibold" - }, host), /* @__PURE__ */ React.createElement("td", { - className: "text-muted" - }, type), /* @__PURE__ */ React.createElement("td", { - className: "text-muted" - }, accept === "true" ? "allow" : "deny"), /* @__PURE__ */ React.createElement("td", { - className: "text-muted" - }, conditions.kinds ? `kinds: ${Object.keys(conditions.kinds).join( - ", " - )}` : "always"), /* @__PURE__ */ React.createElement("td", { - className: "text-muted" - }, new Date(created_at * 1e3).toISOString().split(".")[0].split("T").join(" ")), /* @__PURE__ */ React.createElement("td", null, /* @__PURE__ */ React.createElement("button", { - type: "button", - onClick: handleRevoke, - "data-host": host, - "data-accept": accept, - "data-type": type, - className: "text-primary font-semibold" - }, "Revoke"))) - ), !policies.length && /* @__PURE__ */ React.createElement("tr", null, /* @__PURE__ */ React.createElement("td", null, "N/A"), /* @__PURE__ */ React.createElement("td", null, "N/A"), /* @__PURE__ */ React.createElement("td", null, "N/A"), /* @__PURE__ */ React.createElement("td", null, "N/A"), /* @__PURE__ */ React.createElement("td", null, "N/A"))))))), /* @__PURE__ */ React.createElement("div", { - className: "mb-3" - }, /* @__PURE__ */ React.createElement("div", { - className: "flex items-center gap-2" - }, /* @__PURE__ */ React.createElement(Checkbox, { - id: "notification", - className: "flex h-6 w-6 appearance-none items-center justify-center rounded-lg bg-white outline-none border border-primary data-[state=checked]:bg-primary data-[state=checked]:border-secondary", - checked: showNotifications, - onCheckedChange: handleNotifications - }, /* @__PURE__ */ React.createElement(CheckboxIndicator, { - className: "text-white" - }, /* @__PURE__ */ React.createElement("svg", { - xmlns: "http://www.w3.org/2000/svg", - fill: "none", - viewBox: "0 0 24 24", - strokeWidth: 1.5, - stroke: "currentColor", - className: "w-4 h-4", - "aria-hidden": "true" - }, /* @__PURE__ */ React.createElement("path", { - strokeLinecap: "round", - strokeLinejoin: "round", - d: "M4.5 12.75l6 6 9-13.5" - })))), /* @__PURE__ */ React.createElement("label", { - htmlFor: "notification" - }, "Show desktop notifications when a permissions has been used"))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("details", null, /* @__PURE__ */ React.createElement("summary", { - className: "flex items-center justify-between" - }, /* @__PURE__ */ React.createElement("div", { - className: "font-semibold text-base" - }, "Advanced"), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("svg", { - xmlns: "http://www.w3.org/2000/svg", - fill: "none", - viewBox: "0 0 24 24", - strokeWidth: 1.5, - stroke: "currentColor", - className: "w-5 h-5", - "aria-hidden": "true" - }, /* @__PURE__ */ React.createElement("path", { - strokeLinecap: "round", - strokeLinejoin: "round", - d: "M19.5 8.25l-7.5 7.5-7.5-7.5" - })))), /* @__PURE__ */ React.createElement("div", { - className: "mt-3" - }, /* @__PURE__ */ React.createElement("div", { - className: "flex items-center gap-2" - }, /* @__PURE__ */ React.createElement(Checkbox, { - id: "nostrlink", - className: "flex h-6 w-6 appearance-none items-center justify-center rounded-lg bg-white outline-none border border-primary data-[state=checked]:bg-primary data-[state=checked]:border-secondary", - checked: handleNostrLinks, - onCheckedChange: changeHandleNostrLinks - }, /* @__PURE__ */ React.createElement(CheckboxIndicator, { - className: "text-white" - }, /* @__PURE__ */ React.createElement("svg", { - xmlns: "http://www.w3.org/2000/svg", - fill: "none", - viewBox: "0 0 24 24", - strokeWidth: 1.5, - stroke: "currentColor", - className: "w-4 h-4", - "aria-hidden": "true" - }, /* @__PURE__ */ React.createElement("path", { - strokeLinecap: "round", - strokeLinejoin: "round", - d: "M4.5 12.75l6 6 9-13.5" - })))), /* @__PURE__ */ React.createElement("label", { - htmlFor: "nostrlink" - }, "Handle nostr links")), handleNostrLinks && /* @__PURE__ */ React.createElement("div", { - className: "mt-3" - }, /* @__PURE__ */ React.createElement("div", { - className: "flex" - }, /* @__PURE__ */ React.createElement("input", { - placeholder: "url template", - value: protocolHandler, - onChange: handleChangeProtocolHandler - }), !showProtocolHandlerHelp && /* @__PURE__ */ React.createElement("button", { - type: "button", - onClick: changeShowProtocolHandlerHelp - }, "?")), showProtocolHandlerHelp && /* @__PURE__ */ React.createElement("pre", { - className: "bg-muted px-2 rounded-xl overflow-scroll" - }, ` + return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { + className: "w-screen h-screen flex flex-col items-center justify-center", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "p-8 shadow-primary border border-primary rounded-2xl max-w-xl mx-auto flex flex-col gap-4", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "flex items-center gap-4", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LogoIcon, {}), + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", { + className: "text-lg font-semibold", + children: "Nostr Connect" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { + className: "text-sm text-muted font-medium", + children: "Nostr signer" + }) + ] + }) + ] + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "flex flex-col", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "mb-4 flex flex-col gap-2", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { + className: "font-semibold text-base", + children: "Private key:" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "flex gap-2", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("input", { + type: hidingPrivateKey ? "password" : "text", + value: privKey, + onChange: handleKeyChange, + className: "flex-1 h-9 bg-transparent border border-primary px-3 py-1 rounded-lg" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "shrink-0", + children: [ + !privKey && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { + type: "button", + onClick: generate, + className: "px-3 h-9 font-semibold border w-24 border-primary shadow-sm rounded-lg inline-flex items-center justify-center disabled:text-muted", + children: "Generate" + }), + privKey && hidingPrivateKey && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { + type: "button", + onClick: () => hidePrivateKey(false), + className: "px-3 h-9 font-bold border w-24 border-primary shadow-sm rounded-lg inline-flex items-center justify-center disabled:text-muted", + children: "Show key" + }), + privKey && !hidingPrivateKey && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { + type: "button", + onClick: () => hidePrivateKey(true), + className: "px-3 h-9 font-bold border w-24 border-primary shadow-sm rounded-lg inline-flex items-center justify-center disabled:text-muted", + children: "Hide key" + }) + ] + }) + ] + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { + className: "mt-1 text-sm", + children: privKey && !isKeyValid() ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { + className: "text-red-500", + children: "Private key is invalid!" + }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { + className: "text-gray-500", + children: "Your key is stored locally. The developer has no way of seeing your keys." + }) + }), + !hidingPrivateKey && isKeyValid() && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { + className: "mt-5 flex flex-col items-center", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_qr_code.default, { + size: 256, + value: privKey.toUpperCase(), + viewBox: `0 0 256 256`, + className: "w-full max-w-full" + }) + }) + ] + }) + ] + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Root2, { + className: "mb-4", + defaultValue: "relays", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(List, { + className: "mb-4 w-full border-b border-primary h-11 flex items-center gap-6", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Trigger, { + className: "font-medium flex items-center text-muted gap-2 h-11 data-[state=active]:text-primary data-[state=active]:border-b data-[state=active]:border-secondary", + value: "relays", + children: [ + "Relays", + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { + className: "px-3 h-6 inline-flex items-center justify-center bg-muted data-[state=active]:text-primary rounded-full", + children: relays.length + }) + ] + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Trigger, { + className: "font-medium flex items-center text-muted gap-2 h-11 data-[state=active]:text-primary data-[state=active]:border-b data-[state=active]:border-secondary", + value: "permissions", + children: [ + "Permissions", + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { + className: "px-3 h-6 inline-flex items-center justify-center bg-muted data-[state=active]:text-primary rounded-full", + children: policies.length + }) + ] + }) + ] + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Content, { + value: "relays", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "flex flex-col gap-2", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { + className: "font-semibold text-base", + children: "Preferred Relays:" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "flex flex-col gap-2", + children: [ + relays.map(({ url, policy }, i2) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "flex items-center gap-4", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("input", { + value: url, + onChange: changeRelayURL.bind(null, i2), + className: "flex-1 h-9 bg-transparent border px-3 py-1 border-primary rounded-lg placeholder:text-muted" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "flex items-center gap-2", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "inline-flex items-center gap-2", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Checkbox, { + id: `read-${i2}`, + checked: policy.read, + onCheckedChange: toggleRelayPolicy.bind( + null, + i2, + "read" + ), + className: "flex h-6 w-6 appearance-none items-center justify-center rounded-lg bg-white outline-none border border-primary data-[state=checked]:bg-primary data-[state=checked]:border-secondary", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CheckboxIndicator, { + className: "text-white", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + className: "w-4 h-4", + "aria-hidden": "true", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M4.5 12.75l6 6 9-13.5" + }) + }) + }) + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("label", { + htmlFor: `read-${i2}`, + className: "text-muted font-medium", + children: "Read" + }) + ] + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "inline-flex items-center gap-2", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Checkbox, { + id: `write-${i2}`, + checked: policy.write, + onCheckedChange: toggleRelayPolicy.bind( + null, + i2, + "write" + ), + className: "flex h-6 w-6 appearance-none items-center justify-center rounded-lg bg-white outline-none border border-primary data-[state=checked]:bg-primary data-[state=checked]:border-secondary", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CheckboxIndicator, { + className: "text-white", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + className: "w-4 h-4", + "aria-hidden": "true", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M4.5 12.75l6 6 9-13.5" + }) + }) + }) + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("label", { + htmlFor: `write-${i2}`, + className: "text-muted font-medium", + children: "Write" + }) + ] + }) + ] + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { + type: "button", + onClick: removeRelay.bind(null, i2), + className: "shrink-0 px-3 w-24 h-9 font-semibold border border-primary shadow-sm rounded-lg inline-flex items-center justify-center disabled:text-muted", + children: "Remove" + }) + ] + }, url)), + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "flex gap-2", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("input", { + value: newRelayURL, + onChange: (e) => setNewRelayURL(e.target.value), + onKeyDown: (e) => { + if (e.key === "Enter") + addNewRelay(); + }, + placeholder: "wss://", + className: "flex-1 h-9 bg-transparent border px-3 py-1 border-primary rounded-lg placeholder:text-muted" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { + type: "button", + disabled: !newRelayURL, + onClick: addNewRelay, + className: "shrink-0 px-3 w-24 h-9 font-semibold border border-primary shadow-sm rounded-lg inline-flex items-center justify-center disabled:text-muted", + children: "Add Relay" + }) + ] + }) + ] + }) + ] + }) + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Content, { + value: "permissions", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "flex flex-col gap-2", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { + className: "font-semibold text-base", + children: "Permissions:" + }), + !policies.length ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { + className: "text-muted", + children: "You haven't granted any permissions to any apps yet" + }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("table", { + className: "table-auto", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("thead", { + children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("tr", { + className: "mb-2", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", { + className: "text-left border-b-8 border-transparent", + children: "Domain" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", { + className: "text-left border-b-8 border-transparent", + children: "Permission" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", { + className: "text-left border-b-8 border-transparent", + children: "Answer" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", { + className: "text-left border-b-8 border-transparent", + children: "Conditions" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", { + className: "text-left border-b-8 border-transparent", + children: "Since" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", {}) + ] + }) + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("tbody", { + children: [ + policies.map( + ({ host, type, accept, conditions, created_at }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("tr", { + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { + className: "font-semibold", + children: host + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { + className: "text-muted", + children: type + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { + className: "text-muted", + children: accept === "true" ? "allow" : "deny" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { + className: "text-muted", + children: conditions.kinds ? `kinds: ${Object.keys(conditions.kinds).join( + ", " + )}` : "always" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { + className: "text-muted", + children: new Date(created_at * 1e3).toISOString().split(".")[0].split("T").join(" ") + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { + type: "button", + onClick: handleRevoke, + "data-host": host, + "data-accept": accept, + "data-type": type, + className: "text-primary font-semibold", + children: "Revoke" + }) + }) + ] + }, host + type + accept + JSON.stringify(conditions)) + ), + !policies.length && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("tr", { + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { + children: "N/A" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { + children: "N/A" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { + children: "N/A" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { + children: "N/A" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { + children: "N/A" + }) + ] + }) + ] + }) + ] + }) + ] + }) + }) + ] + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { + className: "mb-3", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "flex items-center gap-2", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Checkbox, { + id: "notification", + className: "flex h-6 w-6 appearance-none items-center justify-center rounded-lg bg-white outline-none border border-primary data-[state=checked]:bg-primary data-[state=checked]:border-secondary", + checked: showNotifications, + onCheckedChange: handleNotifications, + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CheckboxIndicator, { + className: "text-white", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + className: "w-4 h-4", + "aria-hidden": "true", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M4.5 12.75l6 6 9-13.5" + }) + }) + }) + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("label", { + htmlFor: "notification", + children: "Show desktop notifications when a permissions has been used" + }) + ] + }) + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { + children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("details", { + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("summary", { + className: "flex items-center justify-between", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { + className: "font-semibold text-base", + children: "Advanced" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + className: "w-5 h-5", + "aria-hidden": "true", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M19.5 8.25l-7.5 7.5-7.5-7.5" + }) + }) + }) + ] + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "mt-3", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "flex items-center gap-2", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Checkbox, { + id: "nostrlink", + className: "flex h-6 w-6 appearance-none items-center justify-center rounded-lg bg-white outline-none border border-primary data-[state=checked]:bg-primary data-[state=checked]:border-secondary", + checked: handleNostrLinks, + onCheckedChange: changeHandleNostrLinks, + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CheckboxIndicator, { + className: "text-white", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + className: "w-4 h-4", + "aria-hidden": "true", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M4.5 12.75l6 6 9-13.5" + }) + }) + }) + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("label", { + htmlFor: "nostrlink", + children: "Handle nostr links" + }) + ] + }), + handleNostrLinks && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "mt-3", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "flex", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("input", { + placeholder: "url template", + value: protocolHandler, + onChange: handleChangeProtocolHandler + }), + !showProtocolHandlerHelp && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { + type: "button", + onClick: changeShowProtocolHandlerHelp, + children: "?" + }) + ] + }), + showProtocolHandlerHelp && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("pre", { + className: "bg-muted px-2 rounded-xl overflow-scroll", + children: ` {raw} = anything after the colon, i.e. the full nip19 bech32 string {hex} = hex pubkey for npub or nprofile, hex event id for note or nevent {p_or_e} = "p" for npub or nprofile, "e" for note or nevent @@ -32070,12 +32300,27 @@ examples: - https://njump.me/{raw} - https://snort.social/{raw} - https://nostr.band/{raw} - `)))))), /* @__PURE__ */ React.createElement("button", { - type: "button", - disabled: !unsavedChanges.length, - onClick: saveChanges, - className: "w-full h-10 bg-primary rounded-xl font-bold inline-flex items-center justify-center text-white disabled:cursor-not-allowed disabled:opacity-70 transform active:translate-y-1 transition-transform ease-in-out duration-75" - }, "Save"))); + ` + }) + ] + }) + ] + }) + ] + }) + }) + ] + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { + type: "button", + disabled: !unsavedChanges.length, + onClick: saveChanges, + className: "w-full h-10 bg-primary rounded-xl font-bold inline-flex items-center justify-center text-white disabled:cursor-not-allowed disabled:opacity-70 transform active:translate-y-1 transition-transform ease-in-out duration-75", + children: "Save" + }) + ] + }) + }); async function handleKeyChange(e) { const key = e.target.value.toLowerCase().trim(); setPrivKey(key); @@ -32095,14 +32340,14 @@ examples: try { const { type, data } = nip19_exports.decode(privKey); if (type === "nsec") - hexOrEmptyKey = data; + hexOrEmptyKey = bytesToHex(data); } catch (_) { } await import_webextension_polyfill2.default.storage.local.set({ private_key: hexOrEmptyKey }); if (hexOrEmptyKey !== "") { - setPrivKey(nip19_exports.nsecEncode(hexOrEmptyKey)); + setPrivKey(nip19_exports.nsecEncode(hexToBytes(hexOrEmptyKey))); } showMessage("saved private key!"); } @@ -32234,7 +32479,7 @@ examples: setUnsavedChanges([]); } } - (0, import_react_dom.render)(/* @__PURE__ */ React.createElement(Options, null), document.getElementById("main")); + (0, import_react_dom.render)(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Options, {}), document.getElementById("main")); })(); /* object-assign diff --git a/extension/output/popup.build.js b/extension/output/popup.build.js index ac5cf54..fb428c3 100644 --- a/extension/output/popup.build.js +++ b/extension/output/popup.build.js @@ -3470,11 +3470,11 @@ if (true) { (function() { "use strict"; - var React15 = require_react(); + var React14 = require_react(); var _assign = require_object_assign(); var Scheduler = require_scheduler(); var tracing = require_tracing(); - var ReactSharedInternals = React15.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + var ReactSharedInternals = React14.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; function warn(format) { { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { @@ -3506,7 +3506,7 @@ Function.prototype.apply.call(console[level], console, argsWithFormat); } } - if (!React15) { + if (!React14) { { throw Error("ReactDOM was loaded before React. Make sure you load the React package before loading ReactDOM."); } @@ -4842,7 +4842,7 @@ var didWarnInvalidChild = false; function flattenChildren(children) { var content = ""; - React15.Children.forEach(children, function(child) { + React14.Children.forEach(children, function(child) { if (child == null) { return; } @@ -4853,7 +4853,7 @@ function validateProps(element, props) { { if (typeof props.children === "object" && props.children !== null) { - React15.Children.forEach(props.children, function(child) { + React14.Children.forEach(props.children, function(child) { if (child == null) { return; } @@ -12056,7 +12056,7 @@ } var fakeInternalInstance = {}; var isArray = Array.isArray; - var emptyRefsObject = new React15.Component().refs; + var emptyRefsObject = new React14.Component().refs; var didWarnAboutStateAssignmentForComponent; var didWarnAboutUninitializedState; var didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate; @@ -23442,7 +23442,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); if (true) { (function() { "use strict"; - var React15 = require_react(); + var React14 = require_react(); var _assign = require_object_assign(); var REACT_ELEMENT_TYPE = 60103; var REACT_PORTAL_TYPE = 60106; @@ -23499,7 +23499,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } return null; } - var ReactSharedInternals = React15.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + var ReactSharedInternals = React14.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; function error(format) { { for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { @@ -24269,10 +24269,10 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); return jsxWithValidation(type, props, key, false); } } - var jsx8 = jsxWithValidationDynamic; - var jsxs = jsxWithValidationStatic; - exports.jsx = jsx8; - exports.jsxs = jsxs; + var jsx10 = jsxWithValidationDynamic; + var jsxs3 = jsxWithValidationStatic; + exports.jsx = jsx10; + exports.jsxs = jsxs3; })(); } } @@ -30397,24 +30397,29 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); var import_react_qr_code = __toESM(require_lib()); // extension/icons.jsx + var import_jsx_runtime = __toESM(require_jsx_runtime()); function SettingsIcon(props) { - return /* @__PURE__ */ React.createElement("svg", { + return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", "aria-label": "Settings", - ...props - }, /* @__PURE__ */ React.createElement("path", { - strokeLinecap: "round", - strokeLinejoin: "round", - d: "M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 011.37.49l1.296 2.247a1.125 1.125 0 01-.26 1.431l-1.003.827c-.293.24-.438.613-.431.992a6.759 6.759 0 010 .255c-.007.378.138.75.43.99l1.005.828c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 01-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.57 6.57 0 01-.22.128c-.331.183-.581.495-.644.869l-.213 1.28c-.09.543-.56.941-1.11.941h-2.594c-.55 0-1.02-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 01-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 01-1.369-.49l-1.297-2.247a1.125 1.125 0 01.26-1.431l1.004-.827c.292-.24.437-.613.43-.992a6.932 6.932 0 010-.255c.007-.378-.138-.75-.43-.99l-1.004-.828a1.125 1.125 0 01-.26-1.43l1.297-2.247a1.125 1.125 0 011.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.087.22-.128.332-.183.582-.495.644-.869l.214-1.281z" - }), /* @__PURE__ */ React.createElement("path", { - strokeLinecap: "round", - strokeLinejoin: "round", - d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z" - })); + ...props, + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 011.37.49l1.296 2.247a1.125 1.125 0 01-.26 1.431l-1.003.827c-.293.24-.438.613-.431.992a6.759 6.759 0 010 .255c-.007.378.138.75.43.99l1.005.828c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 01-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.57 6.57 0 01-.22.128c-.331.183-.581.495-.644.869l-.213 1.28c-.09.543-.56.941-1.11.941h-2.594c-.55 0-1.02-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 01-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 01-1.369-.49l-1.297-2.247a1.125 1.125 0 01.26-1.431l1.004-.827c.292-.24.437-.613.43-.992a6.932 6.932 0 010-.255c.007-.378-.138-.75-.43-.99l-1.004-.828a1.125 1.125 0 01-.26-1.43l1.297-2.247a1.125 1.125 0 011.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.087.22-.128.332-.183.582-.495.644-.869l.214-1.281z" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z" + }) + ] + }); } // node_modules/.pnpm/minidenticons@4.2.1/node_modules/minidenticons/minidenticons.js @@ -30458,7 +30463,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); ); // node_modules/.pnpm/@radix-ui+react-tabs@1.1.13_@types+react-dom@19.0.2_@types+react@19.0.2__@types+react@1_07a8406c49e3b49a1525c388b85a0cee/node_modules/@radix-ui/react-tabs/dist/index.mjs - var React14 = __toESM(require_react(), 1); + var React13 = __toESM(require_react(), 1); // node_modules/.pnpm/@radix-ui+primitive@1.1.3/node_modules/@radix-ui/primitive/dist/index.mjs var canUseDOM = !!(typeof self !== "undefined" && self.document && self.document.createElement); @@ -30472,24 +30477,24 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } // node_modules/.pnpm/@radix-ui+react-context@1.1.2_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-context/dist/index.mjs - var React2 = __toESM(require_react(), 1); + var React = __toESM(require_react(), 1); var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); function createContextScope(scopeName, createContextScopeDeps = []) { let defaultContexts = []; function createContext3(rootComponentName, defaultContext) { - const BaseContext = React2.createContext(defaultContext); + const BaseContext = React.createContext(defaultContext); const index = defaultContexts.length; defaultContexts = [...defaultContexts, defaultContext]; const Provider = (props) => { const { scope, children, ...context } = props; const Context = scope?.[scopeName]?.[index] || BaseContext; - const value = React2.useMemo(() => context, Object.values(context)); + const value = React.useMemo(() => context, Object.values(context)); return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Context.Provider, { value, children }); }; Provider.displayName = rootComponentName + "Provider"; function useContext22(consumerName, scope) { const Context = scope?.[scopeName]?.[index] || BaseContext; - const context = React2.useContext(Context); + const context = React.useContext(Context); if (context) return context; if (defaultContext !== void 0) @@ -30500,11 +30505,11 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } const createScope = () => { const scopeContexts = defaultContexts.map((defaultContext) => { - return React2.createContext(defaultContext); + return React.createContext(defaultContext); }); return function useScope(scope) { const contexts = scope?.[scopeName] || scopeContexts; - return React2.useMemo( + return React.useMemo( () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }), [scope, contexts] ); @@ -30528,7 +30533,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); const currentScope = scopeProps[`__scope${scopeName}`]; return { ...nextScopes2, ...currentScope }; }, {}); - return React2.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]); + return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]); }; }; createScope.scopeName = baseScope.scopeName; @@ -30536,13 +30541,13 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } // node_modules/.pnpm/@radix-ui+react-roving-focus@1.1.11_@types+react-dom@19.0.2_@types+react@19.0.2__@types_04f6d74bc65ad693200463421fbc77b6/node_modules/@radix-ui/react-roving-focus/dist/index.mjs - var React12 = __toESM(require_react(), 1); + var React11 = __toESM(require_react(), 1); // node_modules/.pnpm/@radix-ui+react-collection@1.1.7_@types+react-dom@19.0.2_@types+react@19.0.2__@types+re_a0241bee01f1f2b3ebba2085e3e5e66a/node_modules/@radix-ui/react-collection/dist/index.mjs var import_react = __toESM(require_react(), 1); // node_modules/.pnpm/@radix-ui+react-compose-refs@1.1.2_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-compose-refs/dist/index.mjs - var React3 = __toESM(require_react(), 1); + var React2 = __toESM(require_react(), 1); function setRef(ref, value) { if (typeof ref === "function") { return ref(value); @@ -30575,30 +30580,30 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); }; } function useComposedRefs(...refs) { - return React3.useCallback(composeRefs(...refs), refs); + return React2.useCallback(composeRefs(...refs), refs); } // node_modules/.pnpm/@radix-ui+react-slot@1.2.3_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-slot/dist/index.mjs - var React4 = __toESM(require_react(), 1); + var React3 = __toESM(require_react(), 1); var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); function createSlot(ownerName) { const SlotClone = /* @__PURE__ */ createSlotClone(ownerName); - const Slot2 = React4.forwardRef((props, forwardedRef) => { + const Slot2 = React3.forwardRef((props, forwardedRef) => { const { children, ...slotProps } = props; - const childrenArray = React4.Children.toArray(children); + const childrenArray = React3.Children.toArray(children); const slottable = childrenArray.find(isSlottable); if (slottable) { const newElement = slottable.props.children; const newChildren = childrenArray.map((child) => { if (child === slottable) { - if (React4.Children.count(newElement) > 1) - return React4.Children.only(null); - return React4.isValidElement(newElement) ? newElement.props.children : null; + if (React3.Children.count(newElement) > 1) + return React3.Children.only(null); + return React3.isValidElement(newElement) ? newElement.props.children : null; } else { return child; } }); - return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: React4.isValidElement(newElement) ? React4.cloneElement(newElement, void 0, newChildren) : null }); + return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: React3.isValidElement(newElement) ? React3.cloneElement(newElement, void 0, newChildren) : null }); } return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children }); }); @@ -30606,24 +30611,24 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); return Slot2; } function createSlotClone(ownerName) { - const SlotClone = React4.forwardRef((props, forwardedRef) => { + const SlotClone = React3.forwardRef((props, forwardedRef) => { const { children, ...slotProps } = props; - if (React4.isValidElement(children)) { + if (React3.isValidElement(children)) { const childrenRef = getElementRef(children); const props2 = mergeProps(slotProps, children.props); - if (children.type !== React4.Fragment) { + if (children.type !== React3.Fragment) { props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef; } - return React4.cloneElement(children, props2); + return React3.cloneElement(children, props2); } - return React4.Children.count(children) > 1 ? React4.Children.only(null) : null; + return React3.Children.count(children) > 1 ? React3.Children.only(null) : null; }); SlotClone.displayName = `${ownerName}.SlotClone`; return SlotClone; } var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable"); function isSlottable(child) { - return React4.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER; + return React3.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER; } function mergeProps(slotProps, childProps) { const overrideProps = { ...childProps }; @@ -30733,18 +30738,18 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } // node_modules/.pnpm/@radix-ui+react-id@1.1.1_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-id/dist/index.mjs - var React7 = __toESM(require_react(), 1); + var React6 = __toESM(require_react(), 1); // node_modules/.pnpm/@radix-ui+react-use-layout-effect@1.1.1_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs - var React6 = __toESM(require_react(), 1); - var useLayoutEffect2 = globalThis?.document ? React6.useLayoutEffect : () => { + var React5 = __toESM(require_react(), 1); + var useLayoutEffect2 = globalThis?.document ? React5.useLayoutEffect : () => { }; // node_modules/.pnpm/@radix-ui+react-id@1.1.1_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-id/dist/index.mjs - var useReactId = React7[" useId ".trim().toString()] || (() => void 0); + var useReactId = React6[" useId ".trim().toString()] || (() => void 0); var count = 0; function useId(deterministicId) { - const [id, setId] = React7.useState(useReactId()); + const [id, setId] = React6.useState(useReactId()); useLayoutEffect2(() => { if (!deterministicId) setId((reactId) => reactId ?? String(count++)); @@ -30753,7 +30758,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } // node_modules/.pnpm/@radix-ui+react-primitive@2.1.3_@types+react-dom@19.0.2_@types+react@19.0.2__@types+rea_4d2f7b7fa17f2c71e22e7a2adbe76a73/node_modules/@radix-ui/react-primitive/dist/index.mjs - var React8 = __toESM(require_react(), 1); + var React7 = __toESM(require_react(), 1); var ReactDOM = __toESM(require_react_dom(), 1); var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1); var NODES = [ @@ -30777,7 +30782,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); ]; var Primitive = NODES.reduce((primitive, node) => { const Slot = createSlot(`Primitive.${node}`); - const Node2 = React8.forwardRef((props, forwardedRef) => { + const Node2 = React7.forwardRef((props, forwardedRef) => { const { asChild, ...primitiveProps } = props; const Comp = asChild ? Slot : node; if (typeof self !== "undefined") { @@ -30790,19 +30795,19 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); }, {}); // node_modules/.pnpm/@radix-ui+react-use-callback-ref@1.1.1_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs - var React9 = __toESM(require_react(), 1); + var React8 = __toESM(require_react(), 1); function useCallbackRef(callback) { - const callbackRef = React9.useRef(callback); - React9.useEffect(() => { + const callbackRef = React8.useRef(callback); + React8.useEffect(() => { callbackRef.current = callback; }); - return React9.useMemo(() => (...args) => callbackRef.current?.(...args), []); + return React8.useMemo(() => (...args) => callbackRef.current?.(...args), []); } // node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.2.2_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs - var React10 = __toESM(require_react(), 1); + var React9 = __toESM(require_react(), 1); var React23 = __toESM(require_react(), 1); - var useInsertionEffect = React10[" useInsertionEffect ".trim().toString()] || useLayoutEffect2; + var useInsertionEffect = React9[" useInsertionEffect ".trim().toString()] || useLayoutEffect2; function useControllableState({ prop, defaultProp, @@ -30817,8 +30822,8 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); const isControlled = prop !== void 0; const value = isControlled ? prop : uncontrolledProp; if (true) { - const isControlledRef = React10.useRef(prop !== void 0); - React10.useEffect(() => { + const isControlledRef = React9.useRef(prop !== void 0); + React9.useEffect(() => { const wasControlled = isControlledRef.current; if (wasControlled !== isControlled) { const from = wasControlled ? "controlled" : "uncontrolled"; @@ -30830,7 +30835,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); isControlledRef.current = isControlled; }, [isControlled, caller]); } - const setValue = React10.useCallback( + const setValue = React9.useCallback( (nextValue) => { if (isControlled) { const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue; @@ -30849,13 +30854,13 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); defaultProp, onChange }) { - const [value, setValue] = React10.useState(defaultProp); - const prevValueRef = React10.useRef(value); - const onChangeRef = React10.useRef(onChange); + const [value, setValue] = React9.useState(defaultProp); + const prevValueRef = React9.useRef(value); + const onChangeRef = React9.useRef(onChange); useInsertionEffect(() => { onChangeRef.current = onChange; }, [onChange]); - React10.useEffect(() => { + React9.useEffect(() => { if (prevValueRef.current !== value) { onChangeRef.current?.(value); prevValueRef.current = value; @@ -30869,11 +30874,11 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); var SYNC_STATE = Symbol("RADIX:SYNC_STATE"); // node_modules/.pnpm/@radix-ui+react-direction@1.1.1_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-direction/dist/index.mjs - var React11 = __toESM(require_react(), 1); + var React10 = __toESM(require_react(), 1); var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1); - var DirectionContext = React11.createContext(void 0); + var DirectionContext = React10.createContext(void 0); function useDirection(localDir) { - const globalDir = React11.useContext(DirectionContext); + const globalDir = React10.useContext(DirectionContext); return localDir || globalDir || "ltr"; } @@ -30889,13 +30894,13 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); [createCollectionScope] ); var [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME); - var RovingFocusGroup = React12.forwardRef( + var RovingFocusGroup = React11.forwardRef( (props, forwardedRef) => { return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) }); } ); RovingFocusGroup.displayName = GROUP_NAME; - var RovingFocusGroupImpl = React12.forwardRef((props, forwardedRef) => { + var RovingFocusGroupImpl = React11.forwardRef((props, forwardedRef) => { const { __scopeRovingFocusGroup, orientation, @@ -30908,7 +30913,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); preventScrollOnEntryFocus = false, ...groupProps } = props; - const ref = React12.useRef(null); + const ref = React11.useRef(null); const composedRefs = useComposedRefs(forwardedRef, ref); const direction = useDirection(dir); const [currentTabStopId, setCurrentTabStopId] = useControllableState({ @@ -30917,12 +30922,12 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); onChange: onCurrentTabStopIdChange, caller: GROUP_NAME }); - const [isTabbingBackOut, setIsTabbingBackOut] = React12.useState(false); + const [isTabbingBackOut, setIsTabbingBackOut] = React11.useState(false); const handleEntryFocus = useCallbackRef(onEntryFocus); const getItems = useCollection(__scopeRovingFocusGroup); - const isClickFocusRef = React12.useRef(false); - const [focusableItemsCount, setFocusableItemsCount] = React12.useState(0); - React12.useEffect(() => { + const isClickFocusRef = React11.useRef(false); + const [focusableItemsCount, setFocusableItemsCount] = React11.useState(0); + React11.useEffect(() => { const node = ref.current; if (node) { node.addEventListener(ENTRY_FOCUS, handleEntryFocus); @@ -30937,16 +30942,16 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); dir: direction, loop, currentTabStopId, - onItemFocus: React12.useCallback( + onItemFocus: React11.useCallback( (tabStopId) => setCurrentTabStopId(tabStopId), [setCurrentTabStopId] ), - onItemShiftTab: React12.useCallback(() => setIsTabbingBackOut(true), []), - onFocusableItemAdd: React12.useCallback( + onItemShiftTab: React11.useCallback(() => setIsTabbingBackOut(true), []), + onFocusableItemAdd: React11.useCallback( () => setFocusableItemsCount((prevCount) => prevCount + 1), [] ), - onFocusableItemRemove: React12.useCallback( + onFocusableItemRemove: React11.useCallback( () => setFocusableItemsCount((prevCount) => prevCount - 1), [] ), @@ -30986,7 +30991,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); ); }); var ITEM_NAME = "RovingFocusGroupItem"; - var RovingFocusGroupItem = React12.forwardRef( + var RovingFocusGroupItem = React11.forwardRef( (props, forwardedRef) => { const { __scopeRovingFocusGroup, @@ -31002,7 +31007,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); const isCurrentTabStop = context.currentTabStopId === id; const getItems = useCollection(__scopeRovingFocusGroup); const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context; - React12.useEffect(() => { + React11.useEffect(() => { if (focusable) { onFocusableItemAdd(); return () => onFocusableItemRemove(); @@ -31103,10 +31108,10 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); // node_modules/.pnpm/@radix-ui+react-presence@1.1.5_@types+react-dom@19.0.2_@types+react@19.0.2__@types+reac_100e8a92f6fdf86fd4a0d9e34245f26e/node_modules/@radix-ui/react-presence/dist/index.mjs var React24 = __toESM(require_react(), 1); - var React13 = __toESM(require_react(), 1); + var React12 = __toESM(require_react(), 1); "use client"; function useStateMachine(initialState, machine) { - return React13.useReducer((state, event) => { + return React12.useReducer((state, event) => { const nextState = machine[state][event]; return nextState ?? state; }, initialState); @@ -31237,7 +31242,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); ]); var useRovingFocusGroupScope = createRovingFocusGroupScope(); var [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME); - var Tabs = React14.forwardRef( + var Tabs = React13.forwardRef( (props, forwardedRef) => { const { __scopeTabs, @@ -31281,7 +31286,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); ); Tabs.displayName = TABS_NAME; var TAB_LIST_NAME = "TabsList"; - var TabsList = React14.forwardRef( + var TabsList = React13.forwardRef( (props, forwardedRef) => { const { __scopeTabs, loop = true, ...listProps } = props; const context = useTabsContext(TAB_LIST_NAME, __scopeTabs); @@ -31309,7 +31314,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); ); TabsList.displayName = TAB_LIST_NAME; var TRIGGER_NAME = "TabsTrigger"; - var TabsTrigger = React14.forwardRef( + var TabsTrigger = React13.forwardRef( (props, forwardedRef) => { const { __scopeTabs, value, disabled = false, ...triggerProps } = props; const context = useTabsContext(TRIGGER_NAME, __scopeTabs); @@ -31362,15 +31367,15 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); ); TabsTrigger.displayName = TRIGGER_NAME; var CONTENT_NAME = "TabsContent"; - var TabsContent = React14.forwardRef( + var TabsContent = React13.forwardRef( (props, forwardedRef) => { const { __scopeTabs, value, forceMount, children, ...contentProps } = props; const context = useTabsContext(CONTENT_NAME, __scopeTabs); const triggerId = makeTriggerId(context.baseId, value); const contentId = makeContentId(context.baseId, value); const isSelected = value === context.value; - const isMountAnimationPreventedRef = React14.useRef(isSelected); - React14.useEffect(() => { + const isMountAnimationPreventedRef = React13.useRef(isSelected); + React13.useEffect(() => { const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false); return () => cancelAnimationFrame(rAF); }, []); @@ -31408,6 +31413,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); var Content = TabsContent; // extension/popup.jsx + var import_jsx_runtime = __toESM(require_jsx_runtime()); function Popup() { const [keys, setKeys] = (0, import_react3.useState)(null); const avatarURI = (0, import_react3.useMemo)( @@ -31447,105 +31453,170 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } }); }, []); - return /* @__PURE__ */ React.createElement("div", { - className: "w-[320px] p-6" - }, !keys ? /* @__PURE__ */ React.createElement("div", { - className: "flex items-center justify-between gap-6" - }, /* @__PURE__ */ React.createElement("div", { - className: "flex-1 flex items-center justify-between" - }, /* @__PURE__ */ React.createElement("p", { - className: "text-sm font-medium" - }, "Click here to enter or create", /* @__PURE__ */ React.createElement("br", null), "your first identity"), /* @__PURE__ */ React.createElement("svg", { - xmlns: "http://www.w3.org/2000/svg", - fill: "none", - viewBox: "0 0 24 24", - strokeWidth: 1.5, - stroke: "currentColor", - className: "w-6 h-6", - "aria-hidden": "true" - }, /* @__PURE__ */ React.createElement("path", { - strokeLinecap: "round", - strokeLinejoin: "round", - d: "M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3" - }))), /* @__PURE__ */ React.createElement("button", { - type: "button", - onClick: () => gotoSettings(), - className: "w-9 h-9 shrink-0 border border-primary shadow-sm rounded-xl inline-flex items-center justify-center" - }, /* @__PURE__ */ React.createElement(SettingsIcon, { - className: "w-5 h-5 text-muted" - }))) : /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { - className: "mb-2 flex items-center justify-between" - }, /* @__PURE__ */ React.createElement("div", { - className: "flex items-center gap-2" - }, avatarURI ? /* @__PURE__ */ React.createElement("img", { - src: avatarURI, - className: "w-9 h-9 rounded-full bg-muted", - alt: "Avatar" - }) : /* @__PURE__ */ React.createElement("div", { - className: "w-9 h-9 rounded-full bg-muted" - }), /* @__PURE__ */ React.createElement("p", { - className: "font-semibold" - }, "Account")), /* @__PURE__ */ React.createElement("button", { - type: "button", - onClick: () => gotoSettings(), - className: "w-9 h-9 shrink-0 border border-primary shadow-sm rounded-xl inline-flex items-center justify-center" - }, /* @__PURE__ */ React.createElement(SettingsIcon, { - className: "w-5 h-5 text-muted" - }))), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement(Root2, { - defaultValue: "npub" - }, /* @__PURE__ */ React.createElement(List, { - className: "w-full border-b border-primary h-10 flex items-center" - }, /* @__PURE__ */ React.createElement(Trigger, { - value: "npub", - className: "font-medium flex-1 flex items-center justify-center text-muted h-10 data-[state=active]:text-primary data-[state=active]:border-b data-[state=active]:border-secondary" - }, "npub"), /* @__PURE__ */ React.createElement(Trigger, { - value: "hex", - className: "font-medium flex-1 flex items-center justify-center text-muted h-10 data-[state=active]:text-primary data-[state=active]:border-b data-[state=active]:border-secondary" - }, "hex"), keys.nprofile ? /* @__PURE__ */ React.createElement(Trigger, { - value: "nprofile", - className: "font-medium flex-1 flex items-center justify-center text-muted h-10 data-[state=active]:text-primary data-[state=active]:border-b data-[state=active]:border-secondary" - }, "nprofile") : null), /* @__PURE__ */ React.createElement(Content, { - value: "npub" - }, /* @__PURE__ */ React.createElement("div", { - className: "my-4" - }, /* @__PURE__ */ React.createElement("textarea", { - value: keys.npub, - readOnly: true, - className: "w-full h-20 resize-none p-3 bg-muted rounded-xl" - })), /* @__PURE__ */ React.createElement("div", { - className: "w-full rounded-xl border border-primary p-4 flex items-center justify-center" - }, /* @__PURE__ */ React.createElement(import_react_qr_code.default, { - size: 128, - value: keys.npub - }))), /* @__PURE__ */ React.createElement(Content, { - value: "hex" - }, /* @__PURE__ */ React.createElement("div", { - className: "my-4" - }, /* @__PURE__ */ React.createElement("textarea", { - value: keys.hex, - readOnly: true, - className: "w-full h-20 resize-none p-3 bg-muted rounded-xl" - })), /* @__PURE__ */ React.createElement("div", { - className: "w-full rounded-xl border border-primary p-4 flex items-center justify-center" - }, /* @__PURE__ */ React.createElement(import_react_qr_code.default, { - size: 128, - value: keys.hex - }))), keys.nprofile ? /* @__PURE__ */ React.createElement(Content, { - value: "nprofile" - }, /* @__PURE__ */ React.createElement("div", { - className: "my-4" - }, /* @__PURE__ */ React.createElement("textarea", { - value: keys.nprofile, - readOnly: true, - className: "w-full h-20 resize-none p-3 bg-muted rounded-xl" - })), /* @__PURE__ */ React.createElement("div", { - className: "w-full rounded-xl border border-primary p-4 flex items-center justify-center" - }, /* @__PURE__ */ React.createElement(import_react_qr_code.default, { - size: 128, - value: keys.nprofile - }))) : null)))); + return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { + className: "w-[320px] p-6", + children: !keys ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "flex items-center justify-between gap-6", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "flex-1 flex items-center justify-between", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { + className: "text-sm font-medium", + children: [ + "Click here to enter or create", + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("br", {}), + "your first identity" + ] + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + className: "w-6 h-6", + "aria-hidden": "true", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3" + }) + }) + ] + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { + type: "button", + onClick: () => gotoSettings(), + className: "w-9 h-9 shrink-0 border border-primary shadow-sm rounded-xl inline-flex items-center justify-center", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SettingsIcon, { + className: "w-5 h-5 text-muted" + }) + }) + ] + }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "mb-2 flex items-center justify-between", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "flex items-center gap-2", + children: [ + avatarURI ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", { + src: avatarURI, + className: "w-9 h-9 rounded-full bg-muted", + alt: "Avatar" + }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { + className: "w-9 h-9 rounded-full bg-muted" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { + className: "font-semibold", + children: "Account" + }) + ] + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { + type: "button", + onClick: () => gotoSettings(), + className: "w-9 h-9 shrink-0 border border-primary shadow-sm rounded-xl inline-flex items-center justify-center", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SettingsIcon, { + className: "w-5 h-5 text-muted" + }) + }) + ] + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { + children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Root2, { + defaultValue: "npub", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(List, { + className: "w-full border-b border-primary h-10 flex items-center", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Trigger, { + value: "npub", + className: "font-medium flex-1 flex items-center justify-center text-muted h-10 data-[state=active]:text-primary data-[state=active]:border-b data-[state=active]:border-secondary", + children: "npub" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Trigger, { + value: "hex", + className: "font-medium flex-1 flex items-center justify-center text-muted h-10 data-[state=active]:text-primary data-[state=active]:border-b data-[state=active]:border-secondary", + children: "hex" + }), + keys.nprofile ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Trigger, { + value: "nprofile", + className: "font-medium flex-1 flex items-center justify-center text-muted h-10 data-[state=active]:text-primary data-[state=active]:border-b data-[state=active]:border-secondary", + children: "nprofile" + }) : null + ] + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Content, { + value: "npub", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { + className: "my-4", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("textarea", { + value: keys.npub, + readOnly: true, + className: "w-full h-20 resize-none p-3 bg-muted rounded-xl" + }) + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { + className: "w-full rounded-xl border border-primary p-4 flex items-center justify-center", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_qr_code.default, { + size: 128, + value: keys.npub + }) + }) + ] + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Content, { + value: "hex", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { + className: "my-4", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("textarea", { + value: keys.hex, + readOnly: true, + className: "w-full h-20 resize-none p-3 bg-muted rounded-xl" + }) + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { + className: "w-full rounded-xl border border-primary p-4 flex items-center justify-center", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_qr_code.default, { + size: 128, + value: keys.hex + }) + }) + ] + }), + keys.nprofile ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Content, { + value: "nprofile", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { + className: "my-4", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("textarea", { + value: keys.nprofile, + readOnly: true, + className: "w-full h-20 resize-none p-3 bg-muted rounded-xl" + }) + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { + className: "w-full rounded-xl border border-primary p-4 flex items-center justify-center", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_qr_code.default, { + size: 128, + value: keys.nprofile + }) + }) + ] + }) : null + ] + }) + }) + ] + }) + }); } - (0, import_react_dom.render)(/* @__PURE__ */ React.createElement(Popup, null), document.getElementById("main")); + (0, import_react_dom.render)(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Popup, {}), document.getElementById("main")); })(); /* object-assign diff --git a/extension/output/prompt.build.js b/extension/output/prompt.build.js index 7ddf1dc..63a7f44 100644 --- a/extension/output/prompt.build.js +++ b/extension/output/prompt.build.js @@ -3443,11 +3443,11 @@ if (true) { (function() { "use strict"; - var React12 = require_react(); + var React11 = require_react(); var _assign = require_object_assign(); var Scheduler = require_scheduler(); var tracing = require_tracing(); - var ReactSharedInternals = React12.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + var ReactSharedInternals = React11.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; function warn(format) { { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { @@ -3479,7 +3479,7 @@ Function.prototype.apply.call(console[level], console, argsWithFormat); } } - if (!React12) { + if (!React11) { { throw Error("ReactDOM was loaded before React. Make sure you load the React package before loading ReactDOM."); } @@ -4815,7 +4815,7 @@ var didWarnInvalidChild = false; function flattenChildren(children) { var content = ""; - React12.Children.forEach(children, function(child) { + React11.Children.forEach(children, function(child) { if (child == null) { return; } @@ -4826,7 +4826,7 @@ function validateProps(element, props) { { if (typeof props.children === "object" && props.children !== null) { - React12.Children.forEach(props.children, function(child) { + React11.Children.forEach(props.children, function(child) { if (child == null) { return; } @@ -12029,7 +12029,7 @@ } var fakeInternalInstance = {}; var isArray = Array.isArray; - var emptyRefsObject = new React12.Component().refs; + var emptyRefsObject = new React11.Component().refs; var didWarnAboutStateAssignmentForComponent; var didWarnAboutUninitializedState; var didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate; @@ -21632,7 +21632,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); if (true) { (function() { "use strict"; - var React12 = require_react(); + var React11 = require_react(); var _assign = require_object_assign(); var REACT_ELEMENT_TYPE = 60103; var REACT_PORTAL_TYPE = 60106; @@ -21689,7 +21689,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } return null; } - var ReactSharedInternals = React12.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + var ReactSharedInternals = React11.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; function error(format) { { for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { @@ -22459,10 +22459,10 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); return jsxWithValidation(type, props, key, false); } } - var jsx5 = jsxWithValidationDynamic; - var jsxs2 = jsxWithValidationStatic; - exports.jsx = jsx5; - exports.jsxs = jsxs2; + var jsx7 = jsxWithValidationDynamic; + var jsxs4 = jsxWithValidationStatic; + exports.jsx = jsx7; + exports.jsxs = jsxs4; })(); } } @@ -22497,73 +22497,93 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); ]); // extension/icons.jsx + var import_jsx_runtime = __toESM(require_jsx_runtime()); function LogoIcon() { - return /* @__PURE__ */ React.createElement("svg", { + return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { xmlns: "http://www.w3.org/2000/svg", width: "56", height: "56", fill: "none", viewBox: "0 0 56 56", - "aria-label": "Nostr Connect logo" - }, /* @__PURE__ */ React.createElement("rect", { - width: "56", - height: "56", - fill: "#EEECFD", - rx: "16" - }), /* @__PURE__ */ React.createElement("rect", { - width: "55", - height: "55", - x: "0.5", - y: "0.5", - stroke: "#5A41F4", - strokeOpacity: "0.25", - rx: "15.5" - }), /* @__PURE__ */ React.createElement("rect", { - width: "39", - height: "39", - x: "8.5", - y: "8.5", - fill: "url(#paint0_linear_24_2379)", - rx: "19.5" - }), /* @__PURE__ */ React.createElement("rect", { - width: "39", - height: "39", - x: "8.5", - y: "8.5", - stroke: "#6149F6", - rx: "19.5" - }), /* @__PURE__ */ React.createElement("g", { - fill: "#fff", - stroke: "#6149F6", - clipPath: "url(#clip0_24_2379)" - }, /* @__PURE__ */ React.createElement("path", { - d: "M23.78 20.634l.408-.235-.21-.422a4.432 4.432 0 01-.458-1.797l-.031-.78-.696.355A11.533 11.533 0 0016.5 27.998h0V28c.002.87.103 1.738.302 2.585a3.525 3.525 0 102.843-1.058A8.377 8.377 0 0119.5 28a8.523 8.523 0 014.28-7.366zM36.5 28.023v.468l.467.03c.621.042 1.227.212 1.778.5l.687.36.044-.774.005-.075c.01-.166.02-.349.02-.532v-.001a11.524 11.524 0 00-8.142-10.99 3.526 3.526 0 10-.501 2.989A8.524 8.524 0 0136.5 28s0 0 0 0v.022zM33.185 32.622a3.49 3.49 0 00.311 1.844 8.442 8.442 0 01-9.766.877l-.407-.239-.262.392c-.343.514-.79.95-1.311 1.282l-.652.414.645.425a11.39 11.39 0 0014.092-1.23c.264.069.536.107.81.113h.01a3.5 3.5 0 002.803-5.6h.556l-1.603-.932a3.49 3.49 0 00-5.226 2.654z" - })), /* @__PURE__ */ React.createElement("defs", null, /* @__PURE__ */ React.createElement("linearGradient", { - id: "paint0_linear_24_2379", - x1: "28", - x2: "28", - y1: "8", - y2: "48", - gradientUnits: "userSpaceOnUse" - }, /* @__PURE__ */ React.createElement("stop", { - stopColor: "#8E7CFF" - }), /* @__PURE__ */ React.createElement("stop", { - offset: "1", - stopColor: "#5A41F4" - })), /* @__PURE__ */ React.createElement("clipPath", { - id: "clip0_24_2379" - }, /* @__PURE__ */ React.createElement("path", { - fill: "#fff", - d: "M0 0H24V24H0z", - transform: "translate(16 15)" - })))); + "aria-label": "Nostr Connect logo", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", { + width: "56", + height: "56", + fill: "#EEECFD", + rx: "16" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", { + width: "55", + height: "55", + x: "0.5", + y: "0.5", + stroke: "#5A41F4", + strokeOpacity: "0.25", + rx: "15.5" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", { + width: "39", + height: "39", + x: "8.5", + y: "8.5", + fill: "url(#paint0_linear_24_2379)", + rx: "19.5" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("rect", { + width: "39", + height: "39", + x: "8.5", + y: "8.5", + stroke: "#6149F6", + rx: "19.5" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", { + fill: "#fff", + stroke: "#6149F6", + clipPath: "url(#clip0_24_2379)", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { + d: "M23.78 20.634l.408-.235-.21-.422a4.432 4.432 0 01-.458-1.797l-.031-.78-.696.355A11.533 11.533 0 0016.5 27.998h0V28c.002.87.103 1.738.302 2.585a3.525 3.525 0 102.843-1.058A8.377 8.377 0 0119.5 28a8.523 8.523 0 014.28-7.366zM36.5 28.023v.468l.467.03c.621.042 1.227.212 1.778.5l.687.36.044-.774.005-.075c.01-.166.02-.349.02-.532v-.001a11.524 11.524 0 00-8.142-10.99 3.526 3.526 0 10-.501 2.989A8.524 8.524 0 0136.5 28s0 0 0 0v.022zM33.185 32.622a3.49 3.49 0 00.311 1.844 8.442 8.442 0 01-9.766.877l-.407-.239-.262.392c-.343.514-.79.95-1.311 1.282l-.652.414.645.425a11.39 11.39 0 0014.092-1.23c.264.069.536.107.81.113h.01a3.5 3.5 0 002.803-5.6h.556l-1.603-.932a3.49 3.49 0 00-5.226 2.654z" + }) + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("defs", { + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("linearGradient", { + id: "paint0_linear_24_2379", + x1: "28", + x2: "28", + y1: "8", + y2: "48", + gradientUnits: "userSpaceOnUse", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("stop", { + stopColor: "#8E7CFF" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("stop", { + offset: "1", + stopColor: "#5A41F4" + }) + ] + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("clipPath", { + id: "clip0_24_2379", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { + fill: "#fff", + d: "M0 0H24V24H0z", + transform: "translate(16 15)" + }) + }) + ] + }) + ] + }); } // node_modules/.pnpm/@radix-ui+react-checkbox@1.3.3_@types+react-dom@19.0.2_@types+react@19.0.2__@types+reac_d96e45962cc5ba292a62810b70da3303/node_modules/@radix-ui/react-checkbox/dist/index.mjs - var React11 = __toESM(require_react(), 1); + var React10 = __toESM(require_react(), 1); // node_modules/.pnpm/@radix-ui+react-compose-refs@1.1.2_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-compose-refs/dist/index.mjs - var React2 = __toESM(require_react(), 1); + var React = __toESM(require_react(), 1); function setRef(ref, value) { if (typeof ref === "function") { return ref(value); @@ -22596,28 +22616,28 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); }; } function useComposedRefs(...refs) { - return React2.useCallback(composeRefs(...refs), refs); + return React.useCallback(composeRefs(...refs), refs); } // node_modules/.pnpm/@radix-ui+react-context@1.1.2_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-context/dist/index.mjs - var React3 = __toESM(require_react(), 1); + var React2 = __toESM(require_react(), 1); var import_jsx_runtime = __toESM(require_jsx_runtime(), 1); function createContextScope(scopeName, createContextScopeDeps = []) { let defaultContexts = []; function createContext3(rootComponentName, defaultContext) { - const BaseContext = React3.createContext(defaultContext); + const BaseContext = React2.createContext(defaultContext); const index = defaultContexts.length; defaultContexts = [...defaultContexts, defaultContext]; const Provider = (props) => { const { scope, children, ...context } = props; const Context = scope?.[scopeName]?.[index] || BaseContext; - const value = React3.useMemo(() => context, Object.values(context)); + const value = React2.useMemo(() => context, Object.values(context)); return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Context.Provider, { value, children }); }; Provider.displayName = rootComponentName + "Provider"; function useContext2(consumerName, scope) { const Context = scope?.[scopeName]?.[index] || BaseContext; - const context = React3.useContext(Context); + const context = React2.useContext(Context); if (context) return context; if (defaultContext !== void 0) @@ -22628,11 +22648,11 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } const createScope = () => { const scopeContexts = defaultContexts.map((defaultContext) => { - return React3.createContext(defaultContext); + return React2.createContext(defaultContext); }); return function useScope(scope) { const contexts = scope?.[scopeName] || scopeContexts; - return React3.useMemo( + return React2.useMemo( () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }), [scope, contexts] ); @@ -22656,7 +22676,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); const currentScope = scopeProps[`__scope${scopeName}`]; return { ...nextScopes2, ...currentScope }; }, {}); - return React3.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]); + return React2.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]); }; }; createScope.scopeName = baseScope.scopeName; @@ -22675,16 +22695,16 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } // node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.2.2_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs - var React5 = __toESM(require_react(), 1); + var React4 = __toESM(require_react(), 1); // node_modules/.pnpm/@radix-ui+react-use-layout-effect@1.1.1_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs - var React4 = __toESM(require_react(), 1); - var useLayoutEffect2 = globalThis?.document ? React4.useLayoutEffect : () => { + var React3 = __toESM(require_react(), 1); + var useLayoutEffect2 = globalThis?.document ? React3.useLayoutEffect : () => { }; // node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.2.2_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs var React22 = __toESM(require_react(), 1); - var useInsertionEffect = React5[" useInsertionEffect ".trim().toString()] || useLayoutEffect2; + var useInsertionEffect = React4[" useInsertionEffect ".trim().toString()] || useLayoutEffect2; function useControllableState({ prop, defaultProp, @@ -22699,8 +22719,8 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); const isControlled = prop !== void 0; const value = isControlled ? prop : uncontrolledProp; if (true) { - const isControlledRef = React5.useRef(prop !== void 0); - React5.useEffect(() => { + const isControlledRef = React4.useRef(prop !== void 0); + React4.useEffect(() => { const wasControlled = isControlledRef.current; if (wasControlled !== isControlled) { const from = wasControlled ? "controlled" : "uncontrolled"; @@ -22712,7 +22732,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); isControlledRef.current = isControlled; }, [isControlled, caller]); } - const setValue = React5.useCallback( + const setValue = React4.useCallback( (nextValue) => { if (isControlled) { const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue; @@ -22731,13 +22751,13 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); defaultProp, onChange }) { - const [value, setValue] = React5.useState(defaultProp); - const prevValueRef = React5.useRef(value); - const onChangeRef = React5.useRef(onChange); + const [value, setValue] = React4.useState(defaultProp); + const prevValueRef = React4.useRef(value); + const onChangeRef = React4.useRef(onChange); useInsertionEffect(() => { onChangeRef.current = onChange; }, [onChange]); - React5.useEffect(() => { + React4.useEffect(() => { if (prevValueRef.current !== value) { onChangeRef.current?.(value); prevValueRef.current = value; @@ -22751,10 +22771,10 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); var SYNC_STATE = Symbol("RADIX:SYNC_STATE"); // node_modules/.pnpm/@radix-ui+react-use-previous@1.1.1_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-use-previous/dist/index.mjs - var React6 = __toESM(require_react(), 1); + var React5 = __toESM(require_react(), 1); function usePrevious(value) { - const ref = React6.useRef({ value, previous: value }); - return React6.useMemo(() => { + const ref = React5.useRef({ value, previous: value }); + return React5.useMemo(() => { if (ref.current.value !== value) { ref.current.previous = ref.current.value; ref.current.value = value; @@ -22764,9 +22784,9 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } // node_modules/.pnpm/@radix-ui+react-use-size@1.1.1_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-use-size/dist/index.mjs - var React7 = __toESM(require_react(), 1); + var React6 = __toESM(require_react(), 1); function useSize(element) { - const [size, setSize] = React7.useState(void 0); + const [size, setSize] = React6.useState(void 0); useLayoutEffect2(() => { if (element) { setSize({ width: element.offsetWidth, height: element.offsetHeight }); @@ -22802,10 +22822,10 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); // node_modules/.pnpm/@radix-ui+react-presence@1.1.5_@types+react-dom@19.0.2_@types+react@19.0.2__@types+reac_100e8a92f6fdf86fd4a0d9e34245f26e/node_modules/@radix-ui/react-presence/dist/index.mjs var React23 = __toESM(require_react(), 1); - var React8 = __toESM(require_react(), 1); + var React7 = __toESM(require_react(), 1); "use client"; function useStateMachine(initialState, machine) { - return React8.useReducer((state, event) => { + return React7.useReducer((state, event) => { const nextState = machine[state][event]; return nextState ?? state; }, initialState); @@ -22928,30 +22948,30 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } // node_modules/.pnpm/@radix-ui+react-primitive@2.1.3_@types+react-dom@19.0.2_@types+react@19.0.2__@types+rea_4d2f7b7fa17f2c71e22e7a2adbe76a73/node_modules/@radix-ui/react-primitive/dist/index.mjs - var React10 = __toESM(require_react(), 1); + var React9 = __toESM(require_react(), 1); var ReactDOM = __toESM(require_react_dom(), 1); // node_modules/.pnpm/@radix-ui+react-slot@1.2.3_@types+react@19.0.2_react@17.0.2/node_modules/@radix-ui/react-slot/dist/index.mjs - var React9 = __toESM(require_react(), 1); + var React8 = __toESM(require_react(), 1); var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1); function createSlot(ownerName) { const SlotClone = /* @__PURE__ */ createSlotClone(ownerName); - const Slot2 = React9.forwardRef((props, forwardedRef) => { + const Slot2 = React8.forwardRef((props, forwardedRef) => { const { children, ...slotProps } = props; - const childrenArray = React9.Children.toArray(children); + const childrenArray = React8.Children.toArray(children); const slottable = childrenArray.find(isSlottable); if (slottable) { const newElement = slottable.props.children; const newChildren = childrenArray.map((child) => { if (child === slottable) { - if (React9.Children.count(newElement) > 1) - return React9.Children.only(null); - return React9.isValidElement(newElement) ? newElement.props.children : null; + if (React8.Children.count(newElement) > 1) + return React8.Children.only(null); + return React8.isValidElement(newElement) ? newElement.props.children : null; } else { return child; } }); - return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: React9.isValidElement(newElement) ? React9.cloneElement(newElement, void 0, newChildren) : null }); + return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: React8.isValidElement(newElement) ? React8.cloneElement(newElement, void 0, newChildren) : null }); } return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children }); }); @@ -22959,24 +22979,24 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); return Slot2; } function createSlotClone(ownerName) { - const SlotClone = React9.forwardRef((props, forwardedRef) => { + const SlotClone = React8.forwardRef((props, forwardedRef) => { const { children, ...slotProps } = props; - if (React9.isValidElement(children)) { + if (React8.isValidElement(children)) { const childrenRef = getElementRef2(children); const props2 = mergeProps(slotProps, children.props); - if (children.type !== React9.Fragment) { + if (children.type !== React8.Fragment) { props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef; } - return React9.cloneElement(children, props2); + return React8.cloneElement(children, props2); } - return React9.Children.count(children) > 1 ? React9.Children.only(null) : null; + return React8.Children.count(children) > 1 ? React8.Children.only(null) : null; }); SlotClone.displayName = `${ownerName}.SlotClone`; return SlotClone; } var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable"); function isSlottable(child) { - return React9.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER; + return React8.isValidElement(child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER; } function mergeProps(slotProps, childProps) { const overrideProps = { ...childProps }; @@ -23039,7 +23059,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); ]; var Primitive = NODES.reduce((primitive, node) => { const Slot = createSlot(`Primitive.${node}`); - const Node = React10.forwardRef((props, forwardedRef) => { + const Node = React9.forwardRef((props, forwardedRef) => { const { asChild, ...primitiveProps } = props; const Comp = asChild ? Slot : node; if (typeof self !== "undefined") { @@ -23077,9 +23097,9 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); onChange: onCheckedChange, caller: CHECKBOX_NAME }); - const [control, setControl] = React11.useState(null); - const [bubbleInput, setBubbleInput] = React11.useState(null); - const hasConsumerStoppedPropagationRef = React11.useRef(false); + const [control, setControl] = React10.useState(null); + const [bubbleInput, setBubbleInput] = React10.useState(null); + const hasConsumerStoppedPropagationRef = React10.useRef(false); const isFormControl = control ? !!form || !!control.closest("form") : true; const context = { checked, @@ -23107,7 +23127,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); ); } var TRIGGER_NAME = "CheckboxTrigger"; - var CheckboxTrigger = React11.forwardRef( + var CheckboxTrigger = React10.forwardRef( ({ __scopeCheckbox, onKeyDown, onClick, ...checkboxProps }, forwardedRef) => { const { control, @@ -23122,8 +23142,8 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); bubbleInput } = useCheckboxContext(TRIGGER_NAME, __scopeCheckbox); const composedRefs = useComposedRefs(forwardedRef, setControl); - const initialCheckedStateRef = React11.useRef(checked); - React11.useEffect(() => { + const initialCheckedStateRef = React10.useRef(checked); + React10.useEffect(() => { const form = control?.form; if (form) { const reset = () => setChecked(initialCheckedStateRef.current); @@ -23161,7 +23181,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } ); CheckboxTrigger.displayName = TRIGGER_NAME; - var Checkbox = React11.forwardRef( + var Checkbox = React10.forwardRef( (props, forwardedRef) => { const { __scopeCheckbox, @@ -23209,7 +23229,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); ); Checkbox.displayName = CHECKBOX_NAME; var INDICATOR_NAME = "CheckboxIndicator"; - var CheckboxIndicator = React11.forwardRef( + var CheckboxIndicator = React10.forwardRef( (props, forwardedRef) => { const { __scopeCheckbox, forceMount, ...indicatorProps } = props; const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox); @@ -23233,7 +23253,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); ); CheckboxIndicator.displayName = INDICATOR_NAME; var BUBBLE_INPUT_NAME = "CheckboxBubbleInput"; - var CheckboxBubbleInput = React11.forwardRef( + var CheckboxBubbleInput = React10.forwardRef( ({ __scopeCheckbox, ...props }, forwardedRef) => { const { control, @@ -23251,7 +23271,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); const composedRefs = useComposedRefs(forwardedRef, setBubbleInput); const prevChecked = usePrevious(checked); const controlSize = useSize(control); - React11.useEffect(() => { + React10.useEffect(() => { const input = bubbleInput; if (!input) return; @@ -23269,7 +23289,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); input.dispatchEvent(event); } }, [bubbleInput, prevChecked, checked, hasConsumerStoppedPropagationRef]); - const defaultCheckedRef = React11.useRef(isIndeterminate(checked) ? false : checked); + const defaultCheckedRef = React10.useRef(isIndeterminate(checked) ? false : checked); return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)( Primitive.input, { @@ -23309,6 +23329,7 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); } // extension/prompt.jsx + var import_jsx_runtime = __toESM(require_jsx_runtime()); function Prompt() { const [isRemember, setIsRemember] = (0, import_react.useState)(false); const qs = new URLSearchParams(location.search); @@ -23339,58 +23360,107 @@ For more info, visit https://reactjs.org/link/mock-scheduler`); }); }; } - return /* @__PURE__ */ React.createElement("div", { - className: "w-screen h-screen flex flex-col items-center justify-center" - }, /* @__PURE__ */ React.createElement("div", { - className: "p-8 shadow-primary border border-primary rounded-2xl max-w-xl mx-auto flex flex-col gap-5" - }, /* @__PURE__ */ React.createElement("div", { - className: "flex flex-col items-center gap-5" - }, /* @__PURE__ */ React.createElement(LogoIcon, null), /* @__PURE__ */ React.createElement("div", { - className: "flex flex-col items-center text-center" - }, /* @__PURE__ */ React.createElement("h1", { - className: "font-semibold text-lg" - }, host), /* @__PURE__ */ React.createElement("p", null, "is requesting your permission to ", /* @__PURE__ */ React.createElement("b", null, PERMISSION_NAMES[type])))), params && /* @__PURE__ */ React.createElement("div", { - className: "flex flex-col gap-1" - }, /* @__PURE__ */ React.createElement("p", null, "Now acting on"), /* @__PURE__ */ React.createElement("pre", { - className: "bg-muted px-2 rounded-xl overflow-scroll" - }, /* @__PURE__ */ React.createElement("code", null, JSON.stringify(event || params, null, 2)))), /* @__PURE__ */ React.createElement("div", { - className: "flex flex-col gap-4" - }, /* @__PURE__ */ React.createElement("div", { - className: "flex items-center justify-center gap-2" - }, /* @__PURE__ */ React.createElement(Checkbox, { - id: "remember", - className: "flex h-6 w-6 appearance-none items-center justify-center rounded-lg bg-white outline-none border border-primary data-[state=checked]:bg-primary data-[state=checked]:border-secondary", - onCheckedChange: setIsRemember - }, /* @__PURE__ */ React.createElement(CheckboxIndicator, { - className: "text-white" - }, /* @__PURE__ */ React.createElement("svg", { - xmlns: "http://www.w3.org/2000/svg", - fill: "none", - viewBox: "0 0 24 24", - strokeWidth: 1.5, - stroke: "currentColor", - className: "w-4 h-4", - "aria-hidden": "true" - }, /* @__PURE__ */ React.createElement("path", { - strokeLinecap: "round", - strokeLinejoin: "round", - d: "M4.5 12.75l6 6 9-13.5" - })))), /* @__PURE__ */ React.createElement("label", { - htmlFor: "remember", - className: "text-muted" - }, "Remember my preference forever")), /* @__PURE__ */ React.createElement("div", { - className: "flex gap-3" - }, /* @__PURE__ */ React.createElement("button", { - type: "button", - onClick: authorizeHandler(false), - className: "flex-1 h-10 rounded-lg shadow-sm border border-primary inline-flex items-center justify-center font-semibold" - }, "Reject"), /* @__PURE__ */ React.createElement("button", { - type: "button", - onClick: authorizeHandler(true), - className: "flex-1 h-10 rounded-lg shadow-sm border border-secondary bg-primary text-white inline-flex items-center justify-center font-semibold" - }, "Authorize"))))); + return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { + className: "w-screen h-screen flex flex-col items-center justify-center", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "p-8 shadow-primary border border-primary rounded-2xl max-w-xl mx-auto flex flex-col gap-5", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "flex flex-col items-center gap-5", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LogoIcon, {}), + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "flex flex-col items-center text-center", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", { + className: "font-semibold text-lg", + children: host + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { + children: [ + "is requesting your permission to ", + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("b", { + children: PERMISSION_NAMES[type] + }) + ] + }) + ] + }) + ] + }), + params && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "flex flex-col gap-1", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { + children: "Now acting on" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("pre", { + className: "bg-muted px-2 rounded-xl overflow-scroll", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", { + children: JSON.stringify(event || params, null, 2) + }) + }) + ] + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "flex flex-col gap-4", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "flex items-center justify-center gap-2", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Checkbox, { + id: "remember", + className: "flex h-6 w-6 appearance-none items-center justify-center rounded-lg bg-white outline-none border border-primary data-[state=checked]:bg-primary data-[state=checked]:border-secondary", + onCheckedChange: setIsRemember, + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CheckboxIndicator, { + className: "text-white", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: 1.5, + stroke: "currentColor", + className: "w-4 h-4", + "aria-hidden": "true", + children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M4.5 12.75l6 6 9-13.5" + }) + }) + }) + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("label", { + htmlFor: "remember", + className: "text-muted", + children: "Remember my preference forever" + }) + ] + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { + className: "flex gap-3", + children: [ + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { + type: "button", + onClick: authorizeHandler(false), + className: "flex-1 h-10 rounded-lg shadow-sm border border-primary inline-flex items-center justify-center font-semibold", + children: "Reject" + }), + /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { + type: "button", + onClick: authorizeHandler(true), + className: "flex-1 h-10 rounded-lg shadow-sm border border-secondary bg-primary text-white inline-flex items-center justify-center font-semibold", + children: "Authorize" + }) + ] + }) + ] + }) + ] + }) + }); } - (0, import_react_dom.render)(/* @__PURE__ */ React.createElement(Prompt, null), document.getElementById("main")); + (0, import_react_dom.render)(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Prompt, {}), document.getElementById("main")); })(); /* object-assign diff --git a/extension/utils.js b/extension/utils.js index 6ddfb22..015c0df 100644 --- a/extension/utils.js +++ b/extension/utils.js @@ -1,38 +1,38 @@ export class LRUCache { constructor(maxSize) { - this.maxSize = maxSize; - this.map = new Map(); - this.keys = []; + this.maxSize = maxSize + this.map = new Map() + this.keys = [] } clear() { - this.map.clear(); + this.map.clear() } has(k) { - return this.map.has(k); + return this.map.has(k) } get(k) { - const v = this.map.get(k); + const v = this.map.get(k) if (v !== undefined) { - this.keys.push(k); + this.keys.push(k) if (this.keys.length > this.maxSize * 2) { - this.keys.splice(-this.maxSize); + this.keys.splice(-this.maxSize) } } - return v; + return v } set(k, v) { - this.map.set(k, v); - this.keys.push(k); + this.map.set(k, v) + this.keys.push(k) if (this.map.size > this.maxSize) { - this.map.delete(this.keys.shift()); + this.map.delete(this.keys.shift()) } } }