From 7f12b468e6c1aed5786d819388a85eacf5b5e471 Mon Sep 17 00:00:00 2001 From: prosoponator <156670514+prosoponator@users.noreply.github.com> Date: Thu, 29 Aug 2024 09:00:54 +0100 Subject: [PATCH] Release 2.0.2 (#1340) * New git branches setup (#1296) * add dev branch to auto merge * make clippy run on new branch setup * remove version checker workflow * add dev and release branch triggers to consistent workflow name checker * Delete create_diagram.yml * add dev and release branch triggers to lint workflow * add release and dev branch triggers to provider_image workflow * remove release drafter * add dev and release branches to rustfmt workflow * add dev and release branches to protocol test workflow * add dev and release branches triggers to tests workflow * add dev and release branch triggers to webpack bundling workflow * switch cache creation to be post pr to dev * rename post_pr workflow to cache * Update cache.yml * publish workflow * Update cache.yml * fix contract js/rust version check workflow * install concurrently and cypress as workspace deps * fix cypress workflow trigger * fix cypress workflow branch triggers * fix rust file triggers * move webpack bundling check to tests workflow * remove typechain version check * rename workflows * make the github actions cache include the branch name * publish on push to main * add js bundle test step * workflow for ensuring all versions move in lockstep * blurb for each workflow * dockerhub login check for before a release * rename publish to release * remove typedoc step * standardise step ids in release workflow * dummy version bump * Delete dockerhub_login.yml * release version check * workflow to check for valid version bumps * auto merge all prs * check consistent workflow names on all prs * branch system docs * check contract version on prs to main,dev,release/* * add workflow_dispatch to all relevant workflows * make auto merge only run on non-draft prs * check versions on all branches * make release run on push to main * tag pushes to main * rename version check workflow * remove fetch all history and branches from clone * fix docker js server version issue * fix bump workflow to bump all package.json files and Cargo.tomls * fix package.json version writing in bump workflow * rename step * make auto merge cancellable * make deploy ahve a single notification of pass/fail * debug info * fix cache workflow name * don't use cache in bump version workflow, not needed * move buildx to top of workflow * move the cli building to before publishing images in deploy workflow * tag warning * remove filters for tests, test more often * add workflow dispatch to deploy workflow * add bash error catching * Create consistent_engine_node.yml * Create consistent_engine_npm.yml * Create consistent_nvmrc.yml * cache docs * event workflows for main and dev * change event setup * don't run unless non-draft pr * combine protocol clippy and rustfmt into single lint workflow * missing engine * missing version * revert version debug * fix version * fix workflow name detection * add missing engines * fix nvmrc check * fix path typo in contract version check * allow auto merge to run always * Update package-lock.json * lint * lint * Cache cypress install (#1305) * remove install cypress step from cache workflow * add cypress as dev dep * Add staging branch to workflow (#1311) * New linting (#1309) * lint dockerfiles * lint caddyfiles * lint github actions workflows * lint shell scripts * yaml lint * lint python * yamllint config * lint js * lint html * lint markdown * htmlhint ignore files * simplify caddy lint * replace eslint + prettier with biome, add run-s and run-p * lint rust * lint toml * configure biome target files * lint svg * jsx and tsx lint * adjust lint command in npm scripts * fix license * change lint changed script name * adjust lint workflow * Update package-lock.json * fix npm script error handling (#1306) * fix auto merge (#1302) * fix auto merge * add repo parameter to auto merge * add repo parameter to auto merge workflow * Remove contract calls (#1308) * remove contract calls from procaptcha * linted stuff * Adding empty providers * Adding hardcoded random providers * Adding changes to load process * Debugging * debug * nearly working state management * fast captchas with no contract * Removing debug * Timestamp signature validation * Working no rpc calls full captcha flow * linting * Unit tests potentially working * dropping debug * All passing cypress demo * Bundle falling over when hashing * dropping bundle pure replace * Remove polkadot manual bundling hacks * No provider pow * Working pow without contract calls * revert sitekey changes * verified instead of context * don't log config * removing cypress capture images * removing bad deps * Removing debug * fixing build * fixing providers * Correct docstring * rebuilt package lock * Removing stats file * Skipping lint in protocol * removing typechain change because protocol bump required * removing unused deps * temp bump while firefighting * Dropping provider gui * Working build without provider gui * Removing batch commit tasks * Dropping protocol * Working build without protocol dir * Dropping proxy and package lock pointing to proxy * Working build with new pkg deps * Removing common contract * Dropping tests for rewrite * Working no captcha product * Dropping merkle tree * Refactoring provider and adding temp tests * Refactored provider into multiple single responsibility classes * lint fix * pkg lock bump * Renaming tests to non test file to pass * Tests passing * Debug for datasetId getter * Working provider set dataset * Auth Middleware Test * Captcha scheduler tests * Error Handler tests * Provider now boots without connection to rpc node * Full suite of unit tests for provider * Tests passing * Fixed build * Integration tests. Actions for this to be set up * Working image captcha integration tests * Unit tests paths correction * Fixing version bump yml * Removing debug * Adding dummy get random provider script * Removing dockerfile and vite env config * Replacing signedTimestamp with timestampSignature * Deduping config by making it its own package * Defaulting message to provider online * Fixing type issues and ws requirement issues --------- Co-authored-by: Chris Taylor Co-authored-by: George Oastler * Removing unused deps, bumping package lock * Working pow captcha with timeouts * Add missing deps and bundling command for staging * Remove version from docker compose files * Use NODE_ENV var for pulling in env var file into docker compose file * Add staging deploy process * Add staging bundle command * package lock * Remove old deps. * Update package-lock.json * Update event name * Add missing dep * Use latest image to create container from * Use staging tag for container * Await crypto WASM blob * Allow NODE_ENV to be passed into Vite config * Add load-balancer refs to tsconfigs * Allow PROSOPO_DEFAULT_ENVIRONMENT to inherit from NODE_ENV * Add some logging and change some imports * exporting hardcoded provider from types * Cleanup linting process (#1312) * lint dockerfiles * lint caddyfiles * lint github actions workflows * lint shell scripts * yaml lint * lint python * yamllint config * lint js * lint html * lint markdown * htmlhint ignore files * simplify caddy lint * replace eslint + prettier with biome, add run-s and run-p * lint rust * lint toml * configure biome target files * lint svg * jsx and tsx lint * adjust lint command in npm scripts * fix license * change lint changed script name * adjust lint workflow * Update package-lock.json * remove old lint scripts * remove prettier + eslint config * remove eslint dep * remove prettier dep * Update package-lock.json * Fix provider not erroring on database connection error. Add option to specify the number of proxies between the provider API and the user * Add staging command back in * deploy staging workflow to bundle branch * addit commit details for bumps * Add watchtower to provider docker compose * Don't mount missing file * watch provider container only * Change container name * Use createConnection instead of connection * Fix build * Staging deploy workflow (#1314) * rename version step * detect prod/staging in deploy * remove contract building in deploy * build js bundles based on env * use docker tag based on env * use prod env * gh release on prod only * npm release on prod only * use docker latest and version specific tags * use docker tags from env in img tags * join version and env steps * prod/dev -> production/development * NODE_ENV variable setup in npm scripts * missing NODE_ENV fixes * fix tsc build / clean cmds * NODE_ENV semis * vite use NODE_ENV as --mode * use NODE_ENV to control bundling of production/development/staging env * use NODE_ENV to control build scripts * remove needless NODE_ENV setting * Delete deploy-staging.yml * deploy on unsafe branch guard * upload bundle to staging release as part of deploy workflow * typo missing vite * license * remove contract linting * remove docker compose linting from dockerfile lint cmd * fix yamllint * make caddy fmt output diff * install htmlhint * fix rustfmt lint script * use cargofmt instead of rustfmt * fix lint rs naming * fix clippy linting * fix toml linting * simplify xargs serial command usage in rust linting * lint rust check * webpack bundle dev mode fix * webpack plugin fix * webpack fix * improve npm scripts * improve node_modules associated with npm scripts * bundle npm script * fix release asset target * remove any current assets before uploading any further staging assets * Pkg json * bump version to v2.0.0 * no build specified * remove deploy_X scripts * remove deploy_X scripts * remove deploy_protocol script call * remove deploy_protocol workflow step * remove github assets for contract * remove deploy_protool * Use 2.0.0 everywhere * Provider tests passing * Adding if present to cjs * Dropping auto merge * Dropping dapp example demo * fix check version bump all history available * Update check_version_bump.yml * Update check_version_bump.yml * Remove out of date readme * Update check_version_bump.yml * Re-add old babel plugins * start provider * Always add the token to the form * Supply token to onHuman function * Fix build * Adding button next for cypress tests * Fixing hanging test * Fixing get dataset being broken * Remove substrate from docker compose * Cypress tests passing * stop the provider workflow from falling over if the npm packages are unreleased * Only load the provider mock container if we built it * Try to upload screenshots * Try to store screenshots on failure * Try using withinSubject:null * Wait for button to be visible * Wait for the the API call * Remove wait for solution request * try to force the click * Just force, don't expect the element * try waiting after clicking * Store videos of cypress runs * Remove the then * Remove duplicate click * Fix function return type * try within * Adding setup step for setup env in test * Add data-cy attributes if environment is not production * wait for docker containers to setup env * Adding setup step for setup env in test * Start docker first * Check if there are references * remove within * Try to kill processes with concurrently * Size fixes for widget and logo * Make signature stuff less confusing * Fix license header positions * Fix tests * Get it all working * Fix size * Fix lint issues (#1318) * rename version step * detect prod/staging in deploy * remove contract building in deploy * build js bundles based on env * use docker tag based on env * use prod env * gh release on prod only * npm release on prod only * use docker latest and version specific tags * use docker tags from env in img tags * join version and env steps * prod/dev -> production/development * NODE_ENV variable setup in npm scripts * missing NODE_ENV fixes * fix tsc build / clean cmds * NODE_ENV semis * vite use NODE_ENV as --mode * use NODE_ENV to control bundling of production/development/staging env * use NODE_ENV to control build scripts * remove needless NODE_ENV setting * Delete deploy-staging.yml * deploy on unsafe branch guard * upload bundle to staging release as part of deploy workflow * typo missing vite * license * remove contract linting * remove docker compose linting from dockerfile lint cmd * fix yamllint * make caddy fmt output diff * install htmlhint * fix rustfmt lint script * use cargofmt instead of rustfmt * fix lint rs naming * fix clippy linting * fix toml linting * simplify xargs serial command usage in rust linting * lint rust check * webpack bundle dev mode fix * webpack plugin fix * webpack fix * improve npm scripts * improve node_modules associated with npm scripts * bundle npm script * fix release asset target * remove any current assets before uploading any further staging assets * add nuke script * set shell in dockerfile * use json form of CMD in dockerfile * fix multiple RUN commands in dockerfile * remove apt sources after install * use apt get * use apt-get in dockerfile instead of apt * join multiple run commands together in dockerfile * entrypoint json form * no install recommends * ignore install recommends lint * fix multiple run commands and apt clear * CMD to json form * no install recommends * remove root user, is default * set nginx version * multiple RUN commands fix * set shell to use pipefail * delete apt lists after install * fix consecutive RUN commands * no install recommends * ignore usage of latest * dockerfile lint * Update substrate-contracts-node.build.dockerfile * json form for CMD * lint dockerfile * lint caddyfile * fix needless cat * useless echo * speech marks for safety * make dockerfile and shell linting command simpler * fix quotes and variable usage in cache workflow * fix quotes * fix quotes * fix quotes * fix quotes * fix NODE_ENV speech marks in workflows * useless cat * unused vars * lint * missing speech marks * speech marks * lint eval and @ usage in shell * lint shell script * fix yamllint linting * fix lint md and js fix cmd * autofix js * fix biome cmdline args * biome lint fixes * biome lint fix * make biome use vcs * no export from tests * fix key in list * missing useEffect dep * explicit any todo * lint fixes * warn on parameter assign * todo for any * trailing comma * ignore any type for options * fix line count parameter reassigned * fix not null assertion * ignore any from axios response * ignore any casts * ignore any in async ctor * no reuse of parameter * ignore i18n translation any * ignore anys in nodejs polars plugin * ignore any for response json * avoid parameter reuse * fix any usage in vite watch plugin * fix side effect in vite watch plugin * fix reused variables in error classes * disable rule for key event with onClick * forEach to for of * missing bracket * allow any * forEach to for of * allow any * forEach to for of * allow any * allow any * forEach to for of * use item hash as key * fix useEffect deps * todo for async exec * allow any + async exec * allow any * forEach to for of * ignore spread * TODOs for sendFunds * allow any * ignore async exec * allow any * todo for memo deps * ignore detector code, contains loads of biome errors * fix anys, foreach and local params * ignore foreach * fix any * allow any * allow any * allow any and foreach * allow any * allow any * allow any * allow enum * allow any * allow any * allow any * allow any * allow any * allow any * allow any * allow any * allow any * allow any * allow any * allow any * allow any * foreach to for of * allow any * allow any * allow any and foreach to for of * img buffer type * allow any * allow any * allow any * foreach to for of * allow any * make biome do formatting too * biome format * ignore bundles * lint * lint md files * lint md * disable some markdown rules * lint rs * fix rs * fix npm scripts * lint * ignore ruff.toml when linting tomls * lint * lint py npm scripts * remove eslint directives * make biome track the main branch and handle css * fix caddy linting * lint * lint * lint * configure taplo * Update ruff.toml * fix scripts * lint * remove eslint * lint * fix speech mark issues * typo * fix lint fixes types * more fixes for linting fixes * fix for potentially undefined root node of merkle tree * duplicate selector * lint * ignore bundle stats html file * missing provider env for starting provider * async factory fix * remove debug * lint * revert detector index.js changes * lint * polyfill node: imports * fix for node:url breaking bundle * use package workspaces rather than cd'ing (#1321) * Add push to js branch again to get live staging bundle * Remove any existing procaptcha responses on human * deploy staging on push to staging * Use duplicate JS Server for now * Silence GH warning about NoSQL injection in demo * Silence GH warning about NoSQL injection in demo * Set GH_TOKEN env * Remove production step for JS Server * Add back command to push to js-bundle branch. Remove quotes in asset deletion script * Use correct docker tag * Try moving to its own step * don't fail if nothing to commit * Update provider docker run CMD * Always pull new version of tag for provider image * Update provider CMD * Alter the verify endpoint when in non-production environments in client-example demo * Allow PoW captchas to be stored and counted * Removing exportData from Manager * Adding synamic config for load balancer * Fix build * fix server build * fix server again * fix provider build * Removing dangerou * Change scale-ts type to u64 to avoid losing data * revert change to number for timestamp * make sure procaptcha-response is deleted * Fix scheduler database name and add env option for storage schedule * Make the models available once the connection has been made * Move headers * Update js_server release step * Try using secret directly * Add some debug * Modify debug * Yet more debug * I give up * Working captcha results in mongo (#1322) * Fixing db schema for pow captchas * dropping new debug * Use a var for mongo image * more debug * Removing lint fix from version bump * User data mvp (#1327) * Update captcha records for user portal data requirements * pow types overhaul * Harden tests against function parameter changes * only run prosoponator on non-draft pr's (#1333) * fix dir capitalisation (#1329) * fix dir capitalisation * fix path * Introduce dotenv package for finding environment files (#1334) * Introduce dotenv package for finding environment files * Package-lock.json * Update references to old loadEnv * Update package references * Add the config files * Update loadEnv ref * Update loadEnv refs in demos * trigger tests * Update dotenv reference * Specify no tests * Fix dataset IDs for staging providers * Allow pow challenges to be submitted more than once for verification * Fail if the challenge exists in the db * Revert unlimited challenge checking * Make demo re-render captcha component when form changes * Allow navigating between the captcha types * Fix license location * remove debug * Store something on each request. Update PoW types. Additional checks (#1336) * removed network types * remove substrate containers / env params * remove CONTRACT env vars * fix imports * remove networks * remove network from getPairAsync * remove networks + contract * remove default network from env * remove default network * remove network default + types from types pkg * remove network types * remove block number * Update package-lock.json * Update package-lock.json * remove contract dep for demo * Store something on each request. Update PoW types. Additional checks * Additional checks * Restrict captcha solution checking by dapp account * fix build * Fix cypress tests * lots of updates to types * Fix up tests. Add types for Get Image Captcha URL * Remove some unuse types. Type an API URL * Zod type translation keys. Use enum values when updating database. Add enum arrays to mongoose schemas. Use ApiParams everywhere * Set the correct key and value for storedStatus * Fix up unit tests * Make sure we're setting updated timestamps everywhere. Don't send the same data to the captcha storage DB twice. Add details of cron jobs that have run to scheduled tasks collection * Fix up tests * remove file that does nothing --------- Co-authored-by: George Oastler * Bug fix for missing status in scheduled task record * Fix captcha storage mechanism. Add tests (#1337) * Fix captcha storage mechanism. Add tests * Fix up tests. Move verifyRecency function to util * Update test env template * Fix build * use correct branch name in bump version * Bump version to 2.0.2 * Bump version to 2.0.2 * bump versions --------- Co-authored-by: George Oastler Co-authored-by: George Oastler Co-authored-by: Chris Co-authored-by: Hugh <90424587+HughParry@users.noreply.github.com> Co-authored-by: Hugh --- .github/workflows/prosoponator_bot.yml | 2 +- demos/client-bundle-example/package.json | 42 +- .../src/jsBundleTest.html | 2 +- demos/client-example-server/env.development | 5 +- demos/client-example-server/package.json | 100 +- demos/client-example-server/src/app.ts | 6 +- .../src/controllers/auth.ts | 15 +- demos/client-example-server/vite.config.ts | 28 +- demos/client-example/env.development | 2 - demos/client-example/package.json | 132 +- demos/client-example/src/App.tsx | 475 +- demos/client-example/src/Captcha.tsx | 44 + demos/client-example/src/NavBar.tsx | 57 + demos/client-example/src/config.ts | 1 - demos/client-example/src/routes/root.tsx | 13 +- demos/client-example/vite.config.ts | 158 +- .../env.development | 3 - .../client-frictionless-example/package.json | 100 +- .../client-frictionless-example/src/config.ts | 5 +- .../vite.config.ts | 130 +- demos/client-pow-example/env.development | 3 - demos/client-pow-example/package.json | 100 +- demos/client-pow-example/src/config.ts | 5 +- demos/client-pow-example/vite.config.ts | 130 +- demos/cypress-shared/package.json | 82 +- demos/provider-mock/package.json | 70 +- dev/config/package.json | 198 +- dev/config/src/projectInfo.ts | 23 +- dev/config/src/provider/test.ts | 14 - dev/config/src/vite/vite.backend.config.ts | 226 +- dev/config/src/vite/vite.frontend.config.ts | 359 +- dev/flux/package.json | 96 +- dev/flux/src/lib/auth.ts | 379 +- dev/flux/src/lib/sep256k1Sign.ts | 151 +- dev/flux/src/lib/terminal.ts | 100 +- dev/flux/tsconfig.cjs.json | 2 +- dev/flux/tsconfig.json | 2 +- dev/gh-actions/package.json | 60 +- dev/prosoponator-bot/package.json | 62 +- dev/scripts/env.development | 3 - dev/scripts/env.production | 1 - dev/scripts/env.rococo | 3 - dev/scripts/env.staging | 1 - dev/scripts/env.test | 4 +- dev/scripts/package.json | 133 +- dev/scripts/src/cli/index.ts | 181 +- dev/scripts/src/scripts/generateMnemonic.ts | 34 +- .../src/scripts/getExistentialDeposit.ts | 48 - dev/scripts/src/scripts/getRandomProvider.ts | 43 - dev/scripts/src/scripts/setVersion.ts | 283 +- dev/scripts/src/scripts/sign.ts | 1 - dev/scripts/src/setup/setup.ts | 250 +- dev/scripts/src/util/updateEnv.ts | 149 +- dev/scripts/tsconfig.json | 3 + dev/ts-brand/package.json | 84 +- dev/tsconfig-checker/package.json | 54 +- dev/vite-plugin-watch-workspace/package.json | 90 +- docker/docker-compose.demo.yml | 20 - .../docker-compose.provider.development.yml | 16 - docker/images/provider/package.json | 12 +- package-lock.json | 7844 ++++++++++++----- package.json | 324 +- packages/account/package.json | 106 +- .../account/src/extension/ExtensionWeb2.ts | 12 - packages/api/package.json | 80 +- packages/api/src/api/ProviderApi.ts | 53 +- packages/cli/package.json | 111 +- packages/cli/src/argv.ts | 45 +- packages/cli/src/cli.ts | 56 +- packages/cli/src/commands/index.ts | 2 +- .../cli/src/commands/providerDeregister.ts | 71 +- .../cli/src/commands/providerSetDataset.ts | 77 +- .../src/commands/storeCaptchasExternally.ts | 46 + packages/cli/src/commands/validators.ts | 98 +- packages/cli/src/env.ts | 52 - packages/cli/src/index.ts | 1 - packages/cli/src/prosopo.config.ts | 7 - packages/cli/src/reloader.ts | 98 +- packages/cli/src/start.ts | 120 +- packages/cli/tsconfig.cjs.json | 3 + packages/cli/tsconfig.json | 3 + packages/cli/vite.config.ts | 52 +- packages/common/package.json | 110 +- packages/common/src/locales/en.json | 6 +- packages/common/src/utils.ts | 95 +- packages/contract/package.json | 152 +- packages/contract/src/accounts/getPair.ts | 131 +- packages/contract/src/contract/block.ts | 32 +- packages/database/package.json | 88 +- .../src/captchaDatabase/captchaDatabase.ts | 37 +- packages/database/src/databases/mongo.ts | 354 +- packages/datasets-fs/package.json | 126 +- packages/datasets/package.json | 140 +- packages/detector/package.json | 32 +- packages/dotenv/package.json | 48 + packages/dotenv/src/env.ts | 66 + packages/dotenv/src/index.ts | 1 + packages/dotenv/tsconfig.cjs.json | 14 + packages/dotenv/tsconfig.json | 9 + .../buildTx.ts => dotenv/vite.cjs.config.ts} | 6 + packages/dotenv/vite.test.config.ts | 32 + packages/env/package.json | 92 +- packages/env/src/env.ts | 43 +- packages/file-server/package.json | 78 +- packages/load-balancer/package.json | 78 +- packages/load-balancer/src/index.ts | 148 +- packages/procaptcha-bundle/package.json | 118 +- packages/procaptcha-bundle/src/index.tsx | 4 - packages/procaptcha-bundle/vite.config.ts | 50 +- packages/procaptcha-common/package.json | 98 +- .../procaptcha-common/src/state/builder.ts | 21 +- packages/procaptcha-frictionless/package.json | 106 +- packages/procaptcha-pow/package.json | 136 +- .../src/components/ProcaptchaWidget.tsx | 2 +- .../src/{Services => services}/Manager.ts | 15 - packages/procaptcha-react/package.json | 136 +- .../src/components/CaptchaWidget.tsx | 1 - packages/procaptcha/package.json | 154 +- packages/procaptcha/src/modules/Manager.ts | 56 +- .../src/modules/ProsopoCaptchaApi.ts | 30 +- .../src/tests/modules/storage.test.ts | 4 +- packages/provider/package.json | 145 +- packages/provider/src/api/captcha.ts | 96 +- packages/provider/src/api/captchaScheduler.ts | 27 +- packages/provider/src/api/verify.ts | 427 +- .../src/tasks/dataset/datasetTasks.ts | 106 +- .../src/tasks/imgCaptcha/imgCaptchaTasks.ts | 79 +- .../tasks/imgCaptcha/imgCaptchaTasksUtils.ts | 44 +- .../provider/src/tasks/powCaptcha/powTasks.ts | 109 +- .../src/tasks/powCaptcha/powTasksUtils.ts | 90 +- .../src/tests/integration/imgCaptcha.test.ts | 294 +- .../integration/mocks/solvedTestCaptchas.ts | 2149 ++--- .../src/tests/integration/powCaptcha.test.ts | 28 +- .../tests/unit/api/captchaScheduler.test.ts | 111 +- .../unit/tasks/dataset/datasetTasks.test.ts | 129 +- .../tasks/imgCaptcha/imgCaptchaTasks.test.ts | 69 +- .../imgCaptcha/imgCaptchaTasksUtils.test.ts | 108 +- .../unit/tasks/powCaptcha/powTasks.test.ts | 183 +- .../tasks/powCaptcha/powTasksUtils.test.ts | 185 +- packages/provider/src/util.ts | 112 +- packages/server/package.json | 96 +- packages/server/src/config.ts | 1 - packages/server/src/index.ts | 1 - packages/server/src/server.ts | 38 +- packages/tx/package.json | 130 +- packages/types-database/package.json | 86 +- packages/types-database/src/types/mongo.ts | 208 +- packages/types-env/package.json | 92 +- packages/types-env/src/env.ts | 4 - packages/types/package.json | 100 +- packages/types/src/api/api.ts | 5 +- packages/types/src/api/params.ts | 50 +- packages/types/src/config/config.ts | 6 - packages/types/src/config/network.ts | 38 - packages/types/src/datasets/captcha.ts | 58 +- packages/types/src/index.ts | 1 - packages/types/src/networks/index.ts | 86 - packages/types/src/procaptcha/api.ts | 6 +- packages/types/src/procaptcha/manager.ts | 1 - packages/types/src/procaptcha/token.ts | 49 +- packages/types/src/provider/api.ts | 52 +- packages/types/src/provider/scheduler.ts | 19 +- packages/util/package.json | 117 +- packages/util/src/index.ts | 1 + packages/util/src/verifyRecency.ts | 17 + packages/web-components/package.json | 84 +- 166 files changed, 13151 insertions(+), 9591 deletions(-) create mode 100644 demos/client-example/src/Captcha.tsx create mode 100644 demos/client-example/src/NavBar.tsx delete mode 100644 dev/scripts/src/scripts/getExistentialDeposit.ts delete mode 100644 dev/scripts/src/scripts/getRandomProvider.ts create mode 100644 packages/cli/src/commands/storeCaptchasExternally.ts delete mode 100644 packages/cli/src/env.ts create mode 100644 packages/dotenv/package.json create mode 100644 packages/dotenv/src/env.ts create mode 100644 packages/dotenv/src/index.ts create mode 100644 packages/dotenv/tsconfig.cjs.json create mode 100644 packages/dotenv/tsconfig.json rename packages/{contract/src/contract/buildTx.ts => dotenv/vite.cjs.config.ts} (76%) create mode 100644 packages/dotenv/vite.test.config.ts rename packages/procaptcha-pow/src/{Services => services}/Manager.ts (94%) delete mode 100644 packages/types/src/networks/index.ts create mode 100644 packages/util/src/verifyRecency.ts diff --git a/.github/workflows/prosoponator_bot.yml b/.github/workflows/prosoponator_bot.yml index 9eecee07bc..25ddf153bb 100644 --- a/.github/workflows/prosoponator_bot.yml +++ b/.github/workflows/prosoponator_bot.yml @@ -7,7 +7,7 @@ on: issue_comment jobs: comment: # This job only runs for pull request comments - if: ${{ github.event.issue.pull_request }} + if: ${{ github.event.issue.pull_request }} && github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - name: Print contexts diff --git a/demos/client-bundle-example/package.json b/demos/client-bundle-example/package.json index 6f97c92ff8..35cdd10deb 100644 --- a/demos/client-bundle-example/package.json +++ b/demos/client-bundle-example/package.json @@ -1,23 +1,23 @@ { - "name": "@prosopo/client-bundle-example", - "main": "index.js", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "scripts": { - "test": "echo \"No test specified\"", - "build": "echo \"No build specified\"", - "start": "vite serve ./src --port 9232 --config vite.config.ts", - "clean": "echo 'nothing to clean'" - }, - "dependencies": { - "dotenv": "^16.0.1", - "vite": "^5.1.7" - }, - "version": "2.0.1", - "devDependencies": { - "tslib": "2.6.2", - "typescript": "5.1.6" - } + "name": "@prosopo/client-bundle-example", + "main": "index.js", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "scripts": { + "test": "echo \"No test specified\"", + "build": "echo \"No build specified\"", + "start": "vite serve ./src --port 9232 --config vite.config.ts", + "clean": "echo 'nothing to clean'" + }, + "dependencies": { + "dotenv": "^16.0.1", + "vite": "^5.1.7" + }, + "version": "2.0.2", + "devDependencies": { + "tslib": "2.6.2", + "typescript": "5.1.6" + } } diff --git a/demos/client-bundle-example/src/jsBundleTest.html b/demos/client-bundle-example/src/jsBundleTest.html index b856d56670..5ef37bdc11 100644 --- a/demos/client-bundle-example/src/jsBundleTest.html +++ b/demos/client-bundle-example/src/jsBundleTest.html @@ -15,7 +15,7 @@
diff --git a/demos/client-example-server/env.development b/demos/client-example-server/env.development index d49fbeb073..6d66680008 100644 --- a/demos/client-example-server/env.development +++ b/demos/client-example-server/env.development @@ -1,13 +1,10 @@ PROSOPO_VERIFY_ENDPOINT=http://localhost:9237/dev/siteverify PROSOPO_VERIFICATION_TYPE=local PROSOPO_SITE_KEY=5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw -PROSOPO_SUBSTRATE_ENDPOINT=ws://localhost:9944 -PROSOPO_CONTRACT_ADDRESS= PROSOPO_WEB2=true PROSOPO_SERVER_URL=https://localhost PROSOPO_SITE_PRIVATE_KEY=//Eve PROSOPO_SERVER_PORT=9228 PROSOPO_DEFAULT_ENVIRONMENT=development -PROSOPO_DEFAULT_NETWORK=development PROSOPO_MONGO_EVENTS_URI=mongodb+srv:///frictionless_events -_DEV_ONLY_WATCH_EVENTS=false \ No newline at end of file +_DEV_ONLY_WATCH_EVENTS=false diff --git a/demos/client-example-server/package.json b/demos/client-example-server/package.json index 3ec078be22..61cc8a3fc3 100644 --- a/demos/client-example-server/package.json +++ b/demos/client-example-server/package.json @@ -1,52 +1,52 @@ { - "name": "@prosopo/client-example-server", - "version": "2.0.1", - "description": "Backend for client-example", - "main": "dist/app.js", - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "scripts": { - "test": "echo \"No test specified\"", - "dev": "NODE_ENV=${NODE_ENV:-development}; vite serve --mode=$NODE_ENV --config ./vite.config.ts --host", - "start": "node ./dist/app.js", - "start:bundle": "node ./dist/bundle/prosopo_client_example_server.app.bundle.js", - "build": "tsc --build --verbose", - "bundle": "NODE_ENV=${NODE_ENV:-production}; vite build --mode=$NODE_ENV --config ./vite.config.ts", - "clean": "tsc --build --clean" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/prosopo/client-example-server.git" - }, - "author": "PROSOPO LIMITED ", - "license": "Apache-2.0", - "bugs": { - "url": "https://github.com/prosopo/client-example-server/issues" - }, - "homepage": "https://github.com/prosopo/client-example-server#readme", - "dependencies": { - "@noble/hashes": "^1.3.1", - "@polkadot/util": "12.6.2", - "@polkadot/util-crypto": "12.6.2", - "@prosopo/api": "2.0.1", - "@prosopo/contract": "2.0.1", - "@prosopo/procaptcha": "2.0.1", - "@prosopo/server": "2.0.1", - "@prosopo/types": "2.0.1", - "@typegoose/auto-increment": "^4.5.0", - "cors": "^2.8.5", - "jsonwebtoken": "^9.0.0", - "mongoose": "^8.5.1", - "zod": "^3.22.3" - }, - "devDependencies": { - "@prosopo/config": "2.0.1", - "@types/jsonwebtoken": "^9.0.2", - "tslib": "2.6.2", - "typescript": "5.1.6", - "vite": "^5.1.7" - } + "name": "@prosopo/client-example-server", + "version": "2.0.2", + "description": "Backend for client-example", + "main": "dist/app.js", + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "scripts": { + "test": "echo \"No test specified\"", + "dev": "NODE_ENV=${NODE_ENV:-development}; vite serve --mode=$NODE_ENV --config ./vite.config.ts --host", + "start": "node ./dist/app.js", + "start:bundle": "node ./dist/bundle/prosopo_client_example_server.app.bundle.js", + "build": "tsc --build --verbose", + "bundle": "NODE_ENV=${NODE_ENV:-production}; vite build --mode=$NODE_ENV --config ./vite.config.ts", + "clean": "tsc --build --clean" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/prosopo/client-example-server.git" + }, + "author": "PROSOPO LIMITED ", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/prosopo/client-example-server/issues" + }, + "homepage": "https://github.com/prosopo/client-example-server#readme", + "dependencies": { + "@noble/hashes": "^1.3.1", + "@polkadot/util": "12.6.2", + "@polkadot/util-crypto": "12.6.2", + "@prosopo/api": "2.0.2", + "@prosopo/dotenv": "2.0.2", + "@prosopo/procaptcha": "2.0.2", + "@prosopo/server": "2.0.2", + "@prosopo/types": "2.0.2", + "@typegoose/auto-increment": "^4.5.0", + "cors": "^2.8.5", + "jsonwebtoken": "^9.0.0", + "mongoose": "^8.5.1", + "zod": "^3.22.3" + }, + "devDependencies": { + "@prosopo/config": "2.0.2", + "@types/jsonwebtoken": "^9.0.2", + "tslib": "2.6.2", + "typescript": "5.1.6", + "vite": "^5.1.7" + } } diff --git a/demos/client-example-server/src/app.ts b/demos/client-example-server/src/app.ts index cf34c1dce4..7392d01cdd 100644 --- a/demos/client-example-server/src/app.ts +++ b/demos/client-example-server/src/app.ts @@ -16,15 +16,13 @@ import { ProsopoEnvError, getLoggerDefault } from "@prosopo/common"; import { getServerConfig } from "@prosopo/server"; import { at } from "@prosopo/util"; import cors from "cors"; -import dotenv from "dotenv"; +import { loadEnv } from "@prosopo/dotenv"; import express from "express"; import routesFactory from "./routes/routes.js"; import connectionFactory from "./utils/connection.js"; import memoryServerSetup from "./utils/database.js"; -export function loadEnv() { - dotenv.config({ path: getEnvFile() }); -} +loadEnv(); export function getEnvFile(filename = ".env", filepath = "./") { const env = process.env.NODE_ENV || "development"; diff --git a/demos/client-example-server/src/controllers/auth.ts b/demos/client-example-server/src/controllers/auth.ts index e90091821d..136d4c3d1a 100644 --- a/demos/client-example-server/src/controllers/auth.ts +++ b/demos/client-example-server/src/controllers/auth.ts @@ -1,9 +1,3 @@ -import { blake2b } from "@noble/hashes/blake2b"; -import { u8aToHex } from "@polkadot/util"; -import { randomAsHex } from "@polkadot/util-crypto"; -import { ProsopoEnvError } from "@prosopo/common"; -import { getPairAsync } from "@prosopo/contract"; -import { ProsopoServer } from "@prosopo/server"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -17,6 +11,13 @@ import { ProsopoServer } from "@prosopo/server"; // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + +import { blake2b } from "@noble/hashes/blake2b"; +import { u8aToHex } from "@polkadot/util"; +import { randomAsHex } from "@polkadot/util-crypto"; +import { ProsopoEnvError } from "@prosopo/common"; +import { getPairAsync } from "@prosopo/contract"; +import { ProsopoServer } from "@prosopo/server"; import { ApiParams, type ProcaptchaToken, @@ -86,7 +87,6 @@ const signup = async ( }); const payload = SubscribeBodySpec.parse(req.body); const pair = await getPairAsync( - config.networks[config.defaultNetwork], config.account.secret, ); const prosopoServer = new ProsopoServer(config, pair); @@ -153,7 +153,6 @@ const login = async ( ) => { const User = mongoose.model("User"); const pair = await getPairAsync( - config.networks[config.defaultNetwork], config.account.secret, ); const prosopoServer = new ProsopoServer(config, pair); diff --git a/demos/client-example-server/vite.config.ts b/demos/client-example-server/vite.config.ts index c487d33ba5..55f30f0750 100644 --- a/demos/client-example-server/vite.config.ts +++ b/demos/client-example-server/vite.config.ts @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. import * as path from "node:path"; -import { loadEnv } from "@prosopo/cli"; +import { loadEnv } from "@prosopo/dotenv"; import { ViteBackendConfig } from "@prosopo/config"; import { defineConfig } from "vite"; import { version } from "./package.json"; @@ -31,17 +31,17 @@ process.env.TS_NODE_PROJECT = path.resolve("./tsconfig.json"); // Merge with generic backend config export default defineConfig(async ({ command, mode }) => { - const backendConfig = await ViteBackendConfig( - packageName, - packageVersion, - bundleName, - dir, - entry, - command, - mode, - ); - return defineConfig({ - ...backendConfig, - server: { port: process.env.PROSOPO_SERVER_PORT }, - }); + const backendConfig = await ViteBackendConfig( + packageName, + packageVersion, + bundleName, + dir, + entry, + command, + mode, + ); + return defineConfig({ + ...backendConfig, + server: { port: process.env.PROSOPO_SERVER_PORT }, + }); }); diff --git a/demos/client-example/env.development b/demos/client-example/env.development index eb2cf87143..b2dac82944 100644 --- a/demos/client-example/env.development +++ b/demos/client-example/env.development @@ -1,10 +1,8 @@ PROSOPO_SITE_KEY=5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw PROSOPO_SUBSTRATE_ENDPOINT=ws://127.0.0.1:9944 -PROSOPO_CONTRACT_ADDRESS= PROSOPO_WEB2=true PROSOPO_SERVER_URL=http://localhost PROSOPO_PORT=9230 -PROSOPO_DEFAULT_NETWORK=development PROSOPO_DEFAULT_ENVIRONMENT=development PROSOPO_MONGO_EVENTS_URI=mongodb+srv:///frictionless_events _DEV_ONLY_WATCH_EVENTS=false diff --git a/demos/client-example/package.json b/demos/client-example/package.json index c125bf7531..6e0df8b920 100644 --- a/demos/client-example/package.json +++ b/demos/client-example/package.json @@ -1,68 +1,68 @@ { - "name": "@prosopo/client-example", - "version": "2.0.1", - "private": true, - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "dependencies": { - "@emotion/react": "^11.9.3", - "@emotion/styled": "^11.9.3", - "@mui/material": "^5.9.1", - "@polkadot/extension-dapp": "0.46.9", - "@polkadot/extension-inject": "0.46.9", - "@prosopo/common": "2.0.1", - "@prosopo/procaptcha": "2.0.1", - "@prosopo/procaptcha-frictionless": "2.0.1", - "@prosopo/procaptcha-react": "2.0.1", - "@prosopo/server": "2.0.1", - "@prosopo/types": "2.0.1", - "@types/react-dom": "^18.3.0", - "electron": "25.8.4", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "react-router-dom": "^6.22.3" - }, - "overrides": { - "@polkadot/extension-inject": { - "@polkadot/api": { - "version": "10.13.1" - } - }, - "@polkadot/extension-dapp": { - "@polkadot/api": { - "version": "10.13.1" - } - } - }, - "devDependencies": { - "@prosopo/cli": "2.0.1", - "@prosopo/config": "2.0.1", - "@prosopo/vite-plugin-watch-workspace": "2.0.1", - "@types/node": "^20.3.1", - "css-loader": "^6.8.1", - "tslib": "2.6.2", - "typescript": "5.1.6" - }, - "scripts": { - "test": "echo \"No test specified\"", - "start": "NODE_ENV=${NODE_ENV:-development}; vite serve --mode=$NODE_ENV --config vite.config.ts --port 9230 --host --force", - "build": "tsc --build --verbose", - "bundle": "NODE_ENV=${NODE_ENV:-production}; vite build --mode=$NODE_ENV --config vite.config.ts --outDir dist --emptyOutDir", - "clean": "tsc --build --clean" - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - } + "name": "@prosopo/client-example", + "version": "2.0.2", + "private": true, + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "dependencies": { + "@emotion/react": "^11.9.3", + "@emotion/styled": "^11.9.3", + "@mui/material": "^5.9.1", + "@polkadot/extension-dapp": "0.46.9", + "@polkadot/extension-inject": "0.46.9", + "@prosopo/common": "2.0.2", + "@prosopo/procaptcha": "2.0.2", + "@prosopo/procaptcha-frictionless": "2.0.2", + "@prosopo/procaptcha-react": "2.0.2", + "@prosopo/server": "2.0.2", + "@prosopo/types": "2.0.2", + "@types/react-dom": "^18.3.0", + "electron": "25.8.4", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-router-dom": "^6.22.3" + }, + "overrides": { + "@polkadot/extension-inject": { + "@polkadot/api": { + "version": "10.13.1" + } + }, + "@polkadot/extension-dapp": { + "@polkadot/api": { + "version": "10.13.1" + } + } + }, + "devDependencies": { + "@prosopo/dotenv": "2.0.2", + "@prosopo/config": "2.0.2", + "@prosopo/vite-plugin-watch-workspace": "2.0.2", + "@types/node": "^20.3.1", + "css-loader": "^6.8.1", + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "scripts": { + "test": "echo \"No test specified\"", + "start": "NODE_ENV=${NODE_ENV:-development}; vite serve --mode=$NODE_ENV --config vite.config.ts --port 9230 --host --force", + "build": "tsc --build --verbose", + "bundle": "NODE_ENV=${NODE_ENV:-production}; vite build --mode=$NODE_ENV --config vite.config.ts --outDir dist --emptyOutDir", + "clean": "tsc --build --clean" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } } diff --git a/demos/client-example/src/App.tsx b/demos/client-example/src/App.tsx index 8d3677977d..a19e1c4e31 100644 --- a/demos/client-example/src/App.tsx +++ b/demos/client-example/src/App.tsx @@ -12,273 +12,258 @@ // See the License for the specific language governing permissions and // limitations under the License. import { - Alert, - Box, - Button, - FormControl, - FormGroup, - Stack, - TextField, - Typography, + Alert, + Box, + Button, + FormControl, + FormGroup, + Stack, + TextField, + Typography, } from "@mui/material"; -import { ProcaptchaFrictionless } from "@prosopo/procaptcha-frictionless"; -import { Procaptcha } from "@prosopo/procaptcha-react"; import { ApiParams, type ProcaptchaToken } from "@prosopo/types"; -import { useState } from "react"; +import { useReducer, useState } from "react"; import { ExtensionAccountSelect } from "./components/ExtensionAccountSelect.js"; import config from "./config.js"; +import { Captcha } from "./Captcha.js"; +import NavBar from "./NavBar.js"; const corsHeaders = { - "Access-Control-Allow-Origin": "*", // Required for CORS support to work - "Access-Control-Allow-Methods": "GET, POST, PUT, PATCH, DELETE", - "Access-Control-Allow-Headers": - "Origin, Content-Type, X-Auth-Token, Authorization", + "Access-Control-Allow-Origin": "*", // Required for CORS support to work + "Access-Control-Allow-Methods": "GET, POST, PUT, PATCH, DELETE", + "Access-Control-Allow-Headers": + "Origin, Content-Type, X-Auth-Token, Authorization", }; interface AppProps { - captchaType?: string; + captchaType?: string; } function App(props: AppProps) { - const [email, setEmail] = useState(""); - const [name, setName] = useState(""); - const [password, setPassword] = useState(""); - const [account, setAccount] = useState(""); - const [isError, setIsError] = useState(false); - const [message, setMessage] = useState(""); - // whether the form is doing a login or a signup action - const [isLogin, setIsLogin] = useState(true); - // the result of the captcha process. Submit this to your backend server to verify the user is human on the backend - const [procaptchaToken, setProcaptchaToken] = useState< - ProcaptchaToken | undefined - >(undefined); + const [email, setEmail] = useState(""); + const [name, setName] = useState(""); + const [password, setPassword] = useState(""); + const [account, setAccount] = useState(""); + const [isError, setIsError] = useState(false); + const [message, setMessage] = useState(""); + // whether the form is doing a login or a signup action + const [isLogin, setIsLogin] = useState(true); + // the result of the captcha process. Submit this to your backend server to verify the user is human on the backend + const [procaptchaToken, setProcaptchaToken] = useState< + ProcaptchaToken | undefined + >(undefined); + const [updateKey, forceUpdate] = useReducer((x) => x + 1, 0); - console.log(config); + console.log(config); - const label = isLogin ? "Login" : "Sign up"; - const urlPath = isLogin ? "login" : "signup"; + const label = isLogin ? "Login" : "Sign up"; + const urlPath = isLogin ? "login" : "signup"; - const onLoggedIn = (token: string) => { - const url = new URL("/private", config.serverUrl).href; - console.log("getting private resource with token ", token, "at", url); - fetch(url, { - method: "GET", - headers: { - Origin: "http://localhost:9230", // TODO: change this to env var - ...corsHeaders, - "Content-Type": "application/json", - Authorization: `Bearer ${token}`, - }, - }) - .then(async (res) => { - try { - const jsonRes = await res.json(); - if (res.status === 200) { - setMessage(jsonRes.message); - } - } catch (err) { - console.log(err); - } - }) - .catch((err) => { - console.log(err); - }); - }; + const onLoggedIn = (token: string) => { + const url = new URL("/private", config.serverUrl).href; + console.log("getting private resource with token ", token, "at", url); + fetch(url, { + method: "GET", + headers: { + Origin: "http://localhost:9230", // TODO: change this to env var + ...corsHeaders, + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }, + }) + .then(async (res) => { + try { + const jsonRes = await res.json(); + if (res.status === 200) { + setMessage(jsonRes.message); + } + } catch (err) { + console.log(err); + } + }) + .catch((err) => { + console.log(err); + }); + }; - const onActionHandler = () => { - if (!procaptchaToken) { - alert("Must complete captcha"); - } - const payload = { - email, - name, - password, - [ApiParams.procaptchaResponse]: procaptchaToken, - }; - const url = new URL(urlPath, config.serverUrl).href; - console.log("posting to", url, "with payload", payload); - fetch(url, { - method: "POST", - headers: { - ...corsHeaders, - "Content-Type": "application/json", - }, - body: JSON.stringify(payload), - }) - .then(async (res) => { - try { - const jsonRes = await res.json(); - if (res.status !== 200) { - setIsError(true); - setMessage(jsonRes.message); - } else { - if (isLogin) { - onLoggedIn(jsonRes.token); - } - setIsError(false); - setMessage(jsonRes.message); - } - } catch (err) { - console.log(err); - } - }) - .catch((err) => { - console.log(err); - }); - }; + const onActionHandler = () => { + if (!procaptchaToken) { + alert("Must complete captcha"); + } + const payload = { + email, + name, + password, + [ApiParams.procaptchaResponse]: procaptchaToken, + }; + const url = new URL(urlPath, config.serverUrl).href; + console.log("posting to", url, "with payload", payload); + fetch(url, { + method: "POST", + headers: { + ...corsHeaders, + "Content-Type": "application/json", + }, + body: JSON.stringify(payload), + }) + .then(async (res) => { + try { + const jsonRes = await res.json(); + if (res.status !== 200) { + setIsError(true); + setMessage(jsonRes.message); + } else { + if (isLogin) { + onLoggedIn(jsonRes.token); + } + setIsError(false); + setMessage(jsonRes.message); + forceUpdate(); + } + } catch (err) { + console.log(err); + } + }) + .catch((err) => { + console.log(err); + }); + }; - const onChangeHandler = () => { - setIsLogin(!isLogin); - setMessage(""); - }; + const onChangeHandler = () => { + setIsLogin(!isLogin); + forceUpdate(); + setMessage(""); + }; - const onHuman = async (procaptchaToken: ProcaptchaToken) => { - console.log("onHuman", procaptchaToken); - setProcaptchaToken(procaptchaToken); - }; + const getMessage = () => { + if (isError) { + return {message}; + } + return {message}; + }; - const getMessage = () => { - if (isError) { - return {message}; - } - return {message}; - }; + return ( +
+
+ +
+
+ + + + {message ? getMessage() : null} + - const onError = (error: Error) => { - alert(error.message); - }; + +

{label}

+
+ + {!config.web2 ? ( + + + + ) : ( + <> + )} + + setEmail(e.target.value)} + aria-label="Email" + /> + - const onExpired = () => { - alert("Challenge has expired"); - }; + {!isLogin && ( + + setName(e.target.value)} + aria-label="Name" + /> + + )} - return ( -
- - - - {message ? getMessage() : null} - - - -

{label}

- - - {!config.web2 ? ( - - - - ) : ( - <> - )} - - setEmail(e.target.value)} - aria-label="Email" - /> - - - {!isLogin && ( - - setName(e.target.value)} - aria-label="Name" - /> - - )} - - - setPassword(e.target.value)} - aria-label="Password" - /> - - - - {props.captchaType === "frictionless" ? ( - - ) : ( - - )} - - - - - - - - - or - - - - - - - - - -
-
-
-
- ); + + setPassword(e.target.value)} + aria-label="Password" + /> + + + + + + + + + + + - or - + + + + + + +
+ +
+
+
+
+
+ ); } export default App; diff --git a/demos/client-example/src/Captcha.tsx b/demos/client-example/src/Captcha.tsx new file mode 100644 index 0000000000..f5b9d8357d --- /dev/null +++ b/demos/client-example/src/Captcha.tsx @@ -0,0 +1,44 @@ +import { FormControl } from "@mui/material"; +import { ProcaptchaFrictionless } from "@prosopo/procaptcha-frictionless"; +import config from "./config.js"; +import { Procaptcha } from "@prosopo/procaptcha-react"; +import type { ProcaptchaToken } from "@prosopo/types"; + +type CaptchProps = { + captchaType?: string; + setProcaptchaToken: (procaptchaToken: ProcaptchaToken) => void; + key: number; +}; + +const onError = (error: Error) => { + alert(error.message); +}; + +const onExpired = () => { + alert("Challenge has expired"); +}; + +export function Captcha(props: CaptchProps) { + const onHuman = async (procaptchaToken: ProcaptchaToken) => { + console.log("onHuman", procaptchaToken); + props.setProcaptchaToken(procaptchaToken); + }; + + return ( +
+ {props.captchaType === "frictionless" ? ( + + ) : ( + + )} +
+ ); +} diff --git a/demos/client-example/src/NavBar.tsx b/demos/client-example/src/NavBar.tsx new file mode 100644 index 0000000000..2159ca0f2e --- /dev/null +++ b/demos/client-example/src/NavBar.tsx @@ -0,0 +1,57 @@ +// Copyright 2021-2024 Prosopo (UK) Ltd. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// A navbar component that lets the user navigate between routes `/` and `/frictionless` + +import React from "react"; +import { Link, useLocation } from "react-router-dom"; +import { AppBar, CssBaseline, Toolbar } from "@mui/material"; + +const linkStyle = { + margin: "8px", + color: "white", + textDecoration: "none", +}; + +export default function NavBar() { + const location = useLocation(); + const frictionlessLinkStyle = { ...linkStyle }; + const imageCaptchaLinkStyle = { ...linkStyle }; + + // if the current route is `/frictionless`, the link to `/frictionless` should be styled differently + if (location.pathname === "/frictionless") { + frictionlessLinkStyle["textDecoration"] = "underline"; + } + // if the current route is `/`, the link to `/` should be styled differently + if (location.pathname === "/") { + imageCaptchaLinkStyle["textDecoration"] = "underline"; + } + + return ( + + + +
+ + Image Captcha + + + + Frictionless Captcha + +
+
+
+ ); +} diff --git a/demos/client-example/src/config.ts b/demos/client-example/src/config.ts index e5dff58a47..73546d9aac 100644 --- a/demos/client-example/src/config.ts +++ b/demos/client-example/src/config.ts @@ -23,7 +23,6 @@ const config: ProsopoClientConfigOutput = ProsopoClientConfigSchema.parse({ }, web2: process.env.PROSOPO_WEB2 !== "false", defaultEnvironment: process.env.PROSOPO_DEFAULT_ENVIRONMENT, - defaultNetwork: process.env.PROSOPO_DEFAULT_NETWORK, dappName: "client-example", serverUrl: getServerUrl(), }); diff --git a/demos/client-example/src/routes/root.tsx b/demos/client-example/src/routes/root.tsx index b3fb949b37..150c96b128 100644 --- a/demos/client-example/src/routes/root.tsx +++ b/demos/client-example/src/routes/root.tsx @@ -1,4 +1,3 @@ -import React from "react"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -12,12 +11,14 @@ import React from "react"; // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + +import React from "react"; import App from "../App.js"; export default function Root() { - return ( - - - - ); + return ( + + + + ); } diff --git a/demos/client-example/vite.config.ts b/demos/client-example/vite.config.ts index c6e3c58e9f..3267dfcc28 100644 --- a/demos/client-example/vite.config.ts +++ b/demos/client-example/vite.config.ts @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. import * as path from "node:path"; -import { loadEnv } from "@prosopo/cli"; +import { loadEnv } from "@prosopo/dotenv"; import { getLogger } from "@prosopo/common"; import { VitePluginCloseAndCopy } from "@prosopo/config"; import { VitePluginWatchWorkspace } from "@prosopo/vite-plugin-watch-workspace"; @@ -23,83 +23,83 @@ const dir = path.resolve("."); loadEnv(dir); // https://vitejs.dev/config/ export default defineConfig(async ({ command, mode }) => { - logger.info(`Running at ${dir} in ${mode} mode`); - // NODE_ENV must be wrapped in quotes. We just set it to the mode and ignore what's in the env file, otherwise the - // mode and NODE_ENV can end up out of sync (one set to development and the other set to production, which causes - // issues like this: https://github.com/hashicorp/next-mdx-remote/pull/323 - logger.info(`NODE_ENV: ${process.env.NODE_ENV}`); + logger.info(`Running at ${dir} in ${mode} mode`); + // NODE_ENV must be wrapped in quotes. We just set it to the mode and ignore what's in the env file, otherwise the + // mode and NODE_ENV can end up out of sync (one set to development and the other set to production, which causes + // issues like this: https://github.com/hashicorp/next-mdx-remote/pull/323 + logger.info(`NODE_ENV: ${process.env.NODE_ENV}`); - // Set the env vars that we want to be available in the browser - const define = { - // used to stop websockets package from breaking - "process.env.WS_NO_BUFFER_UTIL": JSON.stringify("true"), - "process.env.WS_NO_UTF_8_VALIDATE": JSON.stringify("true"), - "process.env.NODE_ENV": JSON.stringify(mode), - "process.env.PROSOPO_DEFAULT_ENVIRONMENT": JSON.stringify( - process.env.PROSOPO_DEFAULT_ENVIRONMENT, - ), - // only needed if bundling with a site key - "process.env.PROSOPO_SITE_KEY": JSON.stringify( - process.env.PROSOPO_SITE_KEY, - ), - "process.env.PROSOPO_WEB2": JSON.stringify(process.env.PROSOPO_WEB2), - "process.env.PROSOPO_SERVER_URL": JSON.stringify( - process.env.PROSOPO_SERVER_URL, - ), - "process.env.PROSOPO_SERVER_PORT": JSON.stringify( - process.env.PROSOPO_SERVER_PORT, - ), - "process.env.PROSOPO_PORT": JSON.stringify(process.env.PROSOPO_PORT), - "process.env._DEV_ONLY_WATCH_EVENTS": JSON.stringify( - process.env._DEV_ONLY_WATCH_EVENTS, - ), - }; - logger.debug("define", JSON.stringify(define)); - return { - watch: false, - mode: "development", - bundle: true, - define, - optimizeDeps: { - include: ["prop-types"], - }, - esbuild: { - target: [ - "es2020", - "chrome60", - "edge18", - "firefox60", - "node12", - "safari11", - ], - }, - build: { - modulePreload: { polyfill: true }, - lib: { - entry: path.resolve(__dirname, "./index.html"), - name: "client_example", - }, - }, - plugins: [ - // @ts-ignore - react(), - // Closes the bundler and copies the bundle to the client-bundle-example project unless we're in serve - // mode, in which case we don't want to close the bundler because it will close the server - command !== "serve" ? VitePluginCloseAndCopy() : undefined, - // Watches external files (workspace packages) and rebuilds them when they change - await VitePluginWatchWorkspace({ - workspaceRoot: path.resolve("../.."), - currentPackage: `${path.resolve(".")}/**/*`, - format: "esm", - ignorePaths: [ - `${path.resolve("../..")}/demos/*`, - `${path.resolve("../..")}/dev/*`, - "**/dist/**/*", - ], - }), - ], - server: { - port: process.env.PROSOPO_PORT ? Number(process.env.PROSOPO_PORT) : 9230, - }, - }; + // Set the env vars that we want to be available in the browser + const define = { + // used to stop websockets package from breaking + "process.env.WS_NO_BUFFER_UTIL": JSON.stringify("true"), + "process.env.WS_NO_UTF_8_VALIDATE": JSON.stringify("true"), + "process.env.NODE_ENV": JSON.stringify(mode), + "process.env.PROSOPO_DEFAULT_ENVIRONMENT": JSON.stringify( + process.env.PROSOPO_DEFAULT_ENVIRONMENT, + ), + // only needed if bundling with a site key + "process.env.PROSOPO_SITE_KEY": JSON.stringify( + process.env.PROSOPO_SITE_KEY, + ), + "process.env.PROSOPO_WEB2": JSON.stringify(process.env.PROSOPO_WEB2), + "process.env.PROSOPO_SERVER_URL": JSON.stringify( + process.env.PROSOPO_SERVER_URL, + ), + "process.env.PROSOPO_SERVER_PORT": JSON.stringify( + process.env.PROSOPO_SERVER_PORT, + ), + "process.env.PROSOPO_PORT": JSON.stringify(process.env.PROSOPO_PORT), + "process.env._DEV_ONLY_WATCH_EVENTS": JSON.stringify( + process.env._DEV_ONLY_WATCH_EVENTS, + ), + }; + logger.debug("define", JSON.stringify(define)); + return { + watch: false, + mode: "development", + bundle: true, + define, + optimizeDeps: { + include: ["prop-types"], + }, + esbuild: { + target: [ + "es2020", + "chrome60", + "edge18", + "firefox60", + "node12", + "safari11", + ], + }, + build: { + modulePreload: { polyfill: true }, + lib: { + entry: path.resolve(__dirname, "./index.html"), + name: "client_example", + }, + }, + plugins: [ + // @ts-ignore + react(), + // Closes the bundler and copies the bundle to the client-bundle-example project unless we're in serve + // mode, in which case we don't want to close the bundler because it will close the server + command !== "serve" ? VitePluginCloseAndCopy() : undefined, + // Watches external files (workspace packages) and rebuilds them when they change + await VitePluginWatchWorkspace({ + workspaceRoot: path.resolve("../.."), + currentPackage: `${path.resolve(".")}/**/*`, + format: "esm", + ignorePaths: [ + `${path.resolve("../..")}/demos/*`, + `${path.resolve("../..")}/dev/*`, + "**/dist/**/*", + ], + }), + ], + server: { + port: process.env.PROSOPO_PORT ? Number(process.env.PROSOPO_PORT) : 9230, + }, + }; }); diff --git a/demos/client-frictionless-example/env.development b/demos/client-frictionless-example/env.development index 7bc9d7ddf3..c9b3e511c6 100644 --- a/demos/client-frictionless-example/env.development +++ b/demos/client-frictionless-example/env.development @@ -1,8 +1,5 @@ PROSOPO_SITE_KEY=5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw -PROSOPO_SUBSTRATE_ENDPOINT=ws://127.0.0.1:9944 -PROSOPO_CONTRACT_ADDRESS= PROSOPO_WEB2=true PROSOPO_SERVER_URL=http://localhost:9228 PROSOPO_PORT=9234 -PROSOPO_DEFAULT_NETWORK=development PROSOPO_DEFAULT_ENVIRONMENT=development diff --git a/demos/client-frictionless-example/package.json b/demos/client-frictionless-example/package.json index 7b19627480..a93f3cf647 100644 --- a/demos/client-frictionless-example/package.json +++ b/demos/client-frictionless-example/package.json @@ -1,52 +1,52 @@ { - "name": "@prosopo/client-frictionless-example", - "version": "2.0.1", - "private": true, - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "dependencies": { - "@emotion/react": "^11.9.3", - "@emotion/styled": "^11.9.3", - "@mui/material": "^5.9.1", - "@prosopo/common": "2.0.1", - "@prosopo/procaptcha": "2.0.1", - "@prosopo/procaptcha-frictionless": "2.0.1", - "@prosopo/types": "2.0.1", - "@types/react-dom": "^18.3.0", - "electron": "25.8.4", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "web-vitals": "^2.1.4", - "@prosopo/procaptcha-pow": "2.0.1" - }, - "devDependencies": { - "@prosopo/cli": "2.0.1", - "@prosopo/config": "2.0.1", - "@types/node": "^20.3.1", - "css-loader": "^6.8.1", - "tslib": "2.6.2", - "typescript": "5.1.6" - }, - "scripts": { - "test": "echo \"No test specified\"", - "start": "NODE_ENV=${NODE_ENV:-development}; vite serve --mode=$NODE_ENV --config vite.config.ts --port 9240 --host --force", - "build": "tsc --build --verbose", - "bundle": "NODE_ENV=${NODE_ENV:-production}; vite build --mode=$NODE_ENV --config vite.config.ts --outDir dist --emptyOutDir", - "clean": "tsc --build --clean" - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - } + "name": "@prosopo/client-frictionless-example", + "version": "2.0.2", + "private": true, + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "dependencies": { + "@emotion/react": "^11.9.3", + "@emotion/styled": "^11.9.3", + "@mui/material": "^5.9.1", + "@prosopo/common": "2.0.2", + "@prosopo/procaptcha": "2.0.2", + "@prosopo/procaptcha-frictionless": "2.0.2", + "@prosopo/types": "2.0.2", + "@types/react-dom": "^18.3.0", + "electron": "25.8.4", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "web-vitals": "^2.1.4", + "@prosopo/procaptcha-pow": "2.0.2" + }, + "devDependencies": { + "@prosopo/dotenv": "2.0.2", + "@prosopo/config": "2.0.2", + "@types/node": "^20.3.1", + "css-loader": "^6.8.1", + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "scripts": { + "test": "echo \"No test specified\"", + "start": "NODE_ENV=${NODE_ENV:-development}; vite serve --mode=$NODE_ENV --config vite.config.ts --port 9240 --host --force", + "build": "tsc --build --verbose", + "bundle": "NODE_ENV=${NODE_ENV:-production}; vite build --mode=$NODE_ENV --config vite.config.ts --outDir dist --emptyOutDir", + "clean": "tsc --build --clean" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } } diff --git a/demos/client-frictionless-example/src/config.ts b/demos/client-frictionless-example/src/config.ts index 5a0667370e..235ee10edb 100644 --- a/demos/client-frictionless-example/src/config.ts +++ b/demos/client-frictionless-example/src/config.ts @@ -15,7 +15,7 @@ // PROSOPO_API_BASE_URL=http://localhost // PROSOPO_SITE_KEY=5FzjruAqyhRGV81pMb4yznNS7t52hNB8u2VC2N1P22j5QLY9 -import { EnvironmentTypesSchema, NetworkNamesSchema } from "@prosopo/types"; +import { EnvironmentTypesSchema } from "@prosopo/types"; import type { ProsopoClientConfigInput } from "@prosopo/types"; const getWeb2 = (): boolean | undefined => { @@ -35,9 +35,6 @@ const config: ProsopoClientConfigInput = { defaultEnvironment: process.env.PROSOPO_DEFAULT_ENVIRONMENT ? EnvironmentTypesSchema.parse(process.env.PROSOPO_DEFAULT_ENVIRONMENT) : EnvironmentTypesSchema.enum.development, - defaultNetwork: process.env.PROSOPO_DEFAULT_NETWORK - ? NetworkNamesSchema.parse(process.env.PROSOPO_DEFAULT_NETWORK) - : NetworkNamesSchema.enum.development, dappName: "client-example", serverUrl: process.env.PROSOPO_SERVER_URL || "", }; diff --git a/demos/client-frictionless-example/vite.config.ts b/demos/client-frictionless-example/vite.config.ts index d1d29acc0b..683c955f86 100644 --- a/demos/client-frictionless-example/vite.config.ts +++ b/demos/client-frictionless-example/vite.config.ts @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. import * as path from "node:path"; -import { loadEnv } from "@prosopo/cli"; +import { loadEnv } from "@prosopo/dotenv"; import { getLogger } from "@prosopo/common"; import { VitePluginCloseAndCopy } from "@prosopo/config"; import react from "@vitejs/plugin-react"; @@ -22,73 +22,67 @@ const dir = path.resolve("."); loadEnv(dir); // https://vitejs.dev/config/ export default defineConfig(({ command, mode }) => { - logger.info(`Running at ${dir} in ${mode} mode`); - // NODE_ENV must be wrapped in quotes. We just set it to the mode and ignore what's in the env file, otherwise the - // mode and NODE_ENV can end up out of sync (one set to development and the other set to production, which causes - // issues like this: https://github.com/hashicorp/next-mdx-remote/pull/323 - logger.info(`NODE_ENV: ${process.env.NODE_ENV}`); + logger.info(`Running at ${dir} in ${mode} mode`); + // NODE_ENV must be wrapped in quotes. We just set it to the mode and ignore what's in the env file, otherwise the + // mode and NODE_ENV can end up out of sync (one set to development and the other set to production, which causes + // issues like this: https://github.com/hashicorp/next-mdx-remote/pull/323 + logger.info(`NODE_ENV: ${process.env.NODE_ENV}`); - // Set the env vars that we want to be available in the browser - const define = { - // used to stop websockets package from breaking - "process.env.WS_NO_BUFFER_UTIL": JSON.stringify("true"), - "process.env.WS_NO_UTF_8_VALIDATE": JSON.stringify("true"), - "process.env.NODE_ENV": JSON.stringify(mode), - "process.env.PROSOPO_SUBSTRATE_ENDPOINT": JSON.stringify( - process.env.PROSOPO_SUBSTRATE_ENDPOINT, - ), - "process.env.PROSOPO_DEFAULT_ENVIRONMENT": JSON.stringify( - process.env.PROSOPO_DEFAULT_ENVIRONMENT, - ), - // only needed if bundling with a site key - "process.env.PROSOPO_SITE_KEY": JSON.stringify( - process.env.PROSOPO_SITE_KEY, - ), - "process.env.PROSOPO_CONTRACT_ADDRESS": JSON.stringify( - process.env.PROSOPO_CONTRACT_ADDRESS, - ), - "process.env.PROSOPO_WEB2": JSON.stringify(process.env.PROSOPO_WEB2), - "process.env.PROSOPO_SERVER_URL": JSON.stringify( - process.env.PROSOPO_SERVER_URL, - ), - "process.env.PROSOPO_PORT": JSON.stringify(process.env.PROSOPO_PORT), - }; - logger.debug("define", JSON.stringify(define)); + // Set the env vars that we want to be available in the browser + const define = { + // used to stop websockets package from breaking + "process.env.WS_NO_BUFFER_UTIL": JSON.stringify("true"), + "process.env.WS_NO_UTF_8_VALIDATE": JSON.stringify("true"), + "process.env.NODE_ENV": JSON.stringify(mode), + "process.env.PROSOPO_DEFAULT_ENVIRONMENT": JSON.stringify( + process.env.PROSOPO_DEFAULT_ENVIRONMENT, + ), + // only needed if bundling with a site key + "process.env.PROSOPO_SITE_KEY": JSON.stringify( + process.env.PROSOPO_SITE_KEY, + ), + "process.env.PROSOPO_WEB2": JSON.stringify(process.env.PROSOPO_WEB2), + "process.env.PROSOPO_SERVER_URL": JSON.stringify( + process.env.PROSOPO_SERVER_URL, + ), + "process.env.PROSOPO_PORT": JSON.stringify(process.env.PROSOPO_PORT), + }; + logger.debug("define", JSON.stringify(define)); - return { - watch: false, - mode: "development", - bundle: true, - define, - optimizeDeps: { - include: ["prop-types"], - }, - esbuild: { - target: [ - "es2020", - "chrome60", - "edge18", - "firefox60", - "node12", - "safari11", - ], - }, - build: { - modulePreload: { polyfill: true }, - lib: { - entry: path.resolve(__dirname, "./index.html"), - name: "client_example", - }, - }, - plugins: [ - // @ts-ignore - react(), - // Closes the bundler and copies the bundle to the client-bundle-example project unless we're in serve - // mode, in which case we don't want to close the bundler because it will close the server - command !== "serve" ? VitePluginCloseAndCopy() : undefined, - ], - server: { - port: process.env.PROSOPO_PORT ? Number(process.env.PROSOPO_PORT) : 9234, - }, - }; + return { + watch: false, + mode: "development", + bundle: true, + define, + optimizeDeps: { + include: ["prop-types"], + }, + esbuild: { + target: [ + "es2020", + "chrome60", + "edge18", + "firefox60", + "node12", + "safari11", + ], + }, + build: { + modulePreload: { polyfill: true }, + lib: { + entry: path.resolve(__dirname, "./index.html"), + name: "client_example", + }, + }, + plugins: [ + // @ts-ignore + react(), + // Closes the bundler and copies the bundle to the client-bundle-example project unless we're in serve + // mode, in which case we don't want to close the bundler because it will close the server + command !== "serve" ? VitePluginCloseAndCopy() : undefined, + ], + server: { + port: process.env.PROSOPO_PORT ? Number(process.env.PROSOPO_PORT) : 9234, + }, + }; }); diff --git a/demos/client-pow-example/env.development b/demos/client-pow-example/env.development index 7bc9d7ddf3..c9b3e511c6 100644 --- a/demos/client-pow-example/env.development +++ b/demos/client-pow-example/env.development @@ -1,8 +1,5 @@ PROSOPO_SITE_KEY=5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw -PROSOPO_SUBSTRATE_ENDPOINT=ws://127.0.0.1:9944 -PROSOPO_CONTRACT_ADDRESS= PROSOPO_WEB2=true PROSOPO_SERVER_URL=http://localhost:9228 PROSOPO_PORT=9234 -PROSOPO_DEFAULT_NETWORK=development PROSOPO_DEFAULT_ENVIRONMENT=development diff --git a/demos/client-pow-example/package.json b/demos/client-pow-example/package.json index b24ec23828..670919998e 100644 --- a/demos/client-pow-example/package.json +++ b/demos/client-pow-example/package.json @@ -1,52 +1,52 @@ { - "name": "@prosopo/client-pow-example", - "version": "2.0.1", - "private": true, - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "dependencies": { - "@emotion/react": "^11.9.3", - "@emotion/styled": "^11.9.3", - "@mui/material": "^5.9.1", - "@prosopo/common": "2.0.1", - "@prosopo/procaptcha": "2.0.1", - "@prosopo/procaptcha-pow": "2.0.1", - "@prosopo/procaptcha-react": "2.0.1", - "@prosopo/types": "2.0.1", - "@types/react-dom": "^18.3.0", - "electron": "25.8.4", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "web-vitals": "^2.1.4" - }, - "devDependencies": { - "@prosopo/cli": "2.0.1", - "@prosopo/config": "2.0.1", - "@types/node": "^20.3.1", - "css-loader": "^6.8.1", - "tslib": "2.6.2", - "typescript": "5.1.6" - }, - "scripts": { - "test": "echo \"No test specified\"", - "start": "NODE_ENV=${NODE_ENV:-development}; vite serve --mode=$NODE_ENV --config vite.config.ts --port 9240 --host --force", - "build": "tsc --build --verbose", - "bundle": "NODE_ENV=${NODE_ENV:-production}; vite build --mode=$NODE_ENV --config vite.config.ts --outDir dist --emptyOutDir", - "clean": "tsc --build --clean" - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - } + "name": "@prosopo/client-pow-example", + "version": "2.0.2", + "private": true, + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "dependencies": { + "@emotion/react": "^11.9.3", + "@emotion/styled": "^11.9.3", + "@mui/material": "^5.9.1", + "@prosopo/common": "2.0.2", + "@prosopo/procaptcha": "2.0.2", + "@prosopo/procaptcha-pow": "2.0.2", + "@prosopo/procaptcha-react": "2.0.2", + "@prosopo/types": "2.0.2", + "@types/react-dom": "^18.3.0", + "electron": "25.8.4", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "web-vitals": "^2.1.4" + }, + "devDependencies": { + "@prosopo/dotenv": "2.0.2", + "@prosopo/config": "2.0.2", + "@types/node": "^20.3.1", + "css-loader": "^6.8.1", + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "scripts": { + "test": "echo \"No test specified\"", + "start": "NODE_ENV=${NODE_ENV:-development}; vite serve --mode=$NODE_ENV --config vite.config.ts --port 9240 --host --force", + "build": "tsc --build --verbose", + "bundle": "NODE_ENV=${NODE_ENV:-production}; vite build --mode=$NODE_ENV --config vite.config.ts --outDir dist --emptyOutDir", + "clean": "tsc --build --clean" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } } diff --git a/demos/client-pow-example/src/config.ts b/demos/client-pow-example/src/config.ts index 5a0667370e..235ee10edb 100644 --- a/demos/client-pow-example/src/config.ts +++ b/demos/client-pow-example/src/config.ts @@ -15,7 +15,7 @@ // PROSOPO_API_BASE_URL=http://localhost // PROSOPO_SITE_KEY=5FzjruAqyhRGV81pMb4yznNS7t52hNB8u2VC2N1P22j5QLY9 -import { EnvironmentTypesSchema, NetworkNamesSchema } from "@prosopo/types"; +import { EnvironmentTypesSchema } from "@prosopo/types"; import type { ProsopoClientConfigInput } from "@prosopo/types"; const getWeb2 = (): boolean | undefined => { @@ -35,9 +35,6 @@ const config: ProsopoClientConfigInput = { defaultEnvironment: process.env.PROSOPO_DEFAULT_ENVIRONMENT ? EnvironmentTypesSchema.parse(process.env.PROSOPO_DEFAULT_ENVIRONMENT) : EnvironmentTypesSchema.enum.development, - defaultNetwork: process.env.PROSOPO_DEFAULT_NETWORK - ? NetworkNamesSchema.parse(process.env.PROSOPO_DEFAULT_NETWORK) - : NetworkNamesSchema.enum.development, dappName: "client-example", serverUrl: process.env.PROSOPO_SERVER_URL || "", }; diff --git a/demos/client-pow-example/vite.config.ts b/demos/client-pow-example/vite.config.ts index d1d29acc0b..683c955f86 100644 --- a/demos/client-pow-example/vite.config.ts +++ b/demos/client-pow-example/vite.config.ts @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. import * as path from "node:path"; -import { loadEnv } from "@prosopo/cli"; +import { loadEnv } from "@prosopo/dotenv"; import { getLogger } from "@prosopo/common"; import { VitePluginCloseAndCopy } from "@prosopo/config"; import react from "@vitejs/plugin-react"; @@ -22,73 +22,67 @@ const dir = path.resolve("."); loadEnv(dir); // https://vitejs.dev/config/ export default defineConfig(({ command, mode }) => { - logger.info(`Running at ${dir} in ${mode} mode`); - // NODE_ENV must be wrapped in quotes. We just set it to the mode and ignore what's in the env file, otherwise the - // mode and NODE_ENV can end up out of sync (one set to development and the other set to production, which causes - // issues like this: https://github.com/hashicorp/next-mdx-remote/pull/323 - logger.info(`NODE_ENV: ${process.env.NODE_ENV}`); + logger.info(`Running at ${dir} in ${mode} mode`); + // NODE_ENV must be wrapped in quotes. We just set it to the mode and ignore what's in the env file, otherwise the + // mode and NODE_ENV can end up out of sync (one set to development and the other set to production, which causes + // issues like this: https://github.com/hashicorp/next-mdx-remote/pull/323 + logger.info(`NODE_ENV: ${process.env.NODE_ENV}`); - // Set the env vars that we want to be available in the browser - const define = { - // used to stop websockets package from breaking - "process.env.WS_NO_BUFFER_UTIL": JSON.stringify("true"), - "process.env.WS_NO_UTF_8_VALIDATE": JSON.stringify("true"), - "process.env.NODE_ENV": JSON.stringify(mode), - "process.env.PROSOPO_SUBSTRATE_ENDPOINT": JSON.stringify( - process.env.PROSOPO_SUBSTRATE_ENDPOINT, - ), - "process.env.PROSOPO_DEFAULT_ENVIRONMENT": JSON.stringify( - process.env.PROSOPO_DEFAULT_ENVIRONMENT, - ), - // only needed if bundling with a site key - "process.env.PROSOPO_SITE_KEY": JSON.stringify( - process.env.PROSOPO_SITE_KEY, - ), - "process.env.PROSOPO_CONTRACT_ADDRESS": JSON.stringify( - process.env.PROSOPO_CONTRACT_ADDRESS, - ), - "process.env.PROSOPO_WEB2": JSON.stringify(process.env.PROSOPO_WEB2), - "process.env.PROSOPO_SERVER_URL": JSON.stringify( - process.env.PROSOPO_SERVER_URL, - ), - "process.env.PROSOPO_PORT": JSON.stringify(process.env.PROSOPO_PORT), - }; - logger.debug("define", JSON.stringify(define)); + // Set the env vars that we want to be available in the browser + const define = { + // used to stop websockets package from breaking + "process.env.WS_NO_BUFFER_UTIL": JSON.stringify("true"), + "process.env.WS_NO_UTF_8_VALIDATE": JSON.stringify("true"), + "process.env.NODE_ENV": JSON.stringify(mode), + "process.env.PROSOPO_DEFAULT_ENVIRONMENT": JSON.stringify( + process.env.PROSOPO_DEFAULT_ENVIRONMENT, + ), + // only needed if bundling with a site key + "process.env.PROSOPO_SITE_KEY": JSON.stringify( + process.env.PROSOPO_SITE_KEY, + ), + "process.env.PROSOPO_WEB2": JSON.stringify(process.env.PROSOPO_WEB2), + "process.env.PROSOPO_SERVER_URL": JSON.stringify( + process.env.PROSOPO_SERVER_URL, + ), + "process.env.PROSOPO_PORT": JSON.stringify(process.env.PROSOPO_PORT), + }; + logger.debug("define", JSON.stringify(define)); - return { - watch: false, - mode: "development", - bundle: true, - define, - optimizeDeps: { - include: ["prop-types"], - }, - esbuild: { - target: [ - "es2020", - "chrome60", - "edge18", - "firefox60", - "node12", - "safari11", - ], - }, - build: { - modulePreload: { polyfill: true }, - lib: { - entry: path.resolve(__dirname, "./index.html"), - name: "client_example", - }, - }, - plugins: [ - // @ts-ignore - react(), - // Closes the bundler and copies the bundle to the client-bundle-example project unless we're in serve - // mode, in which case we don't want to close the bundler because it will close the server - command !== "serve" ? VitePluginCloseAndCopy() : undefined, - ], - server: { - port: process.env.PROSOPO_PORT ? Number(process.env.PROSOPO_PORT) : 9234, - }, - }; + return { + watch: false, + mode: "development", + bundle: true, + define, + optimizeDeps: { + include: ["prop-types"], + }, + esbuild: { + target: [ + "es2020", + "chrome60", + "edge18", + "firefox60", + "node12", + "safari11", + ], + }, + build: { + modulePreload: { polyfill: true }, + lib: { + entry: path.resolve(__dirname, "./index.html"), + name: "client_example", + }, + }, + plugins: [ + // @ts-ignore + react(), + // Closes the bundler and copies the bundle to the client-bundle-example project unless we're in serve + // mode, in which case we don't want to close the bundler because it will close the server + command !== "serve" ? VitePluginCloseAndCopy() : undefined, + ], + server: { + port: process.env.PROSOPO_PORT ? Number(process.env.PROSOPO_PORT) : 9234, + }, + }; }); diff --git a/demos/cypress-shared/package.json b/demos/cypress-shared/package.json index b7253e2f67..0d18bf1ac2 100644 --- a/demos/cypress-shared/package.json +++ b/demos/cypress-shared/package.json @@ -1,43 +1,43 @@ { - "name": "@prosopo/cypress-shared", - "version": "2.0.1", - "private": true, - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "dependencies": { - "@prosopo/types": "2.0.1", - "@prosopo/util": "2.0.1", - "mongodb": "5.9.2" - }, - "devDependencies": { - "@cypress/xpath": "^2.0.3", - "@types/node": "^20.3.1", - "cypress": "^13.4.0", - "cypress-vite": "^1.5.0", - "rollup-plugin-node-builtins": "^2.0.1", - "tslib": "2.6.2", - "typescript": "5.1.6", - "vite": "^5.1.7", - "vite-plugin-node-polyfills": "^0.21.0" - }, - "scripts": { - "test": "echo \"No test specified\"", - "build": "tsc --build --verbose", - "clean": "tsc --build --clean", - "cypress:open:client-example": "CYPRESS_BASE_URL='http://0.0.0.0:9230' cypress open", - "cypress:run:client-example": "CYPRESS_BASE_URL='http://0.0.0.0:9230' cypress run", - "cypress:open:client-example:frictionless": "CYPRESS_BASE_URL='http://0.0.0.0:9230' cypress open --env default_page='/frictionless'", - "cypress:run:client-example:frictionless": "CYPRESS_BASE_URL='http://0.0.0.0:9230' cypress run --env default_page='/frictionless'", - "cypress:open:client-bundle-example": "CYPRESS_BASE_URL='http://localhost:9232' cypress open", - "cypress:run:client-bundle-example": "CYPRESS_BASE_URL='http://localhost:9232' cypress run --spec 'cypress/e2e/captcha.cy.ts,cypress/e2e/correct.captcha.cy.ts'", - "cypress:open:client-bundle-example:explicit": "CYPRESS_BASE_URL='http://localhost:9232' cypress open --env default_page='/urlParams.html'", - "cypress:run:client-bundle-example:explicit": "CYPRESS_BASE_URL='http://localhost:9232' cypress run --env default_page='/urlParams.html' --spec 'cypress/e2e/captcha.cy.ts'", - "cypress:open:client-bundle-example:frictionless": "CYPRESS_BASE_URL='http://localhost:9232' cypress open --env default_page='/frictionless.html'", - "cypress:run:client-bundle-example:frictionless": "CYPRESS_BASE_URL='http://localhost:9232' cypress run --env default_page='/frictionless.html'", - "cypress:open:client-bundle-example:js_server": "CYPRESS_BASE_URL='http://localhost:9232' cypress open --env default_page='/jsBundleTest.html'", - "cypress:run:client-bundle-example:js_server": "CYPRESS_BASE_URL='http://localhost:9232' cypress run --env default_page='/jsBundleTest.html' --spec 'cypress/e2e/captcha.cy.ts'" - } + "name": "@prosopo/cypress-shared", + "version": "2.0.2", + "private": true, + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "dependencies": { + "@prosopo/types": "2.0.2", + "@prosopo/util": "2.0.2", + "mongodb": "5.9.2" + }, + "devDependencies": { + "@cypress/xpath": "^2.0.3", + "@types/node": "^20.3.1", + "cypress": "^13.4.0", + "cypress-vite": "^1.5.0", + "rollup-plugin-node-builtins": "^2.0.2", + "tslib": "2.6.2", + "typescript": "5.1.6", + "vite": "^5.1.7", + "vite-plugin-node-polyfills": "^0.21.0" + }, + "scripts": { + "test": "echo \"No test specified\"", + "build": "tsc --build --verbose", + "clean": "tsc --build --clean", + "cypress:open:client-example": "CYPRESS_BASE_URL='http://0.0.0.0:9230' cypress open", + "cypress:run:client-example": "CYPRESS_BASE_URL='http://0.0.0.0:9230' cypress run", + "cypress:open:client-example:frictionless": "CYPRESS_BASE_URL='http://0.0.0.0:9230' cypress open --env default_page='/frictionless'", + "cypress:run:client-example:frictionless": "CYPRESS_BASE_URL='http://0.0.0.0:9230' cypress run --env default_page='/frictionless'", + "cypress:open:client-bundle-example": "CYPRESS_BASE_URL='http://localhost:9232' cypress open", + "cypress:run:client-bundle-example": "CYPRESS_BASE_URL='http://localhost:9232' cypress run --spec 'cypress/e2e/captcha.cy.ts,cypress/e2e/correct.captcha.cy.ts'", + "cypress:open:client-bundle-example:explicit": "CYPRESS_BASE_URL='http://localhost:9232' cypress open --env default_page='/urlParams.html'", + "cypress:run:client-bundle-example:explicit": "CYPRESS_BASE_URL='http://localhost:9232' cypress run --env default_page='/urlParams.html' --spec 'cypress/e2e/captcha.cy.ts'", + "cypress:open:client-bundle-example:frictionless": "CYPRESS_BASE_URL='http://localhost:9232' cypress open --env default_page='/frictionless.html'", + "cypress:run:client-bundle-example:frictionless": "CYPRESS_BASE_URL='http://localhost:9232' cypress run --env default_page='/frictionless.html'", + "cypress:open:client-bundle-example:js_server": "CYPRESS_BASE_URL='http://localhost:9232' cypress open --env default_page='/jsBundleTest.html'", + "cypress:run:client-bundle-example:js_server": "CYPRESS_BASE_URL='http://localhost:9232' cypress run --env default_page='/jsBundleTest.html' --spec 'cypress/e2e/captcha.cy.ts'" + } } diff --git a/demos/provider-mock/package.json b/demos/provider-mock/package.json index 641b7b1f15..28099704a5 100644 --- a/demos/provider-mock/package.json +++ b/demos/provider-mock/package.json @@ -1,37 +1,37 @@ { - "name": "@prosopo/provider-mock", - "version": "2.0.1", - "author": "PROSOPO LIMITED ", - "license": "Apache-2.0", - "main": "./dist/index.js", - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose" - }, - "dependencies": { - "@prosopo/cli": "2.0.1", - "@prosopo/common": "2.0.1", - "@prosopo/types": "2.0.1", - "es-main": "^1.3.0", - "express": "^4.18.1" - }, - "devDependencies": { - "tslib": "2.6.2", - "typescript": "5.1.6" - }, - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/prosopo/provider.git" - }, - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "sideEffects": false + "name": "@prosopo/provider-mock", + "version": "2.0.2", + "author": "PROSOPO LIMITED ", + "license": "Apache-2.0", + "main": "./dist/index.js", + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose" + }, + "dependencies": { + "@prosopo/dotenv": "2.0.2", + "@prosopo/common": "2.0.2", + "@prosopo/types": "2.0.2", + "es-main": "^1.3.0", + "express": "^4.18.1" + }, + "devDependencies": { + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/prosopo/provider.git" + }, + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "sideEffects": false } diff --git a/dev/config/package.json b/dev/config/package.json index f884c7ac78..18ecf3e060 100644 --- a/dev/config/package.json +++ b/dev/config/package.json @@ -1,101 +1,101 @@ { - "name": "@prosopo/config", - "version": "2.0.1", - "description": "Prosopo config library", - "main": "./dist/index.js", - "type": "module", - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - }, - "./webpack": { - "import": "./dist/webpack/index.js", - "require": "./dist/webpack/cjs/index.cjs" - }, - "./webpack/webpack.config": { - "import": "./dist/webpack/webpack.config.js", - "require": "./dist/cjs/webpack/webpack.config.cjs" - } - }, - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "vite build --config vite.cjs.config.ts" - }, - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "author": "Prosopo Limited", - "license": "Apache-2.0", - "dependencies": { - "@babel/core": "^7.24.5", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-import-attributes-to-assertions": "^7.24.1", - "@babel/plugin-proposal-object-rest-spread": "^7.20.7", - "@babel/plugin-syntax-import-attributes": "^7.24.1", - "@babel/plugin-transform-react-jsx": "^7.24.6", - "@babel/plugin-transform-runtime": "^7.24.3", - "@babel/preset-env": "^7.24.5", - "@prosopo/common": "2.0.1", - "@prosopo/types": "2.0.1", - "@prosopo/util": "2.0.1", - "@rollup/plugin-alias": "^5.1.0", - "@rollup/plugin-babel": "^6.0.4", - "@rollup/plugin-commonjs": "^25.0.7", - "@rollup/plugin-dynamic-import-vars": "^2.1.2", - "@rollup/plugin-inject": "^5.0.5", - "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/plugin-replace": "^5.0.5", - "@rollup/plugin-typescript": "^11.1.6", - "@rollup/plugin-wasm": "^6.2.2", - "@types/react": "^18.3.1", - "@types/react-dom": "^18.3.0", - "@types/uuid": "^9.0.8", - "@vitejs/plugin-react": "^4.2.1", - "babel-loader": "^9.1.3", - "esbuild": "^0.20.2", - "glob": "^10.0.0", - "html-webpack-plugin": "^5.6.0", - "mini-css-extract-plugin": "^2.9.0", - "node-polyfill-webpack-plugin": "^4.0.0", - "path-scurry": "^1.10.0", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "regenerator-runtime": "^0.14.0", - "rollup-plugin-cleanup": "^3.2.1", - "rollup-plugin-import-css": "^3.5.0", - "string-replace-loader": "^3.1.0", - "terser-webpack-plugin": "^5.3.10", - "tsconfig-paths": "^4.2.0", - "vite": "^5.1.7", - "vite-bundle-visualizer": "^1.0.1", - "vite-plugin-no-bundle": "^3.0.0", - "vite-tsconfig-paths": "^4.3.1", - "webpack": "^5.91.0", - "webpack-cli": "^5.1.4", - "webpack-dev-server": "^5.0.4" - }, - "devDependencies": { - "@babel/plugin-transform-class-properties": "^7.24.7", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/preset-typescript": "^7.24.1", - "tslib": "2.6.2", - "typescript": "5.1.6" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/prosopo/captcha.git" - }, - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "publishConfig": { - "registry": "https://registry.npmjs.org" - }, - "sideEffects": false + "name": "@prosopo/config", + "version": "2.0.2", + "description": "Prosopo config library", + "main": "./dist/index.js", + "type": "module", + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + }, + "./webpack": { + "import": "./dist/webpack/index.js", + "require": "./dist/webpack/cjs/index.cjs" + }, + "./webpack/webpack.config": { + "import": "./dist/webpack/webpack.config.js", + "require": "./dist/cjs/webpack/webpack.config.cjs" + } + }, + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "vite build --config vite.cjs.config.ts" + }, + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "author": "Prosopo Limited", + "license": "Apache-2.0", + "dependencies": { + "@babel/core": "^7.24.5", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-import-attributes-to-assertions": "^7.24.1", + "@babel/plugin-proposal-object-rest-spread": "^7.20.7", + "@babel/plugin-syntax-import-attributes": "^7.24.1", + "@babel/plugin-transform-react-jsx": "^7.24.6", + "@babel/plugin-transform-runtime": "^7.24.3", + "@babel/preset-env": "^7.24.5", + "@prosopo/common": "2.0.2", + "@prosopo/types": "2.0.2", + "@prosopo/util": "2.0.2", + "@rollup/plugin-alias": "^5.1.0", + "@rollup/plugin-babel": "^6.0.4", + "@rollup/plugin-commonjs": "^25.0.7", + "@rollup/plugin-dynamic-import-vars": "^2.1.2", + "@rollup/plugin-inject": "^5.0.5", + "@rollup/plugin-json": "^6.1.0", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-replace": "^5.0.5", + "@rollup/plugin-typescript": "^11.1.6", + "@rollup/plugin-wasm": "^6.2.2", + "@types/react": "^18.3.1", + "@types/react-dom": "^18.3.0", + "@types/uuid": "^9.0.8", + "@vitejs/plugin-react": "^4.2.1", + "babel-loader": "^9.1.3", + "esbuild": "^0.20.2", + "glob": "^10.0.0", + "html-webpack-plugin": "^5.6.0", + "mini-css-extract-plugin": "^2.9.0", + "node-polyfill-webpack-plugin": "^4.0.0", + "path-scurry": "^1.10.0", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "regenerator-runtime": "^0.14.0", + "rollup-plugin-cleanup": "^3.2.1", + "rollup-plugin-import-css": "^3.5.0", + "string-replace-loader": "^3.1.0", + "terser-webpack-plugin": "^5.3.10", + "tsconfig-paths": "^4.2.0", + "vite": "^5.1.7", + "vite-bundle-visualizer": "^1.0.1", + "vite-plugin-no-bundle": "^3.0.0", + "vite-tsconfig-paths": "^4.3.1", + "webpack": "^5.91.0", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^5.0.4" + }, + "devDependencies": { + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/preset-typescript": "^7.24.1", + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/prosopo/captcha.git" + }, + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "publishConfig": { + "registry": "https://registry.npmjs.org" + }, + "sideEffects": false } diff --git a/dev/config/src/projectInfo.ts b/dev/config/src/projectInfo.ts index f680955c24..290ef668ee 100644 --- a/dev/config/src/projectInfo.ts +++ b/dev/config/src/projectInfo.ts @@ -15,7 +15,7 @@ // Top Level export const getRootDir = () => - new URL("../../..", import.meta.url).pathname.slice(0, -1); + new URL("../../..", import.meta.url).pathname.slice(0, -1); export const getCacheDir = () => `${getRootDir()}/.cache`; @@ -35,16 +35,15 @@ export const getConfigPkgDir = () => `${getDevDir()}/config`; export const getScriptsPkgDir = () => `${getDevDir()}/scripts`; - // Demos export const getClientExampleDir = () => `${getDemosDir()}/client-example`; export const getClientExampleServerDir = () => - `${getDemosDir()}/client-example-server`; + `${getDemosDir()}/client-example-server`; export const getClientBundleExampleDir = () => - `${getDemosDir()}/client-bundle-example`; + `${getDemosDir()}/client-bundle-example`; export const getDappExampleDir = () => `${getDemosDir()}/dapp-example`; @@ -66,6 +65,8 @@ export const getDatasetsPkgDir = () => `${getPackagesDir()}/datasets`; export const getDatasetsFsPkgDir = () => `${getPackagesDir()}/datasets-fs`; +export const getDotEnvPkgDir = () => `${getPackagesDir()}/dotenv`; + export const getEnvPkgDir = () => `${getPackagesDir()}/env`; export const getFileServerPkgDir = () => `${getPackagesDir()}/file-server`; @@ -73,19 +74,19 @@ export const getFileServerPkgDir = () => `${getPackagesDir()}/file-server`; export const getProcaptchaPkgDir = () => `${getPackagesDir()}/procaptcha`; export const getProcaptchaBundlePkgDir = () => - `${getPackagesDir()}/procaptcha-bundle`; + `${getPackagesDir()}/procaptcha-bundle`; export const getProcaptchaCommonPkgDir = () => - `${getPackagesDir()}/procaptcha-common`; + `${getPackagesDir()}/procaptcha-common`; export const getProcaptchaFrictionlessPkgDir = () => - `${getPackagesDir()}/procaptcha-frictionless`; + `${getPackagesDir()}/procaptcha-frictionless`; export const getProcaptchaPoWPkgDir = () => - `${getPackagesDir()}/procaptcha-pow`; + `${getPackagesDir()}/procaptcha-pow`; export const getProcaptchaReactPkgDir = () => - `${getPackagesDir()}/procaptcha-react`; + `${getPackagesDir()}/procaptcha-react`; export const getProviderPkgDir = () => `${getPackagesDir()}/provider`; @@ -96,11 +97,11 @@ export const getTxPkgDir = () => `${getPackagesDir()}/tx`; export const getTypesPkgDir = () => `${getPackagesDir()}/types`; export const getTypesDatabasePkgDir = () => - `${getPackagesDir()}/types-database`; + `${getPackagesDir()}/types-database`; export const getTypesEnvPkgDir = () => `${getPackagesDir()}/types-env`; export const getUtilPkgDir = () => `${getPackagesDir()}/util`; export const getWebComponentsPkgDir = () => - `${getPackagesDir()}/web-components`; + `${getPackagesDir()}/web-components`; diff --git a/dev/config/src/provider/test.ts b/dev/config/src/provider/test.ts index faa4170938..ef7dde9649 100644 --- a/dev/config/src/provider/test.ts +++ b/dev/config/src/provider/test.ts @@ -15,8 +15,6 @@ import { getLogLevel } from "@prosopo/common"; import { DatabaseTypes, EnvironmentTypesSchema, - NetworkNamesSchema, - NetworkPairTypeSchema, ProsopoConfigSchema, } from "@prosopo/types"; @@ -25,7 +23,6 @@ export default function getTestConfig() { return ProsopoConfigSchema.parse({ logLevel, defaultEnvironment: EnvironmentTypesSchema.Values.development, - defaultNetwork: NetworkNamesSchema.Values.development, account: { password: "", address: "", @@ -43,16 +40,5 @@ export default function getTestConfig() { port: 9229, fileServePaths: "[]", }, - networks: { - development: { - endpoint: ["ws://localhost:9944"], - contract: { - address: process.env.PROSOPO_CONTRACT_ADDRESS || "", - name: "prosopo", - }, - pairType: NetworkPairTypeSchema.parse("sr25519"), - ss58Format: 42, - }, - }, }); } diff --git a/dev/config/src/vite/vite.backend.config.ts b/dev/config/src/vite/vite.backend.config.ts index cf9cc3f251..47d0f13355 100644 --- a/dev/config/src/vite/vite.backend.config.ts +++ b/dev/config/src/vite/vite.backend.config.ts @@ -1,12 +1,3 @@ -import { builtinModules } from "node:module"; -import path from "node:path"; -import { getLogger } from "@prosopo/common"; -import { nodeResolve } from "@rollup/plugin-node-resolve"; -import { wasm } from "@rollup/plugin-wasm"; -import type { Drop } from "esbuild"; -import css from "rollup-plugin-import-css"; -import type { UserConfig } from "vite"; -import { filterDependencies, getDependencies } from "../dependencies.js"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -20,132 +11,127 @@ import { filterDependencies, getDependencies } from "../dependencies.js"; // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + +import { builtinModules } from "node:module"; +import path from "node:path"; +import { getLogger } from "@prosopo/common"; +import { nodeResolve } from "@rollup/plugin-node-resolve"; +import { wasm } from "@rollup/plugin-wasm"; +import type { Drop } from "esbuild"; +import css from "rollup-plugin-import-css"; +import type { UserConfig } from "vite"; +import { filterDependencies, getDependencies } from "../dependencies.js"; import { default as ClosePlugin } from "./vite-plugin-close-and-copy.js"; import VitePluginFixAbsoluteImports from "./vite-plugin-fix-absolute-imports.js"; const logger = getLogger("Info", "vite.backend.config.js"); export default async function ( - packageName: string, - packageVersion: string, - bundleName: string, - packageDir: string, - entry: string, - command?: string, - mode?: string, - optionalBaseDir = "../..", + packageName: string, + packageVersion: string, + bundleName: string, + packageDir: string, + entry: string, + command?: string, + mode?: string, + optionalBaseDir = "../..", ): Promise { - const isProduction = mode === "production"; + const isProduction = mode === "production"; - // Get all dependencies of the current package - const { dependencies: deps, optionalPeerDependencies } = - await getDependencies(packageName, true); + // Get all dependencies of the current package + const { dependencies: deps, optionalPeerDependencies } = + await getDependencies(packageName, true); - // Output directory is relative to directory of the package - const outDir = path.resolve(packageDir, "dist/bundle"); + // Output directory is relative to directory of the package + const outDir = path.resolve(packageDir, "dist/bundle"); - // Get rid of any dependencies we don't want to bundle - const { external, internal } = filterDependencies(deps, [ - "aws", - "webpack", - "vite", - "biome", - ]); + // Get rid of any dependencies we don't want to bundle + const { external, internal } = filterDependencies(deps, [ + "aws", + "webpack", + "vite", + "biome", + ]); - // Add the node builtins (path, fs, os, etc.) to the external list - const allExternal = [ - ...builtinModules, - ...builtinModules.map((m) => `node:${m}`), - ...external, - ...optionalPeerDependencies, - ]; + // Add the node builtins (path, fs, os, etc.) to the external list + const allExternal = [ + ...builtinModules, + ...builtinModules.map((m) => `node:${m}`), + ...external, + ...optionalPeerDependencies, + ]; - logger.info( - `Bundling. ${JSON.stringify(internal.slice(0, 10), null, 2)}... ${internal.length} deps`, - ); + logger.info( + `Bundling. ${JSON.stringify(internal.slice(0, 10), null, 2)}... ${internal.length} deps`, + ); - const define = { - "process.env.WS_NO_BUFFER_UTIL": "true", - "process.env.WS_NO_UTF_8_VALIDATE": "true", - "process.env.PROSOPO_PACKAGE_VERSION": JSON.stringify(packageVersion), - "process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV || mode), - ...(process.env.PROSOPO_DEFAULT_ENVIRONMENT && { - "process.env.PROSOPO_DEFAULT_ENVIRONMENT": JSON.stringify( - process.env.PROSOPO_DEFAULT_ENVIRONMENT, - ), - }), - ...(process.env.PROSOPO_DEFAULT_NETWORK && { - "process.env.PROSOPO_DEFAULT_NETWORK": JSON.stringify( - process.env.PROSOPO_DEFAULT_NETWORK, - ), - }), - ...(process.env.PROSOPO_SUBSTRATE_ENDPOINT && { - "process.env.PROSOPO_SUBSTRATE_ENDPOINT": JSON.stringify( - process.env.PROSOPO_SUBSTRATE_ENDPOINT, - ), - }), - ...(process.env.PROSOPO_CONTRACT_ADDRESS && { - "process.env.PROSOPO_CONTRACT_ADDRESS": JSON.stringify( - process.env.PROSOPO_CONTRACT_ADDRESS, - ), - }), - }; + const define = { + "process.env.WS_NO_BUFFER_UTIL": "true", + "process.env.WS_NO_UTF_8_VALIDATE": "true", + "process.env.PROSOPO_PACKAGE_VERSION": JSON.stringify(packageVersion), + "process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV || mode), + ...(process.env.PROSOPO_DEFAULT_ENVIRONMENT && { + "process.env.PROSOPO_DEFAULT_ENVIRONMENT": JSON.stringify( + process.env.PROSOPO_DEFAULT_ENVIRONMENT, + ), + }), + }; - logger.info(`Defined vars ${JSON.stringify(define, null, 2)}`); + logger.info(`Defined vars ${JSON.stringify(define, null, 2)}`); - const entryAbsolute = path.resolve(packageDir, entry); + const entryAbsolute = path.resolve(packageDir, entry); - // drop console logs if in production mode - const drop: Drop[] | undefined = - mode === "production" ? ["console", "debugger"] : undefined; + // drop console logs if in production mode + const drop: Drop[] | undefined = + mode === "production" ? ["console", "debugger"] : undefined; - return { - ssr: { - noExternal: internal, - external: allExternal, - }, - optimizeDeps: { - include: ["linked-dep", "node_modules"], - esbuildOptions: { - loader: { - ".node": "file", - }, - }, - }, - esbuild: { - platform: "node", - target: "node18", - drop, - legalComments: "none", - }, - define, - build: { - outDir, - minify: isProduction, - ssr: true, - target: "node18", - lib: { - entry: entryAbsolute, - name: bundleName, - fileName: `${bundleName}.[name].bundle.js`, - formats: ["es"], - }, - modulePreload: { polyfill: false }, - rollupOptions: { - treeshake: "smallest", - external: allExternal, - watch: false, - output: { - entryFileNames: `${bundleName}.[name].bundle.js`, - }, - plugins: [css(), wasm(), nodeResolve()], - }, - }, - plugins: [ - // plugin to replace stuff like import blah from string_encoder/lib/string_encoder.js with import blah from string_encoder - VitePluginFixAbsoluteImports(), - // plugin to close the bundle after build if not in serve mode - command !== "serve" ? ClosePlugin() : undefined, - ], - }; + return { + ssr: { + noExternal: internal, + external: allExternal, + }, + optimizeDeps: { + include: ["linked-dep", "node_modules"], + esbuildOptions: { + loader: { + ".node": "file", + }, + }, + }, + esbuild: { + platform: "node", + target: "node18", + drop, + legalComments: "none", + }, + define, + build: { + outDir, + minify: isProduction, + ssr: true, + target: "node18", + lib: { + entry: entryAbsolute, + name: bundleName, + fileName: `${bundleName}.[name].bundle.js`, + formats: ["es"], + }, + modulePreload: { polyfill: false }, + rollupOptions: { + treeshake: "smallest", + external: allExternal, + watch: false, + output: { + entryFileNames: `${bundleName}.[name].bundle.js`, + }, + plugins: [css(), wasm(), nodeResolve()], + }, + }, + plugins: [ + // plugin to replace stuff like import blah from string_encoder/lib/string_encoder.js with import blah from string_encoder + VitePluginFixAbsoluteImports(), + // plugin to close the bundle after build if not in serve mode + command !== "serve" ? ClosePlugin() : undefined, + ], + }; } diff --git a/dev/config/src/vite/vite.frontend.config.ts b/dev/config/src/vite/vite.frontend.config.ts index 4de0e83728..656e5f3b90 100644 --- a/dev/config/src/vite/vite.frontend.config.ts +++ b/dev/config/src/vite/vite.frontend.config.ts @@ -29,201 +29,192 @@ import type { ClosePluginOptions } from "./vite-plugin-close-and-copy.js"; const logger = getLogger("Info", "vite.config.js"); export default async function ( - packageName: string, - bundleName: string, - dir: string, - entry: string, - command?: string, - mode?: string, - copyOptions?: ClosePluginOptions, - tsConfigPaths?: string[], - workspaceRoot?: string, + packageName: string, + bundleName: string, + dir: string, + entry: string, + command?: string, + mode?: string, + copyOptions?: ClosePluginOptions, + tsConfigPaths?: string[], + workspaceRoot?: string, ): Promise { - logger.info(`Running at ${dir} in ${mode} mode`); - const isProduction = mode === "production"; - // NODE_ENV must be wrapped in quotes. - // If NODE_ENV ends up out of sync (one set to development and the other set to production), it causes - // issues like this: https://github.com/hashicorp/next-mdx-remote/pull/323 - process.env.NODE_ENV = `${process.env.NODE_ENV || mode}`; - logger.info(`NODE_ENV: ${process.env.NODE_ENV}`); + logger.info(`Running at ${dir} in ${mode} mode`); + const isProduction = mode === "production"; + // NODE_ENV must be wrapped in quotes. + // If NODE_ENV ends up out of sync (one set to development and the other set to production), it causes + // issues like this: https://github.com/hashicorp/next-mdx-remote/pull/323 + process.env.NODE_ENV = `${process.env.NODE_ENV || mode}`; + logger.info(`NODE_ENV: ${process.env.NODE_ENV}`); - // Set the env vars that we want to be available in the browser - const define = { - // used to stop websockets package from breaking - "process.env.WS_NO_BUFFER_UTIL": JSON.stringify("true"), - "process.env.WS_NO_UTF_8_VALIDATE": JSON.stringify("true"), - "process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV), - "process.env.PROSOPO_SUBSTRATE_ENDPOINT": JSON.stringify( - process.env.PROSOPO_SUBSTRATE_ENDPOINT, - ), - "process.env.PROSOPO_DEFAULT_ENVIRONMENT": JSON.stringify( - process.env.PROSOPO_DEFAULT_ENVIRONMENT || process.env.NODE_ENV || mode, - ), - "process.env.PROSOPO_DEFAULT_NETWORK": JSON.stringify( - process.env.PROSOPO_DEFAULT_NETWORK, - ), - "process.env.PROSOPO_SERVER_URL": JSON.stringify( - process.env.PROSOPO_SERVER_URL, - ), - "process.env._DEV_ONLY_WATCH_EVENTS": JSON.stringify( - process.env._DEV_ONLY_WATCH_EVENTS, - ), - "process.env.PROSOPO_MONGO_EVENTS_URI": JSON.stringify( - process.env.PROSOPO_MONGO_EVENTS_URI, - ), - "process.env.PROSOPO_CONTRACT_ADDRESS": JSON.stringify( - process.env.PROSOPO_CONTRACT_ADDRESS, - ), - "process.env.PROSOPO_PACKAGE_VERSION": JSON.stringify( - process.env.PROSOPO_PACKAGE_VERSION, - ), - // only needed if bundling with a site key - "process.env.PROSOPO_SITE_KEY": JSON.stringify( - process.env.PROSOPO_SITE_KEY, - ), - }; + // Set the env vars that we want to be available in the browser + const define = { + // used to stop websockets package from breaking + "process.env.WS_NO_BUFFER_UTIL": JSON.stringify("true"), + "process.env.WS_NO_UTF_8_VALIDATE": JSON.stringify("true"), + "process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV), + "process.env.PROSOPO_DEFAULT_ENVIRONMENT": JSON.stringify( + process.env.PROSOPO_DEFAULT_ENVIRONMENT || process.env.NODE_ENV || mode, + ), + "process.env.PROSOPO_SERVER_URL": JSON.stringify( + process.env.PROSOPO_SERVER_URL, + ), + "process.env._DEV_ONLY_WATCH_EVENTS": JSON.stringify( + process.env._DEV_ONLY_WATCH_EVENTS, + ), + "process.env.PROSOPO_MONGO_EVENTS_URI": JSON.stringify( + process.env.PROSOPO_MONGO_EVENTS_URI, + ), + "process.env.PROSOPO_PACKAGE_VERSION": JSON.stringify( + process.env.PROSOPO_PACKAGE_VERSION, + ), + // only needed if bundling with a site key + "process.env.PROSOPO_SITE_KEY": JSON.stringify( + process.env.PROSOPO_SITE_KEY, + ), + }; - logger.info(`Env vars: ${JSON.stringify(define, null, 4)}`); + logger.info(`Env vars: ${JSON.stringify(define, null, 4)}`); - // Get all dependencies of the current package - const { dependencies: deps, optionalPeerDependencies } = - await getDependencies(packageName, isProduction); + // Get all dependencies of the current package + const { dependencies: deps, optionalPeerDependencies } = + await getDependencies(packageName, isProduction); - // Get rid of any dependencies we don't want to bundle - const { external, internal } = filterDependencies(deps, [ - "pm2", - "nodejs-polars", - "aws", - "webpack", - "vite", - ]); + // Get rid of any dependencies we don't want to bundle + const { external, internal } = filterDependencies(deps, [ + "pm2", + "nodejs-polars", + "aws", + "webpack", + "vite", + ]); - // Add the node builtins (path, fs, os, etc.) to the external list - const allExternal = [ - ...builtinModules, - ...builtinModules.map((m) => `node:${m}`), - ...external, - ...optionalPeerDependencies, - ]; - logger.debug( - `Bundling. ${JSON.stringify(internal.slice(0, 10), null, 2)}... ${internal.length} deps`, - ); + // Add the node builtins (path, fs, os, etc.) to the external list + const allExternal = [ + ...builtinModules, + ...builtinModules.map((m) => `node:${m}`), + ...external, + ...optionalPeerDependencies, + ]; + logger.debug( + `Bundling. ${JSON.stringify(internal.slice(0, 10), null, 2)}... ${internal.length} deps`, + ); - // Required to print RegExp in console (e.g. alias keys) - // biome-ignore lint/suspicious/noExplicitAny: has to be any to represent object prototype - const proto = RegExp.prototype as any; - proto.toJSON = RegExp.prototype.toString; + // Required to print RegExp in console (e.g. alias keys) + // biome-ignore lint/suspicious/noExplicitAny: has to be any to represent object prototype + const proto = RegExp.prototype as any; + proto.toJSON = RegExp.prototype.toString; - // drop console logs if in production mode - let drop: undefined | Drop[]; - let pure: string[] = []; - if (isProduction) { - drop = ["debugger"]; - pure = ["console.log", "console.warn", "console.info", "console.debug"]; - } + // drop console logs if in production mode + let drop: undefined | Drop[]; + let pure: string[] = []; + if (isProduction) { + drop = ["debugger"]; + pure = ["console.log", "console.warn", "console.info", "console.debug"]; + } - logger.info("Bundle name", bundleName); - return { - ssr: { - target: "webworker", - }, - server: { - host: "127.0.0.1", - }, - mode: mode || "development", - optimizeDeps: { - include: ["linked-dep", "esm-dep > cjs-dep", "node_modules"], - force: true, - }, - esbuild: { - platform: "browser", - target: [ - "es2020", - "chrome60", - "edge18", - "firefox60", - "node12", - "safari11", - ], - drop, - pure, - legalComments: "none", - }, - define, + logger.info("Bundle name", bundleName); + return { + ssr: { + target: "webworker", + }, + server: { + host: "127.0.0.1", + }, + mode: mode || "development", + optimizeDeps: { + include: ["node_modules"], + force: true, + }, + esbuild: { + platform: "browser", + target: [ + "es2020", + "chrome60", + "edge18", + "firefox60", + "node12", + "safari11", + ], + drop, + pure, + legalComments: "none", + }, + define, - build: { - outDir: path.resolve(dir, "dist/bundle"), - minify: isProduction, - ssr: false, - lib: { - entry: path.resolve(dir, entry), - name: bundleName, - fileName: `${bundleName}.bundle.js`, - formats: ["es"], - }, - modulePreload: { polyfill: true }, - commonjsOptions: { - exclude: ["mongodb/*"], - transformMixedEsModules: true, - strictRequires: "debug", - }, + build: { + outDir: path.resolve(dir, "dist/bundle"), + minify: isProduction, + ssr: false, + lib: { + entry: path.resolve(dir, entry), + name: bundleName, + fileName: `${bundleName}.bundle.js`, + formats: ["es"], + }, + modulePreload: { polyfill: true }, + commonjsOptions: { + exclude: ["mongodb/*"], + transformMixedEsModules: true, + strictRequires: "debug", + }, - rollupOptions: { - treeshake: { - annotations: false, - propertyReadSideEffects: false, - tryCatchDeoptimization: false, - moduleSideEffects: "no-external", //true, - preset: "smallest", - unknownGlobalSideEffects: false, - }, - experimentalLogSideEffects: false, - external: allExternal, - watch: false, + rollupOptions: { + treeshake: { + annotations: false, + propertyReadSideEffects: false, + tryCatchDeoptimization: false, + moduleSideEffects: "no-external", //true, + preset: "smallest", + unknownGlobalSideEffects: false, + }, + experimentalLogSideEffects: false, + external: allExternal, + watch: false, - output: { - dir: path.resolve(dir, "dist/bundle"), - entryFileNames: `${bundleName}.bundle.js`, - }, + output: { + dir: path.resolve(dir, "dist/bundle"), + entryFileNames: `${bundleName}.bundle.js`, + }, - plugins: [ - css(), - wasm(), - // @ts-ignore - nodeResolve({ - browser: true, - preferBuiltins: false, - rootDir: path.resolve(dir, "../../"), - dedupe: ["react", "react-dom"], - modulesOnly: true, - }), - visualizer({ - open: true, - template: "treemap", //'list', - gzipSize: true, - brotliSize: true, - }), - // I think we can use this plugin to build all packages instead of relying on the tsc step that's - // currently a precursor in package.json. However, it fails for the following reason: - // https://github.com/rollup/plugins/issues/243 - // @ts-ignore - typescript({ - tsconfig: path.resolve("./tsconfig.json"), - compilerOptions: { rootDir: path.resolve("./src") }, - outDir: path.resolve(dir, "dist/bundle"), - }), - ], - }, - }, - plugins: [ - // Not sure if we need this plugin or not, it works without it - // @ts-ignore - viteReact(), - // Closes the bundler and copies the bundle to the client-bundle-example project unless we're in serve - // mode, in which case we don't want to close the bundler because it will close the server - command !== "serve" ? VitePluginCloseAndCopy(copyOptions) : undefined, - // Means we can specify index.tsx instead of index.jsx in the index.html file - viteTsconfigPaths({ projects: tsConfigPaths }), - ], - }; + plugins: [ + css(), + wasm(), + // @ts-ignore + nodeResolve({ + browser: true, + preferBuiltins: false, + rootDir: path.resolve(dir, "../../"), + dedupe: ["react", "react-dom"], + modulesOnly: true, + }), + visualizer({ + open: true, + template: "treemap", //'list', + gzipSize: true, + brotliSize: true, + }), + // I think we can use this plugin to build all packages instead of relying on the tsc step that's + // currently a precursor in package.json. However, it fails for the following reason: + // https://github.com/rollup/plugins/issues/243 + // @ts-ignore + typescript({ + tsconfig: path.resolve("./tsconfig.json"), + compilerOptions: { rootDir: path.resolve("./src") }, + outDir: path.resolve(dir, "dist/bundle"), + }), + ], + }, + }, + plugins: [ + // Not sure if we need this plugin or not, it works without it + // @ts-ignore + viteReact(), + // Closes the bundler and copies the bundle to the client-bundle-example project unless we're in serve + // mode, in which case we don't want to close the bundler because it will close the server + command !== "serve" ? VitePluginCloseAndCopy(copyOptions) : undefined, + // Means we can specify index.tsx instead of index.jsx in the index.html file + viteTsconfigPaths({ projects: tsConfigPaths }), + ], + }; } diff --git a/dev/flux/package.json b/dev/flux/package.json index 8db711b8a4..03080df95e 100644 --- a/dev/flux/package.json +++ b/dev/flux/package.json @@ -1,50 +1,50 @@ { - "name": "@prosopo/flux", - "version": "2.0.1", - "description": "Tools for managing Flux deployment", - "main": "dist/index.js", - "bin": { - "flux": "dist/index.js" - }, - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build", - "cli": "node dist/index.js" - }, - "author": "Prosopo Limited", - "license": "Apache-2.0", - "dependencies": { - "@noble/curves": "^1.3.0", - "@polkadot/util": "12.6.2", - "@polkadot/util-crypto": "12.6.2", - "@prosopo/cli": "2.0.1", - "@prosopo/common": "2.0.1", - "@prosopo/util": "2.0.1", - "consola": "^3.2.3", - "dotenv": "^16.0.3", - "glob": "^10.0.0", - "openpgp": "^5.11.1", - "qs": "^6.11.2", - "socket.io-client": "^4.7.4", - "varuint-bitcoin": "^1.1.2", - "yargs": "^17.7.2", - "yargs-parser": "^21.0.1", - "zod": "^3.22.4" - }, - "overrides": { - "@polkadot/keyring": "12.6.2" - }, - "devDependencies": { - "@esm-bundle/chai": "^4.3.4-fix.0", - "tslib": "2.6.2", - "typescript": "5.1.6", - "vitest": "^0.34.2" - } + "name": "@prosopo/flux", + "version": "2.0.2", + "description": "Tools for managing Flux deployment", + "main": "dist/index.js", + "bin": { + "flux": "dist/index.js" + }, + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build", + "cli": "node dist/index.js" + }, + "author": "Prosopo Limited", + "license": "Apache-2.0", + "dependencies": { + "@noble/curves": "^1.3.0", + "@polkadot/util": "12.6.2", + "@polkadot/util-crypto": "12.6.2", + "@prosopo/dotenv": "2.0.2", + "@prosopo/common": "2.0.2", + "@prosopo/util": "2.0.2", + "consola": "^3.2.3", + "dotenv": "^16.0.3", + "glob": "^10.0.0", + "openpgp": "^5.11.1", + "qs": "^6.11.2", + "socket.io-client": "^4.7.4", + "varuint-bitcoin": "^1.1.2", + "yargs": "^17.7.2", + "yargs-parser": "^21.0.1", + "zod": "^3.22.4" + }, + "overrides": { + "@polkadot/keyring": "12.6.2" + }, + "devDependencies": { + "@esm-bundle/chai": "^4.3.4-fix.0", + "tslib": "2.6.2", + "typescript": "5.1.6", + "vitest": "^0.34.2" + } } diff --git a/dev/flux/src/lib/auth.ts b/dev/flux/src/lib/auth.ts index 49b1ab091e..b76da46d55 100644 --- a/dev/flux/src/lib/auth.ts +++ b/dev/flux/src/lib/auth.ts @@ -1,5 +1,3 @@ -import { base64Encode } from "@polkadot/util-crypto"; -import { loadEnv } from "@prosopo/cli"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -13,6 +11,9 @@ import { loadEnv } from "@prosopo/cli"; // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + +import { base64Encode } from "@polkadot/util-crypto"; +import { loadEnv } from "@prosopo/dotenv"; import { ProsopoError, getLogger } from "@prosopo/common"; import qs from "qs"; import { errorHandler } from "../errorHandler.js"; @@ -24,230 +25,230 @@ const log = getLogger("Info", "auth.js"); export const FLUX_URL = new URL("https://api.runonflux.io/"); interface ResponseLoginPhrase { - status: string; - data: string; + status: string; + data: string; } interface DappDataResponse { - _id: string; - name_id: string; - active: boolean; - api_version: number; - contacts: string[]; - description: string; - expires: number; - expires_block: number; - expires_date: string; - expires_in: string; - fee: string; - geolocation: [ - string, - { - type: string; - cont: string; - contText: string; - data: string; - btn: string; - }, - ]; - hash: string; - hash_abbr: string; - instances: number; - lifetime_fees: number; - live: number; - name: string; - owner: string; - registered: number; - registered_date: string; - sync_date: string; - txid: string; - txs: { [key: string]: Transaction }; - updated: number; - updated_date: string; - url: string; - owner_abbr: string; - nodes_assigned: Node[]; - nodes: { [key: string]: NodeInfo }; - components_new: { - "Component Name": string; - "Component Ref": string; - Repository: string; - "Env Vars": string; - "Run Cmd": string; - Domains: string; - Directory: string; - "Public Port(s)": string; - "Private Port(s)": string; - "CPU Cores": number; - "RAM Memory": number; - "SSD Storage": number; - }[]; - domains: string[]; + _id: string; + name_id: string; + active: boolean; + api_version: number; + contacts: string[]; + description: string; + expires: number; + expires_block: number; + expires_date: string; + expires_in: string; + fee: string; + geolocation: [ + string, + { + type: string; + cont: string; + contText: string; + data: string; + btn: string; + }, + ]; + hash: string; + hash_abbr: string; + instances: number; + lifetime_fees: number; + live: number; + name: string; + owner: string; + registered: number; + registered_date: string; + sync_date: string; + txid: string; + txs: { [key: string]: Transaction }; + updated: number; + updated_date: string; + url: string; + owner_abbr: string; + nodes_assigned: Node[]; + nodes: { [key: string]: NodeInfo }; + components_new: { + "Component Name": string; + "Component Ref": string; + Repository: string; + "Env Vars": string; + "Run Cmd": string; + Domains: string; + Directory: string; + "Public Port(s)": string; + "Private Port(s)": string; + "CPU Cores": number; + "RAM Memory": number; + "SSD Storage": number; + }[]; + domains: string[]; } interface Node { - ip: string; - name: string; - broadcastedAt: string; - expireAt: string; - hash: string; + ip: string; + name: string; + broadcastedAt: string; + expireAt: string; + hash: string; } interface NodeInfo { - url: string; - fluxos: string; - ip: string; - location: string; - hash: string; - hash_abbr: string; + url: string; + fluxos: string; + ip: string; + location: string; + hash: string; + hash_abbr: string; } interface Transaction { - fee: string; - owner: string; - tx: string; - date: string; - expire: number; + fee: string; + owner: string; + tx: string; + date: string; + expire: number; } export const verifyLogin = async ( - zelid: string, - signature: string, - loginPhrase: string, - url?: URL, + zelid: string, + signature: string, + loginPhrase: string, + url?: URL, ) => { - const apiUrl = new URL(`${url || FLUX_URL}id/verifylogin`).toString(); - const data = qs.stringify({ - zelid, - signature, - loginPhrase, - }); - log.info("Data:", data); - log.info("apiUrl:", apiUrl); - const response = await fetch(apiUrl, { - method: "POST", - body: data, - headers: { "Content-Type": "application/x-www-form-urlencoded" }, - }); - return await errorHandler(response); + const apiUrl = new URL(`${url || FLUX_URL}id/verifylogin`).toString(); + const data = qs.stringify({ + zelid, + signature, + loginPhrase, + }); + log.info("Data:", data); + log.info("apiUrl:", apiUrl); + const response = await fetch(apiUrl, { + method: "POST", + body: data, + headers: { "Content-Type": "application/x-www-form-urlencoded" }, + }); + return await errorHandler(response); }; const getLoginPhrase = async (url: URL): Promise => { - const apiURL = new URL("id/loginphrase", url); - log.info("Calling:", apiURL.href); - const response = await fetch(apiURL.toString()); - return (await errorHandler(response)).data; + const apiURL = new URL("id/loginphrase", url); + log.info("Calling:", apiURL.href); + const response = await fetch(apiURL.toString()); + return (await errorHandler(response)).data; }; export const getIndividualFluxAppDetails = async ( - dappName: string, - zelId: string, - signature: string, - loginPhrase: string, + dappName: string, + zelId: string, + signature: string, + loginPhrase: string, ): Promise => { - const apiUrl = `https://jetpackbridge.runonflux.io/api/v1/dapps.php?dapp=${dappName}&zelid=${zelId}&signature=${signature}&loginPhrase=${loginPhrase}`; - const response = await fetch(apiUrl); - return await errorHandler(response); + const apiUrl = `https://jetpackbridge.runonflux.io/api/v1/dapps.php?dapp=${dappName}&zelid=${zelId}&signature=${signature}&loginPhrase=${loginPhrase}`; + const response = await fetch(apiUrl); + return await errorHandler(response); }; const getFluxOSURLs = async ( - dappName: string, - zelId: string, - signature: string, - loginPhrase: string, + dappName: string, + zelId: string, + signature: string, + loginPhrase: string, ) => { - const data = await getIndividualFluxAppDetails( - dappName, - zelId, - signature, - loginPhrase, - ); - // return the fluxOS urls - return Object.values(data.nodes).map((node) => node.fluxos); + const data = await getIndividualFluxAppDetails( + dappName, + zelId, + signature, + loginPhrase, + ); + // return the fluxOS urls + return Object.values(data.nodes).map((node) => node.fluxos); }; export const getAuth = async (secretKey: Uint8Array, url: URL) => { - // Get Flux login phrase - const loginPhrase = await getLoginPhrase(url); - log.info("Login Phrase:", loginPhrase); + // Get Flux login phrase + const loginPhrase = await getLoginPhrase(url); + log.info("Login Phrase:", loginPhrase); - const signature = base64Encode(await sign(loginPhrase, { secretKey })); - log.info("Signature:", signature); - return { signature, loginPhrase }; + const signature = base64Encode(await sign(loginPhrase, { secretKey })); + log.info("Signature:", signature); + return { signature, loginPhrase }; }; const getNode = async ( - appName: string, - zelId: string, - signature: string, - loginPhrase: string, + appName: string, + zelId: string, + signature: string, + loginPhrase: string, ) => { - // Get details of individual Flux app - const individualNodeIPs = await getFluxOSURLs( - appName, - zelId, - signature, - loginPhrase, - ); - log.info("Individual Node IPs:", individualNodeIPs); - - // Choose a node at random from individualNodeIPs - const node = - individualNodeIPs[Math.floor(Math.random() * individualNodeIPs.length)]; - if (!node) { - throw new ProsopoError("DEVELOPER.GENERAL", { - context: { - error: "Failed to randomly select node", - appName, - zelId, - individualNodeIPs, - }, - }); - } - log.info("Node:", node); - // http as node is an IP address - return prefixIPAddress(node); + // Get details of individual Flux app + const individualNodeIPs = await getFluxOSURLs( + appName, + zelId, + signature, + loginPhrase, + ); + log.info("Individual Node IPs:", individualNodeIPs); + + // Choose a node at random from individualNodeIPs + const node = + individualNodeIPs[Math.floor(Math.random() * individualNodeIPs.length)]; + if (!node) { + throw new ProsopoError("DEVELOPER.GENERAL", { + context: { + error: "Failed to randomly select node", + appName, + zelId, + individualNodeIPs, + }, + }); + } + log.info("Node:", node); + // http as node is an IP address + return prefixIPAddress(node); }; export async function main( - publicKey: string, - privateKey: Uint8Array, - appName?: string, - ip?: string, + publicKey: string, + privateKey: Uint8Array, + appName?: string, + ip?: string, ) { - let nodeUIURL = ip ? prefixIPAddress(ip) : FLUX_URL; - - if (!ip) { - //if a flux ip has not been supplied we will first authenticate with the main flux api - const { signature, loginPhrase } = await getAuth(privateKey, nodeUIURL); - - if (appName) { - // if an app name has been specified then we are expecting to authenticate with a specific flux node - // Get a Flux node if one has not been supplied - nodeUIURL = await getNode(appName, publicKey, signature, loginPhrase); - } else { - // assume we only want authentication with main Flux API - return { - nodeUIURL: FLUX_URL, - nodeAPIURL: new URL(FLUX_URL), - nodeLoginPhrase: loginPhrase, - nodeSignature: signature, - }; - } - } - - // Get the admin API URL as it is different from the UI URL. This function should only be called once. - const nodeAPIURL = getNodeAPIURL(nodeUIURL.href); - - // Get a login token from the node - const nodeLoginPhrase = await getLoginPhrase(nodeAPIURL); - log.info("Node Login Phrase:", nodeLoginPhrase); - - // Sign the login token with zelcore private key - const nodeSignature = base64Encode( - await sign(nodeLoginPhrase, { secretKey: privateKey }), - ); - log.info("Node Signature:", nodeSignature); - - return { nodeUIURL, nodeAPIURL, nodeLoginPhrase, nodeSignature }; + let nodeUIURL = ip ? prefixIPAddress(ip) : FLUX_URL; + + if (!ip) { + //if a flux ip has not been supplied we will first authenticate with the main flux api + const { signature, loginPhrase } = await getAuth(privateKey, nodeUIURL); + + if (appName) { + // if an app name has been specified then we are expecting to authenticate with a specific flux node + // Get a Flux node if one has not been supplied + nodeUIURL = await getNode(appName, publicKey, signature, loginPhrase); + } else { + // assume we only want authentication with main Flux API + return { + nodeUIURL: FLUX_URL, + nodeAPIURL: new URL(FLUX_URL), + nodeLoginPhrase: loginPhrase, + nodeSignature: signature, + }; + } + } + + // Get the admin API URL as it is different from the UI URL. This function should only be called once. + const nodeAPIURL = getNodeAPIURL(nodeUIURL.href); + + // Get a login token from the node + const nodeLoginPhrase = await getLoginPhrase(nodeAPIURL); + log.info("Node Login Phrase:", nodeLoginPhrase); + + // Sign the login token with zelcore private key + const nodeSignature = base64Encode( + await sign(nodeLoginPhrase, { secretKey: privateKey }), + ); + log.info("Node Signature:", nodeSignature); + + return { nodeUIURL, nodeAPIURL, nodeLoginPhrase, nodeSignature }; } diff --git a/dev/flux/src/lib/sep256k1Sign.ts b/dev/flux/src/lib/sep256k1Sign.ts index a6a8d98700..cb43b21200 100644 --- a/dev/flux/src/lib/sep256k1Sign.ts +++ b/dev/flux/src/lib/sep256k1Sign.ts @@ -1,11 +1,3 @@ -import { secp256k1 } from "@noble/curves/secp256k1"; -import { bnToU8a, hexToU8a, u8aConcat, u8aToHex } from "@polkadot/util"; -import { - base58Decode, - base64Encode, - cryptoWaitReady, - sha256AsU8a, -} from "@polkadot/util-crypto"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,9 +11,18 @@ import { // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + +import { secp256k1 } from "@noble/curves/secp256k1"; +import { bnToU8a, hexToU8a, u8aConcat, u8aToHex } from "@polkadot/util"; +import { + base58Decode, + base64Encode, + cryptoWaitReady, + sha256AsU8a, +} from "@polkadot/util-crypto"; import { BN_BE_256_OPTS } from "@polkadot/util-crypto/bn"; import type { Keypair } from "@polkadot/util-crypto/types"; -import { loadEnv } from "@prosopo/cli"; +import { loadEnv } from "@prosopo/dotenv"; import { LogLevel, ProsopoEnvError, getLogger } from "@prosopo/common"; import { at } from "@prosopo/util"; import { isMain } from "@prosopo/util"; @@ -32,37 +33,37 @@ const logger = getLogger(LogLevel.enum.info, "flux.lib.sep256k1Sign"); const MESSAGE_MAGIC = "\u0018Bitcoin Signed Message:\n"; function hash256(buffer: Buffer) { - return Buffer.from(sha256AsU8a(sha256AsU8a(buffer))); + return Buffer.from(sha256AsU8a(sha256AsU8a(buffer))); } function hasher(message: string, messagePrefixIn: string): Buffer { - const messagePrefix = messagePrefixIn || "\u0018Bitcoin Signed Message:\n"; - const messagePrefixBuffer = Buffer.from(messagePrefix, "utf8"); - const messageBuffer = Buffer.from(message, "utf8"); - const messageVISize = varuint.encodingLength(messageBuffer.length); - const buffer = Buffer.allocUnsafe( - messagePrefix.length + messageVISize + messageBuffer.length, - ); - messagePrefixBuffer.copy(buffer, 0); - varuint.encode(messageBuffer.length, buffer, messagePrefixBuffer.length); - messageBuffer.copy(buffer, messagePrefixBuffer.length + messageVISize); - return hash256(buffer); + const messagePrefix = messagePrefixIn || "\u0018Bitcoin Signed Message:\n"; + const messagePrefixBuffer = Buffer.from(messagePrefix, "utf8"); + const messageBuffer = Buffer.from(message, "utf8"); + const messageVISize = varuint.encodingLength(messageBuffer.length); + const buffer = Buffer.allocUnsafe( + messagePrefix.length + messageVISize + messageBuffer.length, + ); + messagePrefixBuffer.copy(buffer, 0); + varuint.encode(messageBuffer.length, buffer, messagePrefixBuffer.length); + messageBuffer.copy(buffer, messagePrefixBuffer.length + messageVISize); + return hash256(buffer); } export async function sign(message: string, { secretKey }: Partial) { - if (!secretKey) - throw new ProsopoEnvError("DEVELOPER.MISSING_SECRET_KEY", { - context: { error: "No secret key provided", failedFuncName: sign.name }, - }); - await cryptoWaitReady(); - const data: Buffer = hasher(message, MESSAGE_MAGIC); - const signature = secp256k1.sign(data, secretKey); - return u8aConcat( - // add 4 for compressed and then 27 for the 27th recovery byte - Buffer.alloc(1, signature.recovery + 4 + 27), - bnToU8a(signature.r, BN_BE_256_OPTS), - bnToU8a(signature.s, BN_BE_256_OPTS), - ); + if (!secretKey) + throw new ProsopoEnvError("DEVELOPER.MISSING_SECRET_KEY", { + context: { error: "No secret key provided", failedFuncName: sign.name }, + }); + await cryptoWaitReady(); + const data: Buffer = hasher(message, MESSAGE_MAGIC); + const signature = secp256k1.sign(data, secretKey); + return u8aConcat( + // add 4 for compressed and then 27 for the 27th recovery byte + Buffer.alloc(1, signature.recovery + 4 + 27), + bnToU8a(signature.r, BN_BE_256_OPTS), + bnToU8a(signature.s, BN_BE_256_OPTS), + ); } // https://bitcoin.stackexchange.com/a/61972 @@ -70,50 +71,50 @@ export async function sign(message: string, { secretKey }: Partial) { // 0x80..................................................................6430148d // .................................................................. export function wifToPrivateKey(wif: string): Uint8Array { - let substractLength: number; + let substractLength: number; - if (wif.length === 51) { - // compression not included - substractLength = 8; // remove 4 bytes from WIF so 8 in hex - } else if (wif.length === 52) { - // compression included - substractLength = 10; // remove 5 bytes from WIF so 10 in hex - } else { - throw new ProsopoEnvError("DEVELOPER.GENERAL", { - context: { error: "Invalid WIF", failedFuncName: wifToPrivateKey.name }, - }); - } - const secretKeyHexLong = u8aToHex(base58Decode(wif)); - // remove 0x and the version byte prefix 80 from the start. Remove the Compression Byte suffix and the Checksum from - // the end - const secretKeyHex = `0x${secretKeyHexLong.substring(4, secretKeyHexLong.length - substractLength)}`; - return hexToU8a(secretKeyHex); + if (wif.length === 51) { + // compression not included + substractLength = 8; // remove 4 bytes from WIF so 8 in hex + } else if (wif.length === 52) { + // compression included + substractLength = 10; // remove 5 bytes from WIF so 10 in hex + } else { + throw new ProsopoEnvError("DEVELOPER.GENERAL", { + context: { error: "Invalid WIF", failedFuncName: wifToPrivateKey.name }, + }); + } + const secretKeyHexLong = u8aToHex(base58Decode(wif)); + // remove 0x and the version byte prefix 80 from the start. Remove the Compression Byte suffix and the Checksum from + // the end + const secretKeyHex = `0x${secretKeyHexLong.substring(4, secretKeyHexLong.length - substractLength)}`; + return hexToU8a(secretKeyHex); } // if main process if (isMain(import.meta.url)) { - const secretKey = wifToPrivateKey( - process.env.PROSOPO_ZELCORE_PRIVATE_KEY || "", - ); - const publicKey: Uint8Array = base58Decode( - process.env.PROSOPO_ZELCORE_PUBLIC_KEY || "", - ); - const keypair: Keypair = { secretKey, publicKey }; - const message = at(process.argv.slice(2), 0).trim(); - if (message.length === 0) { - console.error("No message provided"); - process.exit(); - } - sign(message, keypair) - .then((sig) => { - const hexSig = u8aToHex(sig); - logger.info(`Hex Signature : ${hexSig}`); - logger.info(`Public Key: ${publicKey}`); - logger.info(`Base64 Signature: ${base64Encode(hexSig)}`); - process.exit(); - }) - .catch((error) => { - console.error(error); - process.exit(); - }); + const secretKey = wifToPrivateKey( + process.env.PROSOPO_ZELCORE_PRIVATE_KEY || "", + ); + const publicKey: Uint8Array = base58Decode( + process.env.PROSOPO_ZELCORE_PUBLIC_KEY || "", + ); + const keypair: Keypair = { secretKey, publicKey }; + const message = at(process.argv.slice(2), 0).trim(); + if (message.length === 0) { + console.error("No message provided"); + process.exit(); + } + sign(message, keypair) + .then((sig) => { + const hexSig = u8aToHex(sig); + logger.info(`Hex Signature : ${hexSig}`); + logger.info(`Public Key: ${publicKey}`); + logger.info(`Base64 Signature: ${base64Encode(hexSig)}`); + process.exit(); + }) + .catch((error) => { + console.error(error); + process.exit(); + }); } diff --git a/dev/flux/src/lib/terminal.ts b/dev/flux/src/lib/terminal.ts index 95ee49fbd6..bb09eff63b 100644 --- a/dev/flux/src/lib/terminal.ts +++ b/dev/flux/src/lib/terminal.ts @@ -1,4 +1,3 @@ -import { loadEnv } from "@prosopo/cli"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -16,62 +15,63 @@ import { LogLevel, getLogger } from "@prosopo/common"; import { io } from "socket.io-client"; import { main as authMain, verifyLogin } from "./auth.js"; import { getSocketURL } from "./url.js"; +import { loadEnv } from "@prosopo/dotenv"; loadEnv(); const logger = getLogger(LogLevel.enum.info, "flux.lib.terminal"); export async function main( - publicKey: string, - privateKey: Uint8Array, - appName: string, - ip?: string, + publicKey: string, + privateKey: Uint8Array, + appName: string, + ip?: string, ) { - let running = true; - try { - // Get auth details - const { nodeAPIURL, nodeLoginPhrase, nodeSignature } = await authMain( - publicKey, - privateKey, - appName, - ip, - ); + let running = true; + try { + // Get auth details + const { nodeAPIURL, nodeLoginPhrase, nodeSignature } = await authMain( + publicKey, + privateKey, + appName, + ip, + ); - // Login to the node - await verifyLogin(publicKey, nodeSignature, nodeLoginPhrase, nodeAPIURL); + // Login to the node + await verifyLogin(publicKey, nodeSignature, nodeLoginPhrase, nodeAPIURL); - const selectedIp = nodeAPIURL.toString(); - const url = selectedIp.split(":")[0]; - if (!url) throw new Error("No url"); - const socketUrl = getSocketURL(nodeAPIURL); + const selectedIp = nodeAPIURL.toString(); + const url = selectedIp.split(":")[0]; + if (!url) throw new Error("No url"); + const socketUrl = getSocketURL(nodeAPIURL); - const socket = io(socketUrl.href); - socket.on("connect", () => { - logger.info("connected"); - logger.info(socket.id); - }); - socket.on("message", (message) => { - socket.emit("message", { - message, - id: socket.id, - }); - }); - socket.on("connect_error", (err) => { - logger.info(`connect_error due to ${err.message}`); - console.error(err); - }); - socket.on("disconnect", () => { - logger.info("disconnected"); - running = false; - }); - socket.on("error", (e) => { - logger.info("error", e); - running = false; - }); - while (running) { - await new Promise((resolve) => setTimeout(resolve, 1000)); - } - } catch (e) { - console.error(e); - running = false; - } + const socket = io(socketUrl.href); + socket.on("connect", () => { + logger.info("connected"); + logger.info(socket.id); + }); + socket.on("message", (message) => { + socket.emit("message", { + message, + id: socket.id, + }); + }); + socket.on("connect_error", (err) => { + logger.info(`connect_error due to ${err.message}`); + console.error(err); + }); + socket.on("disconnect", () => { + logger.info("disconnected"); + running = false; + }); + socket.on("error", (e) => { + logger.info("error", e); + running = false; + }); + while (running) { + await new Promise((resolve) => setTimeout(resolve, 1000)); + } + } catch (e) { + console.error(e); + running = false; + } } diff --git a/dev/flux/tsconfig.cjs.json b/dev/flux/tsconfig.cjs.json index a812c27b9d..3c45247d00 100644 --- a/dev/flux/tsconfig.cjs.json +++ b/dev/flux/tsconfig.cjs.json @@ -7,7 +7,7 @@ "include": ["./src/**/*.ts", "./src/**/*.d.ts", "./src/**/*.tsx"], "references": [ { - "path": "../../packages/cli" + "path": "../../packages/dotenv" }, { "path": "../../packages/common" diff --git a/dev/flux/tsconfig.json b/dev/flux/tsconfig.json index 507536cee8..2b19dfd989 100644 --- a/dev/flux/tsconfig.json +++ b/dev/flux/tsconfig.json @@ -8,7 +8,7 @@ "include": ["src", "src/**/*.json"], "references": [ { - "path": "../../packages/cli" + "path": "../../packages/dotenv" }, { "path": "../../packages/common" diff --git a/dev/gh-actions/package.json b/dev/gh-actions/package.json index edad2aa9ae..055b282d00 100644 --- a/dev/gh-actions/package.json +++ b/dev/gh-actions/package.json @@ -1,32 +1,32 @@ { - "name": "@prosopo/gh-actions", - "version": "2.0.1", - "description": "", - "private": true, - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "start": "npx tsx src/index.ts" - }, - "author": "", - "license": "ISC", - "devDependencies": { - "@types/node": "^20.11.4", - "tslib": "2.6.2", - "tsx": "^4.7.0", - "typescript": "5.1.6" - }, - "dependencies": { - "@octokit/graphql": "^7.0.2", - "axios": "^1.7.2", - "node-fetch": "^3.3.2", - "octokit": "^3.1.2" - }, - "main": "dist/index.js", - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - } + "name": "@prosopo/gh-actions", + "version": "2.0.2", + "description": "", + "private": true, + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "start": "npx tsx src/index.ts" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "@types/node": "^20.11.4", + "tslib": "2.6.2", + "tsx": "^4.7.0", + "typescript": "5.1.6" + }, + "dependencies": { + "@octokit/graphql": "^7.0.2", + "axios": "^1.7.2", + "node-fetch": "^3.3.2", + "octokit": "^3.1.2" + }, + "main": "dist/index.js", + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + } } diff --git a/dev/prosoponator-bot/package.json b/dev/prosoponator-bot/package.json index 2243b1eba9..7a350f516a 100644 --- a/dev/prosoponator-bot/package.json +++ b/dev/prosoponator-bot/package.json @@ -1,33 +1,33 @@ { - "name": "@prosopo/prosoponator-bot", - "version": "2.0.1", - "description": "", - "private": true, - "scripts": { - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "start": "npx tsx src/index.ts", - "test": "echo 'No test specified'" - }, - "author": "", - "license": "ISC", - "devDependencies": { - "@types/node": "^20.11.4", - "tslib": "2.6.2", - "tsx": "^4.7.0", - "typescript": "5.1.6" - }, - "dependencies": { - "@actions/core": "^1.10.1", - "@actions/github": "^6.0.0", - "@octokit/graphql": "^7.0.2", - "node-fetch": "^3.3.2", - "octokit": "^3.1.2" - }, - "main": "dist/index.js", - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - } + "name": "@prosopo/prosoponator-bot", + "version": "2.0.2", + "description": "", + "private": true, + "scripts": { + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "start": "npx tsx src/index.ts", + "test": "echo 'No test specified'" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "@types/node": "^20.11.4", + "tslib": "2.6.2", + "tsx": "^4.7.0", + "typescript": "5.1.6" + }, + "dependencies": { + "@actions/core": "^1.10.1", + "@actions/github": "^6.0.0", + "@octokit/graphql": "^7.0.2", + "node-fetch": "^3.3.2", + "octokit": "^3.1.2" + }, + "main": "dist/index.js", + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + } } diff --git a/dev/scripts/env.development b/dev/scripts/env.development index 9b8f7493ff..a3f2243653 100644 --- a/dev/scripts/env.development +++ b/dev/scripts/env.development @@ -1,16 +1,13 @@ PROSOPO_SITE_KEY=5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw -PROSOPO_CONTRACT_ADDRESS= PROSOPO_DATABASE_PASSWORD=root PROSOPO_DATABASE_USERNAME=root PROSOPO_DATABASE_NAME=prosopo PROSOPO_DATABASE_HOST=127.0.0.1 PROSOPO_DATABASE_PORT=27017 -PROSOPO_SUBSTRATE_ENDPOINT=ws://localhost:9944 PROSOPO_PROVIDER_ADDRESS=5EjTA28bKSbFPPyMbUjNtArxyqjwq38r1BapVmLZShaqEedV PROSOPO_PROVIDER_MNEMONIC=puppy cream effort carbon despair leg pyramid cotton endorse immense drill peasant NODE_ENV=development PROSOPO_LOG_LEVEL=debug PROSOPO_DEFAULT_ENVIRONMENT=development -PROSOPO_DEFAULT_NETWORK=development PROSOPO_MONGO_EVENTS_URI=mongodb+srv:///frictionless_events _DEV_ONLY_WATCH_EVENTS=false diff --git a/dev/scripts/env.production b/dev/scripts/env.production index c84ab0ce4b..6c0bc11c98 100644 --- a/dev/scripts/env.production +++ b/dev/scripts/env.production @@ -1,2 +1 @@ PROSOPO_DEFAULT_ENVIRONMENT=production -PROSOPO_DEFAULT_NETWORK=astar diff --git a/dev/scripts/env.rococo b/dev/scripts/env.rococo index b31a5de217..6c0bc11c98 100644 --- a/dev/scripts/env.rococo +++ b/dev/scripts/env.rococo @@ -1,4 +1 @@ -PROSOPO_SUBSTRATE_ENDPOINT=wss://rococo-contracts-rpc.polkadot.io:443 -PROSOPO_CONTRACT_ADDRESS=5HiVWQhJrysNcFNEWf2crArKht16zrhro3FcekVWocyQjx5u PROSOPO_DEFAULT_ENVIRONMENT=production -PROSOPO_DEFAULT_NETWORK=rococo diff --git a/dev/scripts/env.staging b/dev/scripts/env.staging index 319cb61e70..8ae6648c38 100644 --- a/dev/scripts/env.staging +++ b/dev/scripts/env.staging @@ -1,2 +1 @@ PROSOPO_DEFAULT_ENVIRONMENT=staging -PROSOPO_DEFAULT_NETWORK=astar diff --git a/dev/scripts/env.test b/dev/scripts/env.test index e4da61e675..3f0c868f18 100644 --- a/dev/scripts/env.test +++ b/dev/scripts/env.test @@ -1,14 +1,12 @@ PROSOPO_SITE_KEY=5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw -PROSOPO_CONTRACT_ADDRESS= PROSOPO_DATABASE_PASSWORD=root PROSOPO_DATABASE_USERNAME=root PROSOPO_DATABASE_NAME=prosopo_test PROSOPO_DATABASE_HOST=127.0.0.1 PROSOPO_DATABASE_PORT=27017 -PROSOPO_SUBSTRATE_ENDPOINT=ws://localhost:9944 PROSOPO_PROVIDER_ADDRESS=5EjTA28bKSbFPPyMbUjNtArxyqjwq38r1BapVmLZShaqEedV PROSOPO_PROVIDER_MNEMONIC=puppy cream effort carbon despair leg pyramid cotton endorse immense drill peasant NODE_ENV=test PROSOPO_LOG_LEVEL=info PROSOPO_DEFAULT_ENVIRONMENT=development -PROSOPO_DEFAULT_NETWORK=development +PROSOPO_MONGO_CAPTCHA_URI=mongodb://root:root@localhost:27017/captchastorage?authSource=admin diff --git a/dev/scripts/package.json b/dev/scripts/package.json index d467ede879..53702037ac 100644 --- a/dev/scripts/package.json +++ b/dev/scripts/package.json @@ -1,68 +1,69 @@ { - "name": "@prosopo/scripts", - "version": "2.0.1", - "description": "Dev scripts for working with prosopo packages", - "main": "dist/index.js", - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "deploy": "node dist/deploy/protocol.js", - "cli": "node dist/cli/index.js", - "setup": "node dist/cli/index.js setup", - "license": "tsx src/scripts/addCopyrightNotice.ts check", - "license:fix": "tsx src/scripts/addCopyrightNotice.ts license" - }, - "author": "Prosopo Limited", - "license": "Apache-2.0", - "dependencies": { - "@iarna/toml": "^2.2.5", - "@polkadot/api": "10.13.1", - "@polkadot/api-contract": "10.13.1", - "@polkadot/types": "10.13.1", - "@polkadot/util": "12.6.2", - "@polkadot/util-crypto": "12.6.2", - "@prosopo/api": "2.0.1", - "@prosopo/cli": "2.0.1", - "@prosopo/common": "2.0.1", - "@prosopo/config": "2.0.1", - "@prosopo/contract": "2.0.1", - "@prosopo/database": "2.0.1", - "@prosopo/datasets": "2.0.1", - "@prosopo/datasets-fs": "2.0.1", - "@prosopo/env": "2.0.1", - "@prosopo/file-server": "2.0.1", - "@prosopo/procaptcha": "2.0.1", - "@prosopo/procaptcha-bundle": "2.0.1", - "@prosopo/procaptcha-common": "2.0.1", - "@prosopo/procaptcha-react": "2.0.1", - "@prosopo/provider": "2.0.1", - "@prosopo/server": "2.0.1", - "@prosopo/types": "2.0.1", - "@prosopo/types-database": "2.0.1", - "@prosopo/types-env": "2.0.1", - "@prosopo/util": "2.0.1", - "consola": "^3.2.3", - "dotenv": "^16.0.3", - "fast-glob": "^3.3.2", - "glob": "^10.0.0", - "qs": "^6.11.2", - "varuint-bitcoin": "^1.1.2", - "yargs": "^17.5.1", - "yargs-parser": "^21.0.1" - }, - "overrides": { - "@polkadot/keyring": "12.6.2" - }, - "devDependencies": { - "@esm-bundle/chai": "^4.3.4-fix.0", - "tslib": "2.6.2", - "typescript": "5.1.6", - "vitest": "^1.3.1" - } + "name": "@prosopo/scripts", + "version": "2.0.2", + "description": "Dev scripts for working with prosopo packages", + "main": "dist/index.js", + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "deploy": "node dist/deploy/protocol.js", + "cli": "node dist/cli/index.js", + "setup": "node dist/cli/index.js setup", + "license": "tsx src/scripts/addCopyrightNotice.ts check", + "license:fix": "tsx src/scripts/addCopyrightNotice.ts license" + }, + "author": "Prosopo Limited", + "license": "Apache-2.0", + "dependencies": { + "@iarna/toml": "^2.2.5", + "@polkadot/api": "10.13.1", + "@polkadot/api-contract": "10.13.1", + "@polkadot/types": "10.13.1", + "@polkadot/util": "12.6.2", + "@polkadot/util-crypto": "12.6.2", + "@prosopo/api": "2.0.2", + "@prosopo/cli": "2.0.2", + "@prosopo/common": "2.0.2", + "@prosopo/config": "2.0.2", + "@prosopo/contract": "2.0.2", + "@prosopo/database": "2.0.2", + "@prosopo/datasets": "2.0.2", + "@prosopo/datasets-fs": "2.0.2", + "@prosopo/dotenv": "2.0.2", + "@prosopo/env": "2.0.2", + "@prosopo/file-server": "2.0.2", + "@prosopo/procaptcha": "2.0.2", + "@prosopo/procaptcha-bundle": "2.0.2", + "@prosopo/procaptcha-common": "2.0.2", + "@prosopo/procaptcha-react": "2.0.2", + "@prosopo/provider": "2.0.2", + "@prosopo/server": "2.0.2", + "@prosopo/types": "2.0.2", + "@prosopo/types-database": "2.0.2", + "@prosopo/types-env": "2.0.2", + "@prosopo/util": "2.0.2", + "consola": "^3.2.3", + "dotenv": "^16.0.3", + "fast-glob": "^3.3.2", + "glob": "^10.0.0", + "qs": "^6.11.2", + "varuint-bitcoin": "^1.1.2", + "yargs": "^17.5.1", + "yargs-parser": "^21.0.1" + }, + "overrides": { + "@polkadot/keyring": "12.6.2" + }, + "devDependencies": { + "@esm-bundle/chai": "^4.3.4-fix.0", + "tslib": "2.6.2", + "typescript": "5.1.6", + "vitest": "^1.3.1" + } } diff --git a/dev/scripts/src/cli/index.ts b/dev/scripts/src/cli/index.ts index 8b130a96f3..173cb3771b 100644 --- a/dev/scripts/src/cli/index.ts +++ b/dev/scripts/src/cli/index.ts @@ -1,6 +1,3 @@ -import path from "node:path"; -import { isHex } from "@polkadot/util"; -import { getEnv, loadEnv } from "@prosopo/cli"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -14,6 +11,10 @@ import { getEnv, loadEnv } from "@prosopo/cli"; // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + +import path from "node:path"; +import { isHex } from "@polkadot/util"; +import { getEnv, loadEnv } from "@prosopo/dotenv"; import { LogLevel, getLogger } from "@prosopo/common"; import { getLogLevel } from "@prosopo/common"; import { getScriptsPkgDir } from "@prosopo/config"; @@ -29,96 +30,96 @@ const rootDir = path.resolve("."); loadEnv(rootDir); export async function processArgs(args: string[]) { - const parsed = await yargs(hideBin(args)).option("logLevel", { - describe: "set log level", - choices: Object.keys(LogLevel.enum), - }).argv; + const parsed = await yargs(hideBin(args)).option("logLevel", { + describe: "set log level", + choices: Object.keys(LogLevel.enum), + }).argv; - const log = getLogger(getLogLevel(parsed.logLevel), "CLI"); + const log = getLogger(getLogLevel(parsed.logLevel), "CLI"); - await yargs(hideBin(args)) - .usage("Usage: $0 [global options] [options]") - .command( - "create_env_files", - "Copies the env.xyz files to .env.xyz", - (yargs) => yargs, - async () => { - const env = getEnv(); - const scripts = getScriptsPkgDir(); - await exec(`cp -v ${scripts}/env.${env} ${scripts}/.env.${env}`); - }, - [], - ) - .command({ - command: "setup", + await yargs(hideBin(args)) + .usage("Usage: $0 [global options] [options]") + .command( + "create_env_files", + "Copies the env.xyz files to .env.xyz", + (yargs) => yargs, + async () => { + const env = getEnv(); + const scripts = getScriptsPkgDir(); + await exec(`cp -v ${scripts}/env.${env} ${scripts}/.env.${env}`); + }, + [], + ) + .command({ + command: "setup", - describe: - "Setup the development environment by registering a provider, staking, loading a data set and then registering a dapp and staking.", - builder: (yargs) => - yargs.option("force", { - type: "boolean", - demandOption: false, - desc: "Force provider re-registration and dataset setup", - }), + describe: + "Setup the development environment by registering a provider, staking, loading a data set and then registering a dapp and staking.", + builder: (yargs) => + yargs.option("force", { + type: "boolean", + demandOption: false, + desc: "Force provider re-registration and dataset setup", + }), - handler: async (argv) => { - log.info("Running setup scripts"); - await setup(!!argv.force); - }, - }) - .command({ - command: "import_contract", - describe: "Import a contract into the contract package.", - builder: (yargs) => - yargs - .option("in", { - type: "string", - demandOption: true, - desc: "The path to the contract's abi", - }) - .option("out", { - type: "string", - demandOption: true, - desc: "The path to the output directory", - }), - handler: async (argv) => { - await importContract(argv.in, argv.out); - }, - }) - .command({ - command: "version", - describe: "Set the version of packages", - builder: (yargs) => - yargs.option("v", { type: "string", demandOption: true }), - handler: async (argv) => { - await setVersion(String(argv.v)); - }, - }) - .command({ - command: "token ", - describe: "Encode or Decode a Procaptcha token to the JSON output format", - builder: (yargs) => - yargs.positional("token", { - describe: "a Procaptcha token to decode", - type: "string", - demandOption: true, - }), - handler: async (argv) => { - if (!isHex(argv.token)) { - log.debug("Encoding token to hex"); - log.info(encodeProcaptchaOutput(JSON.parse(argv.token))); - } else { - log.debug("Decoding token from hex"); - log.info(decodeProcaptchaOutput(argv.token)); - } - }, - }).argv; + handler: async (argv) => { + log.info("Running setup scripts"); + await setup(!!argv.force); + }, + }) + .command({ + command: "import_contract", + describe: "Import a contract into the contract package.", + builder: (yargs) => + yargs + .option("in", { + type: "string", + demandOption: true, + desc: "The path to the contract's abi", + }) + .option("out", { + type: "string", + demandOption: true, + desc: "The path to the output directory", + }), + handler: async (argv) => { + await importContract(argv.in, argv.out); + }, + }) + .command({ + command: "version", + describe: "Set the version of packages", + builder: (yargs) => + yargs.option("v", { type: "string", demandOption: true }), + handler: async (argv) => { + await setVersion(String(argv.v)); + }, + }) + .command({ + command: "token ", + describe: "Encode or Decode a Procaptcha token to the JSON output format", + builder: (yargs) => + yargs.positional("token", { + describe: "a Procaptcha token to decode", + type: "string", + demandOption: true, + }), + handler: async (argv) => { + if (!isHex(argv.token)) { + log.debug("Encoding token to hex"); + log.info(encodeProcaptchaOutput(JSON.parse(argv.token))); + } else { + log.debug("Decoding token from hex"); + log.info(decodeProcaptchaOutput(argv.token)); + } + }, + }).argv; } processArgs(process.argv) - .then(() => { - process.exit(0); - }) - .catch((error) => { - console.error(error); - process.exit(1); - }); + .then(() => { + process.exit(0); + }) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/dev/scripts/src/scripts/generateMnemonic.ts b/dev/scripts/src/scripts/generateMnemonic.ts index 0d701116e8..49a46e1203 100644 --- a/dev/scripts/src/scripts/generateMnemonic.ts +++ b/dev/scripts/src/scripts/generateMnemonic.ts @@ -12,32 +12,32 @@ // See the License for the specific language governing permissions and // limitations under the License. -import { loadEnv } from "@prosopo/cli"; +import { loadEnv } from "@prosopo/dotenv"; import { LogLevel, getLogger } from "@prosopo/common"; import { generateMnemonic } from "@prosopo/contract"; import { updateEnvFile } from "../setup/index.js"; loadEnv(); const logger = getLogger( - process.env.PROSOPO_LOG_LEVEL || LogLevel.enum.info, - "generateMnemonic", + process.env.PROSOPO_LOG_LEVEL || LogLevel.enum.info, + "generateMnemonic", ); async function mnemonic(addToEnv: boolean) { - const [mnemonic, address] = await generateMnemonic(); - logger.info(`Address: ${address}`); - logger.info(`Mnemonic: ${mnemonic}`); - if (addToEnv) { - await updateEnvFile({ - PROSOPO_PROVIDER_MNEMONIC: `"${mnemonic}"`, - PROSOPO_PROVIDER_ADDRESS: address, - }); - } + const [mnemonic, address] = await generateMnemonic(); + logger.info(`Address: ${address}`); + logger.info(`Mnemonic: ${mnemonic}`); + if (addToEnv) { + await updateEnvFile({ + PROSOPO_PROVIDER_MNEMONIC: `"${mnemonic}"`, + PROSOPO_PROVIDER_ADDRESS: address, + }); + } } mnemonic(process.argv.includes("--env")) - .then(() => process.exit(0)) - .catch((e) => { - console.error(e); - process.exit(1); - }); + .then(() => process.exit(0)) + .catch((e) => { + console.error(e); + process.exit(1); + }); diff --git a/dev/scripts/src/scripts/getExistentialDeposit.ts b/dev/scripts/src/scripts/getExistentialDeposit.ts deleted file mode 100644 index 97f6aa18e4..0000000000 --- a/dev/scripts/src/scripts/getExistentialDeposit.ts +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2021-2024 Prosopo (UK) Ltd. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -import { ApiPromise, WsProvider } from "@polkadot/api"; -import { oneUnit } from "@prosopo/tx"; -import { type NetworkNames, networks } from "@prosopo/types"; -import { get } from "@prosopo/util"; - -async function run(defaultNetwork: NetworkNames) { - const defaultNetworks = networks(); - // Construct - const provider = get(defaultNetworks, defaultNetwork).endpoint; - const wsProvider = new WsProvider(provider); - const api = await ApiPromise.create({ provider: wsProvider }); - - // Do something - const existentialDeposit = await api.consts.balances.existentialDeposit; - const unit = await oneUnit(api); - const chainDecimals = api.registry.chainDecimals; - console.log("Chain decimal places:", chainDecimals); - console.log("One Unit:", unit.toString()); - console.log("Existential Deposit:", existentialDeposit.toNumber()); - console.log( - "Existential Deposit in UNITs:", - existentialDeposit.div(unit).toNumber(), - "UNIT", - ); - console.log("Existential Deposit Hex:", existentialDeposit.toHex?.()); - return existentialDeposit; -} - -const defaultNetwork = process.argv[2] as NetworkNames; -run(defaultNetwork) - .then(() => process.exit(0)) - .catch((error) => { - console.error(error); - process.exit(-1); - }); diff --git a/dev/scripts/src/scripts/getRandomProvider.ts b/dev/scripts/src/scripts/getRandomProvider.ts deleted file mode 100644 index 63f220e944..0000000000 --- a/dev/scripts/src/scripts/getRandomProvider.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { defaultConfig } from "@prosopo/cli"; -import { generateMnemonic, getPairAsync } from "@prosopo/contract"; -// Copyright 2021-2024 Prosopo (UK) Ltd. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -import { ProviderEnvironment } from "@prosopo/env"; -import { Tasks } from "@prosopo/provider"; -import dotenv from "dotenv"; - -dotenv.config(); - -async function main() { - const config = defaultConfig(); - const network = config.networks[config.defaultNetwork]; - const pair = await getPairAsync(network, "//Alice"); - const env = new ProviderEnvironment(defaultConfig(), pair); - await env.isReady(); - const tasks = new Tasks(env); - const [mnemonic, address] = (await generateMnemonic(env.keyring)) || ["", ""]; - const dappContractAccount = process.env.PROSOPO_SITE_KEY || ""; - // const provider = (await tasks.contract.query.getRandomActiveProvider(address, dappContractAccount)).value - // .unwrap() - // .unwrap() - console.log( - "Tasks no longer makes contract queries. Please update to add in RPC calls.", - ); - process.exit(); -} - -main().catch((error) => { - console.error(error); - process.exit(); -}); diff --git a/dev/scripts/src/scripts/setVersion.ts b/dev/scripts/src/scripts/setVersion.ts index 89855b5066..ffe685797b 100644 --- a/dev/scripts/src/scripts/setVersion.ts +++ b/dev/scripts/src/scripts/setVersion.ts @@ -1,7 +1,3 @@ -import fs from "node:fs"; -import path from "node:path"; -import { parse, stringify } from "@iarna/toml"; -import { loadEnv } from "@prosopo/cli"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,6 +11,11 @@ import { loadEnv } from "@prosopo/cli"; // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + +import fs from "node:fs"; +import path from "node:path"; +import { parse, stringify } from "@iarna/toml"; +import { loadEnv } from "@prosopo/dotenv"; import { getLogLevel, getLogger } from "@prosopo/common"; import { getRootDir } from "@prosopo/config"; @@ -26,149 +27,149 @@ const log = getLogger(logLevel, "setVersion"); log.info("Log level:", logLevel); const parseVersion = (version: string) => { - try { - const parts = version.split("."); - if (parts.length !== 3) { - throw new Error(); - } - let [major, minor, patch] = parts; - major = Number.parseInt(major ?? "").toString(); - minor = Number.parseInt(minor ?? "").toString(); - patch = Number.parseInt(patch ?? "").toString(); - if (major === "NaN" || minor === "NaN" || patch === "NaN") { - throw new Error(); - } - return `${major}.${minor}.${patch}`; - } catch (e) { - throw new Error("Version must be in the format of x.y.z"); - } + try { + const parts = version.split("."); + if (parts.length !== 3) { + throw new Error(); + } + let [major, minor, patch] = parts; + major = Number.parseInt(major ?? "").toString(); + minor = Number.parseInt(minor ?? "").toString(); + patch = Number.parseInt(patch ?? "").toString(); + if (major === "NaN" || minor === "NaN" || patch === "NaN") { + throw new Error(); + } + return `${major}.${minor}.${patch}`; + } catch (e) { + throw new Error("Version must be in the format of x.y.z"); + } }; const find = (pth: string, filter: (pth: string) => boolean): string[] => { - const files = fs.readdirSync(pth); - const results: string[] = []; - for (const file of files) { - const fullPath = path.join(pth, file); - if (filter(fullPath)) { - results.push(fullPath); - } - try { - if (fs.statSync(fullPath).isDirectory()) { - results.push(...find(fullPath, filter)); - } - } catch (e) { - log.debug("Not a directory: {fullPath}"); - } - } - return results; + const files = fs.readdirSync(pth); + const results: string[] = []; + for (const file of files) { + const fullPath = path.join(pth, file); + if (filter(fullPath)) { + results.push(fullPath); + } + try { + if (fs.statSync(fullPath).isDirectory()) { + results.push(...find(fullPath, filter)); + } + } catch (e) { + log.debug("Not a directory: {fullPath}"); + } + } + return results; }; export default async function setVersion(versionIn: string, ignore?: string[]) { - log.info("Setting version to ", versionIn); - const version = parseVersion(versionIn); - const root = getRootDir(); - const ignorePaths = ["node_modules", "cargo-cache", ...(ignore ?? [])]; - log.debug("Ignoring paths: ", ignorePaths); - // walk through all files finding .json or .toml - const files = find(root, (pth) => { - // ignore node_modules and any user specified paths - if (ignorePaths.some((ignorePath) => pth.includes(ignorePath))) { - return false; - } - const basename = path.basename(pth); - return basename === "package.json" || basename === "Cargo.toml"; - }); - // split into json and toml - // biome-ignore lint/complexity/noForEach: TODO fix - files - .filter((pth) => path.extname(pth) === ".json") - .forEach((pth) => { - log.debug("setting version in", pth); - const content = fs.readFileSync(pth, "utf8"); - // replace version in all json files - const jsonContent = JSON.parse(content); - if (jsonContent.version) { - // only replace if version is set - jsonContent.version = version; - } - // go through dependencies - for (const obj of [ - jsonContent.dependencies ?? {}, - jsonContent.devDependencies ?? {}, - jsonContent.peerDependencies ?? {}, - ]) { - // detect any prosopo dependencies - for (const key of Object.keys(obj)) { - if (key.startsWith("@prosopo") && !key.includes("typechain")) { - // and replace version - log.debug(`setting ${key} to ${version} in ${pth}`); - obj[key] = version; - } - } - } - fs.writeFileSync(pth, `${JSON.stringify(jsonContent, null, 4)}\n`); - }); + log.info("Setting version to ", versionIn); + const version = parseVersion(versionIn); + const root = getRootDir(); + const ignorePaths = ["node_modules", "cargo-cache", ...(ignore ?? [])]; + log.debug("Ignoring paths: ", ignorePaths); + // walk through all files finding .json or .toml + const files = find(root, (pth) => { + // ignore node_modules and any user specified paths + if (ignorePaths.some((ignorePath) => pth.includes(ignorePath))) { + return false; + } + const basename = path.basename(pth); + return basename === "package.json" || basename === "Cargo.toml"; + }); + // split into json and toml + // biome-ignore lint/complexity/noForEach: TODO fix + files + .filter((pth) => path.extname(pth) === ".json") + .forEach((pth) => { + log.debug("setting version in", pth); + const content = fs.readFileSync(pth, "utf8"); + // replace version in all json files + const jsonContent = JSON.parse(content); + if (jsonContent.version) { + // only replace if version is set + jsonContent.version = version; + } + // go through dependencies + for (const obj of [ + jsonContent.dependencies ?? {}, + jsonContent.devDependencies ?? {}, + jsonContent.peerDependencies ?? {}, + ]) { + // detect any prosopo dependencies + for (const key of Object.keys(obj)) { + if (key.startsWith("@prosopo") && !key.includes("typechain")) { + // and replace version + log.debug(`setting ${key} to ${version} in ${pth}`); + obj[key] = version; + } + } + } + fs.writeFileSync(pth, `${JSON.stringify(jsonContent, null, 4)}\n`); + }); - // replace version in tomls - // biome-ignore lint/complexity/noForEach: TODO fix - files - .filter((pth) => path.extname(pth) === ".toml") - .filter((pth) => { - // ignore node_modules and any user specified paths - return !ignorePaths.some((ignorePath) => pth.includes(ignorePath)); - }) - .forEach((pth) => { - log.debug("setting version in", pth); - const content = fs.readFileSync(pth, "utf8"); - // replace version in all toml files - // biome-ignore lint/suspicious/noExplicitAny: TODO fix - const tomlContent: any = parse(content); - if (tomlContent.workspace) { - // biome-ignore lint/suspicious/noExplicitAny: TODO fix - if ((tomlContent.workspace as any).version) { - // biome-ignore lint/suspicious/noExplicitAny: TODO fix - (tomlContent.workspace as any).version = version; - } - } else { - // replace dependency versions in all toml files - tomlContent.package.version = version; - } - fs.writeFileSync(pth, `${stringify(tomlContent)}\n`); - }); + // replace version in tomls + // biome-ignore lint/complexity/noForEach: TODO fix + files + .filter((pth) => path.extname(pth) === ".toml") + .filter((pth) => { + // ignore node_modules and any user specified paths + return !ignorePaths.some((ignorePath) => pth.includes(ignorePath)); + }) + .forEach((pth) => { + log.debug("setting version in", pth); + const content = fs.readFileSync(pth, "utf8"); + // replace version in all toml files + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + const tomlContent: any = parse(content); + if (tomlContent.workspace) { + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + if ((tomlContent.workspace as any).version) { + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + (tomlContent.workspace as any).version = version; + } + } else { + // replace dependency versions in all toml files + tomlContent.package.version = version; + } + fs.writeFileSync(pth, `${stringify(tomlContent)}\n`); + }); - // go through tomls again now versions have updated and update the version field for dependencies with paths set, as we can follow the path to get the version - // biome-ignore lint/complexity/noForEach: TODO fix - files - .filter((pth) => path.extname(pth) === ".toml") - .forEach((pth) => { - log.debug("setting dependency versions in", pth); - const content = fs.readFileSync(pth, "utf8"); - // replace version in all toml files - const tomlContent = parse(content); - if (tomlContent.workspace) { - // biome-ignore lint/suspicious/noExplicitAny: TODO fix - if ((tomlContent.workspace as any).version) { - // biome-ignore lint/suspicious/noExplicitAny: TODO fix - (tomlContent.workspace as any).version = version; - } - } else { - for (const obj of [ - tomlContent.dependencies ?? {}, - tomlContent["dev-dependencies"] ?? {}, - ]) { - // detect any prosopo dependencies - for (const [key, value] of Object.entries(obj)) { - if (value.path) { - // trace path to get version - path.join(value.path, "Cargo.toml"); - const depContent = fs.readFileSync(pth, "utf8"); - const depTomlContent = parse(depContent); - value.version = depTomlContent.version; - } - } - } - } - // biome-ignore lint/suspicious/noExplicitAny: TODO fix - fs.writeFileSync(pth, `${stringify(tomlContent as any)}\n`); - }); + // go through tomls again now versions have updated and update the version field for dependencies with paths set, as we can follow the path to get the version + // biome-ignore lint/complexity/noForEach: TODO fix + files + .filter((pth) => path.extname(pth) === ".toml") + .forEach((pth) => { + log.debug("setting dependency versions in", pth); + const content = fs.readFileSync(pth, "utf8"); + // replace version in all toml files + const tomlContent = parse(content); + if (tomlContent.workspace) { + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + if ((tomlContent.workspace as any).version) { + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + (tomlContent.workspace as any).version = version; + } + } else { + for (const obj of [ + tomlContent.dependencies ?? {}, + tomlContent["dev-dependencies"] ?? {}, + ]) { + // detect any prosopo dependencies + for (const [key, value] of Object.entries(obj)) { + if (value.path) { + // trace path to get version + path.join(value.path, "Cargo.toml"); + const depContent = fs.readFileSync(pth, "utf8"); + const depTomlContent = parse(depContent); + value.version = depTomlContent.version; + } + } + } + } + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + fs.writeFileSync(pth, `${stringify(tomlContent as any)}\n`); + }); } diff --git a/dev/scripts/src/scripts/sign.ts b/dev/scripts/src/scripts/sign.ts index f04161c1be..e10cb6b3e3 100644 --- a/dev/scripts/src/scripts/sign.ts +++ b/dev/scripts/src/scripts/sign.ts @@ -50,7 +50,6 @@ const main = async () => { const ss58Format = argv.ss58Format; const keypair = await getPairAsync( - undefined, mnemonic, undefined, type, diff --git a/dev/scripts/src/setup/setup.ts b/dev/scripts/src/setup/setup.ts index 01adba2644..50c46f8ae2 100644 --- a/dev/scripts/src/setup/setup.ts +++ b/dev/scripts/src/setup/setup.ts @@ -1,4 +1,3 @@ -import path from "node:path"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -12,17 +11,19 @@ import path from "node:path"; // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + +import path from "node:path"; import { BN } from "@polkadot/util"; import { isAddress } from "@polkadot/util-crypto"; import { defaultConfig, getSecret } from "@prosopo/cli"; -import { getEnvFile } from "@prosopo/cli"; +import { getEnvFile } from "@prosopo/dotenv"; import { LogLevel, ProsopoEnvError, getLogger } from "@prosopo/common"; import { generateMnemonic, getPairAsync } from "@prosopo/contract"; import { ProviderEnvironment } from "@prosopo/env"; import { - type IDappAccount, - type IProviderAccount, - Payee, + type IDappAccount, + type IProviderAccount, + Payee, } from "@prosopo/types"; import { get } from "@prosopo/util"; import fse from "fs-extra"; @@ -34,155 +35,138 @@ const __dirname = path.resolve(); // Take the root dir from the environment or assume it's the root of this package function getRootDir() { - const rootDir = - process.env.PROSOPO_ROOT_DIR || path.resolve(__dirname, "../.."); - logger.info("Root dir:", rootDir); - return rootDir; + const rootDir = + process.env.PROSOPO_ROOT_DIR || path.resolve(__dirname, "../.."); + logger.info("Root dir:", rootDir); + return rootDir; } function getDatasetFilePath() { - const datasetFile = - process.env.PROSOPO_PROVIDER_DATASET_FILE || - path.resolve("../data/captchas.json"); - logger.info("Dataset file:", datasetFile); - return datasetFile; + const datasetFile = + process.env.PROSOPO_PROVIDER_DATASET_FILE || + path.resolve("../data/captchas.json"); + logger.info("Dataset file:", datasetFile); + return datasetFile; } function getDefaultProvider(): IProviderAccount { - const host = process.env.PROSOPO_PROVIDER_HOST || "localhost"; - return { - url: process.env.PROSOPO_API_PORT - ? `http://${host}:${process.env.PROSOPO_API_PORT}` - : `http://${host}:9229`, - fee: 10, - payee: Payee.dapp, - stake: new BN(10 ** 13), - datasetFile: getDatasetFilePath(), - address: process.env.PROSOPO_PROVIDER_ADDRESS || "", - secret: getSecret(), - captchaDatasetId: "", - }; + const host = process.env.PROSOPO_PROVIDER_HOST || "localhost"; + return { + url: process.env.PROSOPO_API_PORT + ? `http://${host}:${process.env.PROSOPO_API_PORT}` + : `http://${host}:9229`, + fee: 10, + payee: Payee.dapp, + stake: new BN(10 ** 13), + datasetFile: getDatasetFilePath(), + address: process.env.PROSOPO_PROVIDER_ADDRESS || "", + secret: getSecret(), + captchaDatasetId: "", + }; } function getDefaultDapp(): IDappAccount { - return { - secret: "//Eve", - fundAmount: new BN(10 ** 12), - }; + return { + secret: "//Eve", + fundAmount: new BN(10 ** 12), + }; } async function copyEnvFile() { - try { - const rootDir = getRootDir(); - // TODO move all env files to a single template location - const tplLocation = path.resolve(rootDir, "./dev/scripts"); - const tplEnvFile = getEnvFile(tplLocation, "env"); - const envFile = getEnvFile(tplLocation, ".env"); - await fse.copy(tplEnvFile, envFile, { overwrite: false }); - } catch (err) { - logger.debug(err); - } + try { + const rootDir = getRootDir(); + // TODO move all env files to a single template location + const tplLocation = path.resolve(rootDir, "./dev/scripts"); + const tplEnvFile = getEnvFile(tplLocation, "env"); + const envFile = getEnvFile(tplLocation, ".env"); + await fse.copy(tplEnvFile, envFile, { overwrite: false }); + } catch (err) { + logger.debug(err); + } } function updateEnvFileVar(source: string, name: string, value: string) { - const envVar = new RegExp(`.*(${name}=)(.*)`, "g"); - if (envVar.test(source)) { - return source.replace(envVar, `$1${value}`); - } - return `${source}\n${name}=${value}`; + const envVar = new RegExp(`.*(${name}=)(.*)`, "g"); + if (envVar.test(source)) { + return source.replace(envVar, `$1${value}`); + } + return `${source}\n${name}=${value}`; } export async function updateEnvFile(vars: Record) { - const rootDir = getRootDir(); - const envFile = getEnvFile(rootDir, ".env"); + const rootDir = getRootDir(); + const envFile = getEnvFile(rootDir, ".env"); - let readEnvFile = await fse.readFile(envFile, "utf8"); + let readEnvFile = await fse.readFile(envFile, "utf8"); - for (const key in vars) { - readEnvFile = updateEnvFileVar(readEnvFile, key, get(vars, key)); - } - logger.info(`Updating ${envFile}`); - await fse.writeFile(envFile, readEnvFile); + for (const key in vars) { + readEnvFile = updateEnvFileVar(readEnvFile, key, get(vars, key)); + } + logger.info(`Updating ${envFile}`); + await fse.writeFile(envFile, readEnvFile); } export async function setup(force: boolean) { - const defaultProvider = getDefaultProvider(); - const defaultDapp = getDefaultDapp(); - - if (defaultProvider.secret) { - const hasProviderAccount = - defaultProvider.address && defaultProvider.secret; - logger.debug("ENVIRONMENT", process.env.NODE_ENV); - - const [mnemonic, address] = !hasProviderAccount - ? await generateMnemonic() - : [defaultProvider.secret, defaultProvider.address]; - - logger.debug(`Address: ${address}`); - logger.debug(`Mnemonic: ${mnemonic}`); - logger.debug("Writing .env file..."); - await copyEnvFile(); - - if (!process.env.PROSOPO_SITE_KEY) { - throw new ProsopoEnvError("DEVELOPER.PROSOPO_SITE_KEY_MISSING"); - } - - const config = defaultConfig(); - const providerSecret = config.account.secret; - const network = config.networks[config.defaultNetwork]; - const pair = await getPairAsync(network, providerSecret); - - const env = new ProviderEnvironment(defaultConfig(), pair); - await env.isReady(); - - defaultProvider.secret = mnemonic; - - env.logger.info(`Registering provider... ${defaultProvider.address}`); - - defaultProvider.pair = await getPairAsync(network, providerSecret); - - // If no PROSOPO_SITE_KEY is present, we will register a test account like //Eve. - // If a PROSOPO_SITE_KEY is present, we want to register it in the contract. - // If a DAPP_SECRET is present, we want the PROSOPO_SITE_KEY account to register itself. - // Otherwise, a test account like //Eve is used to register the PROSOPO_SITE_KEY account. - defaultDapp.pair = await getPairAsync(network, defaultDapp.secret); - let dappAddressToRegister = defaultDapp.pair.address; - if ( - process.env.PROSOPO_SITE_KEY && - isAddress(process.env.PROSOPO_SITE_KEY) - ) { - dappAddressToRegister = process.env.PROSOPO_SITE_KEY; - if (process.env.PROSOPO_SITE_PRIVATE_KEY) { - defaultDapp.secret = process.env.PROSOPO_SITE_PRIVATE_KEY; - defaultDapp.pair = await getPairAsync(network, defaultDapp.secret); - dappAddressToRegister = defaultDapp.pair.address; - } - } - - await setupProvider(env, defaultProvider); - - env.logger.info(`Registering dapp... ${defaultDapp.pair.address}`); - - if (!hasProviderAccount) { - await updateEnvFile({ - PROVIDER_MNEMONIC: `"${mnemonic}"`, - PROVIDER_ADDRESS: address, - }); - } - env.logger.debug("Updating env files with PROSOPO_SITE_KEY"); - await updateDemoHTMLFiles( - [/data-sitekey="(\w{48})"/, /siteKey:\s*'(\w{48})'/], - defaultDapp.pair.address, - env.logger, - ); - await updateEnvFiles( - ["NEXT_PUBLIC_PROSOPO_SITE_KEY", "PROSOPO_SITE_KEY"], - defaultDapp.pair.address, - env.logger, - ); - process.exit(); - } else { - console.error("no secret found in .env file"); - throw new ProsopoEnvError("GENERAL.NO_MNEMONIC_OR_SEED"); - } + const defaultProvider = getDefaultProvider(); + const defaultDapp = getDefaultDapp(); + + if (defaultProvider.secret) { + const hasProviderAccount = + defaultProvider.address && defaultProvider.secret; + logger.debug("ENVIRONMENT", process.env.NODE_ENV); + + const [mnemonic, address] = !hasProviderAccount + ? await generateMnemonic() + : [defaultProvider.secret, defaultProvider.address]; + + logger.debug(`Address: ${address}`); + logger.debug(`Mnemonic: ${mnemonic}`); + logger.debug("Writing .env file..."); + await copyEnvFile(); + + if (!process.env.PROSOPO_SITE_KEY) { + throw new ProsopoEnvError("DEVELOPER.PROSOPO_SITE_KEY_MISSING"); + } + + const config = defaultConfig(); + const providerSecret = config.account.secret; + const pair = await getPairAsync(providerSecret); + + const env = new ProviderEnvironment(defaultConfig(), pair); + await env.isReady(); + + defaultProvider.secret = mnemonic; + + env.logger.info(`Registering provider... ${defaultProvider.address}`); + + defaultProvider.pair = await getPairAsync(providerSecret); + + defaultDapp.pair = await getPairAsync(defaultDapp.secret); + + await setupProvider(env, defaultProvider); + + env.logger.info(`Registering dapp... ${defaultDapp.pair.address}`); + + if (!hasProviderAccount) { + await updateEnvFile({ + PROVIDER_MNEMONIC: `"${mnemonic}"`, + PROVIDER_ADDRESS: address, + }); + } + env.logger.debug("Updating env files with PROSOPO_SITE_KEY"); + await updateDemoHTMLFiles( + [/data-sitekey="(\w{48})"/, /siteKey:\s*'(\w{48})'/], + defaultDapp.pair.address, + env.logger, + ); + await updateEnvFiles( + ["NEXT_PUBLIC_PROSOPO_SITE_KEY", "PROSOPO_SITE_KEY"], + defaultDapp.pair.address, + env.logger, + ); + process.exit(); + } else { + console.error("no secret found in .env file"); + throw new ProsopoEnvError("GENERAL.NO_MNEMONIC_OR_SEED"); + } } diff --git a/dev/scripts/src/util/updateEnv.ts b/dev/scripts/src/util/updateEnv.ts index a0dced2a4c..32829e6966 100644 --- a/dev/scripts/src/util/updateEnv.ts +++ b/dev/scripts/src/util/updateEnv.ts @@ -1,6 +1,3 @@ -import fs from "node:fs"; -import path from "node:path"; -import { getEnv } from "@prosopo/cli"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -14,93 +11,97 @@ import { getEnv } from "@prosopo/cli"; // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + +import fs from "node:fs"; +import path from "node:path"; +import { getEnv } from "@prosopo/dotenv"; import type { Logger } from "@prosopo/common"; import { at } from "@prosopo/util"; import dotenv from "dotenv"; import fg from "fast-glob"; const ignore = [ - "**/node_modules/**", - "node_modules/**", - "../../**/node_modules/**", - "../node_modules/**", - "../../node_modules/**", + "**/node_modules/**", + "node_modules/**", + "../../**/node_modules/**", + "../node_modules/**", + "../../node_modules/**", ]; const __dirname = path.resolve(); export async function findEnvFiles(logger: Logger, cwd?: string) { - const env = getEnv(); - const fileName = `.env.${env}`; - // options is optional - logger.info("Searching for files"); - return await fg(`${cwd || "../.."}/**/${fileName}`, { - ignore, - }); + const env = getEnv(); + const fileName = `.env.${env}`; + // options is optional + logger.info("Searching for files"); + return await fg(`${cwd || "../.."}/**/${fileName}`, { + ignore, + }); } export async function updateDemoHTMLFiles( - varMatchers: RegExp[], - varValue: string, - logger: Logger, + varMatchers: RegExp[], + varValue: string, + logger: Logger, ) { - // replace the site key in the html files - const files = await fg("../../demos/**/*.html", { - ignore: ignore, - }); - logger.info("HTML files found", files); - // biome-ignore lint/complexity/noForEach: TODO fix - files.forEach((file) => { - // the following code loads a .env file, searches for the variable and replaces it - // then saves the file - const filePath = path.resolve(process.cwd(), file); - const contents = fs.readFileSync(filePath).toString(); - let newContents = contents; - for (const varMatcher of varMatchers) { - const matches = contents.match(varMatcher); - if (matches) { - // replace the site key - const matchedVar = at(matches, 1); - logger.info("matchedVar", matchedVar); - newContents = contents.replaceAll(matchedVar, varValue); - break; - } - } + // replace the site key in the html files + const files = await fg("../../demos/**/*.html", { + ignore: ignore, + }); + logger.info("HTML files found", files); + // biome-ignore lint/complexity/noForEach: TODO fix + files.forEach((file) => { + // the following code loads a .env file, searches for the variable and replaces it + // then saves the file + const filePath = path.resolve(process.cwd(), file); + const contents = fs.readFileSync(filePath).toString(); + let newContents = contents; + for (const varMatcher of varMatchers) { + const matches = contents.match(varMatcher); + if (matches) { + // replace the site key + const matchedVar = at(matches, 1); + logger.info("matchedVar", matchedVar); + newContents = contents.replaceAll(matchedVar, varValue); + break; + } + } - if (newContents !== contents) { - // write the file back - fs.writeFileSync(path.resolve(__dirname, filePath), newContents); - } - }); + if (newContents !== contents) { + // write the file back + fs.writeFileSync(path.resolve(__dirname, filePath), newContents); + } + }); } export async function updateEnvFiles( - varNames: string[], - varValue: string, - logger: Logger, - cwd?: string, + varNames: string[], + varValue: string, + logger: Logger, + cwd?: string, ) { - const files = await findEnvFiles(logger, cwd); - logger.info("Env files found", files); - // biome-ignore lint/complexity/noForEach: TODO fix - files.forEach((file) => { - let write = false; - // the following code loads a .env file, searches for the variable and replaces it - // then saves the file - const filePath = path.resolve(cwd || process.cwd(), file); - const envConfig = dotenv.parse(fs.readFileSync(filePath)); - for (const varName of varNames) { - if (varName in envConfig) { - envConfig[varName] = varValue; - write = true; - } - } - if (write) { - // write the file back - fs.writeFileSync( - path.resolve(__dirname, filePath), - Object.keys(envConfig) - .map((k) => `${k}=${envConfig[k]}`) - .join("\n"), - ); - } - }); + const files = await findEnvFiles(logger, cwd); + logger.info("Env files found", files); + // biome-ignore lint/complexity/noForEach: TODO fix + files.forEach((file) => { + let write = false; + // the following code loads a .env file, searches for the variable and replaces it + // then saves the file + const filePath = path.resolve(cwd || process.cwd(), file); + const envConfig = dotenv.parse(fs.readFileSync(filePath)); + for (const varName of varNames) { + if (varName in envConfig) { + envConfig[varName] = varValue; + write = true; + } + } + if (write) { + // write the file back + fs.writeFileSync( + path.resolve(__dirname, filePath), + Object.keys(envConfig) + .map((k) => `${k}=${envConfig[k]}`) + .join("\n"), + ); + } + }); } diff --git a/dev/scripts/tsconfig.json b/dev/scripts/tsconfig.json index b11a66f64f..4ba13d5e50 100644 --- a/dev/scripts/tsconfig.json +++ b/dev/scripts/tsconfig.json @@ -34,6 +34,9 @@ { "path": "../../packages/datasets-fs" }, + { + "path": "../../packages/dotenv" + }, { "path": "../../packages/env" }, diff --git a/dev/ts-brand/package.json b/dev/ts-brand/package.json index 93f84771ec..3d3703de45 100644 --- a/dev/ts-brand/package.json +++ b/dev/ts-brand/package.json @@ -1,44 +1,44 @@ { - "name": "@prosopo/ts-brand", - "version": "2.0.1", - "description": "Brand your TypeScript types", - "main": "./dist/index.js", - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "types": "./dist/index.d.ts", - "scripts": { - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build", - "test": "NODE_ENV=${NODE_ENV:-test}; npx vitest run --config ./vite.test.config.ts" - }, - "author": "Prosopo Limited", - "license": "Apache-2.0", - "dependencies": {}, - "devDependencies": { - "tslib": "2.6.2", - "typescript": "5.1.6", - "vitest": "^1.3.1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/prosopo/captcha.git" - }, - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha/blob/main/packages/ts-brand/README.md", - "publishConfig": { - "registry": "https://registry.npmjs.org" - }, - "sideEffects": false + "name": "@prosopo/ts-brand", + "version": "2.0.2", + "description": "Brand your TypeScript types", + "main": "./dist/index.js", + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "types": "./dist/index.d.ts", + "scripts": { + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build", + "test": "NODE_ENV=${NODE_ENV:-test}; npx vitest run --config ./vite.test.config.ts" + }, + "author": "Prosopo Limited", + "license": "Apache-2.0", + "dependencies": {}, + "devDependencies": { + "tslib": "2.6.2", + "typescript": "5.1.6", + "vitest": "^1.3.1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/prosopo/captcha.git" + }, + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha/blob/main/packages/ts-brand/README.md", + "publishConfig": { + "registry": "https://registry.npmjs.org" + }, + "sideEffects": false } diff --git a/dev/tsconfig-checker/package.json b/dev/tsconfig-checker/package.json index 85d79f5fe3..87617c87ee 100644 --- a/dev/tsconfig-checker/package.json +++ b/dev/tsconfig-checker/package.json @@ -1,29 +1,29 @@ { - "name": "@prosopo/tsconfig-checker", - "version": "2.0.1", - "description": "", - "private": true, - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "start": "npx tsx src/check.ts" - }, - "author": "", - "license": "ISC", - "devDependencies": { - "@types/node": "^20.11.4", - "tslib": "2.6.2", - "tsx": "^4.7.0", - "typescript": "5.1.6" - }, - "main": "dist/index.js", - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "dependencies": { - "@prosopo/util": "2.0.1" - } + "name": "@prosopo/tsconfig-checker", + "version": "2.0.2", + "description": "", + "private": true, + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "start": "npx tsx src/check.ts" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "@types/node": "^20.11.4", + "tslib": "2.6.2", + "tsx": "^4.7.0", + "typescript": "5.1.6" + }, + "main": "dist/index.js", + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "dependencies": { + "@prosopo/util": "2.0.2" + } } diff --git a/dev/vite-plugin-watch-workspace/package.json b/dev/vite-plugin-watch-workspace/package.json index 971107e549..f7b4b476ff 100644 --- a/dev/vite-plugin-watch-workspace/package.json +++ b/dev/vite-plugin-watch-workspace/package.json @@ -1,47 +1,47 @@ { - "name": "@prosopo/vite-plugin-watch-workspace", - "version": "2.0.1", - "description": "Vite plugin for watching and rebuilding external files", - "main": "./dist/index.js", - "type": "module", - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build" - }, - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "author": "Prosopo Limited", - "license": "Apache-2.0", - "dependencies": { - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "vite": "^5.1.7" - }, - "devDependencies": { - "@types/debug": "^4.1.12", - "tslib": "2.6.2", - "typescript": "5.1.6" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/prosopo/captcha.git" - }, - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha/blob/main/dev/vite-plugin-watch-workspace/README.md", - "publishConfig": { - "registry": "https://registry.npmjs.org" - }, - "sideEffects": false + "name": "@prosopo/vite-plugin-watch-workspace", + "version": "2.0.2", + "description": "Vite plugin for watching and rebuilding external files", + "main": "./dist/index.js", + "type": "module", + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build" + }, + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "author": "Prosopo Limited", + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "vite": "^5.1.7" + }, + "devDependencies": { + "@types/debug": "^4.1.12", + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/prosopo/captcha.git" + }, + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha/blob/main/dev/vite-plugin-watch-workspace/README.md", + "publishConfig": { + "registry": "https://registry.npmjs.org" + }, + "sideEffects": false } diff --git a/docker/docker-compose.demo.yml b/docker/docker-compose.demo.yml index 69ce3cc39c..76dad4c470 100644 --- a/docker/docker-compose.demo.yml +++ b/docker/docker-compose.demo.yml @@ -1,12 +1,5 @@ # https://docs.docker.com/cloud/ecs-integration/ services: - substrate: - image: prosopo/substrate:demo-v1.0.4 - ports: - - '9615:9615' - - '9944:9944' - - '9933:9933' - command: substrate-contracts-node --dev -d ./chain-data --unsafe-rpc-external --rpc-external --prometheus-external -lerror,runtime::contracts=debug database: image: mongo:5.0.4 ports: @@ -25,7 +18,6 @@ services: ports: - '3000:3000' depends_on: - - substrate - database # https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data-secrets.html @@ -38,18 +30,6 @@ x-aws-vpc: vpc-0d475f14c1385d682 x-aws-loadbalancer: arn:aws:elasticloadbalancing:eu-west-1:333775583992:loadbalancer/net/demo-net/c964b999910c2e7d x-aws-cloudformation: Resources: - SubstrateTCP9944Listener: - Properties: - Certificates: - - CertificateArn: 'arn:aws:acm:eu-west-1:333775583992:certificate/4566efed-fb66-498b-82d0-73be97a42191' - Protocol: TLS - Port: 9944 - SubstrateTCP9933Listener: - Properties: - Certificates: - - CertificateArn: 'arn:aws:acm:eu-west-1:333775583992:certificate/4566efed-fb66-498b-82d0-73be97a42191' - Protocol: TLS - Port: 9933 ProviderTCP3000Listener: Properties: Certificates: diff --git a/docker/docker-compose.provider.development.yml b/docker/docker-compose.provider.development.yml index 46b668362c..c9ea7c95c3 100644 --- a/docker/docker-compose.provider.development.yml +++ b/docker/docker-compose.provider.development.yml @@ -11,22 +11,6 @@ services: tty: true depends_on: - database - - substrate - networks: - - internal - - external - logging: - driver: 'json-file' - options: - max-size: '100m' - max-file: '1' - substrate: - image: prosopo/substrate-contracts-node:v0.35 - ports: - - '9615:9615' - - '9944:9944' - - '9933:9933' - - '30333:30333' networks: - internal - external diff --git a/docker/images/provider/package.json b/docker/images/provider/package.json index 114fad960f..b5de22aa68 100644 --- a/docker/images/provider/package.json +++ b/docker/images/provider/package.json @@ -1,8 +1,8 @@ { - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "version": "2.0.1" + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "version": "2.0.2" } diff --git a/package-lock.json b/package-lock.json index e517f9df40..985135f802 100644 --- a/package-lock.json +++ b/package-lock.json @@ -85,8 +85,8 @@ "react-router-dom": "^6.22.3" }, "devDependencies": { - "@prosopo/cli": "2.0.1", "@prosopo/config": "2.0.1", + "@prosopo/dotenv": "2.0.1", "@prosopo/vite-plugin-watch-workspace": "2.0.1", "@types/node": "^20.3.1", "css-loader": "^6.8.1", @@ -107,7 +107,7 @@ "@polkadot/util": "12.6.2", "@polkadot/util-crypto": "12.6.2", "@prosopo/api": "2.0.1", - "@prosopo/contract": "2.0.1", + "@prosopo/dotenv": "2.0.1", "@prosopo/procaptcha": "2.0.1", "@prosopo/server": "2.0.1", "@prosopo/types": "2.0.1", @@ -148,8 +148,8 @@ "web-vitals": "^2.1.4" }, "devDependencies": { - "@prosopo/cli": "2.0.1", "@prosopo/config": "2.0.1", + "@prosopo/dotenv": "2.0.1", "@types/node": "^20.3.1", "css-loader": "^6.8.1", "tslib": "2.6.2", @@ -179,8 +179,8 @@ "web-vitals": "^2.1.4" }, "devDependencies": { - "@prosopo/cli": "2.0.1", "@prosopo/config": "2.0.1", + "@prosopo/dotenv": "2.0.1", "@types/node": "^20.3.1", "css-loader": "^6.8.1", "tslib": "2.6.2", @@ -220,8 +220,8 @@ "version": "2.0.1", "license": "Apache-2.0", "dependencies": { - "@prosopo/cli": "2.0.1", "@prosopo/common": "2.0.1", + "@prosopo/dotenv": "2.0.1", "@prosopo/types": "2.0.1", "es-main": "^1.3.0", "express": "^4.18.1" @@ -302,8 +302,9 @@ }, "dev/config/node_modules/esbuild": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", "hasInstallScript": true, - "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -344,8 +345,8 @@ "@noble/curves": "^1.3.0", "@polkadot/util": "12.6.2", "@polkadot/util-crypto": "12.6.2", - "@prosopo/cli": "2.0.1", "@prosopo/common": "2.0.1", + "@prosopo/dotenv": "2.0.1", "@prosopo/util": "2.0.1", "consola": "^3.2.3", "dotenv": "^16.0.3", @@ -374,8 +375,9 @@ }, "dev/flux/node_modules/vitest": { "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.6.tgz", + "integrity": "sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==", "dev": true, - "license": "MIT", "dependencies": { "@types/chai": "^4.3.5", "@types/chai-subset": "^1.3.3", @@ -510,6 +512,7 @@ "@prosopo/database": "2.0.1", "@prosopo/datasets": "2.0.1", "@prosopo/datasets-fs": "2.0.1", + "@prosopo/dotenv": "2.0.1", "@prosopo/env": "2.0.1", "@prosopo/file-server": "2.0.1", "@prosopo/procaptcha": "2.0.1", @@ -595,7 +598,8 @@ }, "node_modules/@actions/core": { "version": "1.10.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.1.tgz", + "integrity": "sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==", "dependencies": { "@actions/http-client": "^2.0.1", "uuid": "^8.3.2" @@ -603,7 +607,8 @@ }, "node_modules/@actions/github": { "version": "6.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.0.tgz", + "integrity": "sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==", "dependencies": { "@actions/http-client": "^2.2.0", "@octokit/core": "^5.0.1", @@ -612,8 +617,9 @@ } }, "node_modules/@actions/http-client": { - "version": "2.2.1", - "license": "MIT", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.2.tgz", + "integrity": "sha512-2TvX5LskKQzDDQI+bobIDGAjkn0NJiQlg4MTrKnZ8HfQ7nDEUbtJ1ytxPDb2bfk3Hr2XD99X8oAJISAmIoiSAQ==", "dependencies": { "tunnel": "^0.0.6", "undici": "^5.25.4" @@ -621,7 +627,8 @@ }, "node_modules/@ampproject/remapping": { "version": "2.3.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -632,7 +639,8 @@ }, "node_modules/@babel/code-frame": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dependencies": { "@babel/highlight": "^7.24.7", "picocolors": "^1.0.0" @@ -643,14 +651,16 @@ }, "node_modules/@babel/compat-data": { "version": "7.25.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", + "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { "version": "7.25.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.7", @@ -678,14 +688,16 @@ }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { "version": "7.25.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", + "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", "dependencies": { "@babel/types": "^7.25.0", "@jridgewell/gen-mapping": "^0.3.5", @@ -698,7 +710,8 @@ }, "node_modules/@babel/helper-annotate-as-pure": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dependencies": { "@babel/types": "^7.24.7" }, @@ -708,7 +721,8 @@ }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" @@ -719,7 +733,8 @@ }, "node_modules/@babel/helper-compilation-targets": { "version": "7.25.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", "dependencies": { "@babel/compat-data": "^7.25.2", "@babel/helper-validator-option": "^7.24.8", @@ -733,25 +748,29 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { "version": "5.1.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dependencies": { "yallist": "^3.0.2" } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { "version": "3.1.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/@babel/helper-create-class-features-plugin": { "version": "7.25.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz", + "integrity": "sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-member-expression-to-functions": "^7.24.8", @@ -770,14 +789,16 @@ }, "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { "version": "6.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { "version": "7.25.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", + "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "regexpu-core": "^5.3.1", @@ -792,14 +813,16 @@ }, "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { "version": "6.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-define-polyfill-provider": { "version": "0.6.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -813,7 +836,8 @@ }, "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.24.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", "dependencies": { "@babel/traverse": "^7.24.8", "@babel/types": "^7.24.8" @@ -824,7 +848,8 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" @@ -835,7 +860,8 @@ }, "node_modules/@babel/helper-module-transforms": { "version": "7.25.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", "dependencies": { "@babel/helper-module-imports": "^7.24.7", "@babel/helper-simple-access": "^7.24.7", @@ -851,7 +877,8 @@ }, "node_modules/@babel/helper-optimise-call-expression": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", "dependencies": { "@babel/types": "^7.24.7" }, @@ -861,14 +888,16 @@ }, "node_modules/@babel/helper-plugin-utils": { "version": "7.24.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { "version": "7.25.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-wrap-function": "^7.25.0", @@ -883,7 +912,8 @@ }, "node_modules/@babel/helper-replace-supers": { "version": "7.25.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", "dependencies": { "@babel/helper-member-expression-to-functions": "^7.24.8", "@babel/helper-optimise-call-expression": "^7.24.7", @@ -898,7 +928,8 @@ }, "node_modules/@babel/helper-simple-access": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" @@ -909,7 +940,8 @@ }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", "dependencies": { "@babel/traverse": "^7.24.7", "@babel/types": "^7.24.7" @@ -920,28 +952,32 @@ }, "node_modules/@babel/helper-string-parser": { "version": "7.24.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { "version": "7.24.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { "version": "7.25.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", "dependencies": { "@babel/template": "^7.25.0", "@babel/traverse": "^7.25.0", @@ -953,7 +989,8 @@ }, "node_modules/@babel/helpers": { "version": "7.25.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", + "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", "dependencies": { "@babel/template": "^7.25.0", "@babel/types": "^7.25.0" @@ -964,7 +1001,8 @@ }, "node_modules/@babel/highlight": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dependencies": { "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", @@ -977,7 +1015,8 @@ }, "node_modules/@babel/parser": { "version": "7.25.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", + "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", "dependencies": { "@babel/types": "^7.25.2" }, @@ -990,7 +1029,8 @@ }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { "version": "7.25.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz", + "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.8", "@babel/traverse": "^7.25.3" @@ -1004,7 +1044,8 @@ }, "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { "version": "7.25.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", + "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.8" }, @@ -1017,7 +1058,8 @@ }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.25.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.8" }, @@ -1030,7 +1072,8 @@ }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", @@ -1045,7 +1088,8 @@ }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { "version": "7.25.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.8", "@babel/traverse": "^7.25.0" @@ -1059,7 +1103,9 @@ }, "node_modules/@babel/plugin-proposal-class-properties": { "version": "7.18.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1073,7 +1119,8 @@ }, "node_modules/@babel/plugin-proposal-import-attributes-to-assertions": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-import-attributes-to-assertions/-/plugin-proposal-import-attributes-to-assertions-7.24.7.tgz", + "integrity": "sha512-MNNBPf0680IAl/PB3h9OIl3OJ0BXlqe6Aog0QcqLy0a0XFMTxR0EwmfqO29TmLRBWm+cKakfhuYJKHRNq7zzag==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-import-attributes": "^7.24.7" @@ -1087,7 +1134,9 @@ }, "node_modules/@babel/plugin-proposal-object-rest-spread": { "version": "7.20.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", "dependencies": { "@babel/compat-data": "^7.20.5", "@babel/helper-compilation-targets": "^7.20.7", @@ -1104,7 +1153,8 @@ }, "node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.21.0-placeholder-for-preset-env.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "engines": { "node": ">=6.9.0" }, @@ -1114,7 +1164,8 @@ }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1124,7 +1175,8 @@ }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -1134,7 +1186,8 @@ }, "node_modules/@babel/plugin-syntax-class-static-block": { "version": "7.14.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1147,7 +1200,8 @@ }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1157,7 +1211,8 @@ }, "node_modules/@babel/plugin-syntax-export-namespace-from": { "version": "7.8.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -1167,7 +1222,8 @@ }, "node_modules/@babel/plugin-syntax-import-assertions": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1180,7 +1236,8 @@ }, "node_modules/@babel/plugin-syntax-import-attributes": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1193,7 +1250,8 @@ }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1203,7 +1261,8 @@ }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1213,7 +1272,8 @@ }, "node_modules/@babel/plugin-syntax-jsx": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1226,7 +1286,8 @@ }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1236,7 +1297,8 @@ }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1246,7 +1308,8 @@ }, "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -1256,7 +1319,8 @@ }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1266,7 +1330,8 @@ }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1276,7 +1341,8 @@ }, "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -1286,7 +1352,8 @@ }, "node_modules/@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1299,7 +1366,8 @@ }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -1312,8 +1380,9 @@ }, "node_modules/@babel/plugin-syntax-typescript": { "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", + "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1326,7 +1395,8 @@ }, "node_modules/@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -1340,7 +1410,8 @@ }, "node_modules/@babel/plugin-transform-arrow-functions": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1353,7 +1424,8 @@ }, "node_modules/@babel/plugin-transform-async-generator-functions": { "version": "7.25.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz", + "integrity": "sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.8", "@babel/helper-remap-async-to-generator": "^7.25.0", @@ -1369,7 +1441,8 @@ }, "node_modules/@babel/plugin-transform-async-to-generator": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", "dependencies": { "@babel/helper-module-imports": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", @@ -1384,7 +1457,8 @@ }, "node_modules/@babel/plugin-transform-block-scoped-functions": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1397,7 +1471,8 @@ }, "node_modules/@babel/plugin-transform-block-scoping": { "version": "7.25.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.8" }, @@ -1410,7 +1485,8 @@ }, "node_modules/@babel/plugin-transform-class-properties": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", + "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -1424,7 +1500,8 @@ }, "node_modules/@babel/plugin-transform-class-static-block": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", @@ -1439,7 +1516,8 @@ }, "node_modules/@babel/plugin-transform-classes": { "version": "7.25.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz", + "integrity": "sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-compilation-targets": "^7.24.8", @@ -1457,7 +1535,8 @@ }, "node_modules/@babel/plugin-transform-computed-properties": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/template": "^7.24.7" @@ -1471,7 +1550,8 @@ }, "node_modules/@babel/plugin-transform-destructuring": { "version": "7.24.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.8" }, @@ -1484,7 +1564,8 @@ }, "node_modules/@babel/plugin-transform-dotall-regex": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -1498,7 +1579,8 @@ }, "node_modules/@babel/plugin-transform-duplicate-keys": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1511,7 +1593,8 @@ }, "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { "version": "7.25.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", + "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.25.0", "@babel/helper-plugin-utils": "^7.24.8" @@ -1525,7 +1608,8 @@ }, "node_modules/@babel/plugin-transform-dynamic-import": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -1539,7 +1623,8 @@ }, "node_modules/@babel/plugin-transform-exponentiation-operator": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -1553,7 +1638,8 @@ }, "node_modules/@babel/plugin-transform-export-namespace-from": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -1567,7 +1653,8 @@ }, "node_modules/@babel/plugin-transform-for-of": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" @@ -1581,7 +1668,8 @@ }, "node_modules/@babel/plugin-transform-function-name": { "version": "7.25.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", "dependencies": { "@babel/helper-compilation-targets": "^7.24.8", "@babel/helper-plugin-utils": "^7.24.8", @@ -1596,7 +1684,8 @@ }, "node_modules/@babel/plugin-transform-json-strings": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -1610,7 +1699,8 @@ }, "node_modules/@babel/plugin-transform-literals": { "version": "7.25.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", + "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.8" }, @@ -1623,7 +1713,8 @@ }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -1637,7 +1728,8 @@ }, "node_modules/@babel/plugin-transform-member-expression-literals": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1650,7 +1742,8 @@ }, "node_modules/@babel/plugin-transform-modules-amd": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", "dependencies": { "@babel/helper-module-transforms": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -1664,7 +1757,8 @@ }, "node_modules/@babel/plugin-transform-modules-commonjs": { "version": "7.24.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", "dependencies": { "@babel/helper-module-transforms": "^7.24.8", "@babel/helper-plugin-utils": "^7.24.8", @@ -1679,7 +1773,8 @@ }, "node_modules/@babel/plugin-transform-modules-systemjs": { "version": "7.25.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", "dependencies": { "@babel/helper-module-transforms": "^7.25.0", "@babel/helper-plugin-utils": "^7.24.8", @@ -1695,7 +1790,8 @@ }, "node_modules/@babel/plugin-transform-modules-umd": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", "dependencies": { "@babel/helper-module-transforms": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -1709,7 +1805,8 @@ }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -1723,7 +1820,8 @@ }, "node_modules/@babel/plugin-transform-new-target": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1736,7 +1834,8 @@ }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -1750,7 +1849,8 @@ }, "node_modules/@babel/plugin-transform-numeric-separator": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -1764,7 +1864,8 @@ }, "node_modules/@babel/plugin-transform-object-rest-spread": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", "dependencies": { "@babel/helper-compilation-targets": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", @@ -1780,7 +1881,8 @@ }, "node_modules/@babel/plugin-transform-object-super": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-replace-supers": "^7.24.7" @@ -1794,7 +1896,8 @@ }, "node_modules/@babel/plugin-transform-optional-catch-binding": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -1808,7 +1911,8 @@ }, "node_modules/@babel/plugin-transform-optional-chaining": { "version": "7.24.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.8", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", @@ -1823,7 +1927,8 @@ }, "node_modules/@babel/plugin-transform-parameters": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1836,7 +1941,8 @@ }, "node_modules/@babel/plugin-transform-private-methods": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", + "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -1850,7 +1956,8 @@ }, "node_modules/@babel/plugin-transform-private-property-in-object": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-create-class-features-plugin": "^7.24.7", @@ -1866,7 +1973,8 @@ }, "node_modules/@babel/plugin-transform-property-literals": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1879,7 +1987,8 @@ }, "node_modules/@babel/plugin-transform-react-jsx": { "version": "7.25.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz", + "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-module-imports": "^7.24.7", @@ -1896,7 +2005,8 @@ }, "node_modules/@babel/plugin-transform-react-jsx-self": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz", + "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1909,7 +2019,8 @@ }, "node_modules/@babel/plugin-transform-react-jsx-source": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz", + "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1922,7 +2033,8 @@ }, "node_modules/@babel/plugin-transform-regenerator": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "regenerator-transform": "^0.15.2" @@ -1936,7 +2048,8 @@ }, "node_modules/@babel/plugin-transform-reserved-words": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1949,7 +2062,8 @@ }, "node_modules/@babel/plugin-transform-runtime": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz", + "integrity": "sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==", "dependencies": { "@babel/helper-module-imports": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7", @@ -1967,14 +2081,16 @@ }, "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { "version": "6.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -1987,7 +2103,8 @@ }, "node_modules/@babel/plugin-transform-spread": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" @@ -2001,7 +2118,8 @@ }, "node_modules/@babel/plugin-transform-sticky-regex": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -2014,7 +2132,8 @@ }, "node_modules/@babel/plugin-transform-template-literals": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -2027,7 +2146,8 @@ }, "node_modules/@babel/plugin-transform-typeof-symbol": { "version": "7.24.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.8" }, @@ -2040,8 +2160,9 @@ }, "node_modules/@babel/plugin-transform-typescript": { "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz", + "integrity": "sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", "@babel/helper-create-class-features-plugin": "^7.25.0", @@ -2058,7 +2179,8 @@ }, "node_modules/@babel/plugin-transform-unicode-escapes": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7" }, @@ -2071,7 +2193,8 @@ }, "node_modules/@babel/plugin-transform-unicode-property-regex": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -2085,7 +2208,8 @@ }, "node_modules/@babel/plugin-transform-unicode-regex": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -2099,7 +2223,8 @@ }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { "version": "7.24.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", + "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.24.7", "@babel/helper-plugin-utils": "^7.24.7" @@ -2113,7 +2238,8 @@ }, "node_modules/@babel/preset-env": { "version": "7.25.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.3.tgz", + "integrity": "sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==", "dependencies": { "@babel/compat-data": "^7.25.2", "@babel/helper-compilation-targets": "^7.25.2", @@ -2208,14 +2334,16 @@ }, "node_modules/@babel/preset-env/node_modules/semver": { "version": "6.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/preset-modules": { "version": "0.1.6-no-external-plugins", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -2227,8 +2355,9 @@ }, "node_modules/@babel/preset-typescript": { "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz", + "integrity": "sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.24.7", "@babel/helper-validator-option": "^7.24.7", @@ -2245,11 +2374,13 @@ }, "node_modules/@babel/regjsgen": { "version": "0.8.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "node_modules/@babel/runtime": { "version": "7.25.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz", + "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2259,7 +2390,8 @@ }, "node_modules/@babel/template": { "version": "7.25.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", "dependencies": { "@babel/code-frame": "^7.24.7", "@babel/parser": "^7.25.0", @@ -2271,7 +2403,8 @@ }, "node_modules/@babel/traverse": { "version": "7.25.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz", + "integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==", "dependencies": { "@babel/code-frame": "^7.24.7", "@babel/generator": "^7.25.0", @@ -2287,7 +2420,8 @@ }, "node_modules/@babel/types": { "version": "7.25.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", + "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", "dependencies": { "@babel/helper-string-parser": "^7.24.8", "@babel/helper-validator-identifier": "^7.24.7", @@ -2299,14 +2433,16 @@ }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true }, "node_modules/@biomejs/biome": { "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-1.8.3.tgz", + "integrity": "sha512-/uUV3MV+vyAczO+vKrPdOW0Iaet7UnJMU4bNMinggGJTAnBPjCoLEYcyYtYHNnUNYlv4xZMH6hVIQCAozq8d5w==", "dev": true, "hasInstallScript": true, - "license": "MIT OR Apache-2.0", "bin": { "biome": "bin/biome" }, @@ -2328,13 +2464,78 @@ "@biomejs/cli-win32-x64": "1.8.3" } }, + "node_modules/@biomejs/cli-darwin-arm64": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.8.3.tgz", + "integrity": "sha512-9DYOjclFpKrH/m1Oz75SSExR8VKvNSSsLnVIqdnKexj6NwmiMlKk94Wa1kZEdv6MCOHGHgyyoV57Cw8WzL5n3A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-darwin-x64": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.8.3.tgz", + "integrity": "sha512-UeW44L/AtbmOF7KXLCoM+9PSgPo0IDcyEUfIoOXYeANaNXXf9mLUwV1GeF2OWjyic5zj6CnAJ9uzk2LT3v/wAw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-arm64": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.8.3.tgz", + "integrity": "sha512-fed2ji8s+I/m8upWpTJGanqiJ0rnlHOK3DdxsyVLZQ8ClY6qLuPc9uehCREBifRJLl/iJyQpHIRufLDeotsPtw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-arm64-musl": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.8.3.tgz", + "integrity": "sha512-9yjUfOFN7wrYsXt/T/gEWfvVxKlnh3yBpnScw98IF+oOeCYb5/b/+K7YNqKROV2i1DlMjg9g/EcN9wvj+NkMuQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, "node_modules/@biomejs/cli-linux-x64": { "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-1.8.3.tgz", + "integrity": "sha512-I8G2QmuE1teISyT8ie1HXsjFRz9L1m5n83U1O6m30Kw+kPMPSKjag6QGUn+sXT8V+XWIZxFFBoTDEDZW2KPDDw==", "cpu": [ "x64" ], "dev": true, - "license": "MIT OR Apache-2.0", "optional": true, "os": [ "linux" @@ -2343,10 +2544,59 @@ "node": ">=14.21.3" } }, + "node_modules/@biomejs/cli-linux-x64-musl": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.8.3.tgz", + "integrity": "sha512-UHrGJX7PrKMKzPGoEsooKC9jXJMa28TUSMjcIlbDnIO4EAavCoVmNQaIuUSH0Ls2mpGMwUIf+aZJv657zfWWjA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-win32-arm64": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.8.3.tgz", + "integrity": "sha512-J+Hu9WvrBevfy06eU1Na0lpc7uR9tibm9maHynLIoAjLZpQU3IW+OKHUtyL8p6/3pT2Ju5t5emReeIS2SAxhkQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-win32-x64": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-1.8.3.tgz", + "integrity": "sha512-/PJ59vA1pnQeKahemaQf4Nyj7IKUvGQSc3Ze1uIGi+Wvr1xF7rGobSrAAG01T/gUDG21vkDsZYM03NAmPiVkqg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.21.3" + } + }, "node_modules/@colors/colors": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, - "license": "MIT", "optional": true, "engines": { "node": ">=0.1.90" @@ -2354,8 +2604,9 @@ }, "node_modules/@cypress/request": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.1.tgz", + "integrity": "sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -2382,8 +2633,9 @@ }, "node_modules/@cypress/request/node_modules/form-data": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, - "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -2395,8 +2647,9 @@ }, "node_modules/@cypress/request/node_modules/qs": { "version": "6.10.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", + "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -2409,13 +2662,16 @@ }, "node_modules/@cypress/xpath": { "version": "2.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@cypress/xpath/-/xpath-2.0.3.tgz", + "integrity": "sha512-Seilxmws+yty5lZSbwbjEOOiEbr7O1bCxKy2FC4jwMssC22yjByb5orDfBZPLZXYfmWZafJjvZFwts4Q3CzQAg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true }, "node_modules/@cypress/xvfb": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^3.1.0", "lodash.once": "^4.1.1" @@ -2423,22 +2679,25 @@ }, "node_modules/@cypress/xvfb/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "engines": { "node": ">=10.0.0" } }, "node_modules/@electron/get": { "version": "2.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", + "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", "dependencies": { "debug": "^4.1.1", "env-paths": "^2.2.0", @@ -2457,7 +2716,8 @@ }, "node_modules/@electron/get/node_modules/@sindresorhus/is": { "version": "4.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "engines": { "node": ">=10" }, @@ -2467,7 +2727,8 @@ }, "node_modules/@electron/get/node_modules/@szmarczak/http-timer": { "version": "4.0.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", "dependencies": { "defer-to-connect": "^2.0.0" }, @@ -2477,14 +2738,16 @@ }, "node_modules/@electron/get/node_modules/cacheable-lookup": { "version": "5.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", "engines": { "node": ">=10.6.0" } }, "node_modules/@electron/get/node_modules/cacheable-request": { "version": "7.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", "dependencies": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", @@ -2500,7 +2763,8 @@ }, "node_modules/@electron/get/node_modules/fs-extra": { "version": "8.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -2512,7 +2776,8 @@ }, "node_modules/@electron/get/node_modules/got": { "version": "11.8.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", "dependencies": { "@sindresorhus/is": "^4.0.0", "@szmarczak/http-timer": "^4.0.5", @@ -2535,7 +2800,8 @@ }, "node_modules/@electron/get/node_modules/http2-wrapper": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.0.0" @@ -2546,21 +2812,24 @@ }, "node_modules/@electron/get/node_modules/jsonfile": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "node_modules/@electron/get/node_modules/lowercase-keys": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", "engines": { "node": ">=8" } }, "node_modules/@electron/get/node_modules/normalize-url": { "version": "6.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", "engines": { "node": ">=10" }, @@ -2570,14 +2839,16 @@ }, "node_modules/@electron/get/node_modules/p-cancelable": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", "engines": { "node": ">=8" } }, "node_modules/@electron/get/node_modules/responselike": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", "dependencies": { "lowercase-keys": "^2.0.0" }, @@ -2587,21 +2858,24 @@ }, "node_modules/@electron/get/node_modules/semver": { "version": "6.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, "node_modules/@electron/get/node_modules/universalify": { "version": "0.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "engines": { "node": ">= 4.0.0" } }, "node_modules/@emotion/babel-plugin": { "version": "11.12.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz", + "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==", "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/runtime": "^7.18.3", @@ -2618,11 +2892,13 @@ }, "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { "version": "1.9.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "engines": { "node": ">=10" }, @@ -2632,14 +2908,16 @@ }, "node_modules/@emotion/babel-plugin/node_modules/source-map": { "version": "0.5.7", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "engines": { "node": ">=0.10.0" } }, "node_modules/@emotion/cache": { "version": "11.13.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.1.tgz", + "integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==", "dependencies": { "@emotion/memoize": "^0.9.0", "@emotion/sheet": "^1.4.0", @@ -2650,27 +2928,31 @@ }, "node_modules/@emotion/hash": { "version": "0.9.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==" }, "node_modules/@emotion/is-prop-valid": { "version": "1.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.0.tgz", + "integrity": "sha512-SHetuSLvJDzuNbOdtPVbq6yMMMlLoW5Q94uDqJZqy50gcmAjxFkVqmzqSGEFq9gT2iMuIeKV1PXVWmvUhuZLlQ==", "dependencies": { "@emotion/memoize": "^0.9.0" } }, "node_modules/@emotion/memoize": { "version": "0.9.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" }, "node_modules/@emotion/react": { - "version": "11.13.0", - "license": "MIT", + "version": "11.13.3", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz", + "integrity": "sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==", "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.12.0", "@emotion/cache": "^11.13.0", - "@emotion/serialize": "^1.3.0", + "@emotion/serialize": "^1.3.1", "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", "@emotion/utils": "^1.4.0", "@emotion/weak-memoize": "^0.4.0", @@ -2686,23 +2968,26 @@ } }, "node_modules/@emotion/serialize": { - "version": "1.3.0", - "license": "MIT", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.1.tgz", + "integrity": "sha512-dEPNKzBPU+vFPGa+z3axPRn8XVDetYORmDC0wAiej+TNcOZE70ZMJa0X7JdeoM6q/nWTMZeLpN/fTnD9o8MQBA==", "dependencies": { "@emotion/hash": "^0.9.2", "@emotion/memoize": "^0.9.0", - "@emotion/unitless": "^0.9.0", + "@emotion/unitless": "^0.10.0", "@emotion/utils": "^1.4.0", "csstype": "^3.0.2" } }, "node_modules/@emotion/sheet": { "version": "1.4.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==" }, "node_modules/@emotion/styled": { "version": "11.13.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz", + "integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==", "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.12.0", @@ -2722,173 +3007,540 @@ } }, "node_modules/@emotion/unitless": { - "version": "0.9.0", - "license": "MIT" + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==" }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", + "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", "peerDependencies": { "react": ">=16.8.0" } }, "node_modules/@emotion/utils": { "version": "1.4.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.0.tgz", + "integrity": "sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ==" }, "node_modules/@emotion/weak-memoize": { "version": "0.4.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==" }, - "node_modules/@esbuild/linux-x64": { + "node_modules/@esbuild/aix-ppc64": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", "cpu": [ - "x64" + "ppc64" ], - "license": "MIT", "optional": true, "os": [ - "linux" + "aix" ], "engines": { "node": ">=12" } }, - "node_modules/@esm-bundle/chai": { - "version": "4.3.4-fix.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "^4.2.12" - } - }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "license": "MIT", + "node_modules/@esbuild/android-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=14" + "node": ">=12" } }, - "node_modules/@fingerprintjs/fingerprintjs": { - "version": "3.4.2", - "license": "MIT", - "dependencies": { - "tslib": "^2.4.1" + "node_modules/@esbuild/android-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@iarna/toml": { - "version": "2.2.5", - "license": "ISC" - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, + "node_modules/@esbuild/android-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], "engines": { "node": ">=12" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "license": "MIT", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "dev": true, - "license": "MIT", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, + "node_modules/@esbuild/linux-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "license": "MIT", - "engines": { + "node_modules/@esbuild/linux-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", + "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esm-bundle/chai": { + "version": "4.3.4-fix.0", + "resolved": "https://registry.npmjs.org/@esm-bundle/chai/-/chai-4.3.4-fix.0.tgz", + "integrity": "sha512-26SKdM4uvDWlY8/OOOxSB1AqQWeBosCX3wRYUZO7enTAj03CtVxIiCimYVG2WpULcyV51qapK4qTovwkUr5Mlw==", + "dev": true, + "dependencies": { + "@types/chai": "^4.2.12" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@fingerprintjs/fingerprintjs": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@fingerprintjs/fingerprintjs/-/fingerprintjs-3.4.2.tgz", + "integrity": "sha512-3Ncze6JsJpB7BpYhqIgvBpfvEX1jsEKrad5hQBpyRQxtoAp6hx3+R46zqfsuQG4D9egQZ+xftQ0u4LPFMB7Wmg==", + "dependencies": { + "tslib": "^2.4.1" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { "version": "0.3.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -2896,11 +3548,13 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -2908,7 +3562,8 @@ }, "node_modules/@jsonjoy.com/base64": { "version": "1.1.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", "engines": { "node": ">=10.0" }, @@ -2922,7 +3577,8 @@ }, "node_modules/@jsonjoy.com/json-pack": { "version": "1.1.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.1.0.tgz", + "integrity": "sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg==", "dependencies": { "@jsonjoy.com/base64": "^1.1.1", "@jsonjoy.com/util": "^1.1.2", @@ -2942,7 +3598,8 @@ }, "node_modules/@jsonjoy.com/util": { "version": "1.3.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.3.0.tgz", + "integrity": "sha512-Cebt4Vk7k1xHy87kHY7KSPLT77A7Ev7IfOblyLZhtYEhrdQ6fX4EoLq3xOQ3O/DRMEh2ok5nyC180E+ABS8Wmw==", "engines": { "node": ">=10.0" }, @@ -2956,11 +3613,13 @@ }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==" }, "node_modules/@mapbox/node-pre-gyp": { "version": "1.0.11", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", "dependencies": { "detect-libc": "^2.0.0", "https-proxy-agent": "^5.0.0", @@ -2978,7 +3637,8 @@ }, "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch": { "version": "2.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -2996,14 +3656,16 @@ }, "node_modules/@mongodb-js/saslprep": { "version": "1.1.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.8.tgz", + "integrity": "sha512-qKwC/M/nNNaKUBMQ0nuzm47b7ZYWQHN3pcXq4IIcoSBc2hOIrflAxJduIvvqmhoz3gR2TacTAs8vlsCVPkiEdQ==", "dependencies": { "sparse-bitfield": "^3.0.3" } }, "node_modules/@mui/core-downloads-tracker": { "version": "5.16.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.7.tgz", + "integrity": "sha512-RtsCt4Geed2/v74sbihWzzRs+HsIQCfclHeORh5Ynu2fS4icIKozcSubwuG7vtzq2uW3fOR1zITSP84TNt2GoQ==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" @@ -3011,7 +3673,8 @@ }, "node_modules/@mui/material": { "version": "5.16.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.16.7.tgz", + "integrity": "sha512-cwwVQxBhK60OIOqZOVLFt55t01zmarKJiJUWbk0+8s/Ix5IaUzAShqlJchxsIQ4mSrWqgcKCCXKtIlG5H+/Jmg==", "dependencies": { "@babel/runtime": "^7.23.9", "@mui/core-downloads-tracker": "^5.16.7", @@ -3054,7 +3717,8 @@ }, "node_modules/@mui/private-theming": { "version": "5.16.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.16.6.tgz", + "integrity": "sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==", "dependencies": { "@babel/runtime": "^7.23.9", "@mui/utils": "^5.16.6", @@ -3079,7 +3743,8 @@ }, "node_modules/@mui/styled-engine": { "version": "5.16.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.16.6.tgz", + "integrity": "sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g==", "dependencies": { "@babel/runtime": "^7.23.9", "@emotion/cache": "^11.11.0", @@ -3109,7 +3774,8 @@ }, "node_modules/@mui/system": { "version": "5.16.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.16.7.tgz", + "integrity": "sha512-Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA==", "dependencies": { "@babel/runtime": "^7.23.9", "@mui/private-theming": "^5.16.6", @@ -3147,7 +3813,8 @@ }, "node_modules/@mui/types": { "version": "7.2.15", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.15.tgz", + "integrity": "sha512-nbo7yPhtKJkdf9kcVOF8JZHPZTmqXjJ/tI0bdWgHg5tp9AnIN4Y7f7wm9T+0SyGYJk76+GYZ8Q5XaTYAsUHN0Q==", "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0" }, @@ -3159,7 +3826,8 @@ }, "node_modules/@mui/utils": { "version": "5.16.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.16.6.tgz", + "integrity": "sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==", "dependencies": { "@babel/runtime": "^7.23.9", "@mui/types": "^7.2.15", @@ -3187,7 +3855,8 @@ }, "node_modules/@noble/curves": { "version": "1.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.5.0.tgz", + "integrity": "sha512-J5EKamIHnKPyClwVrzmaf5wSdQXgdHcPZIZLu3bwnbeCx8/7NPK5q2ZBWF+5FvYGByjiQQsJYX6jfgB2wDPn3A==", "dependencies": { "@noble/hashes": "1.4.0" }, @@ -3197,7 +3866,8 @@ }, "node_modules/@noble/hashes": { "version": "1.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", "engines": { "node": ">= 16" }, @@ -3207,7 +3877,8 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -3218,14 +3889,16 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -3236,8 +3909,9 @@ }, "node_modules/@npmcli/fs": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, - "license": "ISC", "dependencies": { "@gar/promisify": "^1.1.3", "semver": "^7.3.5" @@ -3248,8 +3922,9 @@ }, "node_modules/@npmcli/git": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", + "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/promise-spawn": "^3.0.0", "lru-cache": "^7.4.4", @@ -3267,8 +3942,9 @@ }, "node_modules/@npmcli/installed-package-contents": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", "dev": true, - "license": "ISC", "dependencies": { "npm-bundled": "^1.1.1", "npm-normalize-package-bin": "^1.0.1" @@ -3282,8 +3958,10 @@ }, "node_modules/@npmcli/move-file": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", "dev": true, - "license": "MIT", "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -3294,16 +3972,18 @@ }, "node_modules/@npmcli/node-gyp": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", + "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/@npmcli/promise-spawn": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", + "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", "dev": true, - "license": "ISC", "dependencies": { "infer-owner": "^1.0.4" }, @@ -3313,8 +3993,9 @@ }, "node_modules/@npmcli/run-script": { "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", + "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^2.0.0", "@npmcli/promise-spawn": "^3.0.0", @@ -3328,7 +4009,8 @@ }, "node_modules/@octokit/app": { "version": "14.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/app/-/app-14.1.0.tgz", + "integrity": "sha512-g3uEsGOQCBl1+W1rgfwoRFUIR6PtvB2T1E4RpygeUU5LrLvlOqcxrt5lfykIeRpUPpupreGJUYl70fqMDXdTpw==", "dependencies": { "@octokit/auth-app": "^6.0.0", "@octokit/auth-unauthenticated": "^5.0.0", @@ -3344,18 +4026,21 @@ }, "node_modules/@octokit/app/node_modules/@octokit/openapi-types": { "version": "20.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==" }, "node_modules/@octokit/app/node_modules/@octokit/types": { "version": "12.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", "dependencies": { "@octokit/openapi-types": "^20.0.0" } }, "node_modules/@octokit/auth-app": { "version": "6.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-6.1.1.tgz", + "integrity": "sha512-VrTtzRpyuT5nYGUWeGWQqH//hqEZDV+/yb6+w5wmWpmmUA1Tx950XsAc2mBBfvusfcdF2E7w8jZ1r1WwvfZ9pA==", "dependencies": { "@octokit/auth-oauth-app": "^7.1.0", "@octokit/auth-oauth-user": "^4.1.0", @@ -3373,11 +4058,13 @@ }, "node_modules/@octokit/auth-app/node_modules/lru-cache": { "version": "10.4.3", - "license": "ISC" + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" }, "node_modules/@octokit/auth-oauth-app": { "version": "7.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-7.1.0.tgz", + "integrity": "sha512-w+SyJN/b0l/HEb4EOPRudo7uUOSW51jcK1jwLa+4r7PA8FPFpoxEnHBHMITqCsc/3Vo2qqFjgQfz/xUUvsSQnA==", "dependencies": { "@octokit/auth-oauth-device": "^6.1.0", "@octokit/auth-oauth-user": "^4.1.0", @@ -3393,7 +4080,8 @@ }, "node_modules/@octokit/auth-oauth-device": { "version": "6.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-6.1.0.tgz", + "integrity": "sha512-FNQ7cb8kASufd6Ej4gnJ3f1QB5vJitkoV1O0/g6e6lUsQ7+VsSNRHRmFScN2tV4IgKA12frrr/cegUs0t+0/Lw==", "dependencies": { "@octokit/oauth-methods": "^4.1.0", "@octokit/request": "^8.3.1", @@ -3406,7 +4094,8 @@ }, "node_modules/@octokit/auth-oauth-user": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-4.1.0.tgz", + "integrity": "sha512-FrEp8mtFuS/BrJyjpur+4GARteUCrPeR/tZJzD8YourzoVhRics7u7we/aDcKv+yywRNwNi/P4fRi631rG/OyQ==", "dependencies": { "@octokit/auth-oauth-device": "^6.1.0", "@octokit/oauth-methods": "^4.1.0", @@ -3421,14 +4110,16 @@ }, "node_modules/@octokit/auth-token": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", "engines": { "node": ">= 18" } }, "node_modules/@octokit/auth-unauthenticated": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-5.0.1.tgz", + "integrity": "sha512-oxeWzmBFxWd+XolxKTc4zr+h3mt+yofn4r7OfoIkR/Cj/o70eEGmPsFbueyJE2iBAGpjgTnEOKM3pnuEGVmiqg==", "dependencies": { "@octokit/request-error": "^5.0.0", "@octokit/types": "^12.0.0" @@ -3439,18 +4130,21 @@ }, "node_modules/@octokit/auth-unauthenticated/node_modules/@octokit/openapi-types": { "version": "20.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==" }, "node_modules/@octokit/auth-unauthenticated/node_modules/@octokit/types": { "version": "12.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", "dependencies": { "@octokit/openapi-types": "^20.0.0" } }, "node_modules/@octokit/core": { "version": "5.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", + "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", "dependencies": { "@octokit/auth-token": "^4.0.0", "@octokit/graphql": "^7.1.0", @@ -3466,7 +4160,8 @@ }, "node_modules/@octokit/endpoint": { "version": "9.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.5.tgz", + "integrity": "sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==", "dependencies": { "@octokit/types": "^13.1.0", "universal-user-agent": "^6.0.0" @@ -3477,7 +4172,8 @@ }, "node_modules/@octokit/graphql": { "version": "7.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz", + "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==", "dependencies": { "@octokit/request": "^8.3.0", "@octokit/types": "^13.0.0", @@ -3489,7 +4185,8 @@ }, "node_modules/@octokit/oauth-app": { "version": "6.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/oauth-app/-/oauth-app-6.1.0.tgz", + "integrity": "sha512-nIn/8eUJ/BKUVzxUXd5vpzl1rwaVxMyYbQkNZjHrF7Vk/yu98/YDF/N2KeWO7uZ0g3b5EyiFXFkZI8rJ+DH1/g==", "dependencies": { "@octokit/auth-oauth-app": "^7.0.0", "@octokit/auth-oauth-user": "^4.0.0", @@ -3506,14 +4203,16 @@ }, "node_modules/@octokit/oauth-authorization-url": { "version": "6.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-6.0.2.tgz", + "integrity": "sha512-CdoJukjXXxqLNK4y/VOiVzQVjibqoj/xHgInekviUJV73y/BSIcwvJ/4aNHPBPKcPWFnd4/lO9uqRV65jXhcLA==", "engines": { "node": ">= 18" } }, "node_modules/@octokit/oauth-methods": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-4.1.0.tgz", + "integrity": "sha512-4tuKnCRecJ6CG6gr0XcEXdZtkTDbfbnD5oaHBmLERTjTMZNi2CbfEHZxPU41xXLDG4DfKf+sonu00zvKI9NSbw==", "dependencies": { "@octokit/oauth-authorization-url": "^6.0.2", "@octokit/request": "^8.3.1", @@ -3527,11 +4226,13 @@ }, "node_modules/@octokit/openapi-types": { "version": "22.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", + "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==" }, "node_modules/@octokit/plugin-paginate-graphql": { "version": "4.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-graphql/-/plugin-paginate-graphql-4.0.1.tgz", + "integrity": "sha512-R8ZQNmrIKKpHWC6V2gum4x9LG2qF1RxRjo27gjQcG3j+vf2tLsEfE7I/wRWEPzYMaenr1M+qDAtNcwZve1ce1A==", "engines": { "node": ">= 18" }, @@ -3541,7 +4242,8 @@ }, "node_modules/@octokit/plugin-paginate-rest": { "version": "9.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.1.tgz", + "integrity": "sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==", "dependencies": { "@octokit/types": "^12.6.0" }, @@ -3554,18 +4256,21 @@ }, "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { "version": "20.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==" }, "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { "version": "12.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", "dependencies": { "@octokit/openapi-types": "^20.0.0" } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { "version": "10.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz", + "integrity": "sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==", "dependencies": { "@octokit/types": "^12.6.0" }, @@ -3578,18 +4283,21 @@ }, "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { "version": "20.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==" }, "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { "version": "12.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", "dependencies": { "@octokit/openapi-types": "^20.0.0" } }, "node_modules/@octokit/plugin-retry": { "version": "6.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.1.tgz", + "integrity": "sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog==", "dependencies": { "@octokit/request-error": "^5.0.0", "@octokit/types": "^12.0.0", @@ -3604,18 +4312,21 @@ }, "node_modules/@octokit/plugin-retry/node_modules/@octokit/openapi-types": { "version": "20.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==" }, "node_modules/@octokit/plugin-retry/node_modules/@octokit/types": { "version": "12.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", "dependencies": { "@octokit/openapi-types": "^20.0.0" } }, "node_modules/@octokit/plugin-throttling": { "version": "8.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-8.2.0.tgz", + "integrity": "sha512-nOpWtLayKFpgqmgD0y3GqXafMFuKcA4tRPZIfu7BArd2lEZeb1988nhWhwx4aZWmjDmUfdgVf7W+Tt4AmvRmMQ==", "dependencies": { "@octokit/types": "^12.2.0", "bottleneck": "^2.15.3" @@ -3629,18 +4340,21 @@ }, "node_modules/@octokit/plugin-throttling/node_modules/@octokit/openapi-types": { "version": "20.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==" }, "node_modules/@octokit/plugin-throttling/node_modules/@octokit/types": { "version": "12.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", "dependencies": { "@octokit/openapi-types": "^20.0.0" } }, "node_modules/@octokit/request": { "version": "8.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz", + "integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==", "dependencies": { "@octokit/endpoint": "^9.0.1", "@octokit/request-error": "^5.1.0", @@ -3653,7 +4367,8 @@ }, "node_modules/@octokit/request-error": { "version": "5.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz", + "integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==", "dependencies": { "@octokit/types": "^13.1.0", "deprecation": "^2.0.0", @@ -3665,14 +4380,16 @@ }, "node_modules/@octokit/types": { "version": "13.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.5.0.tgz", + "integrity": "sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==", "dependencies": { "@octokit/openapi-types": "^22.2.0" } }, "node_modules/@octokit/webhooks": { "version": "12.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-12.2.0.tgz", + "integrity": "sha512-CyuLJ0/P7bKZ+kIYw+fnkeVdhUzNuDKgNSI7pU/m7Nod0T7kP+s4s2f0pNmG9HL8/RZN1S0ZWTDll3VTMrFLAw==", "dependencies": { "@octokit/request-error": "^5.0.0", "@octokit/webhooks-methods": "^4.1.0", @@ -3685,18 +4402,21 @@ }, "node_modules/@octokit/webhooks-methods": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-4.1.0.tgz", + "integrity": "sha512-zoQyKw8h9STNPqtm28UGOYFE7O6D4Il8VJwhAtMHFt2C4L0VQT1qGKLeefUOqHNs1mNRYSadVv7x0z8U2yyeWQ==", "engines": { "node": ">= 18" } }, "node_modules/@octokit/webhooks-types": { "version": "7.4.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-7.4.0.tgz", + "integrity": "sha512-FE2V+QZ2UYlh+9wWd5BPLNXG+J/XUD/PPq0ovS+nCcGX4+3qVbi3jYOmCTW48hg9SBBLtInx9+o7fFt4H5iP0Q==" }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "optional": true, "engines": { "node": ">=14" @@ -3704,16 +4424,18 @@ }, "node_modules/@pnpm/config.env-replace": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", "dev": true, - "license": "MIT", "engines": { "node": ">=12.22.0" } }, "node_modules/@pnpm/network.ca-file": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "4.2.10" }, @@ -3723,13 +4445,15 @@ }, "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { "version": "4.2.10", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true }, "node_modules/@pnpm/npm-conf": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", + "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", "dev": true, - "license": "MIT", "dependencies": { "@pnpm/config.env-replace": "^1.1.0", "@pnpm/network.ca-file": "^1.0.1", @@ -3741,7 +4465,8 @@ }, "node_modules/@polkadot-api/client": { "version": "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@polkadot-api/client/-/client-0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0.tgz", + "integrity": "sha512-0fqK6pUKcGHSG2pBvY+gfSS+1mMdjd/qRygAcKI5d05tKsnZLRnmhb9laDguKmGEIB0Bz9vQqNK3gIN/cfvVwg==", "optional": true, "dependencies": { "@polkadot-api/metadata-builders": "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0", @@ -3755,17 +4480,20 @@ }, "node_modules/@polkadot-api/json-rpc-provider": { "version": "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider/-/json-rpc-provider-0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0.tgz", + "integrity": "sha512-EaUS9Fc3wsiUr6ZS43PQqaRScW7kM6DYbuM/ou0aYjm8N9MBqgDbGm2oL6RE1vAVmOfEuHcXZuZkhzWtyvQUtA==", "optional": true }, "node_modules/@polkadot-api/json-rpc-provider-proxy": { "version": "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@polkadot-api/json-rpc-provider-proxy/-/json-rpc-provider-proxy-0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0.tgz", + "integrity": "sha512-0hZ8vtjcsyCX8AyqP2sqUHa1TFFfxGWmlXJkit0Nqp9b32MwZqn5eaUAiV2rNuEpoglKOdKnkGtUF8t5MoodKw==", "optional": true }, "node_modules/@polkadot-api/metadata-builders": { "version": "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@polkadot-api/metadata-builders/-/metadata-builders-0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0.tgz", + "integrity": "sha512-BD7rruxChL1VXt0icC2gD45OtT9ofJlql0qIllHSRYgama1CR2Owt+ApInQxB+lWqM+xNOznZRpj8CXNDvKIMg==", "optional": true, "dependencies": { "@polkadot-api/substrate-bindings": "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0", @@ -3774,7 +4502,8 @@ }, "node_modules/@polkadot-api/substrate-bindings": { "version": "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-bindings/-/substrate-bindings-0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0.tgz", + "integrity": "sha512-N4vdrZopbsw8k57uG58ofO7nLXM4Ai7835XqakN27MkjXMp5H830A1KJE0L9sGQR7ukOCDEIHHcwXVrzmJ/PBg==", "optional": true, "dependencies": { "@noble/hashes": "^1.3.1", @@ -3785,17 +4514,20 @@ }, "node_modules/@polkadot-api/substrate-client": { "version": "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@polkadot-api/substrate-client/-/substrate-client-0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0.tgz", + "integrity": "sha512-lcdvd2ssUmB1CPzF8s2dnNOqbrDa+nxaaGbuts+Vo8yjgSKwds2Lo7Oq+imZN4VKW7t9+uaVcKFLMF7PdH0RWw==", "optional": true }, "node_modules/@polkadot-api/utils": { "version": "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@polkadot-api/utils/-/utils-0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0.tgz", + "integrity": "sha512-0CYaCjfLQJTCRCiYvZ81OncHXEKPzAexCMoVloR+v2nl/O2JRya/361MtPkeNLC6XBoaEgLAG9pWQpH3WePzsw==", "optional": true }, "node_modules/@polkadot/api": { "version": "10.13.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-10.13.1.tgz", + "integrity": "sha512-YrKWR4TQR5CDyGkF0mloEUo7OsUA+bdtENpJGOtNavzOQUDEbxFE0PVzokzZfVfHhHX2CojPVmtzmmLxztyJkg==", "dependencies": { "@polkadot/api-augment": "10.13.1", "@polkadot/api-base": "10.13.1", @@ -3821,7 +4553,8 @@ }, "node_modules/@polkadot/api-augment": { "version": "10.13.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-10.13.1.tgz", + "integrity": "sha512-IAKaCp19QxgOG4HKk9RAgUgC/VNVqymZ2GXfMNOZWImZhxRIbrK+raH5vN2MbWwtVHpjxyXvGsd1RRhnohI33A==", "dependencies": { "@polkadot/api-base": "10.13.1", "@polkadot/rpc-augment": "10.13.1", @@ -3837,7 +4570,8 @@ }, "node_modules/@polkadot/api-base": { "version": "10.13.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-10.13.1.tgz", + "integrity": "sha512-Okrw5hjtEjqSMOG08J6qqEwlUQujTVClvY1/eZkzKwNzPelWrtV6vqfyJklB7zVhenlxfxqhZKKcY7zWSW/q5Q==", "dependencies": { "@polkadot/rpc-core": "10.13.1", "@polkadot/types": "10.13.1", @@ -3851,7 +4585,8 @@ }, "node_modules/@polkadot/api-contract": { "version": "10.13.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/api-contract/-/api-contract-10.13.1.tgz", + "integrity": "sha512-uXukO/nTyL14VkqnisaGcTfmw8UtrU3+GIwiphaOGK+Zd6BucRwBNF0Nwsx6NrhsFvFdfni5E/wCQEXD9O9VtQ==", "dependencies": { "@polkadot/api": "10.13.1", "@polkadot/api-augment": "10.13.1", @@ -3869,7 +4604,8 @@ }, "node_modules/@polkadot/api-derive": { "version": "10.13.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-10.13.1.tgz", + "integrity": "sha512-ef0H0GeCZ4q5Om+c61eLLLL29UxFC2/u/k8V1K2JOIU+2wD5LF7sjAoV09CBMKKHfkLenRckVk2ukm4rBqFRpg==", "dependencies": { "@polkadot/api": "10.13.1", "@polkadot/api-augment": "10.13.1", @@ -3888,7 +4624,8 @@ }, "node_modules/@polkadot/extension-base": { "version": "0.46.9", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/extension-base/-/extension-base-0.46.9.tgz", + "integrity": "sha512-NEqWbgPJ3y2YXpm7FsEguG5PMJ/UbF593H93fQyXDrZXx+BxQ8KmXfOJ+DpAK9UZxJrtQqvzgDblOvbklW+Ptg==", "dependencies": { "@polkadot/api": "^10.12.4", "@polkadot/extension-chains": "0.46.9", @@ -3913,7 +4650,8 @@ }, "node_modules/@polkadot/extension-chains": { "version": "0.46.9", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/extension-chains/-/extension-chains-0.46.9.tgz", + "integrity": "sha512-7yjcKz4Wjtuaho4OhXrhVHc0uSmVWDCw9Q74OHlu00FH+Zzt/3BL0ij5cvEDYSuPl6/AWCH2SdwyVME8mLf1nA==", "dependencies": { "@polkadot/extension-inject": "0.46.9", "@polkadot/networks": "^12.6.2", @@ -3931,7 +4669,8 @@ }, "node_modules/@polkadot/extension-dapp": { "version": "0.46.9", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/extension-dapp/-/extension-dapp-0.46.9.tgz", + "integrity": "sha512-y5udSeQ/X9MEoyjlpTcCn0UAEjZ2jjy6U3V/jiVFQo5vBKhdqAhN1oN8X5c4yWurmhYM/7oibImxAjEoXuwH+Q==", "dependencies": { "@polkadot/extension-inject": "0.46.9", "@polkadot/util": "^12.6.2", @@ -3949,7 +4688,8 @@ }, "node_modules/@polkadot/extension-inject": { "version": "0.46.9", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/extension-inject/-/extension-inject-0.46.9.tgz", + "integrity": "sha512-m0jnrs9+jEOpMH6OUNl7nHpz9SFFWK9LzuqB8T3htEE3RUYPL//SLCPyEKxAAgHu7F8dgkUHssAWQfANofALCQ==", "dependencies": { "@polkadot/api": "^10.12.4", "@polkadot/rpc-provider": "^10.12.4", @@ -3969,7 +4709,8 @@ }, "node_modules/@polkadot/keyring": { "version": "12.6.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-12.6.2.tgz", + "integrity": "sha512-O3Q7GVmRYm8q7HuB3S0+Yf/q/EB2egKRRU3fv9b3B7V+A52tKzA+vIwEmNVaD1g5FKW9oB97rmpggs0zaKFqHw==", "dependencies": { "@polkadot/util": "12.6.2", "@polkadot/util-crypto": "12.6.2", @@ -3985,7 +4726,8 @@ }, "node_modules/@polkadot/networks": { "version": "12.6.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-12.6.2.tgz", + "integrity": "sha512-1oWtZm1IvPWqvMrldVH6NI2gBoCndl5GEwx7lAuQWGr7eNL+6Bdc5K3Z9T0MzFvDGoi2/CBqjX9dRKo39pDC/w==", "dependencies": { "@polkadot/util": "12.6.2", "@substrate/ss58-registry": "^1.44.0", @@ -3997,7 +4739,8 @@ }, "node_modules/@polkadot/phishing": { "version": "0.22.10", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/phishing/-/phishing-0.22.10.tgz", + "integrity": "sha512-Nyi1gzSGvIYy2uioJ4C+FJhaqts6Npr8HT7SVTw1Lp+0zr+4tD1+heW4sfuiWcggtlkiar6kYmgiwT+5wtMA3Q==", "dependencies": { "@polkadot/util": "^12.6.2", "@polkadot/util-crypto": "^12.6.2", @@ -4010,7 +4753,8 @@ }, "node_modules/@polkadot/rpc-augment": { "version": "10.13.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-10.13.1.tgz", + "integrity": "sha512-iLsWUW4Jcx3DOdVrSHtN0biwxlHuTs4QN2hjJV0gd0jo7W08SXhWabZIf9mDmvUJIbR7Vk+9amzvegjRyIf5+A==", "dependencies": { "@polkadot/rpc-core": "10.13.1", "@polkadot/types": "10.13.1", @@ -4024,7 +4768,8 @@ }, "node_modules/@polkadot/rpc-core": { "version": "10.13.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-10.13.1.tgz", + "integrity": "sha512-eoejSHa+/tzHm0vwic62/aptTGbph8vaBpbvLIK7gd00+rT813ROz5ckB1CqQBFB23nHRLuzzX/toY8ID3xrKw==", "dependencies": { "@polkadot/rpc-augment": "10.13.1", "@polkadot/rpc-provider": "10.13.1", @@ -4039,7 +4784,8 @@ }, "node_modules/@polkadot/rpc-provider": { "version": "10.13.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-10.13.1.tgz", + "integrity": "sha512-oJ7tatVXYJ0L7NpNiGd69D558HG5y5ZDmH2Bp9Dd4kFTQIiV8A39SlWwWUPCjSsen9lqSvvprNLnG/VHTpenbw==", "dependencies": { "@polkadot/keyring": "^12.6.2", "@polkadot/types": "10.13.1", @@ -4063,7 +4809,8 @@ }, "node_modules/@polkadot/types": { "version": "10.13.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-10.13.1.tgz", + "integrity": "sha512-Hfvg1ZgJlYyzGSAVrDIpp3vullgxrjOlh/CSThd/PI4TTN1qHoPSFm2hs77k3mKkOzg+LrWsLE0P/LP2XddYcw==", "dependencies": { "@polkadot/keyring": "^12.6.2", "@polkadot/types-augment": "10.13.1", @@ -4080,7 +4827,8 @@ }, "node_modules/@polkadot/types-augment": { "version": "10.13.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-10.13.1.tgz", + "integrity": "sha512-TcrLhf95FNFin61qmVgOgayzQB/RqVsSg9thAso1Fh6pX4HSbvI35aGPBAn3SkA6R+9/TmtECirpSNLtIGFn0g==", "dependencies": { "@polkadot/types": "10.13.1", "@polkadot/types-codec": "10.13.1", @@ -4093,7 +4841,8 @@ }, "node_modules/@polkadot/types-codec": { "version": "10.13.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-10.13.1.tgz", + "integrity": "sha512-AiQ2Vv2lbZVxEdRCN8XSERiWlOWa2cTDLnpAId78EnCtx4HLKYQSd+Jk9Y4BgO35R79mchK4iG+w6gZ+ukG2bg==", "dependencies": { "@polkadot/util": "^12.6.2", "@polkadot/x-bigint": "^12.6.2", @@ -4105,7 +4854,8 @@ }, "node_modules/@polkadot/types-create": { "version": "10.13.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-10.13.1.tgz", + "integrity": "sha512-Usn1jqrz35SXgCDAqSXy7mnD6j4RvB4wyzTAZipFA6DGmhwyxxIgOzlWQWDb+1PtPKo9vtMzen5IJ+7w5chIeA==", "dependencies": { "@polkadot/types-codec": "10.13.1", "@polkadot/util": "^12.6.2", @@ -4117,7 +4867,8 @@ }, "node_modules/@polkadot/types-known": { "version": "10.13.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-10.13.1.tgz", + "integrity": "sha512-uHjDW05EavOT5JeU8RbiFWTgPilZ+odsCcuEYIJGmK+es3lk/Qsdns9Zb7U7NJl7eJ6OWmRtyrWsLs+bU+jjIQ==", "dependencies": { "@polkadot/networks": "^12.6.2", "@polkadot/types": "10.13.1", @@ -4132,7 +4883,8 @@ }, "node_modules/@polkadot/types-support": { "version": "10.13.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-10.13.1.tgz", + "integrity": "sha512-4gEPfz36XRQIY7inKq0HXNVVhR6HvXtm7yrEmuBuhM86LE0lQQBkISUSgR358bdn2OFSLMxMoRNoh3kcDvdGDQ==", "dependencies": { "@polkadot/util": "^12.6.2", "tslib": "^2.6.2" @@ -4143,7 +4895,8 @@ }, "node_modules/@polkadot/ui-keyring": { "version": "3.9.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/ui-keyring/-/ui-keyring-3.9.1.tgz", + "integrity": "sha512-oNVXJooDsVCP1iLr4vTUGzbBzNO1tQmqmusuPMnNcq5vDh1k0IHwGQbqI3uVX0ygUyR1BAIk6zT8Z8XStW3A4g==", "dependencies": { "@polkadot/keyring": "^13.0.2", "@polkadot/ui-settings": "3.9.1", @@ -4165,7 +4918,8 @@ }, "node_modules/@polkadot/ui-keyring/node_modules/@polkadot/keyring": { "version": "13.0.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-13.0.2.tgz", + "integrity": "sha512-NeLbhyKDT5W8LI9seWTZGePxNTOVpDhv2018HSrEDwJq9Ie0C4TZhUf3KNERCkSveuThXjfQJMs+1CF33ZXPWw==", "dependencies": { "@polkadot/util": "13.0.2", "@polkadot/util-crypto": "13.0.2", @@ -4181,7 +4935,8 @@ }, "node_modules/@polkadot/ui-keyring/node_modules/@polkadot/networks": { "version": "13.0.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-13.0.2.tgz", + "integrity": "sha512-ABAL+vug/gIwkdFEzeh87JoJd0YKrxSYg/HjUrZ+Zis2ucxQEKpvtCpJ34ku+YrjacBfVqIAkkwd3ZdIPGq9aQ==", "dependencies": { "@polkadot/util": "13.0.2", "@substrate/ss58-registry": "^1.46.0", @@ -4193,7 +4948,8 @@ }, "node_modules/@polkadot/ui-keyring/node_modules/@polkadot/util": { "version": "13.0.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-13.0.2.tgz", + "integrity": "sha512-/6bS9sfhJLhs8QuqWaR1eRapzfDdGC5XAQZEPL9NN5sTTA7HxWos8rVleai0UERm8QUMabjZ9rK9KpzbXl7ojg==", "dependencies": { "@polkadot/x-bigint": "13.0.2", "@polkadot/x-global": "13.0.2", @@ -4209,7 +4965,8 @@ }, "node_modules/@polkadot/ui-keyring/node_modules/@polkadot/util-crypto": { "version": "13.0.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-13.0.2.tgz", + "integrity": "sha512-woUsJJ6zd/caL7U+D30a5oM/+WK9iNI00Y8aNUHSj6Zq/KPzK9uqDBaLGWwlgrejoMQkxxiU2X0f2LzP15AtQg==", "dependencies": { "@noble/curves": "^1.3.0", "@noble/hashes": "^1.3.3", @@ -4231,7 +4988,8 @@ }, "node_modules/@polkadot/ui-keyring/node_modules/@polkadot/x-bigint": { "version": "13.0.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-13.0.2.tgz", + "integrity": "sha512-h2jKT/UaxiEal8LhQeH6+GCjO7GwEqVAD2SNYteCOXff6yNttqAZYJuHZsndbVjVNwqRNf8D5q/zZkD0HUd6xQ==", "dependencies": { "@polkadot/x-global": "13.0.2", "tslib": "^2.6.2" @@ -4242,7 +5000,8 @@ }, "node_modules/@polkadot/ui-keyring/node_modules/@polkadot/x-global": { "version": "13.0.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-13.0.2.tgz", + "integrity": "sha512-OoNIXLB5y8vIKpk4R+XmpDPhipNXWSUvEwUnpQT7NAxNLmzgMq1FhbrwBWWPRNHPrQonp7mqxV/X+v5lv1HW/g==", "dependencies": { "tslib": "^2.6.2" }, @@ -4252,7 +5011,8 @@ }, "node_modules/@polkadot/ui-keyring/node_modules/@polkadot/x-randomvalues": { "version": "13.0.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-13.0.2.tgz", + "integrity": "sha512-SGj+L0H/7TWZtSmtkWlixO4DFzXDdluI0UscN2h285os2Ns8PnmBbue+iJ8PVSzpY1BOxd66gvkkpboPz+jXFQ==", "dependencies": { "@polkadot/x-global": "13.0.2", "tslib": "^2.6.2" @@ -4267,7 +5027,8 @@ }, "node_modules/@polkadot/ui-keyring/node_modules/@polkadot/x-textdecoder": { "version": "13.0.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-13.0.2.tgz", + "integrity": "sha512-mauglOkTJxLGmLwLc3J5Jlq/W+SHP53eiy3F8/8JxxfnXrZKgWoQXGpvXYPjFnMZj0MzDSy/6GjyGWnDCgdQFA==", "dependencies": { "@polkadot/x-global": "13.0.2", "tslib": "^2.6.2" @@ -4278,7 +5039,8 @@ }, "node_modules/@polkadot/ui-keyring/node_modules/@polkadot/x-textencoder": { "version": "13.0.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-13.0.2.tgz", + "integrity": "sha512-Lq08H2OnVXj97uaOwg7tcmRS7a4VJYkHEeWO4FyEMOk6P6lU6W8OVNjjxG0se9PCEgmyZPUDbJI//1ynzP4cXw==", "dependencies": { "@polkadot/x-global": "13.0.2", "tslib": "^2.6.2" @@ -4289,7 +5051,8 @@ }, "node_modules/@polkadot/ui-keyring/node_modules/mkdirp": { "version": "3.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", "bin": { "mkdirp": "dist/cjs/src/bin.js" }, @@ -4302,7 +5065,8 @@ }, "node_modules/@polkadot/ui-settings": { "version": "3.9.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/ui-settings/-/ui-settings-3.9.1.tgz", + "integrity": "sha512-G6WYluS3oE9wiK4KLK1Hi+lr0ZII65x7EcmRoqaR5BBKAr2cBnLAOfBiK5gUchntY7cw1ukXRmcCJmNmCFvwzg==", "dependencies": { "@polkadot/networks": "^13.0.2", "@polkadot/util": "^13.0.2", @@ -4320,7 +5084,8 @@ }, "node_modules/@polkadot/ui-settings/node_modules/@polkadot/networks": { "version": "13.0.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-13.0.2.tgz", + "integrity": "sha512-ABAL+vug/gIwkdFEzeh87JoJd0YKrxSYg/HjUrZ+Zis2ucxQEKpvtCpJ34ku+YrjacBfVqIAkkwd3ZdIPGq9aQ==", "dependencies": { "@polkadot/util": "13.0.2", "@substrate/ss58-registry": "^1.46.0", @@ -4332,7 +5097,8 @@ }, "node_modules/@polkadot/ui-settings/node_modules/@polkadot/util": { "version": "13.0.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-13.0.2.tgz", + "integrity": "sha512-/6bS9sfhJLhs8QuqWaR1eRapzfDdGC5XAQZEPL9NN5sTTA7HxWos8rVleai0UERm8QUMabjZ9rK9KpzbXl7ojg==", "dependencies": { "@polkadot/x-bigint": "13.0.2", "@polkadot/x-global": "13.0.2", @@ -4348,7 +5114,8 @@ }, "node_modules/@polkadot/ui-settings/node_modules/@polkadot/x-bigint": { "version": "13.0.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-13.0.2.tgz", + "integrity": "sha512-h2jKT/UaxiEal8LhQeH6+GCjO7GwEqVAD2SNYteCOXff6yNttqAZYJuHZsndbVjVNwqRNf8D5q/zZkD0HUd6xQ==", "dependencies": { "@polkadot/x-global": "13.0.2", "tslib": "^2.6.2" @@ -4359,7 +5126,8 @@ }, "node_modules/@polkadot/ui-settings/node_modules/@polkadot/x-global": { "version": "13.0.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-13.0.2.tgz", + "integrity": "sha512-OoNIXLB5y8vIKpk4R+XmpDPhipNXWSUvEwUnpQT7NAxNLmzgMq1FhbrwBWWPRNHPrQonp7mqxV/X+v5lv1HW/g==", "dependencies": { "tslib": "^2.6.2" }, @@ -4369,7 +5137,8 @@ }, "node_modules/@polkadot/ui-settings/node_modules/@polkadot/x-textdecoder": { "version": "13.0.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-13.0.2.tgz", + "integrity": "sha512-mauglOkTJxLGmLwLc3J5Jlq/W+SHP53eiy3F8/8JxxfnXrZKgWoQXGpvXYPjFnMZj0MzDSy/6GjyGWnDCgdQFA==", "dependencies": { "@polkadot/x-global": "13.0.2", "tslib": "^2.6.2" @@ -4380,7 +5149,8 @@ }, "node_modules/@polkadot/ui-settings/node_modules/@polkadot/x-textencoder": { "version": "13.0.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-13.0.2.tgz", + "integrity": "sha512-Lq08H2OnVXj97uaOwg7tcmRS7a4VJYkHEeWO4FyEMOk6P6lU6W8OVNjjxG0se9PCEgmyZPUDbJI//1ynzP4cXw==", "dependencies": { "@polkadot/x-global": "13.0.2", "tslib": "^2.6.2" @@ -4391,7 +5161,8 @@ }, "node_modules/@polkadot/util": { "version": "12.6.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.2.tgz", + "integrity": "sha512-l8TubR7CLEY47240uki0TQzFvtnxFIO7uI/0GoWzpYD/O62EIAMRsuY01N4DuwgKq2ZWD59WhzsLYmA5K6ksdw==", "dependencies": { "@polkadot/x-bigint": "12.6.2", "@polkadot/x-global": "12.6.2", @@ -4407,7 +5178,8 @@ }, "node_modules/@polkadot/util-crypto": { "version": "12.6.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-12.6.2.tgz", + "integrity": "sha512-FEWI/dJ7wDMNN1WOzZAjQoIcCP/3vz3wvAp5QQm+lOrzOLj0iDmaIGIcBkz8HVm3ErfSe/uKP0KS4jgV/ib+Mg==", "dependencies": { "@noble/curves": "^1.3.0", "@noble/hashes": "^1.3.3", @@ -4429,7 +5201,8 @@ }, "node_modules/@polkadot/wasm-bridge": { "version": "7.3.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-bridge/-/wasm-bridge-7.3.2.tgz", + "integrity": "sha512-AJEXChcf/nKXd5Q/YLEV5dXQMle3UNT7jcXYmIffZAo/KI394a+/24PaISyQjoNC0fkzS1Q8T5pnGGHmXiVz2g==", "dependencies": { "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" @@ -4444,7 +5217,8 @@ }, "node_modules/@polkadot/wasm-crypto": { "version": "7.3.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-7.3.2.tgz", + "integrity": "sha512-+neIDLSJ6jjVXsjyZ5oLSv16oIpwp+PxFqTUaZdZDoA2EyFRQB8pP7+qLsMNk+WJuhuJ4qXil/7XiOnZYZ+wxw==", "dependencies": { "@polkadot/wasm-bridge": "7.3.2", "@polkadot/wasm-crypto-asmjs": "7.3.2", @@ -4463,7 +5237,8 @@ }, "node_modules/@polkadot/wasm-crypto-asmjs": { "version": "7.3.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.3.2.tgz", + "integrity": "sha512-QP5eiUqUFur/2UoF2KKKYJcesc71fXhQFLT3D4ZjG28Mfk2ZPI0QNRUfpcxVQmIUpV5USHg4geCBNuCYsMm20Q==", "dependencies": { "tslib": "^2.6.2" }, @@ -4476,7 +5251,8 @@ }, "node_modules/@polkadot/wasm-crypto-init": { "version": "7.3.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-init/-/wasm-crypto-init-7.3.2.tgz", + "integrity": "sha512-FPq73zGmvZtnuJaFV44brze3Lkrki3b4PebxCy9Fplw8nTmisKo9Xxtfew08r0njyYh+uiJRAxPCXadkC9sc8g==", "dependencies": { "@polkadot/wasm-bridge": "7.3.2", "@polkadot/wasm-crypto-asmjs": "7.3.2", @@ -4494,7 +5270,8 @@ }, "node_modules/@polkadot/wasm-crypto-wasm": { "version": "7.3.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-7.3.2.tgz", + "integrity": "sha512-15wd0EMv9IXs5Abp1ZKpKKAVyZPhATIAHfKsyoWCEFDLSOA0/K0QGOxzrAlsrdUkiKZOq7uzSIgIDgW8okx2Mw==", "dependencies": { "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" @@ -4508,7 +5285,8 @@ }, "node_modules/@polkadot/wasm-util": { "version": "7.3.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-util/-/wasm-util-7.3.2.tgz", + "integrity": "sha512-bmD+Dxo1lTZyZNxbyPE380wd82QsX+43mgCm40boyKrRppXEyQmWT98v/Poc7chLuskYb6X8IQ6lvvK2bGR4Tg==", "dependencies": { "tslib": "^2.6.2" }, @@ -4521,7 +5299,8 @@ }, "node_modules/@polkadot/x-bigint": { "version": "12.6.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-12.6.2.tgz", + "integrity": "sha512-HSIk60uFPX4GOFZSnIF7VYJz7WZA7tpFJsne7SzxOooRwMTWEtw3fUpFy5cYYOeLh17/kHH1Y7SVcuxzVLc74Q==", "dependencies": { "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" @@ -4532,7 +5311,8 @@ }, "node_modules/@polkadot/x-fetch": { "version": "12.6.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-12.6.2.tgz", + "integrity": "sha512-8wM/Z9JJPWN1pzSpU7XxTI1ldj/AfC8hKioBlUahZ8gUiJaOF7K9XEFCrCDLis/A1BoOu7Ne6WMx/vsJJIbDWw==", "dependencies": { "@polkadot/x-global": "12.6.2", "node-fetch": "^3.3.2", @@ -4544,7 +5324,8 @@ }, "node_modules/@polkadot/x-global": { "version": "12.6.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.2.tgz", + "integrity": "sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==", "dependencies": { "tslib": "^2.6.2" }, @@ -4554,7 +5335,8 @@ }, "node_modules/@polkadot/x-randomvalues": { "version": "12.6.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-12.6.2.tgz", + "integrity": "sha512-Vr8uG7rH2IcNJwtyf5ebdODMcr0XjoCpUbI91Zv6AlKVYOGKZlKLYJHIwpTaKKB+7KPWyQrk4Mlym/rS7v9feg==", "dependencies": { "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" @@ -4569,7 +5351,8 @@ }, "node_modules/@polkadot/x-textdecoder": { "version": "12.6.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.2.tgz", + "integrity": "sha512-M1Bir7tYvNappfpFWXOJcnxUhBUFWkUFIdJSyH0zs5LmFtFdbKAeiDXxSp2Swp5ddOZdZgPac294/o2TnQKN1w==", "dependencies": { "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" @@ -4580,7 +5363,8 @@ }, "node_modules/@polkadot/x-textencoder": { "version": "12.6.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.2.tgz", + "integrity": "sha512-4N+3UVCpI489tUJ6cv3uf0PjOHvgGp9Dl+SZRLgFGt9mvxnvpW/7+XBADRMtlG4xi5gaRK7bgl5bmY6OMDsNdw==", "dependencies": { "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" @@ -4591,7 +5375,8 @@ }, "node_modules/@polkadot/x-ws": { "version": "12.6.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-12.6.2.tgz", + "integrity": "sha512-cGZWo7K5eRRQCRl2LrcyCYsrc3lRbTlixZh3AzgU8uX4wASVGRlNWi/Hf4TtHNe1ExCDmxabJzdIsABIfrr7xw==", "dependencies": { "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2", @@ -4603,7 +5388,8 @@ }, "node_modules/@popperjs/core": { "version": "2.11.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -4673,6 +5459,10 @@ "resolved": "packages/detector", "link": true }, + "node_modules/@prosopo/dotenv": { + "resolved": "packages/dotenv", + "link": true + }, "node_modules/@prosopo/env": { "resolved": "packages/env", "link": true @@ -4751,7 +5541,8 @@ }, "node_modules/@prosopo/typechain-types": { "version": "1.1.15", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@prosopo/typechain-types/-/typechain-types-1.1.15.tgz", + "integrity": "sha512-VZpzG/sUba6xnMsiPcFGCCDInV2o7aaJarKvGFWqaCM7I1AKIbq8hi0i6ojxKq9caMo0ZAwblSi+XR8GX+QfVg==", "dependencies": { "@polkadot/api": "10.13.1", "@polkadot/api-contract": "10.13.1", @@ -4762,12 +5553,18 @@ } }, "node_modules/@prosopo/typechain-types/node_modules/@types/node": { - "version": "18.19.44", - "license": "MIT", + "version": "18.19.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz", + "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==", "dependencies": { "undici-types": "~5.26.4" } }, + "node_modules/@prosopo/typechain-types/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/@prosopo/types": { "resolved": "packages/types", "link": true @@ -4793,15 +5590,17 @@ "link": true }, "node_modules/@remix-run/router": { - "version": "1.19.0", - "license": "MIT", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.1.tgz", + "integrity": "sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==", "engines": { "node": ">=14.0.0" } }, "node_modules/@rollup/plugin-alias": { "version": "5.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-5.1.0.tgz", + "integrity": "sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==", "dependencies": { "slash": "^4.0.0" }, @@ -4819,7 +5618,8 @@ }, "node_modules/@rollup/plugin-alias/node_modules/slash": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "engines": { "node": ">=12" }, @@ -4829,7 +5629,8 @@ }, "node_modules/@rollup/plugin-babel": { "version": "6.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.0.4.tgz", + "integrity": "sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==", "dependencies": { "@babel/helper-module-imports": "^7.18.6", "@rollup/pluginutils": "^5.0.1" @@ -4853,7 +5654,8 @@ }, "node_modules/@rollup/plugin-commonjs": { "version": "25.0.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.8.tgz", + "integrity": "sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==", "dependencies": { "@rollup/pluginutils": "^5.0.1", "commondir": "^1.0.1", @@ -4876,7 +5678,9 @@ }, "node_modules/@rollup/plugin-commonjs/node_modules/glob": { "version": "8.1.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4893,7 +5697,8 @@ }, "node_modules/@rollup/plugin-commonjs/node_modules/minimatch": { "version": "5.1.6", - "license": "ISC", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -4903,7 +5708,8 @@ }, "node_modules/@rollup/plugin-dynamic-import-vars": { "version": "2.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@rollup/plugin-dynamic-import-vars/-/plugin-dynamic-import-vars-2.1.2.tgz", + "integrity": "sha512-4lr2oXxs9hcxtGGaK8s0i9evfjzDrAs7ngw28TqruWKTEm0+U4Eljb+F6HXGYdFv8xRojQlrQwV7M/yxeh3yzQ==", "dependencies": { "@rollup/pluginutils": "^5.0.1", "astring": "^1.8.5", @@ -4925,7 +5731,8 @@ }, "node_modules/@rollup/plugin-inject": { "version": "5.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", + "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==", "dependencies": { "@rollup/pluginutils": "^5.0.1", "estree-walker": "^2.0.2", @@ -4945,7 +5752,8 @@ }, "node_modules/@rollup/plugin-json": { "version": "6.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", + "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", "dependencies": { "@rollup/pluginutils": "^5.1.0" }, @@ -4963,7 +5771,8 @@ }, "node_modules/@rollup/plugin-node-resolve": { "version": "15.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", + "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", "dependencies": { "@rollup/pluginutils": "^5.0.1", "@types/resolve": "1.20.2", @@ -4986,7 +5795,8 @@ }, "node_modules/@rollup/plugin-replace": { "version": "5.0.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.7.tgz", + "integrity": "sha512-PqxSfuorkHz/SPpyngLyg5GCEkOcee9M1bkxiVDr41Pd61mqP1PLOoDPbpl44SB2mQGKwV/In74gqQmGITOhEQ==", "dependencies": { "@rollup/pluginutils": "^5.0.1", "magic-string": "^0.30.3" @@ -5005,7 +5815,8 @@ }, "node_modules/@rollup/plugin-typescript": { "version": "11.1.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.6.tgz", + "integrity": "sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==", "dependencies": { "@rollup/pluginutils": "^5.1.0", "resolve": "^1.22.1" @@ -5029,7 +5840,8 @@ }, "node_modules/@rollup/plugin-wasm": { "version": "6.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@rollup/plugin-wasm/-/plugin-wasm-6.2.2.tgz", + "integrity": "sha512-gpC4R1G9Ni92ZIRTexqbhX7U+9estZrbhP+9SRb0DW9xpB9g7j34r+J2hqrcW/lRI7dJaU84MxZM0Rt82tqYPQ==", "dependencies": { "@rollup/pluginutils": "^5.0.2" }, @@ -5047,7 +5859,8 @@ }, "node_modules/@rollup/pluginutils": { "version": "5.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", @@ -5065,32 +5878,216 @@ } } }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.0.tgz", + "integrity": "sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.0.tgz", + "integrity": "sha512-a1sR2zSK1B4eYkiZu17ZUZhmUQcKjk2/j9Me2IDjk1GHW7LB5Z35LEzj9iJch6gtUfsnvZs1ZNyDW2oZSThrkA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.0.tgz", + "integrity": "sha512-zOnKWLgDld/svhKO5PD9ozmL6roy5OQ5T4ThvdYZLpiOhEGY+dp2NwUmxK0Ld91LrbjrvtNAE0ERBwjqhZTRAA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.0.tgz", + "integrity": "sha512-7doS8br0xAkg48SKE2QNtMSFPFUlRdw9+votl27MvT46vo44ATBmdZdGysOevNELmZlfd+NEa0UYOA8f01WSrg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.0.tgz", + "integrity": "sha512-pWJsfQjNWNGsoCq53KjMtwdJDmh/6NubwQcz52aEwLEuvx08bzcy6tOUuawAOncPnxz/3siRtd8hiQ32G1y8VA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.0.tgz", + "integrity": "sha512-efRIANsz3UHZrnZXuEvxS9LoCOWMGD1rweciD6uJQIx2myN3a8Im1FafZBzh7zk1RJ6oKcR16dU3UPldaKd83w==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.0.tgz", + "integrity": "sha512-ZrPhydkTVhyeGTW94WJ8pnl1uroqVHM3j3hjdquwAcWnmivjAwOYjTEAuEDeJvGX7xv3Z9GAvrBkEzCgHq9U1w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.0.tgz", + "integrity": "sha512-cfaupqd+UEFeURmqNP2eEvXqgbSox/LHOyN9/d2pSdV8xTrjdg3NgOFJCtc1vQ/jEke1qD0IejbBfxleBPHnPw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.0.tgz", + "integrity": "sha512-ZKPan1/RvAhrUylwBXC9t7B2hXdpb/ufeu22pG2psV7RN8roOfGurEghw1ySmX/CmDDHNTDDjY3lo9hRlgtaHg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.0.tgz", + "integrity": "sha512-H1eRaCwd5E8eS8leiS+o/NqMdljkcb1d6r2h4fKSsCXQilLKArq6WS7XBLDu80Yz+nMqHVFDquwcVrQmGr28rg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.0.tgz", + "integrity": "sha512-zJ4hA+3b5tu8u7L58CCSI0A9N1vkfwPhWd/puGXwtZlsB5bTkwDNW/+JCU84+3QYmKpLi+XvHdmrlwUwDA6kqw==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.20.0", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.0.tgz", + "integrity": "sha512-e2hrvElFIh6kW/UNBQK/kzqMNY5mO+67YtEh9OA65RM5IJXYTWiXjX6fjIiPaqOkBthYF1EqgiZ6OXKcQsM0hg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.0.tgz", + "integrity": "sha512-1vvmgDdUSebVGXWX2lIcgRebqfQSff0hMEkLJyakQ9JQUbLDkEaMsPTLOmyccyC6IJ/l3FZuJbmrBw/u0A0uCQ==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "linux" ] }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.0.tgz", + "integrity": "sha512-s5oFkZ/hFcrlAyBTONFY1TWndfyre1wOMwU+6KCpm/iatybvrRgmZVM+vCFwxmC5ZhdlgfE0N4XorsDpi7/4XQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.0.tgz", + "integrity": "sha512-G9+TEqRnAA6nbpqyUqgTiopmnfgnMkR3kMukFBDsiyy23LZvUCpiUwjTRx6ezYCjJODXrh52rBR9oXvm+Fp5wg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.0.tgz", + "integrity": "sha512-2jsCDZwtQvRhejHLfZ1JY6w6kEuEtfF9nzYsZxzSlNVKDX+DpsDJ+Rbjkm74nvg2rdx0gwBS+IMdvwJuq3S9pQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@scure/base": { "version": "1.1.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.7.tgz", + "integrity": "sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==", "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@sinclair/typebox": { "version": "0.27.8", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" }, "node_modules/@sindresorhus/is": { "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.16" }, @@ -5100,11 +6097,14 @@ }, "node_modules/@socket.io/component-emitter": { "version": "3.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==" }, "node_modules/@substrate/connect": { "version": "0.8.8", - "license": "GPL-3.0-only", + "resolved": "https://registry.npmjs.org/@substrate/connect/-/connect-0.8.8.tgz", + "integrity": "sha512-zwaxuNEVI9bGt0rT8PEJiXOyebLIo6QN1SyiAHRPBOl6g3Sy0KKdSN8Jmyn++oXhVRD8aIe75/V8ZkS81T+BPQ==", + "deprecated": "versions below 1.x are no longer maintained", "optional": true, "dependencies": { "@substrate/connect-extension-protocol": "^2.0.0", @@ -5115,17 +6115,20 @@ }, "node_modules/@substrate/connect-extension-protocol": { "version": "2.0.0", - "license": "GPL-3.0-only", + "resolved": "https://registry.npmjs.org/@substrate/connect-extension-protocol/-/connect-extension-protocol-2.0.0.tgz", + "integrity": "sha512-nKu8pDrE3LNCEgJjZe1iGXzaD6OSIDD4Xzz/yo4KO9mQ6LBvf49BVrt4qxBFGL6++NneLiWUZGoh+VSd4PyVIg==", "optional": true }, "node_modules/@substrate/connect-known-chains": { - "version": "1.2.2", - "license": "GPL-3.0-only", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@substrate/connect-known-chains/-/connect-known-chains-1.3.0.tgz", + "integrity": "sha512-BHcWdhOsnHtoWuS4LpFpH3MbLAhm1amq4hvl5ctI47KNZcZJcEPAF4zmeaTMuvj+UJ7LEFooy46Mn7zok47MwA==", "optional": true }, "node_modules/@substrate/light-client-extension-helpers": { "version": "0.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@substrate/light-client-extension-helpers/-/light-client-extension-helpers-0.0.4.tgz", + "integrity": "sha512-vfKcigzL0SpiK+u9sX6dq2lQSDtuFLOxIJx2CKPouPEHIs8C+fpsufn52r19GQn+qDhU8POMPHOVoqLktj8UEA==", "optional": true, "dependencies": { "@polkadot-api/client": "0.0.1-492c132563ea6b40ae1fc5470dec4cd18768d182.1.0", @@ -5142,12 +6145,14 @@ }, "node_modules/@substrate/ss58-registry": { "version": "1.49.0", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/@substrate/ss58-registry/-/ss58-registry-1.49.0.tgz", + "integrity": "sha512-leW6Ix4LD7XgvxT7+aobPWSw+WvPcN2Rxof1rmd0mNC5t2n99k1N7UNEvz7YEFSOUeHWmKIY7F5q8KeIqYoHfA==" }, "node_modules/@szmarczak/http-timer": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", "dev": true, - "license": "MIT", "dependencies": { "defer-to-connect": "^2.0.1" }, @@ -5157,23 +6162,26 @@ }, "node_modules/@taplo/cli": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@taplo/cli/-/cli-0.7.0.tgz", + "integrity": "sha512-Ck3zFhQhIhi02Hl6T4ZmJsXdnJE+wXcJz5f8klxd4keRYgenMnip3JDPMGDRLbnC/2iGd8P0sBIQqI3KxfVjBg==", "dev": true, - "license": "MIT", "bin": { "taplo": "dist/cli.js" } }, "node_modules/@tootallnate/once": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/@typegoose/auto-increment": { "version": "4.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@typegoose/auto-increment/-/auto-increment-4.5.0.tgz", + "integrity": "sha512-83wYnc4cMSSAjT3KO9heryIdDMrU/yqQgbUXXKGcyRngMP/6ylBjOep7gCdr3CMMcxi/c7sTJi/jeLTg0kyZXQ==", "dependencies": { "loglevel": "^1.9.1", "tslib": "^2.6.3" @@ -5187,15 +6195,18 @@ }, "node_modules/@typegoose/auto-increment/node_modules/tslib": { "version": "2.6.3", - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@types/aws-lambda": { "version": "8.10.143", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.143.tgz", + "integrity": "sha512-u5vzlcR14ge/4pMTTMDQr3MF0wEe38B2F9o84uC4F43vN5DGTy63npRrB6jQhyt+C0lGv4ZfiRcRkqJoZuPnmg==" }, "node_modules/@types/babel__core": { "version": "7.20.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -5206,14 +6217,16 @@ }, "node_modules/@types/babel__generator": { "version": "7.6.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { "version": "7.4.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -5221,29 +6234,33 @@ }, "node_modules/@types/babel__traverse": { "version": "7.20.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dependencies": { "@babel/types": "^7.20.7" } }, "node_modules/@types/bcrypt": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/bcrypt/-/bcrypt-5.0.2.tgz", + "integrity": "sha512-6atioO8Y75fNcbmj0G7UjI9lXN2pQ/IGJ2FWT4a/btd0Lk9lQalHLKhkgKVZ3r+spnmWUKfbMi1GEe9wyHQfNQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/bn.js": { "version": "5.1.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", + "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/body-parser": { "version": "1.19.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -5251,18 +6268,21 @@ }, "node_modules/@types/bonjour": { "version": "3.5.13", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/btoa-lite": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/btoa-lite/-/btoa-lite-1.0.2.tgz", + "integrity": "sha512-ZYbcE2x7yrvNFJiU7xJGrpF/ihpkM7zKgw8bha3LNJSesvTtUNxbpzaT7WXBIryf6jovisrxTBvymxMeLLj1Mg==" }, "node_modules/@types/cacheable-request": { "version": "6.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", "dependencies": { "@types/http-cache-semantics": "*", "@types/keyv": "^3.1.4", @@ -5272,35 +6292,40 @@ }, "node_modules/@types/chai": { "version": "4.3.17", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.17.tgz", + "integrity": "sha512-zmZ21EWzR71B4Sscphjief5djsLre50M6lI622OSySTmn9DB3j+C3kWroHfBQWXbOBwbgg/M8CG/hUxDLIloow==", + "dev": true }, "node_modules/@types/chai-subset": { "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.5.tgz", + "integrity": "sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==", "dev": true, - "license": "MIT", "dependencies": { "@types/chai": "*" } }, "node_modules/@types/cli-progress": { "version": "3.11.6", + "resolved": "https://registry.npmjs.org/@types/cli-progress/-/cli-progress-3.11.6.tgz", + "integrity": "sha512-cE3+jb9WRlu+uOSAugewNpITJDt1VF8dHOopPO4IABFc3SXYL5WE/+PTz/FCdZRRfIujiWW3n3aMbv1eIGVRWA==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/connect": { "version": "3.4.38", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/connect-history-api-fallback": { "version": "1.5.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" @@ -5308,28 +6333,32 @@ }, "node_modules/@types/cookiejar": { "version": "2.1.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", + "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", + "dev": true }, "node_modules/@types/cors": { "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/debug": { "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/ms": "*" } }, "node_modules/@types/eslint": { "version": "9.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.0.tgz", + "integrity": "sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -5337,7 +6366,8 @@ }, "node_modules/@types/eslint-scope": { "version": "3.7.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -5345,11 +6375,13 @@ }, "node_modules/@types/estree": { "version": "1.0.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, "node_modules/@types/express": { "version": "4.17.21", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -5359,7 +6391,8 @@ }, "node_modules/@types/express-serve-static-core": { "version": "4.19.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -5369,115 +6402,137 @@ }, "node_modules/@types/fs-extra": { "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/html-minifier-terser": { "version": "6.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" }, "node_modules/@types/http-cache-semantics": { "version": "4.0.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" }, "node_modules/@types/http-errors": { "version": "2.0.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" }, "node_modules/@types/http-proxy": { "version": "1.17.15", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz", + "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true }, "node_modules/@types/json-schema": { "version": "7.0.15", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "node_modules/@types/jsonwebtoken": { "version": "9.0.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.6.tgz", + "integrity": "sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/keyv": { "version": "3.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/lodash": { "version": "4.17.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", + "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==", + "dev": true }, "node_modules/@types/luxon": { "version": "3.3.8", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.3.8.tgz", + "integrity": "sha512-jYvz8UMLDgy3a5SkGJne8H7VA7zPV2Lwohjx0V8V31+SqAjNmurWMkk9cQhfvlcnXWudBpK9xPM1n4rljOcHYQ==" }, "node_modules/@types/methods": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", + "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", + "dev": true }, "node_modules/@types/mime": { "version": "1.3.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" }, "node_modules/@types/minimatch": { "version": "3.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true }, "node_modules/@types/ms": { "version": "0.7.34", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "dev": true }, "node_modules/@types/node": { - "version": "20.14.15", - "license": "MIT", + "version": "20.16.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.1.tgz", + "integrity": "sha512-zJDo7wEadFtSyNz5QITDfRcrhqDvQI1xQNQ0VoizPjM/dVAODqqIUWbJPkvsxmTI0MYRGRikcdjMPhOssnPejQ==", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.19.2" } }, "node_modules/@types/node-forge": { "version": "1.3.11", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/parse-json": { "version": "4.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" }, "node_modules/@types/prop-types": { "version": "15.7.12", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" }, "node_modules/@types/qs": { "version": "6.9.15", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" }, "node_modules/@types/range-parser": { "version": "1.2.7", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" }, "node_modules/@types/react": { - "version": "18.3.3", - "license": "MIT", + "version": "18.3.4", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.4.tgz", + "integrity": "sha512-J7W30FTdfCxDDjmfRM+/JqLHBIyl7xUIp9kwK637FGmY7+mkSFSe6L4jpZzhj5QMfLssSDP4/i75AKkrdC7/Jw==", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -5485,41 +6540,48 @@ }, "node_modules/@types/react-dom": { "version": "18.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", "dependencies": { "@types/react": "*" } }, "node_modules/@types/react-transition-group": { "version": "4.4.11", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", + "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==", "dependencies": { "@types/react": "*" } }, "node_modules/@types/resolve": { "version": "1.20.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==" }, "node_modules/@types/responselike": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/retry": { "version": "0.12.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==" }, "node_modules/@types/seedrandom": { "version": "3.0.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-3.0.8.tgz", + "integrity": "sha512-TY1eezMU2zH2ozQoAFAQFOPpvP15g+ZgSfTZt31AUUH/Rxtnz3H+A/Sv1Snw2/amp//omibc+AEkTaA8KUeOLQ==", + "dev": true }, "node_modules/@types/send": { "version": "0.17.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -5527,14 +6589,16 @@ }, "node_modules/@types/serve-index": { "version": "1.9.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "dependencies": { "@types/express": "*" } }, "node_modules/@types/serve-static": { "version": "1.15.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dependencies": { "@types/http-errors": "*", "@types/node": "*", @@ -5543,25 +6607,29 @@ }, "node_modules/@types/sinonjs__fake-timers": { "version": "8.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "dev": true }, "node_modules/@types/sizzle": { "version": "2.3.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz", + "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==", + "dev": true }, "node_modules/@types/sockjs": { "version": "0.3.36", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/superagent": { "version": "8.1.8", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.8.tgz", + "integrity": "sha512-nTqHJ2OTa7PFEpLahzSEEeFeqbMpmcN7OeayiOc7v+xk+/vyTKljRe+o4MPqSnPeRCMvtxuLG+5QqluUVQJOnA==", "dev": true, - "license": "MIT", "dependencies": { "@types/cookiejar": "^2.1.5", "@types/methods": "^1.1.4", @@ -5571,8 +6639,9 @@ }, "node_modules/@types/supertest": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-6.0.2.tgz", + "integrity": "sha512-137ypx2lk/wTQbW6An6safu9hXmajAifU/s7szAHLN/FeIm5w7yR0Wkl9fdJMRSHwOn4HLAI0DaB2TOORuhPDg==", "dev": true, - "license": "MIT", "dependencies": { "@types/methods": "^1.1.4", "@types/superagent": "^8.1.0" @@ -5580,15 +6649,18 @@ }, "node_modules/@types/uuid": { "version": "9.0.8", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==" }, "node_modules/@types/webidl-conversions": { "version": "7.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" }, "node_modules/@types/whatwg-url": { "version": "8.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", "dependencies": { "@types/node": "*", "@types/webidl-conversions": "*" @@ -5596,27 +6668,31 @@ }, "node_modules/@types/ws": { "version": "8.5.12", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", "dependencies": { "@types/node": "*" } }, "node_modules/@types/yargs": { "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", "dev": true, - "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { "version": "21.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true }, "node_modules/@types/yauzl": { "version": "2.10.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "optional": true, "dependencies": { "@types/node": "*" @@ -5624,7 +6700,8 @@ }, "node_modules/@vitejs/plugin-react": { "version": "4.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz", + "integrity": "sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==", "dependencies": { "@babel/core": "^7.24.5", "@babel/plugin-transform-react-jsx-self": "^7.24.5", @@ -5641,8 +6718,9 @@ }, "node_modules/@vitest/coverage-v8": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-1.6.0.tgz", + "integrity": "sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==", "dev": true, - "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.1", "@bcoe/v8-coverage": "^0.2.3", @@ -5667,13 +6745,15 @@ }, "node_modules/@vitest/coverage-v8/node_modules/js-tokens": { "version": "9.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", + "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", + "dev": true }, "node_modules/@vitest/coverage-v8/node_modules/strip-literal": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", + "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", "dev": true, - "license": "MIT", "dependencies": { "js-tokens": "^9.0.0" }, @@ -5683,8 +6763,9 @@ }, "node_modules/@vitest/expect": { "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.6.tgz", + "integrity": "sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==", "dev": true, - "license": "MIT", "dependencies": { "@vitest/spy": "0.34.6", "@vitest/utils": "0.34.6", @@ -5696,8 +6777,9 @@ }, "node_modules/@vitest/runner": { "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.6.tgz", + "integrity": "sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==", "dev": true, - "license": "MIT", "dependencies": { "@vitest/utils": "0.34.6", "p-limit": "^4.0.0", @@ -5709,8 +6791,9 @@ }, "node_modules/@vitest/snapshot": { "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.6.tgz", + "integrity": "sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==", "dev": true, - "license": "MIT", "dependencies": { "magic-string": "^0.30.1", "pathe": "^1.1.1", @@ -5722,8 +6805,9 @@ }, "node_modules/@vitest/spy": { "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.6.tgz", + "integrity": "sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==", "dev": true, - "license": "MIT", "dependencies": { "tinyspy": "^2.1.1" }, @@ -5733,8 +6817,9 @@ }, "node_modules/@vitest/utils": { "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.6.tgz", + "integrity": "sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==", "dev": true, - "license": "MIT", "dependencies": { "diff-sequences": "^29.4.3", "loupe": "^2.3.6", @@ -5745,36 +6830,39 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.4.37", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.38.tgz", + "integrity": "sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/parser": "^7.24.7", - "@vue/shared": "3.4.37", - "entities": "^5.0.0", + "@vue/shared": "3.4.38", + "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.4.37", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.38.tgz", + "integrity": "sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==", "dev": true, - "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.4.37", - "@vue/shared": "3.4.37" + "@vue/compiler-core": "3.4.38", + "@vue/shared": "3.4.38" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.4.37", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.38.tgz", + "integrity": "sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/parser": "^7.24.7", - "@vue/compiler-core": "3.4.37", - "@vue/compiler-dom": "3.4.37", - "@vue/compiler-ssr": "3.4.37", - "@vue/shared": "3.4.37", + "@vue/compiler-core": "3.4.38", + "@vue/compiler-dom": "3.4.38", + "@vue/compiler-ssr": "3.4.38", + "@vue/shared": "3.4.38", "estree-walker": "^2.0.2", "magic-string": "^0.30.10", "postcss": "^8.4.40", @@ -5782,22 +6870,25 @@ } }, "node_modules/@vue/compiler-ssr": { - "version": "3.4.37", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.38.tgz", + "integrity": "sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==", "dev": true, - "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.4.37", - "@vue/shared": "3.4.37" + "@vue/compiler-dom": "3.4.38", + "@vue/shared": "3.4.38" } }, "node_modules/@vue/shared": { - "version": "3.4.37", - "dev": true, - "license": "MIT" + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.38.tgz", + "integrity": "sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==", + "dev": true }, "node_modules/@webassemblyjs/ast": { "version": "1.12.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -5805,19 +6896,23 @@ }, "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.12.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -5826,11 +6921,13 @@ }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.12.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -5840,25 +6937,29 @@ }, "node_modules/@webassemblyjs/ieee754": { "version": "1.11.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { "version": "1.11.6", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { "version": "1.11.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.12.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -5872,7 +6973,8 @@ }, "node_modules/@webassemblyjs/wasm-gen": { "version": "1.12.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", @@ -5883,7 +6985,8 @@ }, "node_modules/@webassemblyjs/wasm-opt": { "version": "1.12.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-buffer": "1.12.1", @@ -5893,7 +6996,8 @@ }, "node_modules/@webassemblyjs/wasm-parser": { "version": "1.12.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@webassemblyjs/helper-api-error": "1.11.6", @@ -5905,7 +7009,8 @@ }, "node_modules/@webassemblyjs/wast-printer": { "version": "1.12.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dependencies": { "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" @@ -5913,7 +7018,8 @@ }, "node_modules/@webpack-cli/configtest": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "engines": { "node": ">=14.15.0" }, @@ -5924,7 +7030,8 @@ }, "node_modules/@webpack-cli/info": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", "engines": { "node": ">=14.15.0" }, @@ -5935,7 +7042,8 @@ }, "node_modules/@webpack-cli/serve": { "version": "2.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "engines": { "node": ">=14.15.0" }, @@ -5951,19 +7059,23 @@ }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" }, "node_modules/@xtuc/long": { "version": "4.2.2", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, "node_modules/abbrev": { "version": "1.1.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "node_modules/abort-controller": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "dependencies": { "event-target-shim": "^5.0.0" }, @@ -5973,14 +7085,17 @@ }, "node_modules/abstract-leveldown": { "version": "0.12.4", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-0.12.4.tgz", + "integrity": "sha512-TOod9d5RDExo6STLMGa+04HGkl+TlMfbDnTyN93/ETJ9DpQ0DaYLqcMZlbXvdc4W3vVo1Qrl+WhSp8zvDsJ+jA==", "dev": true, - "license": "MIT", "dependencies": { "xtend": "~3.0.0" } }, "node_modules/abstract-leveldown/node_modules/xtend": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", + "integrity": "sha512-sp/sT9OALMjRW1fKDlPeuSZlDQpkqReA0pyJukniWbTGoEKefHxhGJynE3PNhUMlcM8qWIjPwecwCw4LArS5Eg==", "dev": true, "engines": { "node": ">=0.4" @@ -5988,7 +7103,8 @@ }, "node_modules/accepts": { "version": "1.3.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -5999,7 +7115,8 @@ }, "node_modules/acorn": { "version": "8.12.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "bin": { "acorn": "bin/acorn" }, @@ -6009,14 +7126,16 @@ }, "node_modules/acorn-import-attributes": { "version": "1.9.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "peerDependencies": { "acorn": "^8" } }, "node_modules/acorn-walk": { "version": "8.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", "dependencies": { "acorn": "^8.11.0" }, @@ -6026,7 +7145,8 @@ }, "node_modules/agent-base": { "version": "6.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dependencies": { "debug": "4" }, @@ -6036,8 +7156,9 @@ }, "node_modules/agentkeepalive": { "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", "dev": true, - "license": "MIT", "dependencies": { "humanize-ms": "^1.2.1" }, @@ -6047,7 +7168,8 @@ }, "node_modules/aggregate-error": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -6058,7 +7180,8 @@ }, "node_modules/ajv": { "version": "8.17.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -6072,7 +7195,8 @@ }, "node_modules/ajv-formats": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dependencies": { "ajv": "^8.0.0" }, @@ -6087,7 +7211,8 @@ }, "node_modules/ajv-keywords": { "version": "5.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -6097,24 +7222,27 @@ }, "node_modules/ansi-align": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^4.1.0" } }, "node_modules/ansi-colors": { "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/ansi-escapes": { "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -6127,29 +7255,33 @@ }, "node_modules/ansi-html-community": { "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "engines": [ "node >= 0.8.0" ], - "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } }, "node_modules/ansi-regex": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { "node": ">=8" } }, "node_modules/ansi-sequence-parser": { "version": "1.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", + "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==", + "dev": true }, "node_modules/ansi-styles": { "version": "3.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dependencies": { "color-convert": "^1.9.0" }, @@ -6159,7 +7291,8 @@ }, "node_modules/anymatch": { "version": "3.1.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -6170,10 +7303,13 @@ }, "node_modules/aproba": { "version": "2.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" }, "node_modules/arch": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", "dev": true, "funding": [ { @@ -6188,12 +7324,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/are-we-there-yet": { "version": "2.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "deprecated": "This package is no longer supported.", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -6204,16 +7341,18 @@ }, "node_modules/argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/array-buffer-byte-length": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "is-array-buffer": "^3.0.4" @@ -6227,28 +7366,32 @@ }, "node_modules/array-differ": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/array-flatten": { "version": "1.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, "node_modules/array-union": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, - "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.5", @@ -6268,28 +7411,32 @@ }, "node_modules/arrify": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/asap": { "version": "2.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true }, "node_modules/asn1": { "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, - "license": "MIT", "dependencies": { "safer-buffer": "~2.1.0" } }, "node_modules/asn1.js": { "version": "5.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -6299,11 +7446,13 @@ }, "node_modules/asn1.js/node_modules/bn.js": { "version": "4.12.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "node_modules/assert": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", "dependencies": { "call-bind": "^1.0.2", "is-nan": "^1.3.2", @@ -6314,61 +7463,70 @@ }, "node_modules/assert-plus": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8" } }, "node_modules/assertion-error": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "engines": { "node": "*" } }, "node_modules/astral-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/astring": { "version": "1.8.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz", + "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==", "bin": { "astring": "bin/astring" } }, "node_modules/async": { - "version": "3.2.5", - "dev": true, - "license": "MIT" + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true }, "node_modules/async-mutex": { "version": "0.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.1.tgz", + "integrity": "sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==", "dependencies": { "tslib": "^2.4.0" } }, "node_modules/asynckit": { "version": "0.4.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/at-least-node": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, - "license": "ISC", "engines": { "node": ">= 4.0.0" } }, "node_modules/available-typed-arrays": { "version": "1.0.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -6381,20 +7539,23 @@ }, "node_modules/aws-sign2": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/aws4": { "version": "1.13.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.1.tgz", + "integrity": "sha512-u5w79Rd7SU4JaIlA/zFqG+gOiuq25q5VLyZ8E+ijJeILuTxVzZgp2CaGw/UTw6pXYN9XMO9yiqj/nEHmhTG5CA==", + "dev": true }, "node_modules/axios": { "version": "1.7.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", + "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -6403,15 +7564,18 @@ }, "node_modules/axios/node_modules/proxy-from-env": { "version": "1.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, "node_modules/b4a": { "version": "1.6.6", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==" }, "node_modules/babel-loader": { "version": "9.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", "dependencies": { "find-cache-dir": "^4.0.0", "schema-utils": "^4.0.0" @@ -6426,15 +7590,17 @@ }, "node_modules/babel-plugin-import": { "version": "1.13.8", + "resolved": "https://registry.npmjs.org/babel-plugin-import/-/babel-plugin-import-1.13.8.tgz", + "integrity": "sha512-36babpjra5m3gca44V6tSTomeBlPA7cHUynrE2WiQIm3rEGD9xy28MKsx5IdO45EbnpJY7Jrgd00C6Dwt/l/2Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.0.0" } }, "node_modules/babel-plugin-macros": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", "dependencies": { "@babel/runtime": "^7.12.5", "cosmiconfig": "^7.0.0", @@ -6447,7 +7613,8 @@ }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.4.11", - "license": "MIT", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", "dependencies": { "@babel/compat-data": "^7.22.6", "@babel/helper-define-polyfill-provider": "^0.6.2", @@ -6459,14 +7626,16 @@ }, "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { "version": "6.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, "node_modules/babel-plugin-polyfill-corejs3": { "version": "0.10.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.2", "core-js-compat": "^3.38.0" @@ -6477,7 +7646,8 @@ }, "node_modules/babel-plugin-polyfill-regenerator": { "version": "0.6.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.2" }, @@ -6487,16 +7657,19 @@ }, "node_modules/balanced-match": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/bare-events": { "version": "2.4.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz", + "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==", "optional": true }, "node_modules/bare-fs": { "version": "2.3.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.1.tgz", + "integrity": "sha512-W/Hfxc/6VehXlsgFtbB5B4xFcsCl+pAh30cYhoFyXErf6oGrwjh8SwiPAdHgpmWonKuYpZgGywN0SXt7dgsADA==", "optional": true, "dependencies": { "bare-events": "^2.0.0", @@ -6506,12 +7679,14 @@ }, "node_modules/bare-os": { "version": "2.4.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.0.tgz", + "integrity": "sha512-v8DTT08AS/G0F9xrhyLtepoo9EJBJ85FRSMbu1pQUlAf6A8T0tEEQGMVObWeqpjhSPXsE0VGlluFBJu2fdoTNg==", "optional": true }, "node_modules/bare-path": { "version": "2.1.3", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", + "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", "optional": true, "dependencies": { "bare-os": "^2.1.0" @@ -6519,7 +7694,8 @@ }, "node_modules/bare-stream": { "version": "2.1.3", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.1.3.tgz", + "integrity": "sha512-tiDAH9H/kP+tvNO5sczyn9ZAA7utrSMobyDchsnyyXBuUe2FSQWbxhtuHB8jwpHYYevVo2UJpcmvvjrbHboUUQ==", "optional": true, "dependencies": { "streamx": "^2.18.0" @@ -6527,6 +7703,8 @@ }, "node_modules/base64-js": { "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "funding": [ { "type": "github", @@ -6540,17 +7718,18 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/batch": { "version": "0.6.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" }, "node_modules/bcrypt": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz", + "integrity": "sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==", "hasInstallScript": true, - "license": "MIT", "dependencies": { "@mapbox/node-pre-gyp": "^1.0.11", "node-addon-api": "^5.0.0" @@ -6561,26 +7740,30 @@ }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "tweetnacl": "^0.14.3" } }, "node_modules/before-after-hook": { "version": "2.2.3", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" }, "node_modules/big.js": { "version": "5.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "engines": { "node": "*" } }, "node_modules/binary-extensions": { "version": "2.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "engines": { "node": ">=8" }, @@ -6590,7 +7773,8 @@ }, "node_modules/bl": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -6599,21 +7783,25 @@ }, "node_modules/blob-util": { "version": "2.0.2", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true }, "node_modules/bluebird": { "version": "3.7.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true }, "node_modules/bn.js": { "version": "5.2.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, "node_modules/body-parser": { "version": "1.20.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -6635,18 +7823,21 @@ }, "node_modules/body-parser/node_modules/debug": { "version": "2.6.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { "ms": "2.0.0" } }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/body-parser/node_modules/qs": { "version": "6.11.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dependencies": { "side-channel": "^1.0.4" }, @@ -6659,7 +7850,8 @@ }, "node_modules/bonjour-service": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" @@ -6667,21 +7859,25 @@ }, "node_modules/boolbase": { "version": "1.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" }, "node_modules/boolean": { "version": "3.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", "optional": true }, "node_modules/bottleneck": { "version": "2.19.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" }, "node_modules/boxen": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", "dev": true, - "license": "MIT", "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^7.0.1", @@ -6701,8 +7897,9 @@ }, "node_modules/boxen/node_modules/ansi-regex": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -6712,8 +7909,9 @@ }, "node_modules/boxen/node_modules/camelcase": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.16" }, @@ -6723,8 +7921,9 @@ }, "node_modules/boxen/node_modules/chalk": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, - "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -6734,13 +7933,15 @@ }, "node_modules/boxen/node_modules/emoji-regex": { "version": "9.2.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, "node_modules/boxen/node_modules/string-width": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, - "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -6755,8 +7956,9 @@ }, "node_modules/boxen/node_modules/strip-ansi": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -6769,8 +7971,9 @@ }, "node_modules/boxen/node_modules/type-fest": { "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=12.20" }, @@ -6780,14 +7983,16 @@ }, "node_modules/brace-expansion": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/braces": { "version": "3.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dependencies": { "fill-range": "^7.1.1" }, @@ -6797,19 +8002,22 @@ }, "node_modules/brorand": { "version": "1.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" }, "node_modules/browser-resolve": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", "dev": true, - "license": "MIT", "dependencies": { "resolve": "^1.17.0" } }, "node_modules/browserify-aes": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dependencies": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -6821,7 +8029,8 @@ }, "node_modules/browserify-cipher": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "dependencies": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", @@ -6830,7 +8039,8 @@ }, "node_modules/browserify-des": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "dependencies": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", @@ -6840,6 +8050,8 @@ }, "node_modules/browserify-fs": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-fs/-/browserify-fs-1.0.0.tgz", + "integrity": "sha512-8LqHRPuAEKvyTX34R6tsw4bO2ro6j9DmlYBhiYWHRM26Zv2cBw1fJOU0NeUQ0RkXkPn/PFBjhA0dm4AgaBurTg==", "dev": true, "dependencies": { "level-filesystem": "^1.0.1", @@ -6849,7 +8061,8 @@ }, "node_modules/browserify-rsa": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "dependencies": { "bn.js": "^5.0.0", "randombytes": "^2.0.1" @@ -6857,7 +8070,8 @@ }, "node_modules/browserify-sign": { "version": "4.2.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", + "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", "dependencies": { "bn.js": "^5.2.1", "browserify-rsa": "^4.1.0", @@ -6876,11 +8090,13 @@ }, "node_modules/browserify-sign/node_modules/isarray": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/browserify-sign/node_modules/readable-stream": { "version": "2.3.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -6893,28 +8109,34 @@ }, "node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": { "version": "5.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/browserify-sign/node_modules/string_decoder": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": { "version": "5.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/browserify-zlib": { "version": "0.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "dependencies": { "pako": "~1.0.5" } }, "node_modules/browserslist": { "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", "funding": [ { "type": "opencollective", @@ -6929,7 +8151,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001646", "electron-to-chromium": "^1.5.4", @@ -6945,17 +8166,21 @@ }, "node_modules/bson": { "version": "5.5.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-5.5.1.tgz", + "integrity": "sha512-ix0EwukN2EpC0SRWIj/7B5+A6uQMQy6KMREI9qQqvgpkV2frH63T0UDVd1SYedL6dNCmDBYB3QtXi4ISk9YT+g==", "engines": { "node": ">=14.20.1" } }, "node_modules/btoa-lite": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==" }, "node_modules/buffer": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "funding": [ { "type": "github", @@ -6970,7 +8195,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -6978,31 +8202,37 @@ }, "node_modules/buffer-crc32": { "version": "0.2.13", - "license": "MIT", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "engines": { "node": "*" } }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" }, "node_modules/buffer-es6": { "version": "4.9.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/buffer-es6/-/buffer-es6-4.9.3.tgz", + "integrity": "sha512-Ibt+oXxhmeYJSsCkODPqNpPmyegefiD8rfutH1NYGhMZQhSp95Rz7haemgnJ6dxa6LT+JLLbtgOMORRluwKktw==", + "dev": true }, "node_modules/buffer-from": { "version": "1.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "node_modules/buffer-xor": { "version": "1.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" }, "node_modules/builtin-modules": { "version": "3.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "engines": { "node": ">=6" }, @@ -7012,19 +8242,22 @@ }, "node_modules/builtin-status-codes": { "version": "3.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" }, "node_modules/builtins": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^7.0.0" } }, "node_modules/bundle-name": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", "dependencies": { "run-applescript": "^7.0.0" }, @@ -7037,15 +8270,17 @@ }, "node_modules/bytes": { "version": "3.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "engines": { "node": ">= 0.8" } }, "node_modules/c8": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-9.1.0.tgz", + "integrity": "sha512-mBWcT5iqNir1zIkzSPyI3NCR9EZCVI3WUD+AVO17MVWTSFNyUueXE82qTeampNtTr+ilN/5Ua3j24LgbCKjDVg==", "dev": true, - "license": "ISC", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@istanbuljs/schema": "^0.1.3", @@ -7068,15 +8303,17 @@ }, "node_modules/cac": { "version": "6.7.14", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "engines": { "node": ">=8" } }, "node_modules/cacache": { "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/fs": "^2.1.0", "@npmcli/move-file": "^2.0.0", @@ -7103,8 +8340,10 @@ }, "node_modules/cacache/node_modules/glob": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7121,8 +8360,9 @@ }, "node_modules/cacache/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -7132,8 +8372,9 @@ }, "node_modules/cacache/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -7143,16 +8384,18 @@ }, "node_modules/cacheable-lookup": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.16" } }, "node_modules/cacheable-request": { "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/http-cache-semantics": "^4.0.2", "get-stream": "^6.0.1", @@ -7168,8 +8411,9 @@ }, "node_modules/cacheable-request/node_modules/get-stream": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -7179,8 +8423,9 @@ }, "node_modules/cacheable-request/node_modules/mimic-response": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", "dev": true, - "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -7190,15 +8435,17 @@ }, "node_modules/cachedir": { "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", + "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/call-bind": { "version": "1.0.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -7215,6 +8462,8 @@ }, "node_modules/callsite": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==", "dev": true, "engines": { "node": "*" @@ -7222,14 +8471,16 @@ }, "node_modules/callsites": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "engines": { "node": ">=6" } }, "node_modules/camel-case": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -7237,7 +8488,8 @@ }, "node_modules/camelcase": { "version": "6.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "engines": { "node": ">=10" }, @@ -7247,6 +8499,8 @@ }, "node_modules/caniuse-lite": { "version": "1.0.30001651", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", + "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", "funding": [ { "type": "opencollective", @@ -7260,17 +8514,18 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ], - "license": "CC-BY-4.0" + ] }, "node_modules/caseless": { "version": "0.12.0", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true }, "node_modules/chai": { "version": "4.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.3", @@ -7286,7 +8541,8 @@ }, "node_modules/chalk": { "version": "2.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -7298,7 +8554,8 @@ }, "node_modules/check-error": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dependencies": { "get-func-name": "^2.0.2" }, @@ -7308,15 +8565,17 @@ }, "node_modules/check-more-types": { "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/chokidar": { "version": "3.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -7338,20 +8597,24 @@ }, "node_modules/chownr": { "version": "2.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "engines": { "node": ">=10" } }, "node_modules/chrome-trace-event": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "engines": { "node": ">=6.0" } }, "node_modules/ci-info": { "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, "funding": [ { @@ -7359,14 +8622,14 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cipher-base": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -7374,7 +8637,8 @@ }, "node_modules/clean-css": { "version": "5.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dependencies": { "source-map": "~0.6.0" }, @@ -7384,15 +8648,17 @@ }, "node_modules/clean-stack": { "version": "2.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "engines": { "node": ">=6" } }, "node_modules/cli-boxes": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -7402,8 +8668,9 @@ }, "node_modules/cli-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, - "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -7413,7 +8680,8 @@ }, "node_modules/cli-progress": { "version": "3.12.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", + "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", "dependencies": { "string-width": "^4.2.3" }, @@ -7423,6 +8691,8 @@ }, "node_modules/cli-table": { "version": "0.3.11", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", + "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", "dev": true, "dependencies": { "colors": "1.0.3" @@ -7433,8 +8703,9 @@ }, "node_modules/cli-table3": { "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", "dev": true, - "license": "MIT", "dependencies": { "string-width": "^4.2.0" }, @@ -7447,8 +8718,9 @@ }, "node_modules/cli-truncate": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, - "license": "MIT", "dependencies": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" @@ -7462,7 +8734,8 @@ }, "node_modules/cliui": { "version": "8.0.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -7474,7 +8747,8 @@ }, "node_modules/cliui/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -7487,7 +8761,8 @@ }, "node_modules/cliui/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -7497,11 +8772,13 @@ }, "node_modules/cliui/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -7516,15 +8793,17 @@ }, "node_modules/clone": { "version": "0.1.19", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.1.19.tgz", + "integrity": "sha512-IO78I0y6JcSpEPHzK4obKdsL7E7oLdRVDVOLwr2Hkbjsb+Eoz0dxW6tef0WizoKu0gLC4oZSZuEF4U2K6w1WQw==", "dev": true, - "license": "MIT", "engines": { "node": "*" } }, "node_modules/clone-deep": { "version": "4.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -7536,7 +8815,8 @@ }, "node_modules/clone-response": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", "dependencies": { "mimic-response": "^1.0.0" }, @@ -7546,21 +8826,24 @@ }, "node_modules/clone-response/node_modules/mimic-response": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "engines": { "node": ">=4" } }, "node_modules/clsx": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", "engines": { "node": ">=6" } }, "node_modules/color": { "version": "4.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" @@ -7571,18 +8854,21 @@ }, "node_modules/color-convert": { "version": "1.9.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dependencies": { "color-name": "1.1.3" } }, "node_modules/color-name": { "version": "1.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/color-string": { "version": "1.9.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -7590,14 +8876,16 @@ }, "node_modules/color-support": { "version": "1.1.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "bin": { "color-support": "bin.js" } }, "node_modules/color/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -7607,23 +8895,27 @@ }, "node_modules/color/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/colorette": { "version": "2.0.20", - "license": "MIT" + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" }, "node_modules/colors": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.1.90" } }, "node_modules/combined-stream": { "version": "1.0.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -7633,39 +8925,45 @@ }, "node_modules/commander": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/common-path-prefix": { "version": "3.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==" }, "node_modules/common-tags": { "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4.0.0" } }, "node_modules/commondir": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" }, "node_modules/component-emitter": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/compressible": { "version": "2.0.18", - "license": "MIT", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -7675,7 +8973,8 @@ }, "node_modules/compression": { "version": "1.7.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dependencies": { "accepts": "~1.3.5", "bytes": "3.0.0", @@ -7691,37 +8990,43 @@ }, "node_modules/compression/node_modules/bytes": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "engines": { "node": ">= 0.8" } }, "node_modules/compression/node_modules/debug": { "version": "2.6.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { "ms": "2.0.0" } }, "node_modules/compression/node_modules/ms": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/compression/node_modules/safe-buffer": { "version": "5.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/concat-map": { "version": "0.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/concat-stream": { "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "engines": [ "node >= 0.8" ], - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -7731,13 +9036,15 @@ }, "node_modules/concat-stream/node_modules/isarray": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true }, "node_modules/concat-stream/node_modules/readable-stream": { "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -7750,21 +9057,24 @@ }, "node_modules/concat-stream/node_modules/safe-buffer": { "version": "5.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "node_modules/concat-stream/node_modules/string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/concurrently": { "version": "8.2.2", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz", + "integrity": "sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.2", "date-fns": "^2.30.0", @@ -7789,8 +9099,9 @@ }, "node_modules/concurrently/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -7803,8 +9114,9 @@ }, "node_modules/concurrently/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -7818,8 +9130,9 @@ }, "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -7829,8 +9142,9 @@ }, "node_modules/concurrently/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -7840,21 +9154,24 @@ }, "node_modules/concurrently/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/concurrently/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/concurrently/node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -7867,12 +9184,14 @@ }, "node_modules/confbox": { "version": "0.1.7", - "license": "MIT" + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz", + "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==" }, "node_modules/config-chain": { "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", "dev": true, - "license": "MIT", "dependencies": { "ini": "^1.3.4", "proto-list": "~1.2.1" @@ -7880,13 +9199,15 @@ }, "node_modules/config-chain/node_modules/ini": { "version": "1.3.8", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true }, "node_modules/configstore": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "dot-prop": "^6.0.1", "graceful-fs": "^4.2.6", @@ -7903,32 +9224,39 @@ }, "node_modules/connect-history-api-fallback": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "engines": { "node": ">=0.8" } }, "node_modules/consola": { "version": "3.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", "engines": { "node": "^14.18.0 || >=16.10.0" } }, "node_modules/console-browserify": { - "version": "1.2.0" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" }, "node_modules/console-control-strings": { "version": "1.1.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" }, "node_modules/constants-browserify": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" }, "node_modules/content-disposition": { "version": "0.5.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dependencies": { "safe-buffer": "5.2.1" }, @@ -7938,34 +9266,40 @@ }, "node_modules/content-type": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "engines": { "node": ">= 0.6" } }, "node_modules/convert-source-map": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, "node_modules/cookie": { "version": "0.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-signature": { "version": "1.0.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "node_modules/cookiejar": { "version": "2.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true }, "node_modules/core-js-compat": { - "version": "3.38.0", - "license": "MIT", + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", + "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", "dependencies": { "browserslist": "^4.23.3" }, @@ -7976,11 +9310,13 @@ }, "node_modules/core-util-is": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" }, "node_modules/cors": { "version": "2.8.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dependencies": { "object-assign": "^4", "vary": "^1" @@ -7991,7 +9327,8 @@ }, "node_modules/cosmiconfig": { "version": "7.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -8005,7 +9342,8 @@ }, "node_modules/create-ecdh": { "version": "4.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "dependencies": { "bn.js": "^4.1.0", "elliptic": "^6.5.3" @@ -8013,11 +9351,13 @@ }, "node_modules/create-ecdh/node_modules/bn.js": { "version": "4.12.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "node_modules/create-hash": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dependencies": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -8028,7 +9368,8 @@ }, "node_modules/create-hmac": { "version": "1.1.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dependencies": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -8040,12 +9381,14 @@ }, "node_modules/create-require": { "version": "1.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true }, "node_modules/cron": { "version": "2.4.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cron/-/cron-2.4.4.tgz", + "integrity": "sha512-MHlPImXJj3K7x7lyUHjtKEOl69CSlTOWxS89jiFgNkzXfvhVjhMz/nc7/EIfN9vgooZp8XTtXJ1FREdmbyXOiQ==", "dependencies": { "@types/luxon": "~3.3.0", "luxon": "~3.3.0" @@ -8053,7 +9396,8 @@ }, "node_modules/cron-parser": { "version": "4.9.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", + "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", "dependencies": { "luxon": "^3.2.1" }, @@ -8063,14 +9407,16 @@ }, "node_modules/cross-fetch": { "version": "3.1.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", "dependencies": { "node-fetch": "2.6.7" } }, "node_modules/cross-fetch/node_modules/node-fetch": { "version": "2.6.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -8088,7 +9434,8 @@ }, "node_modules/cross-spawn": { "version": "7.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -8100,7 +9447,8 @@ }, "node_modules/crypto-browserify": { "version": "3.12.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "dependencies": { "browserify-cipher": "^1.0.0", "browserify-sign": "^4.0.0", @@ -8120,8 +9468,9 @@ }, "node_modules/crypto-random-string": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^1.0.1" }, @@ -8134,8 +9483,9 @@ }, "node_modules/crypto-random-string/node_modules/type-fest": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -8145,8 +9495,9 @@ }, "node_modules/css-loader": { "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", "dev": true, - "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.33", @@ -8179,7 +9530,8 @@ }, "node_modules/css-select": { "version": "4.3.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.0.1", @@ -8193,7 +9545,8 @@ }, "node_modules/css-what": { "version": "6.1.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "engines": { "node": ">= 6" }, @@ -8203,8 +9556,9 @@ }, "node_modules/cssesc": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, - "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -8214,7 +9568,8 @@ }, "node_modules/cssstyle": { "version": "4.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", + "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==", "dependencies": { "rrweb-cssom": "^0.6.0" }, @@ -8224,17 +9579,20 @@ }, "node_modules/cssstyle/node_modules/rrweb-cssom": { "version": "0.6.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==" }, "node_modules/csstype": { "version": "3.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/cypress": { - "version": "13.13.2", + "version": "13.13.3", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.13.3.tgz", + "integrity": "sha512-hUxPrdbJXhUOTzuML+y9Av7CKoYznbD83pt8g3klgpioEha0emfx4WNIuVRx0C76r0xV2MIwAW9WYiXfVJYFQw==", "dev": true, "hasInstallScript": true, - "license": "MIT", "dependencies": { "@cypress/request": "^3.0.1", "@cypress/xvfb": "^1.2.4", @@ -8288,8 +9646,9 @@ }, "node_modules/cypress-vite": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/cypress-vite/-/cypress-vite-1.5.0.tgz", + "integrity": "sha512-vvTMqJZgI3sN2ylQTi4OQh8LRRjSrfrIdkQD5fOj+EC/e9oHkxS96lif1SyDF1PwailG1tnpJE+VpN6+AwO/rg==", "dev": true, - "license": "MIT", "dependencies": { "chokidar": "^3.5.3", "debug": "^4.3.4" @@ -8300,8 +9659,9 @@ }, "node_modules/cypress/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8314,8 +9674,9 @@ }, "node_modules/cypress/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8329,8 +9690,9 @@ }, "node_modules/cypress/node_modules/chalk/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -8340,8 +9702,9 @@ }, "node_modules/cypress/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8351,13 +9714,15 @@ }, "node_modules/cypress/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/cypress/node_modules/fs-extra": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, - "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -8370,16 +9735,18 @@ }, "node_modules/cypress/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cypress/node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -8392,8 +9759,9 @@ }, "node_modules/dashdash": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, - "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" }, @@ -8403,14 +9771,16 @@ }, "node_modules/data-uri-to-buffer": { "version": "4.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "engines": { "node": ">= 12" } }, "node_modules/data-urls": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "dependencies": { "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.0.0" @@ -8421,7 +9791,8 @@ }, "node_modules/data-urls/node_modules/tr46": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", "dependencies": { "punycode": "^2.3.1" }, @@ -8431,14 +9802,16 @@ }, "node_modules/data-urls/node_modules/webidl-conversions": { "version": "7.0.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "engines": { "node": ">=12" } }, "node_modules/data-urls/node_modules/whatwg-url": { "version": "14.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", "dependencies": { "tr46": "^5.0.0", "webidl-conversions": "^7.0.0" @@ -8449,8 +9822,9 @@ }, "node_modules/data-view-buffer": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -8465,8 +9839,9 @@ }, "node_modules/data-view-byte-length": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -8481,8 +9856,9 @@ }, "node_modules/data-view-byte-offset": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -8497,8 +9873,9 @@ }, "node_modules/date-fns": { "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.21.0" }, @@ -8511,13 +9888,15 @@ } }, "node_modules/dayjs": { - "version": "1.11.12", - "dev": true, - "license": "MIT" + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "dev": true }, "node_modules/debug": { "version": "4.3.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dependencies": { "ms": "2.1.2" }, @@ -8532,11 +9911,13 @@ }, "node_modules/decimal.js": { "version": "10.4.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" }, "node_modules/decompress-response": { "version": "6.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dependencies": { "mimic-response": "^3.1.0" }, @@ -8549,7 +9930,8 @@ }, "node_modules/deep-eql": { "version": "4.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "dependencies": { "type-detect": "^4.0.0" }, @@ -8559,21 +9941,24 @@ }, "node_modules/deep-extend": { "version": "0.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "engines": { "node": ">=4.0.0" } }, "node_modules/deepmerge": { "version": "4.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "engines": { "node": ">=0.10.0" } }, "node_modules/default-browser": { "version": "5.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" @@ -8587,7 +9972,8 @@ }, "node_modules/default-browser-id": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", "engines": { "node": ">=18" }, @@ -8597,7 +9983,8 @@ }, "node_modules/default-gateway": { "version": "6.0.3", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dependencies": { "execa": "^5.0.0" }, @@ -8607,7 +9994,8 @@ }, "node_modules/default-gateway/node_modules/execa": { "version": "5.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -8628,7 +10016,8 @@ }, "node_modules/default-gateway/node_modules/get-stream": { "version": "6.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "engines": { "node": ">=10" }, @@ -8638,29 +10027,33 @@ }, "node_modules/default-gateway/node_modules/human-signals": { "version": "2.1.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "engines": { "node": ">=10.17.0" } }, "node_modules/defer-to-connect": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "engines": { "node": ">=10" } }, "node_modules/deferred-leveldown": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-0.2.0.tgz", + "integrity": "sha512-+WCbb4+ez/SZ77Sdy1iadagFiVzMB89IKOBhglgnUkVxOxRWmmFsz8UDSNWh4Rhq+3wr/vMFlYj+rdEwWUDdng==", "dev": true, - "license": "MIT", "dependencies": { "abstract-leveldown": "~0.12.1" } }, "node_modules/define-data-property": { "version": "1.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -8675,14 +10068,16 @@ }, "node_modules/define-lazy-prop": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "engines": { "node": ">=8" } }, "node_modules/define-properties": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -8697,19 +10092,22 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "engines": { "node": ">=0.4.0" } }, "node_modules/delegates": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" }, "node_modules/depcheck": { "version": "1.4.7", + "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-1.4.7.tgz", + "integrity": "sha512-1lklS/bV5chOxwNKA/2XUUk/hPORp8zihZsXflr8x0kLwmcZ9Y9BsS6Hs3ssvA+2wUVbG0U2Ciqvm1SokNjPkA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/parser": "^7.23.0", "@babel/traverse": "^7.23.2", @@ -8744,8 +10142,9 @@ }, "node_modules/depcheck/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -8758,8 +10157,9 @@ }, "node_modules/depcheck/node_modules/cliui": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -8768,8 +10168,9 @@ }, "node_modules/depcheck/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -8779,13 +10180,15 @@ }, "node_modules/depcheck/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/depcheck/node_modules/wrap-ansi": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -8800,8 +10203,9 @@ }, "node_modules/depcheck/node_modules/yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -8817,31 +10221,36 @@ }, "node_modules/depcheck/node_modules/yargs-parser": { "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/depd": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "engines": { "node": ">= 0.8" } }, "node_modules/deprecation": { "version": "2.3.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" }, "node_modules/deps-regex": { "version": "0.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.2.0.tgz", + "integrity": "sha512-PwuBojGMQAYbWkMXOY9Pd/NWCDNHVH12pnS7WHqZkTSeMESe4hwnKKRp0yR87g37113x4JPbo/oIvXY+s/f56Q==", + "dev": true }, "node_modules/des.js": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", "dependencies": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" @@ -8849,7 +10258,8 @@ }, "node_modules/destroy": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -8857,27 +10267,31 @@ }, "node_modules/detect-file": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/detect-libc": { "version": "2.0.3", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "engines": { "node": ">=8" } }, "node_modules/detect-node": { "version": "2.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" }, "node_modules/dezalgo": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", "dev": true, - "license": "ISC", "dependencies": { "asap": "^2.0.0", "wrappy": "1" @@ -8885,14 +10299,16 @@ }, "node_modules/diff-sequences": { "version": "29.6.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/diffie-hellman": { "version": "5.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dependencies": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", @@ -8901,12 +10317,14 @@ }, "node_modules/diffie-hellman/node_modules/bn.js": { "version": "4.12.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "node_modules/dir-glob": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -8916,7 +10334,8 @@ }, "node_modules/dns-packet": { "version": "5.6.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" }, @@ -8926,14 +10345,16 @@ }, "node_modules/dom-converter": { "version": "0.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", "dependencies": { "utila": "~0.4" } }, "node_modules/dom-helpers": { "version": "5.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", "dependencies": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" @@ -8941,7 +10362,8 @@ }, "node_modules/dom-serializer": { "version": "1.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", @@ -8953,14 +10375,16 @@ }, "node_modules/dom-serializer/node_modules/entities": { "version": "2.2.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/domain-browser": { "version": "5.7.0", - "license": "Artistic-2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-5.7.0.tgz", + "integrity": "sha512-edTFu0M/7wO1pXY6GDxVNVW086uqwWYIHP98txhcPyV995X21JIH2DtYp33sQJOupYoXKe9RwTw2Ya2vWaquTQ==", "engines": { "node": ">=4" }, @@ -8970,17 +10394,19 @@ }, "node_modules/domelementtype": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/fb55" } - ], - "license": "BSD-2-Clause" + ] }, "node_modules/domhandler": { "version": "4.3.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dependencies": { "domelementtype": "^2.2.0" }, @@ -8993,7 +10419,8 @@ }, "node_modules/domutils": { "version": "2.8.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -9005,7 +10432,8 @@ }, "node_modules/dot-case": { "version": "3.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -9013,8 +10441,9 @@ }, "node_modules/dot-prop": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", "dev": true, - "license": "MIT", "dependencies": { "is-obj": "^2.0.0" }, @@ -9027,7 +10456,8 @@ }, "node_modules/dotenv": { "version": "16.4.5", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "engines": { "node": ">=12" }, @@ -9037,12 +10467,14 @@ }, "node_modules/eastasianwidth": { "version": "0.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, "node_modules/ecc-jsbn": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, - "license": "MIT", "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -9050,24 +10482,28 @@ }, "node_modules/ecc-jsbn/node_modules/jsbn": { "version": "0.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "dependencies": { "safe-buffer": "^5.0.1" } }, "node_modules/ee-first": { "version": "1.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron": { "version": "25.8.4", + "resolved": "https://registry.npmjs.org/electron/-/electron-25.8.4.tgz", + "integrity": "sha512-hUYS3RGdaa6E1UWnzeGnsdsBYOggwMMg4WGxNGvAoWtmRrr6J1BsjFW/yRq4WsJHJce2HdzQXtz4OGXV6yUCLg==", "hasInstallScript": true, - "license": "MIT", "dependencies": { "@electron/get": "^2.0.0", "@types/node": "^18.11.18", @@ -9081,19 +10517,27 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.7", - "license": "ISC" + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", + "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==" }, "node_modules/electron/node_modules/@types/node": { - "version": "18.19.44", - "license": "MIT", + "version": "18.19.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz", + "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==", "dependencies": { "undici-types": "~5.26.4" } }, + "node_modules/electron/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/elliptic": { "version": "6.5.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.7.tgz", + "integrity": "sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -9106,29 +10550,34 @@ }, "node_modules/elliptic/node_modules/bn.js": { "version": "4.12.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "node_modules/emoji-regex": { "version": "8.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/emojis-list": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "engines": { "node": ">= 4" } }, "node_modules/encodeurl": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "engines": { "node": ">= 0.8" } }, "node_modules/encoding": { "version": "0.1.13", - "license": "MIT", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "optional": true, "dependencies": { "iconv-lite": "^0.6.2" @@ -9136,7 +10585,8 @@ }, "node_modules/encoding/node_modules/iconv-lite": { "version": "0.6.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -9147,14 +10597,16 @@ }, "node_modules/end-of-stream": { "version": "1.4.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dependencies": { "once": "^1.4.0" } }, "node_modules/engine.io-client": { "version": "6.5.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz", + "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", @@ -9165,7 +10617,8 @@ }, "node_modules/engine.io-client/node_modules/ws": { "version": "8.17.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "engines": { "node": ">=10.0.0" }, @@ -9184,14 +10637,16 @@ }, "node_modules/engine.io-parser": { "version": "5.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "engines": { "node": ">=10.0.0" } }, "node_modules/enhanced-resolve": { "version": "5.17.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -9202,8 +10657,9 @@ }, "node_modules/enquirer": { "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" @@ -9213,9 +10669,9 @@ } }, "node_modules/entities": { - "version": "5.0.0", - "dev": true, - "license": "BSD-2-Clause", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "engines": { "node": ">=0.12" }, @@ -9225,14 +10681,16 @@ }, "node_modules/env-paths": { "version": "2.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "engines": { "node": ">=6" } }, "node_modules/envinfo": { "version": "7.13.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", "bin": { "envinfo": "dist/cli.js" }, @@ -9242,13 +10700,15 @@ }, "node_modules/err-code": { "version": "2.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true }, "node_modules/errno": { "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, - "license": "MIT", "dependencies": { "prr": "~1.0.1" }, @@ -9258,15 +10718,17 @@ }, "node_modules/error-ex": { "version": "1.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/es-abstract": { "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "dev": true, - "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", @@ -9324,7 +10786,8 @@ }, "node_modules/es-define-property": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -9334,23 +10797,27 @@ }, "node_modules/es-errors": { "version": "1.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "engines": { "node": ">= 0.4" } }, "node_modules/es-main": { "version": "1.3.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/es-main/-/es-main-1.3.0.tgz", + "integrity": "sha512-AzORKdz1Zt97TzbYQnIrI3ZiibWpRXUfpo/w0xOJ20GpNYd2bd3MU9m31zS/aJ1TJl6JfLTok83Y8HjNunYT0A==" }, "node_modules/es-module-lexer": { "version": "1.5.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==" }, "node_modules/es-object-atoms": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", "dev": true, - "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -9360,8 +10827,9 @@ }, "node_modules/es-set-tostringtag": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, - "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4", "has-tostringtag": "^1.0.2", @@ -9373,8 +10841,9 @@ }, "node_modules/es-to-primitive": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, - "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -9389,13 +10858,15 @@ }, "node_modules/es6-error": { "version": "4.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "optional": true }, "node_modules/esbuild": { "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "hasInstallScript": true, - "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -9428,12 +10899,253 @@ "@esbuild/win32-x64": "0.21.5" } }, + "node_modules/esbuild/node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/esbuild/node_modules/@esbuild/linux-x64": { "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -9442,17 +11154,109 @@ "node": ">=12" } }, + "node_modules/esbuild/node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild/node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/escalade": { "version": "3.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "engines": { "node": ">=6" } }, "node_modules/escape-goat": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -9462,18 +11266,21 @@ }, "node_modules/escape-html": { "version": "1.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "node_modules/escape-string-regexp": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "engines": { "node": ">=0.8.0" } }, "node_modules/eslint-scope": { "version": "5.1.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -9484,8 +11291,9 @@ }, "node_modules/esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -9496,7 +11304,8 @@ }, "node_modules/esrecurse": { "version": "4.3.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dependencies": { "estraverse": "^5.2.0" }, @@ -9506,62 +11315,72 @@ }, "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "engines": { "node": ">=4.0" } }, "node_modules/estraverse": { "version": "4.3.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "engines": { "node": ">=4.0" } }, "node_modules/estree-walker": { "version": "2.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, "node_modules/esutils": { "version": "2.0.3", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "engines": { "node": ">=0.10.0" } }, "node_modules/etag": { "version": "1.8.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "engines": { "node": ">= 0.6" } }, "node_modules/event-target-shim": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "engines": { "node": ">=6" } }, "node_modules/eventemitter2": { "version": "6.4.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", + "dev": true }, "node_modules/eventemitter3": { "version": "5.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" }, "node_modules/events": { "version": "3.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "engines": { "node": ">=0.8.x" } }, "node_modules/evp_bytestokey": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dependencies": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -9569,8 +11388,9 @@ }, "node_modules/execa": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^7.0.0", "get-stream": "^5.0.0", @@ -9591,8 +11411,9 @@ }, "node_modules/executable": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", "dev": true, - "license": "MIT", "dependencies": { "pify": "^2.2.0" }, @@ -9602,15 +11423,17 @@ }, "node_modules/expand-template": { "version": "2.0.3", - "license": "(MIT OR WTFPL)", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", "engines": { "node": ">=6" } }, "node_modules/expand-tilde": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", "dev": true, - "license": "MIT", "dependencies": { "homedir-polyfill": "^1.0.1" }, @@ -9620,12 +11443,14 @@ }, "node_modules/exponential-backoff": { "version": "3.1.1", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true }, "node_modules/express": { "version": "4.19.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -9665,7 +11490,8 @@ }, "node_modules/express-rate-limit": { "version": "7.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.4.0.tgz", + "integrity": "sha512-v1204w3cXu5gCDmAvgvzI6qjzZzoMWKnyVDk3ACgfswTQLYiGen+r8w0VnXnGMmzEN/g8fwIQ4JrFFd4ZP6ssg==", "engines": { "node": ">= 16" }, @@ -9678,18 +11504,21 @@ }, "node_modules/express/node_modules/debug": { "version": "2.6.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { "ms": "2.0.0" } }, "node_modules/express/node_modules/ms": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/express/node_modules/qs": { "version": "6.11.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dependencies": { "side-channel": "^1.0.4" }, @@ -9702,12 +11531,14 @@ }, "node_modules/extend": { "version": "3.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "node_modules/extract-zip": { "version": "2.0.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -9725,23 +11556,27 @@ }, "node_modules/extsprintf": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "dev": true, "engines": [ "node >=0.6.0" - ], - "license": "MIT" + ] }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-fifo": { "version": "1.3.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" }, "node_modules/fast-glob": { "version": "3.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -9755,39 +11590,46 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fast-memoize": { "version": "2.5.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", + "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==", + "dev": true }, "node_modules/fast-safe-stringify": { "version": "2.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true }, "node_modules/fast-uri": { "version": "3.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==" }, "node_modules/fastest-levenshtein": { "version": "1.0.16", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "engines": { "node": ">= 4.9.1" } }, "node_modules/fastq": { "version": "1.17.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/faye-websocket": { "version": "0.11.4", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dependencies": { "websocket-driver": ">=0.5.1" }, @@ -9797,13 +11639,16 @@ }, "node_modules/fd-slicer": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dependencies": { "pend": "~1.2.0" } }, "node_modules/fetch-blob": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", "funding": [ { "type": "github", @@ -9814,7 +11659,6 @@ "url": "https://paypal.me/jimmywarting" } ], - "license": "MIT", "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" @@ -9825,8 +11669,9 @@ }, "node_modules/figures": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, - "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -9839,7 +11684,8 @@ }, "node_modules/fill-range": { "version": "7.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -9849,7 +11695,8 @@ }, "node_modules/finalhandler": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -9865,18 +11712,21 @@ }, "node_modules/finalhandler/node_modules/debug": { "version": "2.6.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { "ms": "2.0.0" } }, "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/find-cache-dir": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dependencies": { "common-path-prefix": "^3.0.0", "pkg-dir": "^7.0.0" @@ -9890,12 +11740,14 @@ }, "node_modules/find-root": { "version": "1.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" }, "node_modules/find-up": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -9909,8 +11761,9 @@ }, "node_modules/findup-sync": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", + "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", "dev": true, - "license": "MIT", "dependencies": { "detect-file": "^1.0.0", "is-glob": "^4.0.3", @@ -9923,20 +11776,22 @@ }, "node_modules/flat": { "version": "5.0.2", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "bin": { "flat": "cli.js" } }, "node_modules/follow-redirects": { "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], - "license": "MIT", "engines": { "node": ">=4.0" }, @@ -9948,19 +11803,22 @@ }, "node_modules/for-each": { "version": "0.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dependencies": { "is-callable": "^1.1.3" } }, "node_modules/foreach": { "version": "2.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", + "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==", + "dev": true }, "node_modules/foreground-child": { "version": "3.3.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -9974,7 +11832,8 @@ }, "node_modules/foreground-child/node_modules/signal-exit": { "version": "4.1.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "engines": { "node": ">=14" }, @@ -9984,15 +11843,17 @@ }, "node_modules/forever-agent": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/form-data": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -10004,15 +11865,17 @@ }, "node_modules/form-data-encoder": { "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 14.17" } }, "node_modules/formdata-polyfill": { "version": "4.0.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", "dependencies": { "fetch-blob": "^3.1.2" }, @@ -10022,8 +11885,9 @@ }, "node_modules/formidable": { "version": "3.5.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.1.tgz", + "integrity": "sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==", "dev": true, - "license": "MIT", "dependencies": { "dezalgo": "^1.0.4", "hexoid": "^1.0.0", @@ -10035,34 +11899,39 @@ }, "node_modules/forwarded": { "version": "0.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "engines": { "node": ">= 0.6" } }, "node_modules/fp-and-or": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/fp-and-or/-/fp-and-or-0.1.4.tgz", + "integrity": "sha512-+yRYRhpnFPWXSly/6V4Lw9IfOV26uu30kynGJ03PW+MnjOEQe45RZ141QcS0aJehYBYA50GfCDnsRbFJdhssRw==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/fresh": { "version": "0.5.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "engines": { "node": ">= 0.6" } }, "node_modules/fs-constants": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "node_modules/fs-extra": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -10074,7 +11943,8 @@ }, "node_modules/fs-minipass": { "version": "2.1.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dependencies": { "minipass": "^3.0.0" }, @@ -10084,7 +11954,8 @@ }, "node_modules/fs-minipass/node_modules/minipass": { "version": "3.3.6", - "license": "ISC", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dependencies": { "yallist": "^4.0.0" }, @@ -10094,19 +11965,35 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, "node_modules/function-bind": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/function.prototype.name": { "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -10122,14 +12009,17 @@ }, "node_modules/functions-have-names": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/fwd-stream": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fwd-stream/-/fwd-stream-1.0.4.tgz", + "integrity": "sha512-q2qaK2B38W07wfPSQDKMiKOD5Nzv2XyuvQlrmh1q0pxyHNanKHq8lwQ6n9zHucAwA5EbzRJKEgds2orn88rYTg==", "dev": true, "dependencies": { "readable-stream": "~1.0.26-4" @@ -10137,13 +12027,15 @@ }, "node_modules/fwd-stream/node_modules/isarray": { "version": "0.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true }, "node_modules/fwd-stream/node_modules/readable-stream": { "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -10153,12 +12045,15 @@ }, "node_modules/fwd-stream/node_modules/string_decoder": { "version": "0.10.31", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true }, "node_modules/gauge": { "version": "3.0.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.2", @@ -10176,28 +12071,32 @@ }, "node_modules/gensync": { "version": "1.0.0-beta.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { "version": "2.0.5", - "license": "ISC", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-func-name": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "engines": { "node": "*" } }, "node_modules/get-intrinsic": { "version": "1.2.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -10214,8 +12113,9 @@ }, "node_modules/get-stdin": { "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -10225,7 +12125,8 @@ }, "node_modules/get-stream": { "version": "5.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dependencies": { "pump": "^3.0.0" }, @@ -10238,8 +12139,9 @@ }, "node_modules/get-symbol-description": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "es-errors": "^1.3.0", @@ -10254,8 +12156,9 @@ }, "node_modules/get-tsconfig": { "version": "4.7.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz", + "integrity": "sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==", "dev": true, - "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" }, @@ -10265,27 +12168,31 @@ }, "node_modules/getos": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", "dev": true, - "license": "MIT", "dependencies": { "async": "^3.2.0" } }, "node_modules/getpass": { "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, - "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" } }, "node_modules/github-from-package": { "version": "0.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" }, "node_modules/glob": { "version": "10.4.5", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -10303,7 +12210,8 @@ }, "node_modules/glob-parent": { "version": "5.1.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dependencies": { "is-glob": "^4.0.1" }, @@ -10313,11 +12221,13 @@ }, "node_modules/glob-to-regexp": { "version": "0.4.1", - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, "node_modules/glob/node_modules/minimatch": { "version": "9.0.5", - "license": "ISC", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -10330,7 +12240,8 @@ }, "node_modules/global-agent": { "version": "3.0.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", "optional": true, "dependencies": { "boolean": "^3.0.1", @@ -10346,8 +12257,9 @@ }, "node_modules/global-dirs": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", "dev": true, - "license": "MIT", "dependencies": { "ini": "2.0.0" }, @@ -10360,8 +12272,9 @@ }, "node_modules/global-modules": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", "dev": true, - "license": "MIT", "dependencies": { "global-prefix": "^1.0.1", "is-windows": "^1.0.1", @@ -10373,8 +12286,9 @@ }, "node_modules/global-prefix": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", "dev": true, - "license": "MIT", "dependencies": { "expand-tilde": "^2.0.2", "homedir-polyfill": "^1.0.1", @@ -10388,13 +12302,15 @@ }, "node_modules/global-prefix/node_modules/ini": { "version": "1.3.8", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true }, "node_modules/global-prefix/node_modules/which": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -10404,15 +12320,17 @@ }, "node_modules/globals": { "version": "11.12.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "engines": { "node": ">=4" } }, "node_modules/globalthis": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "devOptional": true, - "license": "MIT", "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" @@ -10426,8 +12344,9 @@ }, "node_modules/globby": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -10445,11 +12364,13 @@ }, "node_modules/globrex": { "version": "0.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" }, "node_modules/gopd": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -10459,8 +12380,9 @@ }, "node_modules/got": { "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", "dev": true, - "license": "MIT", "dependencies": { "@sindresorhus/is": "^5.2.0", "@szmarczak/http-timer": "^5.0.1", @@ -10483,8 +12405,9 @@ }, "node_modules/got/node_modules/get-stream": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -10494,30 +12417,35 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "license": "ISC" + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/handle-thing": { "version": "2.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" }, "node_modules/has-bigints": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-flag": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "engines": { "node": ">=4" } }, "node_modules/has-property-descriptors": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { "es-define-property": "^1.0.0" }, @@ -10527,7 +12455,8 @@ }, "node_modules/has-proto": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "engines": { "node": ">= 0.4" }, @@ -10537,7 +12466,8 @@ }, "node_modules/has-symbols": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "engines": { "node": ">= 0.4" }, @@ -10547,7 +12477,8 @@ }, "node_modules/has-tostringtag": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dependencies": { "has-symbols": "^1.0.3" }, @@ -10560,12 +12491,14 @@ }, "node_modules/has-unicode": { "version": "2.0.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, "node_modules/has-yarn": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", + "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", "dev": true, - "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -10575,7 +12508,8 @@ }, "node_modules/hash-base": { "version": "3.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -10586,7 +12520,8 @@ }, "node_modules/hash.js": { "version": "1.1.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -10594,7 +12529,8 @@ }, "node_modules/hasown": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { "function-bind": "^1.1.2" }, @@ -10604,22 +12540,25 @@ }, "node_modules/he": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "bin": { "he": "bin/he" } }, "node_modules/hexoid": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/hmac-drbg": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -10628,19 +12567,22 @@ }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", "dependencies": { "react-is": "^16.7.0" } }, "node_modules/hoist-non-react-statics/node_modules/react-is": { "version": "16.13.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/homedir-polyfill": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", "dev": true, - "license": "MIT", "dependencies": { "parse-passwd": "^1.0.0" }, @@ -10650,8 +12592,9 @@ }, "node_modules/hosted-git-info": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -10661,7 +12604,8 @@ }, "node_modules/hpack.js": { "version": "2.1.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -10671,11 +12615,13 @@ }, "node_modules/hpack.js/node_modules/isarray": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/hpack.js/node_modules/readable-stream": { "version": "2.3.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -10688,18 +12634,21 @@ }, "node_modules/hpack.js/node_modules/safe-buffer": { "version": "5.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/hpack.js/node_modules/string_decoder": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/html-encoding-sniffer": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "dependencies": { "whatwg-encoding": "^3.1.1" }, @@ -10709,6 +12658,8 @@ }, "node_modules/html-entities": { "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", "funding": [ { "type": "github", @@ -10718,17 +12669,18 @@ "type": "patreon", "url": "https://patreon.com/mdevils" } - ], - "license": "MIT" + ] }, "node_modules/html-escaper": { "version": "2.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true }, "node_modules/html-minifier-terser": { "version": "6.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "dependencies": { "camel-case": "^4.1.2", "clean-css": "^5.2.2", @@ -10747,21 +12699,24 @@ }, "node_modules/html-minifier-terser/node_modules/commander": { "version": "8.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "engines": { "node": ">= 12" } }, "node_modules/html-parse-stringify": { "version": "3.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", "dependencies": { "void-elements": "3.1.0" } }, "node_modules/html-webpack-plugin": { "version": "5.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", "dependencies": { "@types/html-minifier-terser": "^6.0.0", "html-minifier-terser": "^6.0.2", @@ -10791,8 +12746,9 @@ }, "node_modules/htmlhint": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/htmlhint/-/htmlhint-1.1.4.tgz", + "integrity": "sha512-tSKPefhIaaWDk/vKxAOQbN+QwZmDeJCq3bZZGbJMoMQAfTjepudC+MkuT9MOBbuQI3dLLzDWbmU7fLV3JASC7Q==", "dev": true, - "license": "MIT", "dependencies": { "async": "3.2.3", "chalk": "^4.1.2", @@ -10809,8 +12765,9 @@ }, "node_modules/htmlhint/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -10823,13 +12780,15 @@ }, "node_modules/htmlhint/node_modules/async": { "version": "3.2.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "dev": true }, "node_modules/htmlhint/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -10837,8 +12796,9 @@ }, "node_modules/htmlhint/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10852,8 +12812,9 @@ }, "node_modules/htmlhint/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -10863,21 +12824,25 @@ }, "node_modules/htmlhint/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/htmlhint/node_modules/commander": { "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "dev": true, - "license": "MIT", "engines": { "node": "^12.20.0 || >=14" } }, "node_modules/htmlhint/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10895,16 +12860,18 @@ }, "node_modules/htmlhint/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/htmlhint/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -10914,8 +12881,9 @@ }, "node_modules/htmlhint/node_modules/node-fetch": { "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, - "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -10933,8 +12901,9 @@ }, "node_modules/htmlhint/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -10944,6 +12913,8 @@ }, "node_modules/htmlparser2": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { @@ -10951,7 +12922,6 @@ "url": "https://github.com/sponsors/fb55" } ], - "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", @@ -10961,22 +12931,26 @@ }, "node_modules/htmlparser2/node_modules/entities": { "version": "2.2.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/http-cache-semantics": { "version": "4.1.1", - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" }, "node_modules/http-deceiver": { "version": "1.2.7", - "license": "MIT" + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" }, "node_modules/http-errors": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -10990,11 +12964,13 @@ }, "node_modules/http-parser-js": { "version": "0.5.8", - "license": "MIT" + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" }, "node_modules/http-proxy": { "version": "1.18.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -11006,8 +12982,9 @@ }, "node_modules/http-proxy-agent": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, - "license": "MIT", "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -11019,7 +12996,8 @@ }, "node_modules/http-proxy-middleware": { "version": "2.0.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", @@ -11041,12 +13019,14 @@ }, "node_modules/http-proxy/node_modules/eventemitter3": { "version": "4.0.7", - "license": "MIT" + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, "node_modules/http-signature": { "version": "1.3.6", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", + "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", "dev": true, - "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^2.0.2", @@ -11058,8 +13038,9 @@ }, "node_modules/http2-wrapper": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", "dev": true, - "license": "MIT", "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.2.0" @@ -11070,11 +13051,13 @@ }, "node_modules/https-browserify": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" }, "node_modules/https-proxy-agent": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dependencies": { "agent-base": "6", "debug": "4" @@ -11085,29 +13068,34 @@ }, "node_modules/human-signals": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=8.12.0" } }, "node_modules/humanize-ms": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.0.0" } }, "node_modules/hyperdyperid": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", "engines": { "node": ">=10.18" } }, "node_modules/i18next": { "version": "21.10.0", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-21.10.0.tgz", + "integrity": "sha512-YeuIBmFsGjUfO3qBmMOc0rQaun4mIpGKET5WDwvu8lU7gvwpcariZLNtL0Fzj+zazcHUrlXHiptcFhBMFaxzfg==", "funding": [ { "type": "individual", @@ -11122,32 +13110,35 @@ "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" } ], - "license": "MIT", "dependencies": { "@babel/runtime": "^7.17.2" } }, "node_modules/i18next-browser-languagedetector": { "version": "7.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.2.1.tgz", + "integrity": "sha512-h/pM34bcH6tbz8WgGXcmWauNpQupCGr25XPp9cZwZInR9XHSjIFDYp1SIok7zSPsTOMxdvuLyu86V+g2Kycnfw==", "dependencies": { "@babel/runtime": "^7.23.2" } }, "node_modules/i18next-http-backend": { "version": "1.4.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-1.4.5.tgz", + "integrity": "sha512-tLuHWuLWl6CmS07o+UB6EcQCaUjrZ1yhdseIN7sfq0u7phsMePJ8pqlGhIAdRDPF/q7ooyo5MID5DRFBCH+x5w==", "dependencies": { "cross-fetch": "3.1.5" } }, "node_modules/i18next-http-middleware": { "version": "3.6.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/i18next-http-middleware/-/i18next-http-middleware-3.6.0.tgz", + "integrity": "sha512-pLyTOC8Dzj83byN0s4hd/i/Ewg6T36YjMrc+Zfnqz2Ca0G5ab9IPvPR8xZqr6TS0s/ZtPs2MZucDkWgqoRmNXA==" }, "node_modules/iconv-lite": { "version": "0.4.24", - "license": "MIT", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -11157,8 +13148,9 @@ }, "node_modules/icss-utils": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, - "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -11168,11 +13160,14 @@ }, "node_modules/idb-wrapper": { "version": "1.7.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/idb-wrapper/-/idb-wrapper-1.7.2.tgz", + "integrity": "sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg==", + "dev": true }, "node_modules/ieee754": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ { "type": "github", @@ -11186,26 +13181,28 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "BSD-3-Clause" + ] }, "node_modules/ignore": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/ignore-by-default": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true }, "node_modules/ignore-walk": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", + "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", "dev": true, - "license": "ISC", "dependencies": { "minimatch": "^5.0.1" }, @@ -11215,8 +13212,9 @@ }, "node_modules/ignore-walk/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -11226,7 +13224,8 @@ }, "node_modules/import-fresh": { "version": "3.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -11240,14 +13239,16 @@ }, "node_modules/import-fresh/node_modules/resolve-from": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "engines": { "node": ">=4" } }, "node_modules/import-from-esm": { "version": "1.3.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-1.3.4.tgz", + "integrity": "sha512-7EyUlPFC0HOlBDpUFGfYstsU7XHxZJKAAMzCT8wZ0hMW7b+hG51LIKTDcsgtz8Pu6YC0HqRVbX+rVUtsGMUKvg==", "dependencies": { "debug": "^4.3.4", "import-meta-resolve": "^4.0.0" @@ -11258,15 +13259,17 @@ }, "node_modules/import-lazy": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/import-local": { "version": "3.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -11283,7 +13286,8 @@ }, "node_modules/import-local/node_modules/find-up": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -11294,7 +13298,8 @@ }, "node_modules/import-local/node_modules/locate-path": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dependencies": { "p-locate": "^4.1.0" }, @@ -11304,7 +13309,8 @@ }, "node_modules/import-local/node_modules/p-limit": { "version": "2.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dependencies": { "p-try": "^2.0.0" }, @@ -11317,7 +13323,8 @@ }, "node_modules/import-local/node_modules/p-locate": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dependencies": { "p-limit": "^2.2.0" }, @@ -11327,7 +13334,8 @@ }, "node_modules/import-local/node_modules/pkg-dir": { "version": "4.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dependencies": { "find-up": "^4.0.0" }, @@ -11337,7 +13345,8 @@ }, "node_modules/import-meta-resolve": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -11345,31 +13354,38 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "engines": { "node": ">=8" } }, "node_modules/indexof": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==", "dev": true }, "node_modules/infer-owner": { "version": "1.0.4", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true }, "node_modules/inflight": { "version": "1.0.6", - "license": "ISC", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -11377,20 +13393,23 @@ }, "node_modules/inherits": { "version": "2.0.4", - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/internal-slot": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, - "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.0", @@ -11402,14 +13421,16 @@ }, "node_modules/interpret": { "version": "3.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "engines": { "node": ">=10.13.0" } }, "node_modules/ip-address": { "version": "9.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" @@ -11420,17 +13441,21 @@ }, "node_modules/ip-address/node_modules/sprintf-js": { "version": "1.1.3", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" }, "node_modules/ipaddr.js": { "version": "1.9.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "engines": { "node": ">= 0.10" } }, "node_modules/is": { "version": "0.2.7", + "resolved": "https://registry.npmjs.org/is/-/is-0.2.7.tgz", + "integrity": "sha512-ajQCouIvkcSnl2iRdK70Jug9mohIHVX9uKpoWnl115ov0R5mzBvRrXxrnHbsA+8AdwCwc/sfw7HXmd4I5EJBdQ==", "dev": true, "engines": { "node": "*" @@ -11438,7 +13463,8 @@ }, "node_modules/is-arguments": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -11452,8 +13478,9 @@ }, "node_modules/is-array-buffer": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1" @@ -11467,12 +13494,14 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, "node_modules/is-bigint": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, - "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" }, @@ -11482,7 +13511,8 @@ }, "node_modules/is-binary-path": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -11492,8 +13522,9 @@ }, "node_modules/is-boolean-object": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -11507,7 +13538,8 @@ }, "node_modules/is-builtin-module": { "version": "3.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", "dependencies": { "builtin-modules": "^3.3.0" }, @@ -11520,7 +13552,8 @@ }, "node_modules/is-callable": { "version": "1.2.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "engines": { "node": ">= 0.4" }, @@ -11530,8 +13563,9 @@ }, "node_modules/is-ci": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", "dev": true, - "license": "MIT", "dependencies": { "ci-info": "^3.2.0" }, @@ -11541,7 +13575,8 @@ }, "node_modules/is-core-module": { "version": "2.15.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", "dependencies": { "hasown": "^2.0.2" }, @@ -11554,8 +13589,9 @@ }, "node_modules/is-data-view": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "dev": true, - "license": "MIT", "dependencies": { "is-typed-array": "^1.1.13" }, @@ -11568,8 +13604,9 @@ }, "node_modules/is-date-object": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, - "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -11582,7 +13619,8 @@ }, "node_modules/is-docker": { "version": "2.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "bin": { "is-docker": "cli.js" }, @@ -11595,21 +13633,24 @@ }, "node_modules/is-extglob": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "engines": { "node": ">=8" } }, "node_modules/is-generator-function": { "version": "1.0.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -11622,7 +13663,8 @@ }, "node_modules/is-glob": { "version": "4.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dependencies": { "is-extglob": "^2.1.1" }, @@ -11632,7 +13674,8 @@ }, "node_modules/is-inside-container": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dependencies": { "is-docker": "^3.0.0" }, @@ -11648,7 +13691,8 @@ }, "node_modules/is-inside-container/node_modules/is-docker": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "bin": { "is-docker": "cli.js" }, @@ -11661,8 +13705,9 @@ }, "node_modules/is-installed-globally": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "dev": true, - "license": "MIT", "dependencies": { "global-dirs": "^3.0.0", "is-path-inside": "^3.0.2" @@ -11676,16 +13721,19 @@ }, "node_modules/is-lambda": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true }, "node_modules/is-module": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" }, "node_modules/is-nan": { "version": "1.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3" @@ -11699,8 +13747,9 @@ }, "node_modules/is-negative-zero": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -11710,7 +13759,8 @@ }, "node_modules/is-network-error": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", + "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", "engines": { "node": ">=16" }, @@ -11720,8 +13770,9 @@ }, "node_modules/is-npm": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", + "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", "dev": true, - "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -11731,15 +13782,17 @@ }, "node_modules/is-number": { "version": "7.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "engines": { "node": ">=0.12.0" } }, "node_modules/is-number-object": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, - "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -11752,27 +13805,32 @@ }, "node_modules/is-obj": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-object": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-0.1.2.tgz", + "integrity": "sha512-GkfZZlIZtpkFrqyAXPQSRBMsaHAw+CgoKe2HXAkjd/sfoI9+hS8PT4wg2rJxdQyUKr7N2vHJbg7/jQtE5l5vBQ==", "dev": true }, "node_modules/is-path-inside": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-plain-obj": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "engines": { "node": ">=10" }, @@ -11782,7 +13840,8 @@ }, "node_modules/is-plain-object": { "version": "2.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dependencies": { "isobject": "^3.0.1" }, @@ -11792,19 +13851,22 @@ }, "node_modules/is-potential-custom-element-name": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" }, "node_modules/is-reference": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dependencies": { "@types/estree": "*" } }, "node_modules/is-regex": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -11818,8 +13880,9 @@ }, "node_modules/is-shared-array-buffer": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7" }, @@ -11832,7 +13895,8 @@ }, "node_modules/is-stream": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "engines": { "node": ">=8" }, @@ -11842,8 +13906,9 @@ }, "node_modules/is-string": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, - "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -11856,8 +13921,9 @@ }, "node_modules/is-symbol": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, - "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" }, @@ -11870,7 +13936,8 @@ }, "node_modules/is-typed-array": { "version": "1.1.13", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dependencies": { "which-typed-array": "^1.1.14" }, @@ -11883,13 +13950,15 @@ }, "node_modules/is-typedarray": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true }, "node_modules/is-unicode-supported": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -11899,8 +13968,9 @@ }, "node_modules/is-weakref": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -11910,15 +13980,17 @@ }, "node_modules/is-windows": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-wsl": { "version": "2.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dependencies": { "is-docker": "^2.0.0" }, @@ -11928,58 +14000,67 @@ }, "node_modules/is-yarn-global": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", + "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" } }, "node_modules/isarray": { "version": "2.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true }, "node_modules/isbuffer": { "version": "0.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isbuffer/-/isbuffer-0.0.0.tgz", + "integrity": "sha512-xU+NoHp+YtKQkaM2HsQchYn0sltxMxew0HavMfHbjnucBoTSGbw745tL+Z7QBANleWM1eEQMenEpi174mIeS4g==", + "dev": true }, "node_modules/isexe": { "version": "2.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/isobject": { "version": "3.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "engines": { "node": ">=0.10.0" } }, "node_modules/isomorphic-timers-promises": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz", + "integrity": "sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/isstream": { "version": "0.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-report": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -11991,16 +14072,18 @@ }, "node_modules/istanbul-lib-report/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-report/node_modules/make-dir": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -12013,8 +14096,9 @@ }, "node_modules/istanbul-lib-report/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12024,8 +14108,9 @@ }, "node_modules/istanbul-lib-source-maps": { "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@jridgewell/trace-mapping": "^0.3.23", "debug": "^4.1.1", @@ -12037,8 +14122,9 @@ }, "node_modules/istanbul-reports": { "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -12049,7 +14135,8 @@ }, "node_modules/jackspeak": { "version": "3.4.3", - "license": "BlueOak-1.0.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -12062,7 +14149,8 @@ }, "node_modules/jest-worker": { "version": "27.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -12074,14 +14162,16 @@ }, "node_modules/jest-worker/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dependencies": { "has-flag": "^4.0.0" }, @@ -12094,12 +14184,14 @@ }, "node_modules/jju": { "version": "1.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true }, "node_modules/js-cleanup": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/js-cleanup/-/js-cleanup-1.2.0.tgz", + "integrity": "sha512-JeDD0yiiSt80fXzAVa/crrS0JDPQljyBG/RpOtaSbyDq03VHa9szJWMaWOYU/bcTn412uMN2MxApXq8v79cUiQ==", "dependencies": { "magic-string": "^0.25.7", "perf-regexes": "^1.0.1", @@ -12111,19 +14203,22 @@ }, "node_modules/js-cleanup/node_modules/magic-string": { "version": "0.25.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", "dependencies": { "sourcemap-codec": "^1.4.8" } }, "node_modules/js-tokens": { "version": "4.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -12134,11 +14229,13 @@ }, "node_modules/jsbn": { "version": "1.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" }, "node_modules/jsdom": { "version": "24.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.1.tgz", + "integrity": "sha512-5O1wWV99Jhq4DV7rCLIoZ/UIhyQeDR7wHVyZAHAshbrvZsLs+Xzz7gtwnlJTJDjleiTKh54F4dXrX70vJQTyJQ==", "dependencies": { "cssstyle": "^4.0.1", "data-urls": "^5.0.0", @@ -12176,7 +14273,8 @@ }, "node_modules/jsdom/node_modules/agent-base": { "version": "7.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dependencies": { "debug": "^4.3.4" }, @@ -12186,7 +14284,8 @@ }, "node_modules/jsdom/node_modules/http-proxy-agent": { "version": "7.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -12197,7 +14296,8 @@ }, "node_modules/jsdom/node_modules/https-proxy-agent": { "version": "7.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "dependencies": { "agent-base": "^7.0.2", "debug": "4" @@ -12208,7 +14308,8 @@ }, "node_modules/jsdom/node_modules/tr46": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", "dependencies": { "punycode": "^2.3.1" }, @@ -12218,14 +14319,16 @@ }, "node_modules/jsdom/node_modules/webidl-conversions": { "version": "7.0.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "engines": { "node": ">=12" } }, "node_modules/jsdom/node_modules/whatwg-url": { "version": "14.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", "dependencies": { "tr46": "^5.0.0", "webidl-conversions": "^7.0.0" @@ -12236,7 +14339,8 @@ }, "node_modules/jsesc": { "version": "2.5.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "bin": { "jsesc": "bin/jsesc" }, @@ -12246,41 +14350,49 @@ }, "node_modules/json-buffer": { "version": "3.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" }, "node_modules/json-parse-better-errors": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "node_modules/json-parse-helpfulerror": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", + "integrity": "sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg==", "dev": true, - "license": "MIT", "dependencies": { "jju": "^1.1.0" } }, "node_modules/json-schema": { "version": "0.4.0", - "dev": true, - "license": "(AFL-2.1 OR BSD-3-Clause)" + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true }, "node_modules/json-schema-traverse": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, "node_modules/json-stringify-safe": { "version": "5.0.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" }, "node_modules/json5": { "version": "2.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "bin": { "json5": "lib/cli.js" }, @@ -12290,13 +14402,15 @@ }, "node_modules/jsonc-parser": { "version": "3.2.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", + "dev": true }, "node_modules/jsonfile": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -12306,28 +14420,32 @@ }, "node_modules/jsonlines": { "version": "0.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/jsonlines/-/jsonlines-0.1.1.tgz", + "integrity": "sha512-ekDrAGso79Cvf+dtm+mL8OBI2bmAOt3gssYs833De/C9NmIpWDWyUO4zPgB5x2/OhY366dkhgfPMYfwZF7yOZA==", + "dev": true }, "node_modules/jsonparse": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true, "engines": [ "node >= 0.2.0" - ], - "license": "MIT" + ] }, "node_modules/jsonpointer": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/jsonwebtoken": { "version": "9.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", "dependencies": { "jws": "^3.2.2", "lodash.includes": "^4.3.0", @@ -12347,11 +14465,12 @@ }, "node_modules/jsprim": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", "dev": true, "engines": [ "node >=0.6.0" ], - "license": "MIT", "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -12361,7 +14480,8 @@ }, "node_modules/jwa": { "version": "1.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "dependencies": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -12370,7 +14490,8 @@ }, "node_modules/jws": { "version": "3.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "dependencies": { "jwa": "^1.4.1", "safe-buffer": "^5.0.1" @@ -12378,37 +14499,42 @@ }, "node_modules/kareem": { "version": "2.6.3", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz", + "integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==", "engines": { "node": ">=12.0.0" } }, "node_modules/keyv": { "version": "4.5.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dependencies": { "json-buffer": "3.0.1" } }, "node_modules/kind-of": { "version": "6.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "engines": { "node": ">=0.10.0" } }, "node_modules/kleur": { "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/latest-version": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", + "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", "dev": true, - "license": "MIT", "dependencies": { "package-json": "^8.1.0" }, @@ -12421,7 +14547,8 @@ }, "node_modules/launch-editor": { "version": "2.8.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.1.tgz", + "integrity": "sha512-elBx2l/tp9z99X5H/qev8uyDywVh0VXAwEbjk8kJhnc5grOFkGh7aW6q55me9xnYbss261XtnUrysZ+XvGbhQA==", "dependencies": { "picocolors": "^1.0.0", "shell-quote": "^1.8.1" @@ -12429,14 +14556,17 @@ }, "node_modules/lazy-ass": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", "dev": true, - "license": "MIT", "engines": { "node": "> 0.8" } }, "node_modules/level-blobs": { "version": "0.1.7", + "resolved": "https://registry.npmjs.org/level-blobs/-/level-blobs-0.1.7.tgz", + "integrity": "sha512-n0iYYCGozLd36m/Pzm206+brIgXP8mxPZazZ6ZvgKr+8YwOZ8/PPpYC5zMUu2qFygRN8RO6WC/HH3XWMW7RMVg==", "dev": true, "dependencies": { "level-peek": "1.0.6", @@ -12446,13 +14576,15 @@ }, "node_modules/level-blobs/node_modules/isarray": { "version": "0.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true }, "node_modules/level-blobs/node_modules/readable-stream": { "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -12462,11 +14594,14 @@ }, "node_modules/level-blobs/node_modules/string_decoder": { "version": "0.10.31", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true }, "node_modules/level-filesystem": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/level-filesystem/-/level-filesystem-1.2.0.tgz", + "integrity": "sha512-PhXDuCNYpngpxp3jwMT9AYBMgOvB6zxj3DeuIywNKmZqFj2djj9XfT2XDVslfqmo0Ip79cAd3SBy3FsfOZPJ1g==", "dev": true, "dependencies": { "concat-stream": "^1.4.4", @@ -12482,6 +14617,8 @@ }, "node_modules/level-filesystem/node_modules/xtend": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.2.0.tgz", + "integrity": "sha512-SLt5uylT+4aoXxXuwtQp5ZnMMzhDb1Xkg4pEqc00WUJCQifPfV9Ub1VrNhp9kXkrjZD2I2Hl8WnjP37jzZLPZw==", "dev": true, "engines": { "node": ">=0.4" @@ -12489,11 +14626,14 @@ }, "node_modules/level-fix-range": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/level-fix-range/-/level-fix-range-1.0.2.tgz", + "integrity": "sha512-9llaVn6uqBiSlBP+wKiIEoBa01FwEISFgHSZiyec2S0KpyLUkGR4afW/FCZ/X8y+QJvzS0u4PGOlZDdh1/1avQ==", + "dev": true }, "node_modules/level-hooks": { "version": "4.5.0", + "resolved": "https://registry.npmjs.org/level-hooks/-/level-hooks-4.5.0.tgz", + "integrity": "sha512-fxLNny/vL/G4PnkLhWsbHnEaRi+A/k8r5EH/M77npZwYL62RHi2fV0S824z3QdpAk6VTgisJwIRywzBHLK4ZVA==", "dev": true, "dependencies": { "string-range": "~1.2" @@ -12501,8 +14641,9 @@ }, "node_modules/level-js": { "version": "2.2.4", + "resolved": "https://registry.npmjs.org/level-js/-/level-js-2.2.4.tgz", + "integrity": "sha512-lZtjt4ZwHE00UMC1vAb271p9qzg8vKlnDeXfIesH3zL0KxhHRDjClQLGLWhyR0nK4XARnd4wc/9eD1ffd4PshQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "abstract-leveldown": "~0.12.0", "idb-wrapper": "^1.5.0", @@ -12514,16 +14655,20 @@ }, "node_modules/level-js/node_modules/object-keys": { "version": "0.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==", + "dev": true }, "node_modules/level-js/node_modules/typedarray-to-buffer": { "version": "1.0.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-1.0.4.tgz", + "integrity": "sha512-vjMKrfSoUDN8/Vnqitw2FmstOfuJ73G6CrSEKnf11A6RmasVxHqfeBcnTb6RsL4pTMuV5Zsv9IiHRphMZyckUw==", + "dev": true }, "node_modules/level-js/node_modules/xtend": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", "dev": true, "dependencies": { "object-keys": "~0.4.0" @@ -12534,16 +14679,18 @@ }, "node_modules/level-peek": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/level-peek/-/level-peek-1.0.6.tgz", + "integrity": "sha512-TKEzH5TxROTjQxWMczt9sizVgnmJ4F3hotBI48xCTYvOKd/4gA/uY0XjKkhJFo6BMic8Tqjf6jFMLWeg3MAbqQ==", "dev": true, - "license": "MIT", "dependencies": { "level-fix-range": "~1.0.2" } }, "node_modules/level-sublevel": { "version": "5.2.3", + "resolved": "https://registry.npmjs.org/level-sublevel/-/level-sublevel-5.2.3.tgz", + "integrity": "sha512-tO8jrFp+QZYrxx/Gnmjawuh1UBiifpvKNAcm4KCogesWr1Nm2+ckARitf+Oo7xg4OHqMW76eAqQ204BoIlscjA==", "dev": true, - "license": "MIT", "dependencies": { "level-fix-range": "2.0", "level-hooks": ">=4.4.0 <5", @@ -12553,16 +14700,19 @@ }, "node_modules/level-sublevel/node_modules/level-fix-range": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/level-fix-range/-/level-fix-range-2.0.0.tgz", + "integrity": "sha512-WrLfGWgwWbYPrHsYzJau+5+te89dUbENBg3/lsxOs4p2tYOhCHjbgXxBAj4DFqp3k/XBwitcRXoCh8RoCogASA==", "dev": true, - "license": "MIT", "dependencies": { "clone": "~0.1.9" } }, "node_modules/level-sublevel/node_modules/object-keys": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.2.0.tgz", + "integrity": "sha512-XODjdR2pBh/1qrjPcbSeSgEtKbYo7LqYNq64/TPuCf7j9SfDD3i21yatKoIy39yIWNvVM59iutfQQpCv1RfFzA==", + "deprecated": "Please update to the latest object-keys", "dev": true, - "license": "MIT", "dependencies": { "foreach": "~2.0.1", "indexof": "~0.0.1", @@ -12571,6 +14721,8 @@ }, "node_modules/level-sublevel/node_modules/xtend": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.0.6.tgz", + "integrity": "sha512-fOZg4ECOlrMl+A6Msr7EIFcON1L26mb4NY5rurSkOex/TWhazOrg6eXD/B0XkuiYcYhQDWLXzQxLMVJ7LXwokg==", "dev": true, "dependencies": { "is-object": "~0.1.2", @@ -12582,8 +14734,9 @@ }, "node_modules/levelup": { "version": "0.18.6", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-0.18.6.tgz", + "integrity": "sha512-uB0auyRqIVXx+hrpIUtol4VAPhLRcnxcOsd2i2m6rbFIDarO5dnrupLOStYYpEcu8ZT087Z9HEuYw1wjr6RL6Q==", "dev": true, - "license": "MIT", "dependencies": { "bl": "~0.8.1", "deferred-leveldown": "~0.2.0", @@ -12596,26 +14749,30 @@ }, "node_modules/levelup/node_modules/bl": { "version": "0.8.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-0.8.2.tgz", + "integrity": "sha512-pfqikmByp+lifZCS0p6j6KreV6kNU6Apzpm2nKOk+94cZb/jvle55+JxWiByUQ0Wo/+XnDXEy5MxxKMb6r0VIw==", "dev": true, - "license": "MIT", "dependencies": { "readable-stream": "~1.0.26" } }, "node_modules/levelup/node_modules/isarray": { "version": "0.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true }, "node_modules/levelup/node_modules/prr": { "version": "0.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha512-LmUECmrW7RVj6mDWKjTXfKug7TFGdiz9P18HMcO4RHL+RW7MCOGNvpj5j47Rnp6ne6r4fZ2VzyUWEpKbg+tsjQ==", + "dev": true }, "node_modules/levelup/node_modules/readable-stream": { "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -12625,19 +14782,23 @@ }, "node_modules/levelup/node_modules/semver": { "version": "2.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz", + "integrity": "sha512-abLdIKCosKfpnmhS52NCTjO4RiLspDfsn37prjzGrp9im5DPJOgh82Os92vtwGh6XdQryKI/7SREZnV+aqiXrA==", "dev": true, - "license": "BSD", "bin": { "semver": "bin/semver" } }, "node_modules/levelup/node_modules/string_decoder": { "version": "0.10.31", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true }, "node_modules/levelup/node_modules/xtend": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", + "integrity": "sha512-sp/sT9OALMjRW1fKDlPeuSZlDQpkqReA0pyJukniWbTGoEKefHxhGJynE3PNhUMlcM8qWIjPwecwCw4LArS5Eg==", "dev": true, "engines": { "node": ">=0.4" @@ -12645,20 +14806,23 @@ }, "node_modules/lines-and-columns": { "version": "1.2.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/linkify-it": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", "dev": true, - "license": "MIT", "dependencies": { "uc.micro": "^2.0.0" } }, "node_modules/listr2": { "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", "dev": true, - "license": "MIT", "dependencies": { "cli-truncate": "^2.1.0", "colorette": "^2.0.16", @@ -12683,8 +14847,9 @@ }, "node_modules/listr2/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12697,8 +14862,9 @@ }, "node_modules/listr2/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12708,13 +14874,15 @@ }, "node_modules/listr2/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/listr2/node_modules/wrap-ansi": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -12729,8 +14897,9 @@ }, "node_modules/load-json-file": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "parse-json": "^4.0.0", @@ -12743,8 +14912,9 @@ }, "node_modules/load-json-file/node_modules/parse-json": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, - "license": "MIT", "dependencies": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" @@ -12755,22 +14925,25 @@ }, "node_modules/load-json-file/node_modules/pify": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/loader-runner": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "engines": { "node": ">=6.11.5" } }, "node_modules/loader-utils": { "version": "2.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -12782,8 +14955,9 @@ }, "node_modules/local-pkg": { "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", "dev": true, - "license": "MIT", "engines": { "node": ">=14" }, @@ -12793,8 +14967,9 @@ }, "node_modules/locate-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -12807,44 +14982,54 @@ }, "node_modules/lodash": { "version": "4.17.21", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.debounce": { "version": "4.0.8", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" }, "node_modules/lodash.includes": { "version": "4.3.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" }, "node_modules/lodash.isboolean": { "version": "3.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" }, "node_modules/lodash.isinteger": { "version": "4.0.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" }, "node_modules/lodash.isnumber": { "version": "3.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" }, "node_modules/lodash.isstring": { "version": "4.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" }, "node_modules/lodash.once": { "version": "4.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" }, "node_modules/log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -12858,8 +15043,9 @@ }, "node_modules/log-symbols/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12872,8 +15058,9 @@ }, "node_modules/log-symbols/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12887,8 +15074,9 @@ }, "node_modules/log-symbols/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12898,21 +15086,24 @@ }, "node_modules/log-symbols/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/log-symbols/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/log-symbols/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -12922,8 +15113,9 @@ }, "node_modules/log-update": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-escapes": "^4.3.0", "cli-cursor": "^3.1.0", @@ -12939,8 +15131,9 @@ }, "node_modules/log-update/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12953,8 +15146,9 @@ }, "node_modules/log-update/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12964,13 +15158,15 @@ }, "node_modules/log-update/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/log-update/node_modules/slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -12985,8 +15181,9 @@ }, "node_modules/log-update/node_modules/wrap-ansi": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -12998,7 +15195,8 @@ }, "node_modules/loglevel": { "version": "1.9.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", + "integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==", "engines": { "node": ">= 0.6.0" }, @@ -13009,7 +15207,8 @@ }, "node_modules/loose-envify": { "version": "1.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -13019,22 +15218,25 @@ }, "node_modules/loupe": { "version": "2.3.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dependencies": { "get-func-name": "^2.0.1" } }, "node_modules/lower-case": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dependencies": { "tslib": "^2.0.3" } }, "node_modules/lowercase-keys": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", "dev": true, - "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -13044,40 +15246,46 @@ }, "node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/ltgt": { "version": "2.2.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", + "dev": true }, "node_modules/lunr": { "version": "2.3.9", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true }, "node_modules/luxon": { "version": "3.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz", + "integrity": "sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==", "engines": { "node": ">=12" } }, "node_modules/magic-string": { "version": "0.30.11", - "license": "MIT", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } }, "node_modules/magicast": { "version": "0.3.4", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.4.tgz", + "integrity": "sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/parser": "^7.24.4", "@babel/types": "^7.24.0", @@ -13086,7 +15294,8 @@ }, "node_modules/make-dir": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dependencies": { "semver": "^6.0.0" }, @@ -13099,15 +15308,17 @@ }, "node_modules/make-dir/node_modules/semver": { "version": "6.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, "node_modules/make-fetch-happen": { "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, - "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^16.1.0", @@ -13132,8 +15343,9 @@ }, "node_modules/make-fetch-happen/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13143,8 +15355,9 @@ }, "node_modules/markdown-it": { "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", @@ -13159,24 +15372,15 @@ }, "node_modules/markdown-it/node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/markdown-it/node_modules/entities": { - "version": "4.5.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/markdownlint": { "version": "0.34.0", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.34.0.tgz", + "integrity": "sha512-qwGyuyKwjkEMOJ10XN6OTKNOVYvOIi35RNvDLNxTof5s8UmyGHlCdpngRHoRGNvQVGuxO3BJ7uNSgdeX166WXw==", "dev": true, - "license": "MIT", "dependencies": { "markdown-it": "14.1.0", "markdownlint-micromark": "0.1.9" @@ -13190,8 +15394,9 @@ }, "node_modules/markdownlint-cli": { "version": "0.41.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.41.0.tgz", + "integrity": "sha512-kp29tKrMKdn+xonfefjp3a/MsNzAd9c5ke0ydMEI9PR98bOjzglYN4nfMSaIs69msUf1DNkgevAIAPtK2SeX0Q==", "dev": true, - "license": "MIT", "dependencies": { "commander": "~12.1.0", "get-stdin": "~9.0.0", @@ -13214,21 +15419,24 @@ }, "node_modules/markdownlint-cli/node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/markdownlint-cli/node_modules/commander": { "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, - "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/markdownlint-cli/node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -13238,8 +15446,9 @@ }, "node_modules/markdownlint-cli/node_modules/minimatch": { "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -13252,8 +15461,9 @@ }, "node_modules/markdownlint-micromark": { "version": "0.1.9", + "resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.9.tgz", + "integrity": "sha512-5hVs/DzAFa8XqYosbEAEg6ok6MF2smDj89ztn9pKkCtdKHVdPQuGMH7frFfYL9mLkvfFe4pTyAMffLbjf3/EyA==", "dev": true, - "license": "MIT", "engines": { "node": ">=18" }, @@ -13263,8 +15473,9 @@ }, "node_modules/marked": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", "dev": true, - "license": "MIT", "bin": { "marked": "bin/marked.js" }, @@ -13274,7 +15485,8 @@ }, "node_modules/matcher": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", "optional": true, "dependencies": { "escape-string-regexp": "^4.0.0" @@ -13285,7 +15497,8 @@ }, "node_modules/matcher/node_modules/escape-string-regexp": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "optional": true, "engines": { "node": ">=10" @@ -13296,7 +15509,8 @@ }, "node_modules/md5.js": { "version": "1.3.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -13305,19 +15519,22 @@ }, "node_modules/mdurl": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true }, "node_modules/media-typer": { "version": "0.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "engines": { "node": ">= 0.6" } }, "node_modules/memfs": { "version": "4.11.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.11.1.tgz", + "integrity": "sha512-LZcMTBAgqUUKNXZagcZxvXXfgF1bHX7Y7nQ0QyEiNbRJgE29GhgPd8Yna1VQcLlPiHt/5RFJMWYN9Uv/VPNvjQ==", "dependencies": { "@jsonjoy.com/json-pack": "^1.0.3", "@jsonjoy.com/util": "^1.3.0", @@ -13334,10 +15551,13 @@ }, "node_modules/memory-pager": { "version": "1.5.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==" }, "node_modules/memorystream": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", "dev": true, "engines": { "node": ">= 0.10.0" @@ -13345,29 +15565,34 @@ }, "node_modules/merge-descriptors": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, "node_modules/merge-stream": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "node_modules/merge2": { "version": "1.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "engines": { "node": ">= 8" } }, "node_modules/methods": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "engines": { "node": ">= 0.6" } }, "node_modules/micromatch": { "version": "4.0.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -13378,7 +15603,8 @@ }, "node_modules/miller-rabin": { "version": "4.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dependencies": { "bn.js": "^4.0.0", "brorand": "^1.0.1" @@ -13389,11 +15615,13 @@ }, "node_modules/miller-rabin/node_modules/bn.js": { "version": "4.12.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "node_modules/mime": { "version": "1.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "bin": { "mime": "cli.js" }, @@ -13403,14 +15631,16 @@ }, "node_modules/mime-db": { "version": "1.52.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { "version": "2.1.35", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": { "mime-db": "1.52.0" }, @@ -13420,14 +15650,16 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "engines": { "node": ">=6" } }, "node_modules/mimic-response": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "engines": { "node": ">=10" }, @@ -13436,8 +15668,9 @@ } }, "node_modules/mini-css-extract-plugin": { - "version": "2.9.0", - "license": "MIT", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.1.tgz", + "integrity": "sha512-+Vyi+GCCOHnrJ2VPS+6aPoXN2k2jgUzDRhTFLjjTBn23qyXJXkjUWQgTL+mXpF5/A8ixLdCc6kWsoeOjKGejKQ==", "dependencies": { "schema-utils": "^4.0.0", "tapable": "^2.2.1" @@ -13455,16 +15688,19 @@ }, "node_modules/minimalistic-assert": { "version": "1.0.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" }, "node_modules/minimatch": { "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -13477,22 +15713,25 @@ }, "node_modules/minimist": { "version": "1.2.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/minipass": { "version": "7.1.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/minipass-collect": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -13502,8 +15741,9 @@ }, "node_modules/minipass-collect/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13513,8 +15753,9 @@ }, "node_modules/minipass-fetch": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, - "license": "MIT", "dependencies": { "minipass": "^3.1.6", "minipass-sized": "^1.0.3", @@ -13529,8 +15770,9 @@ }, "node_modules/minipass-fetch/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13540,8 +15782,9 @@ }, "node_modules/minipass-flush": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -13551,8 +15794,9 @@ }, "node_modules/minipass-flush/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13562,8 +15806,9 @@ }, "node_modules/minipass-json-stream": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.2.tgz", + "integrity": "sha512-myxeeTm57lYs8pH2nxPzmEEg8DGIgW+9mv6D4JZD2pa81I/OBjeU7PtICXV6c9eRGTA5JMDsuIPUZRCyBMYNhg==", "dev": true, - "license": "MIT", "dependencies": { "jsonparse": "^1.3.1", "minipass": "^3.0.0" @@ -13571,8 +15816,9 @@ }, "node_modules/minipass-json-stream/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13582,8 +15828,9 @@ }, "node_modules/minipass-pipeline": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -13593,8 +15840,9 @@ }, "node_modules/minipass-pipeline/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13604,8 +15852,9 @@ }, "node_modules/minipass-sized": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -13615,8 +15864,9 @@ }, "node_modules/minipass-sized/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -13626,7 +15876,8 @@ }, "node_modules/minizlib": { "version": "2.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -13637,7 +15888,8 @@ }, "node_modules/minizlib/node_modules/minipass": { "version": "3.3.6", - "license": "ISC", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dependencies": { "yallist": "^4.0.0" }, @@ -13647,7 +15899,8 @@ }, "node_modules/mkdirp": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "bin": { "mkdirp": "bin/cmd.js" }, @@ -13657,11 +15910,13 @@ }, "node_modules/mkdirp-classic": { "version": "0.5.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" }, "node_modules/mlly": { "version": "1.7.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz", + "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==", "dependencies": { "acorn": "^8.11.3", "pathe": "^1.1.2", @@ -13671,14 +15926,16 @@ }, "node_modules/mock-socket": { "version": "9.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.3.1.tgz", + "integrity": "sha512-qxBgB7Qa2sEQgHFjj0dSigq7fX4k6Saisd5Nelwp2q8mlbAFh5dHV9JTTlF8viYJLSSWgMCZFUom8PJcMNBoJw==", "engines": { "node": ">= 8" } }, "node_modules/mongodb": { "version": "5.9.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-5.9.2.tgz", + "integrity": "sha512-H60HecKO4Bc+7dhOv4sJlgvenK4fQNqqUIlXxZYQNbfEWSALGAwGoyJd/0Qwk4TttFXUOHJ2ZJQe/52ScaUwtQ==", "dependencies": { "bson": "^5.5.0", "mongodb-connection-string-url": "^2.6.0", @@ -13717,7 +15974,8 @@ }, "node_modules/mongodb-connection-string-url": { "version": "2.6.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", + "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", "dependencies": { "@types/whatwg-url": "^8.2.1", "whatwg-url": "^11.0.0" @@ -13725,7 +15983,8 @@ }, "node_modules/mongodb-connection-string-url/node_modules/tr46": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", "dependencies": { "punycode": "^2.1.1" }, @@ -13735,14 +15994,16 @@ }, "node_modules/mongodb-connection-string-url/node_modules/webidl-conversions": { "version": "7.0.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "engines": { "node": ">=12" } }, "node_modules/mongodb-connection-string-url/node_modules/whatwg-url": { "version": "11.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", "dependencies": { "tr46": "^3.0.0", "webidl-conversions": "^7.0.0" @@ -13753,8 +16014,9 @@ }, "node_modules/mongodb-memory-server": { "version": "9.4.1", + "resolved": "https://registry.npmjs.org/mongodb-memory-server/-/mongodb-memory-server-9.4.1.tgz", + "integrity": "sha512-qONlW4sKPbtk9pqFnlPn7R73G3Q4TuebJJ5pHfoiKTqVJquojQ8xWmkCyz+/YnpA2vYBo/jib+nXvjfKwh7cjg==", "hasInstallScript": true, - "license": "MIT", "dependencies": { "mongodb-memory-server-core": "9.4.1", "tslib": "^2.6.3" @@ -13765,7 +16027,8 @@ }, "node_modules/mongodb-memory-server-core": { "version": "9.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mongodb-memory-server-core/-/mongodb-memory-server-core-9.4.1.tgz", + "integrity": "sha512-lobapXaysH64zrn521NTkmqHc3krSPUFkuuZ8A/BmQV8ON7p2SzAEvpoJPDXIeJkxIzYw06dYL6Gn5OcZdEElA==", "dependencies": { "async-mutex": "^0.4.1", "camelcase": "^6.3.0", @@ -13786,7 +16049,8 @@ }, "node_modules/mongodb-memory-server-core/node_modules/agent-base": { "version": "7.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dependencies": { "debug": "^4.3.4" }, @@ -13796,7 +16060,8 @@ }, "node_modules/mongodb-memory-server-core/node_modules/find-cache-dir": { "version": "3.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -13811,7 +16076,8 @@ }, "node_modules/mongodb-memory-server-core/node_modules/find-up": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -13822,7 +16088,8 @@ }, "node_modules/mongodb-memory-server-core/node_modules/https-proxy-agent": { "version": "7.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "dependencies": { "agent-base": "^7.0.2", "debug": "4" @@ -13833,7 +16100,8 @@ }, "node_modules/mongodb-memory-server-core/node_modules/locate-path": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dependencies": { "p-locate": "^4.1.0" }, @@ -13843,7 +16111,8 @@ }, "node_modules/mongodb-memory-server-core/node_modules/p-limit": { "version": "2.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dependencies": { "p-try": "^2.0.0" }, @@ -13856,7 +16125,8 @@ }, "node_modules/mongodb-memory-server-core/node_modules/p-locate": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dependencies": { "p-limit": "^2.2.0" }, @@ -13866,7 +16136,8 @@ }, "node_modules/mongodb-memory-server-core/node_modules/pkg-dir": { "version": "4.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dependencies": { "find-up": "^4.0.0" }, @@ -13876,11 +16147,13 @@ }, "node_modules/mongodb-memory-server-core/node_modules/tslib": { "version": "2.6.3", - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/mongodb-memory-server-core/node_modules/yauzl": { "version": "3.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.1.3.tgz", + "integrity": "sha512-JCCdmlJJWv7L0q/KylOekyRaUrdEoUxWkWVcgorosTROCFWiS9p2NNPE9Yb91ak7b1N5SxAZEliWpspbZccivw==", "dependencies": { "buffer-crc32": "~0.2.3", "pend": "~1.2.0" @@ -13891,11 +16164,13 @@ }, "node_modules/mongodb-memory-server/node_modules/tslib": { "version": "2.6.3", - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/mongoose": { "version": "8.5.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.5.3.tgz", + "integrity": "sha512-OubSDbsAclDFGHjV82MsKyIGQWFc42Ot1l+0dhRS6U9xODM7rm/ES/WpOQd8Ds9j0Mx8QzxZtrSCnBh6o9wUqw==", "dependencies": { "bson": "^6.7.0", "kareem": "2.6.3", @@ -13915,21 +16190,24 @@ }, "node_modules/mongoose/node_modules/@types/whatwg-url": { "version": "11.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", + "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", "dependencies": { "@types/webidl-conversions": "*" } }, "node_modules/mongoose/node_modules/bson": { "version": "6.8.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.8.0.tgz", + "integrity": "sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ==", "engines": { "node": ">=16.20.1" } }, "node_modules/mongoose/node_modules/mongodb": { "version": "6.7.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.7.0.tgz", + "integrity": "sha512-TMKyHdtMcO0fYBNORiYdmM25ijsHs+Njs963r4Tro4OQZzqYigAzYQouwWRg4OIaiLRUEGUh/1UAcH5lxdSLIA==", "dependencies": { "@mongodb-js/saslprep": "^1.1.5", "bson": "^6.7.0", @@ -13973,7 +16251,8 @@ }, "node_modules/mongoose/node_modules/mongodb-connection-string-url": { "version": "3.0.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz", + "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==", "dependencies": { "@types/whatwg-url": "^11.0.2", "whatwg-url": "^13.0.0" @@ -13981,11 +16260,13 @@ }, "node_modules/mongoose/node_modules/ms": { "version": "2.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/mongoose/node_modules/tr46": { "version": "4.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", "dependencies": { "punycode": "^2.3.0" }, @@ -13995,14 +16276,16 @@ }, "node_modules/mongoose/node_modules/webidl-conversions": { "version": "7.0.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "engines": { "node": ">=12" } }, "node_modules/mongoose/node_modules/whatwg-url": { "version": "13.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", + "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", "dependencies": { "tr46": "^4.1.1", "webidl-conversions": "^7.0.0" @@ -14013,14 +16296,16 @@ }, "node_modules/mpath": { "version": "0.9.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", "engines": { "node": ">=4.0.0" } }, "node_modules/mquery": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", "dependencies": { "debug": "4.x" }, @@ -14030,11 +16315,13 @@ }, "node_modules/ms": { "version": "2.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/multicast-dns": { "version": "7.2.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" @@ -14045,8 +16332,9 @@ }, "node_modules/multimatch": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-5.0.0.tgz", + "integrity": "sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==", "dev": true, - "license": "MIT", "dependencies": { "@types/minimatch": "^3.0.3", "array-differ": "^3.0.0", @@ -14063,8 +16351,9 @@ }, "node_modules/multimatch/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -14072,8 +16361,9 @@ }, "node_modules/multimatch/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -14083,8 +16373,9 @@ }, "node_modules/mylas": { "version": "2.1.13", + "resolved": "https://registry.npmjs.org/mylas/-/mylas-2.1.13.tgz", + "integrity": "sha512-+MrqnJRtxdF+xngFfUUkIMQrUUL0KsxbADUkn23Z/4ibGg192Q+z+CQyiYwvWTsYjJygmMR8+w3ZDa98Zh6ESg==", "dev": true, - "license": "MIT", "engines": { "node": ">=12.0.0" }, @@ -14095,13 +16386,14 @@ }, "node_modules/nanoid": { "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -14111,22 +16403,26 @@ }, "node_modules/napi-build-utils": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" }, "node_modules/negotiator": { "version": "0.6.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "engines": { "node": ">= 0.6" } }, "node_modules/neo-async": { "version": "2.6.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "node_modules/new-find-package-json": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/new-find-package-json/-/new-find-package-json-2.0.0.tgz", + "integrity": "sha512-lDcBsjBSMlj3LXH2v/FW3txlh2pYTjmbOXPYJD93HI5EwuLzI11tdHSIpUMmfq/IOsldj4Ps8M8flhm+pCK4Ew==", "dependencies": { "debug": "^4.3.4" }, @@ -14136,20 +16432,23 @@ }, "node_modules/nice-try": { "version": "1.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "node_modules/no-case": { "version": "3.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" } }, "node_modules/nock": { - "version": "13.5.4", - "license": "MIT", + "version": "13.5.5", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.5.5.tgz", + "integrity": "sha512-XKYnqUrCwXC8DGG1xX4YH5yNIrlh9c065uaMZZHUoeUUINTOyt+x/G+ezYk0Ft6ExSREVIs+qBJDK503viTfFA==", "dependencies": { "debug": "^4.1.0", "json-stringify-safe": "^5.0.1", @@ -14160,8 +16459,9 @@ } }, "node_modules/node-abi": { - "version": "3.65.0", - "license": "MIT", + "version": "3.67.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.67.0.tgz", + "integrity": "sha512-bLn/fU/ALVBE9wj+p4Y21ZJWYFjUXLXPi/IewyLZkx3ApxKDNBWCKdReeKOtD8dWpOdDCeMyLh6ZewzcLsG2Nw==", "dependencies": { "semver": "^7.3.5" }, @@ -14171,10 +16471,13 @@ }, "node_modules/node-addon-api": { "version": "5.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" }, "node_modules/node-domexception": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", "funding": [ { "type": "github", @@ -14185,14 +16488,14 @@ "url": "https://paypal.me/jimmywarting" } ], - "license": "MIT", "engines": { "node": ">=10.5.0" } }, "node_modules/node-fetch": { "version": "3.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", @@ -14208,15 +16511,17 @@ }, "node_modules/node-forge": { "version": "1.3.1", - "license": "(BSD-3-Clause OR GPL-2.0)", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "engines": { "node": ">= 6.13.0" } }, "node_modules/node-gyp": { "version": "9.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", + "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", "dev": true, - "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", @@ -14239,8 +16544,10 @@ }, "node_modules/node-gyp/node_modules/are-we-there-yet": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "deprecated": "This package is no longer supported.", "dev": true, - "license": "ISC", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -14251,8 +16558,9 @@ }, "node_modules/node-gyp/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -14260,8 +16568,10 @@ }, "node_modules/node-gyp/node_modules/gauge": { "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "deprecated": "This package is no longer supported.", "dev": true, - "license": "ISC", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.3", @@ -14278,8 +16588,10 @@ }, "node_modules/node-gyp/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -14297,8 +16609,9 @@ }, "node_modules/node-gyp/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -14308,8 +16621,9 @@ }, "node_modules/node-gyp/node_modules/nopt": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, - "license": "ISC", "dependencies": { "abbrev": "^1.0.0" }, @@ -14322,8 +16636,10 @@ }, "node_modules/node-gyp/node_modules/npmlog": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "deprecated": "This package is no longer supported.", "dev": true, - "license": "ISC", "dependencies": { "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", @@ -14336,8 +16652,9 @@ }, "node_modules/node-loader": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-loader/-/node-loader-2.0.0.tgz", + "integrity": "sha512-I5VN34NO4/5UYJaUBtkrODPWxbobrE4hgDqPrjB25yPkonFhCmZ146vTH+Zg417E9Iwoh1l/MbRs1apc5J295Q==", "dev": true, - "license": "MIT", "dependencies": { "loader-utils": "^2.0.0" }, @@ -14354,7 +16671,8 @@ }, "node_modules/node-polyfill-webpack-plugin": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-WLk77vLpbcpmTekRj6s6vYxk30XoyaY5MDZ4+9g8OaKoG3Ij+TjOqhpQjVUlfDZBPBgpNATDltaQkzuXSnnkwg==", "dependencies": { "assert": "^2.1.0", "browserify-zlib": "^0.2.0", @@ -14390,6 +16708,8 @@ }, "node_modules/node-polyfill-webpack-plugin/node_modules/buffer": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "funding": [ { "type": "github", @@ -14404,7 +16724,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -14412,7 +16731,8 @@ }, "node_modules/node-polyfill-webpack-plugin/node_modules/readable-stream": { "version": "4.5.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", @@ -14425,8 +16745,9 @@ } }, "node_modules/node-polyfill-webpack-plugin/node_modules/type-fest": { - "version": "4.24.0", - "license": "(MIT OR CC0-1.0)", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.25.0.tgz", + "integrity": "sha512-bRkIGlXsnGBRBQRAY56UXBm//9qH4bmJfFvq83gSz41N282df+fjy8ofcEgc1sM8geNt5cl6mC2g9Fht1cs8Aw==", "engines": { "node": ">=16" }, @@ -14436,12 +16757,14 @@ }, "node_modules/node-releases": { "version": "2.0.18", - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" }, "node_modules/node-stdlib-browser": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.2.0.tgz", + "integrity": "sha512-VSjFxUhRhkyed8AtLwSCkMrJRfQ3e2lGtG3sP6FEgaLKBBbxM/dLfjRe1+iLhjvyLFW3tBQ8+c0pcOtXGbAZJg==", "dev": true, - "license": "MIT", "dependencies": { "assert": "^2.0.0", "browser-resolve": "^2.0.0", @@ -14477,8 +16800,9 @@ }, "node_modules/node-stdlib-browser/node_modules/domain-browser": { "version": "4.23.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.23.0.tgz", + "integrity": "sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==", "dev": true, - "license": "Artistic-2.0", "engines": { "node": ">=10" }, @@ -14488,8 +16812,9 @@ }, "node_modules/node-stdlib-browser/node_modules/pkg-dir": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^5.0.0" }, @@ -14499,13 +16824,15 @@ }, "node_modules/node-stdlib-browser/node_modules/punycode": { "version": "1.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true }, "node_modules/nodemon": { "version": "3.1.4", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.4.tgz", + "integrity": "sha512-wjPBbFhtpJwmIeY2yP7QF+UKzPfltVGtfce1g/bB15/8vCGZj8uxD62b/b9M9/WVgme0NZudpownKN+c0plXlQ==", "dev": true, - "license": "MIT", "dependencies": { "chokidar": "^3.5.2", "debug": "^4", @@ -14531,8 +16858,9 @@ }, "node_modules/nodemon/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -14540,8 +16868,9 @@ }, "node_modules/nodemon/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -14551,7 +16880,8 @@ }, "node_modules/nopt": { "version": "5.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "dependencies": { "abbrev": "1" }, @@ -14564,8 +16894,9 @@ }, "node_modules/normalize-package-data": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^5.0.0", "is-core-module": "^2.8.1", @@ -14578,15 +16909,17 @@ }, "node_modules/normalize-path": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "engines": { "node": ">=0.10.0" } }, "node_modules/normalize-url": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.16" }, @@ -14596,16 +16929,18 @@ }, "node_modules/npm-bundled": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", "dev": true, - "license": "ISC", "dependencies": { "npm-normalize-package-bin": "^1.0.1" } }, "node_modules/npm-check-updates": { "version": "15.3.4", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-15.3.4.tgz", + "integrity": "sha512-YZDcw0DFn5ggl7b9znZ7N0i+Q1HVIxW+eZlV7XvR+RIs367H+ytKCB4slAU33Bg9IljY7uv3dsFjV2npOt3GyA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "chalk": "^5.0.1", "cli-table": "^0.3.11", @@ -14645,8 +16980,9 @@ }, "node_modules/npm-check-updates/node_modules/chalk": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, - "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -14656,16 +16992,18 @@ }, "node_modules/npm-check-updates/node_modules/commander": { "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "dev": true, - "license": "MIT", "engines": { "node": "^12.20.0 || >=14" } }, "node_modules/npm-check-updates/node_modules/get-stdin": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -14675,8 +17013,9 @@ }, "node_modules/npm-check-updates/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -14686,8 +17025,9 @@ }, "node_modules/npm-check-updates/node_modules/yaml": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", + "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", "dev": true, - "license": "ISC", "bin": { "yaml": "bin.mjs" }, @@ -14697,8 +17037,9 @@ }, "node_modules/npm-install-checks": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", + "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "semver": "^7.1.1" }, @@ -14708,13 +17049,15 @@ }, "node_modules/npm-normalize-package-bin": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true }, "node_modules/npm-package-arg": { "version": "9.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.2.tgz", + "integrity": "sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==", "dev": true, - "license": "ISC", "dependencies": { "hosted-git-info": "^5.0.0", "proc-log": "^2.0.1", @@ -14727,8 +17070,9 @@ }, "node_modules/npm-packlist": { "version": "5.1.3", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", + "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^8.0.1", "ignore-walk": "^5.0.1", @@ -14744,8 +17088,10 @@ }, "node_modules/npm-packlist/node_modules/glob": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -14762,8 +17108,9 @@ }, "node_modules/npm-packlist/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -14773,8 +17120,9 @@ }, "node_modules/npm-packlist/node_modules/npm-bundled": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", + "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", "dev": true, - "license": "ISC", "dependencies": { "npm-normalize-package-bin": "^2.0.0" }, @@ -14784,16 +17132,18 @@ }, "node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/npm-pick-manifest": { "version": "7.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz", + "integrity": "sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw==", "dev": true, - "license": "ISC", "dependencies": { "npm-install-checks": "^5.0.0", "npm-normalize-package-bin": "^2.0.0", @@ -14806,16 +17156,18 @@ }, "node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/npm-registry-fetch": { "version": "13.3.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", + "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", "dev": true, - "license": "ISC", "dependencies": { "make-fetch-happen": "^10.0.6", "minipass": "^3.1.6", @@ -14831,8 +17183,9 @@ }, "node_modules/npm-registry-fetch/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -14842,8 +17195,9 @@ }, "node_modules/npm-run-all": { "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "chalk": "^2.4.1", @@ -14866,8 +17220,9 @@ }, "node_modules/npm-run-all/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -14875,8 +17230,9 @@ }, "node_modules/npm-run-all/node_modules/cross-spawn": { "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, - "license": "MIT", "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -14890,8 +17246,9 @@ }, "node_modules/npm-run-all/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -14901,24 +17258,27 @@ }, "node_modules/npm-run-all/node_modules/path-key": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/npm-run-all/node_modules/semver": { "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/npm-run-all/node_modules/shebang-command": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, - "license": "MIT", "dependencies": { "shebang-regex": "^1.0.0" }, @@ -14928,16 +17288,18 @@ }, "node_modules/npm-run-all/node_modules/shebang-regex": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/npm-run-all/node_modules/which": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -14947,7 +17309,8 @@ }, "node_modules/npm-run-path": { "version": "4.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dependencies": { "path-key": "^3.0.0" }, @@ -14957,7 +17320,9 @@ }, "node_modules/npmlog": { "version": "5.0.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "deprecated": "This package is no longer supported.", "dependencies": { "are-we-there-yet": "^2.0.0", "console-control-strings": "^1.1.0", @@ -14967,7 +17332,8 @@ }, "node_modules/nth-check": { "version": "2.1.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dependencies": { "boolbase": "^1.0.0" }, @@ -14977,18 +17343,21 @@ }, "node_modules/nwsapi": { "version": "2.2.12", - "license": "MIT" + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz", + "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==" }, "node_modules/object-assign": { "version": "4.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "engines": { "node": ">=0.10.0" } }, "node_modules/object-inspect": { "version": "1.13.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "engines": { "node": ">= 0.4" }, @@ -14998,7 +17367,8 @@ }, "node_modules/object-is": { "version": "1.1.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1" @@ -15012,14 +17382,16 @@ }, "node_modules/object-keys": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { "version": "4.1.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -15035,16 +17407,19 @@ }, "node_modules/obuf": { "version": "1.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" }, "node_modules/octal": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/octal/-/octal-1.0.0.tgz", + "integrity": "sha512-nnda7W8d+A3vEIY+UrDQzzboPf1vhs4JYVhff5CDkq9QNoZY7Xrxeo/htox37j9dZf7yNHevZzqtejWgy1vCqQ==", + "dev": true }, "node_modules/octokit": { "version": "3.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/octokit/-/octokit-3.2.1.tgz", + "integrity": "sha512-u+XuSejhe3NdIvty3Jod00JvTdAE/0/+XbhIDhefHbu+2OcTRHd80aCiH6TX19ZybJmwPQBKFQmHGxp0i9mJrg==", "dependencies": { "@octokit/app": "^14.0.2", "@octokit/core": "^5.0.0", @@ -15063,7 +17438,8 @@ }, "node_modules/octokit/node_modules/@octokit/plugin-paginate-rest": { "version": "11.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.1.tgz", + "integrity": "sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g==", "dependencies": { "@octokit/types": "^13.5.0" }, @@ -15076,7 +17452,8 @@ }, "node_modules/octokit/node_modules/@octokit/plugin-rest-endpoint-methods": { "version": "13.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.2.2.tgz", + "integrity": "sha512-EI7kXWidkt3Xlok5uN43suK99VWqc8OaIMktY9d9+RNKl69juoTyxmLoWPIZgJYzi41qj/9zU7G/ljnNOJ5AFA==", "dependencies": { "@octokit/types": "^13.5.0" }, @@ -15089,7 +17466,8 @@ }, "node_modules/on-finished": { "version": "2.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dependencies": { "ee-first": "1.1.1" }, @@ -15099,21 +17477,24 @@ }, "node_modules/on-headers": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "engines": { "node": ">= 0.8" } }, "node_modules/once": { "version": "1.4.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dependencies": { "wrappy": "1" } }, "node_modules/onetime": { "version": "5.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -15126,7 +17507,8 @@ }, "node_modules/open": { "version": "8.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -15141,7 +17523,8 @@ }, "node_modules/openpgp": { "version": "5.11.2", - "license": "LGPL-3.0+", + "resolved": "https://registry.npmjs.org/openpgp/-/openpgp-5.11.2.tgz", + "integrity": "sha512-f8dJFVLwdkvPvW3VPFs6q9Vs2+HNhdvwls7a/MIFcQUB+XiQzRe7alfa3RtwfGJU7oUDDMAWPZ0nYsHa23Az+A==", "dependencies": { "asn1.js": "^5.0.0" }, @@ -15151,24 +17534,28 @@ }, "node_modules/os-browserify": { "version": "0.3.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" }, "node_modules/ospath": { "version": "1.2.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", + "dev": true }, "node_modules/p-cancelable": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", "dev": true, - "license": "MIT", "engines": { "node": ">=12.20" } }, "node_modules/p-limit": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dependencies": { "yocto-queue": "^1.0.0" }, @@ -15181,8 +17568,9 @@ }, "node_modules/p-locate": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -15195,8 +17583,9 @@ }, "node_modules/p-locate/node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -15209,8 +17598,9 @@ }, "node_modules/p-locate/node_modules/yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -15220,8 +17610,9 @@ }, "node_modules/p-map": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, - "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -15234,7 +17625,8 @@ }, "node_modules/p-retry": { "version": "6.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", + "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", "dependencies": { "@types/retry": "0.12.2", "is-network-error": "^1.0.0", @@ -15249,22 +17641,25 @@ }, "node_modules/p-retry/node_modules/retry": { "version": "0.13.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "engines": { "node": ">= 4" } }, "node_modules/p-try": { "version": "2.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "engines": { "node": ">=6" } }, "node_modules/package-json": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", + "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", "dev": true, - "license": "MIT", "dependencies": { "got": "^12.1.0", "registry-auth-token": "^5.0.1", @@ -15280,12 +17675,14 @@ }, "node_modules/package-json-from-dist": { "version": "1.0.0", - "license": "BlueOak-1.0.0" + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" }, "node_modules/pacote": { "version": "13.6.2", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", + "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/git": "^3.0.0", "@npmcli/installed-package-contents": "^1.0.7", @@ -15318,8 +17715,9 @@ }, "node_modules/pacote/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -15329,11 +17727,13 @@ }, "node_modules/pako": { "version": "1.0.11", - "license": "(MIT AND Zlib)" + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, "node_modules/param-case": { "version": "3.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -15341,7 +17741,8 @@ }, "node_modules/parent-module": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dependencies": { "callsites": "^3.0.0" }, @@ -15351,7 +17752,8 @@ }, "node_modules/parse-asn1": { "version": "5.1.7", - "license": "ISC", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", + "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", "dependencies": { "asn1.js": "^4.10.1", "browserify-aes": "^1.2.0", @@ -15366,7 +17768,8 @@ }, "node_modules/parse-asn1/node_modules/asn1.js": { "version": "4.10.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -15375,12 +17778,14 @@ }, "node_modules/parse-asn1/node_modules/bn.js": { "version": "4.12.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "node_modules/parse-github-url": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.3.tgz", + "integrity": "sha512-tfalY5/4SqGaV/GIGzWyHnFjlpTPTNpENR9Ea2lLldSJ8EWXMsvacWucqY3m3I4YPtas15IxTLQVQ5NSYXPrww==", "dev": true, - "license": "MIT", "bin": { "parse-github-url": "cli.js" }, @@ -15390,7 +17795,8 @@ }, "node_modules/parse-json": { "version": "5.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -15406,15 +17812,17 @@ }, "node_modules/parse-passwd": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/parse5": { "version": "7.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "dependencies": { "entities": "^4.4.0" }, @@ -15422,26 +17830,18 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/parse5/node_modules/entities": { - "version": "4.5.0", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/parseurl": { "version": "1.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "engines": { "node": ">= 0.8" } }, "node_modules/pascal-case": { "version": "3.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -15449,36 +17849,42 @@ }, "node_modules/path-browserify": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" }, "node_modules/path-exists": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "engines": { "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", - "license": "MIT" + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-scurry": { "version": "1.11.1", - "license": "BlueOak-1.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -15492,33 +17898,39 @@ }, "node_modules/path-scurry/node_modules/lru-cache": { "version": "10.4.3", - "license": "ISC" + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" }, "node_modules/path-to-regexp": { "version": "0.1.7", - "license": "MIT" + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, "node_modules/path-type": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "engines": { "node": ">=8" } }, "node_modules/pathe": { "version": "1.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==" }, "node_modules/pathval": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "engines": { "node": "*" } }, "node_modules/pbkdf2": { "version": "3.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dependencies": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -15532,27 +17944,32 @@ }, "node_modules/pend": { "version": "1.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" }, "node_modules/perf-regexes": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/perf-regexes/-/perf-regexes-1.0.1.tgz", + "integrity": "sha512-L7MXxUDtqr4PUaLFCDCXBfGV/6KLIuSEccizDI7JxT+c9x1G1v04BQ4+4oag84SHaCdrBgQAIs/Cqn+flwFPng==", "engines": { "node": ">=6.14" } }, "node_modules/performance-now": { "version": "2.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true }, "node_modules/picocolors": { "version": "1.0.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" }, "node_modules/picomatch": { "version": "2.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "engines": { "node": ">=8.6" }, @@ -15562,8 +17979,9 @@ }, "node_modules/pidtree": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", "dev": true, - "license": "MIT", "bin": { "pidtree": "bin/pidtree.js" }, @@ -15573,15 +17991,17 @@ }, "node_modules/pify": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/pkg-dir": { "version": "7.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", "dependencies": { "find-up": "^6.3.0" }, @@ -15594,7 +18014,8 @@ }, "node_modules/pkg-dir/node_modules/find-up": { "version": "6.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" @@ -15608,7 +18029,8 @@ }, "node_modules/pkg-dir/node_modules/locate-path": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dependencies": { "p-locate": "^6.0.0" }, @@ -15621,7 +18043,8 @@ }, "node_modules/pkg-dir/node_modules/p-locate": { "version": "6.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dependencies": { "p-limit": "^4.0.0" }, @@ -15634,14 +18057,16 @@ }, "node_modules/pkg-dir/node_modules/path-exists": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, "node_modules/pkg-types": { "version": "1.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.3.tgz", + "integrity": "sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==", "dependencies": { "confbox": "^0.1.7", "mlly": "^1.7.1", @@ -15650,16 +18075,18 @@ }, "node_modules/please-upgrade-node": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", "dev": true, - "license": "MIT", "dependencies": { "semver-compare": "^1.0.0" } }, "node_modules/plimit-lit": { "version": "1.6.1", + "resolved": "https://registry.npmjs.org/plimit-lit/-/plimit-lit-1.6.1.tgz", + "integrity": "sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==", "dev": true, - "license": "MIT", "dependencies": { "queue-lit": "^1.5.1" }, @@ -15669,13 +18096,16 @@ }, "node_modules/possible-typed-array-names": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", "engines": { "node": ">= 0.4" } }, "node_modules/postcss": { "version": "8.4.41", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", + "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", "funding": [ { "type": "opencollective", @@ -15690,7 +18120,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.1", @@ -15702,8 +18131,9 @@ }, "node_modules/postcss-modules-extract-imports": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", "dev": true, - "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -15713,8 +18143,9 @@ }, "node_modules/postcss-modules-local-by-default": { "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", "dev": true, - "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", @@ -15729,8 +18160,9 @@ }, "node_modules/postcss-modules-scope": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", "dev": true, - "license": "ISC", "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -15743,8 +18175,9 @@ }, "node_modules/postcss-modules-values": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, - "license": "ISC", "dependencies": { "icss-utils": "^5.0.0" }, @@ -15757,8 +18190,9 @@ }, "node_modules/postcss-selector-parser": { "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -15769,12 +18203,14 @@ }, "node_modules/postcss-value-parser": { "version": "4.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true }, "node_modules/prebuild-install": { "version": "7.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", + "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", "dependencies": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", @@ -15798,11 +18234,13 @@ }, "node_modules/prebuild-install/node_modules/chownr": { "version": "1.1.4", - "license": "ISC" + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, "node_modules/prebuild-install/node_modules/tar-fs": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -15812,7 +18250,8 @@ }, "node_modules/prebuild-install/node_modules/tar-stream": { "version": "2.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -15826,8 +18265,9 @@ }, "node_modules/pretty-bytes": { "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" }, @@ -15837,7 +18277,8 @@ }, "node_modules/pretty-error": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", "dependencies": { "lodash": "^4.17.20", "renderkid": "^3.0.0" @@ -15845,7 +18286,8 @@ }, "node_modules/pretty-format": { "version": "29.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -15857,7 +18299,8 @@ }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "engines": { "node": ">=10" }, @@ -15867,44 +18310,51 @@ }, "node_modules/proc-log": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/process": { "version": "0.11.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "engines": { "node": ">= 0.6.0" } }, "node_modules/process-es6": { "version": "0.11.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/process-es6/-/process-es6-0.11.6.tgz", + "integrity": "sha512-GYBRQtL4v3wgigq10Pv58jmTbFXlIiTbSfgnNqZLY0ldUPqy1rRxDI5fCjoCpnM6TqmHQI8ydzTBXW86OYc0gA==", + "dev": true }, "node_modules/process-nextick-args": { "version": "2.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/progress": { "version": "2.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "engines": { "node": ">=0.4.0" } }, "node_modules/promise-inflight": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true }, "node_modules/promise-retry": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, - "license": "MIT", "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -15915,8 +18365,9 @@ }, "node_modules/prompts-ncu": { "version": "2.5.1", + "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-2.5.1.tgz", + "integrity": "sha512-Hdd7GgV7b76Yh9FP9HL1D9xqtJCJdVPpiM2vDtuoc8W1KfweJe15gutFYmxkq83ViFaagFM8K0UcPCQ/tZq8bA==", "dev": true, - "license": "MIT", "dependencies": { "kleur": "^4.0.1", "sisteransi": "^1.0.5" @@ -15927,7 +18378,8 @@ }, "node_modules/prop-types": { "version": "15.8.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -15936,23 +18388,27 @@ }, "node_modules/prop-types/node_modules/react-is": { "version": "16.13.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/propagate": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", "engines": { "node": ">= 8" } }, "node_modules/proto-list": { "version": "1.2.4", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true }, "node_modules/proxy-addr": { "version": "2.0.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -15963,26 +18419,31 @@ }, "node_modules/proxy-from-env": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", + "dev": true }, "node_modules/prr": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true }, "node_modules/psl": { "version": "1.9.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" }, "node_modules/pstree.remy": { "version": "1.1.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true }, "node_modules/public-encrypt": { "version": "4.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "dependencies": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", @@ -15994,11 +18455,13 @@ }, "node_modules/public-encrypt/node_modules/bn.js": { "version": "4.12.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "node_modules/pump": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -16006,23 +18469,26 @@ }, "node_modules/punycode": { "version": "2.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "engines": { "node": ">=6" } }, "node_modules/punycode.js": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/pupa": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", + "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", "dev": true, - "license": "MIT", "dependencies": { "escape-goat": "^4.0.0" }, @@ -16035,7 +18501,8 @@ }, "node_modules/qs": { "version": "6.13.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dependencies": { "side-channel": "^1.0.6" }, @@ -16048,24 +18515,30 @@ }, "node_modules/querystring-es3": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", "engines": { "node": ">=0.4.x" } }, "node_modules/querystringify": { "version": "2.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, "node_modules/queue-lit": { "version": "1.5.2", + "resolved": "https://registry.npmjs.org/queue-lit/-/queue-lit-1.5.2.tgz", + "integrity": "sha512-tLc36IOPeMAubu8BkW8YDBV+WyIgKlYU7zUNs0J5Vk9skSZ4JfGlPOqplP0aHdfv7HL0B2Pg6nwiq60Qc6M2Hw==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" } }, "node_modules/queue-microtask": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "funding": [ { "type": "github", @@ -16079,16 +18552,17 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/queue-tick": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" }, "node_modules/quick-lru": { "version": "5.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "engines": { "node": ">=10" }, @@ -16098,14 +18572,16 @@ }, "node_modules/randombytes": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/randomfill": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "dependencies": { "randombytes": "^2.0.5", "safe-buffer": "^5.1.0" @@ -16113,14 +18589,16 @@ }, "node_modules/range-parser": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "engines": { "node": ">= 0.6" } }, "node_modules/raw-body": { "version": "2.5.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -16133,7 +18611,8 @@ }, "node_modules/rc": { "version": "1.2.8", - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -16146,8 +18625,9 @@ }, "node_modules/rc-config-loader": { "version": "4.1.3", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz", + "integrity": "sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^4.3.4", "js-yaml": "^4.1.0", @@ -16157,13 +18637,15 @@ }, "node_modules/rc-config-loader/node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/rc-config-loader/node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -16173,18 +18655,21 @@ }, "node_modules/rc/node_modules/ini": { "version": "1.3.8", - "license": "ISC" + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "node_modules/rc/node_modules/strip-json-comments": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "engines": { "node": ">=0.10.0" } }, "node_modules/react": { "version": "18.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "dependencies": { "loose-envify": "^1.1.0" }, @@ -16194,7 +18679,8 @@ }, "node_modules/react-dom": { "version": "18.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -16205,7 +18691,8 @@ }, "node_modules/react-i18next": { "version": "11.18.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.18.6.tgz", + "integrity": "sha512-yHb2F9BiT0lqoQDt8loZ5gWP331GwctHz9tYQ8A2EIEUu+CcEdjBLQWli1USG3RdWQt3W+jqQLg/d4rrQR96LA==", "dependencies": { "@babel/runtime": "^7.14.5", "html-parse-stringify": "^3.0.1" @@ -16225,20 +18712,23 @@ }, "node_modules/react-is": { "version": "18.3.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" }, "node_modules/react-refresh": { "version": "0.14.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", "engines": { "node": ">=0.10.0" } }, "node_modules/react-router": { - "version": "6.26.0", - "license": "MIT", + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.1.tgz", + "integrity": "sha512-kIwJveZNwp7teQRI5QmwWo39A5bXRyqpH0COKKmPnyD2vBvDwgFXSqDUYtt1h+FEyfnE8eXr7oe0MxRzVwCcvQ==", "dependencies": { - "@remix-run/router": "1.19.0" + "@remix-run/router": "1.19.1" }, "engines": { "node": ">=14.0.0" @@ -16248,11 +18738,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.26.0", - "license": "MIT", + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.1.tgz", + "integrity": "sha512-veut7m41S1fLql4pLhxeSW3jlqs+4MtjRLj0xvuCEXsxusJCbs6I8yn9BxzzDX2XDgafrccY6hwjmd/bL54tFw==", "dependencies": { - "@remix-run/router": "1.19.0", - "react-router": "6.26.0" + "@remix-run/router": "1.19.1", + "react-router": "6.26.1" }, "engines": { "node": ">=14.0.0" @@ -16264,7 +18755,8 @@ }, "node_modules/react-transition-group": { "version": "4.4.5", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", "dependencies": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", @@ -16278,8 +18770,10 @@ }, "node_modules/read-package-json": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", + "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", + "deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.", "dev": true, - "license": "ISC", "dependencies": { "glob": "^8.0.1", "json-parse-even-better-errors": "^2.3.1", @@ -16292,8 +18786,9 @@ }, "node_modules/read-package-json-fast": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", "dev": true, - "license": "ISC", "dependencies": { "json-parse-even-better-errors": "^2.3.0", "npm-normalize-package-bin": "^1.0.1" @@ -16304,8 +18799,10 @@ }, "node_modules/read-package-json/node_modules/glob": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -16322,8 +18819,9 @@ }, "node_modules/read-package-json/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -16333,16 +18831,18 @@ }, "node_modules/read-package-json/node_modules/npm-normalize-package-bin": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", "dev": true, - "license": "ISC", "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/read-pkg": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, - "license": "MIT", "dependencies": { "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", @@ -16354,13 +18854,15 @@ }, "node_modules/read-pkg/node_modules/hosted-git-info": { "version": "2.8.9", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, "node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -16370,8 +18872,9 @@ }, "node_modules/read-pkg/node_modules/path-type": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, - "license": "MIT", "dependencies": { "pify": "^3.0.0" }, @@ -16381,23 +18884,26 @@ }, "node_modules/read-pkg/node_modules/pify": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/read-pkg/node_modules/semver": { "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/readable-stream": { "version": "3.6.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -16409,7 +18915,8 @@ }, "node_modules/readdirp": { "version": "3.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dependencies": { "picomatch": "^2.2.1" }, @@ -16419,7 +18926,8 @@ }, "node_modules/rechoir": { "version": "0.8.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dependencies": { "resolve": "^1.20.0" }, @@ -16429,11 +18937,13 @@ }, "node_modules/regenerate": { "version": "1.4.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" }, "node_modules/regenerate-unicode-properties": { "version": "10.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "dependencies": { "regenerate": "^1.4.2" }, @@ -16443,19 +18953,22 @@ }, "node_modules/regenerator-runtime": { "version": "0.14.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/regenerator-transform": { "version": "0.15.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dependencies": { "@babel/runtime": "^7.8.4" } }, "node_modules/regexp.prototype.flags": { "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "define-properties": "^1.2.1", @@ -16471,7 +18984,8 @@ }, "node_modules/regexpu-core": { "version": "5.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dependencies": { "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", @@ -16486,8 +19000,9 @@ }, "node_modules/registry-auth-token": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", "dev": true, - "license": "MIT", "dependencies": { "@pnpm/npm-conf": "^2.1.0" }, @@ -16497,8 +19012,9 @@ }, "node_modules/registry-url": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", "dev": true, - "license": "MIT", "dependencies": { "rc": "1.2.8" }, @@ -16511,7 +19027,8 @@ }, "node_modules/regjsparser": { "version": "0.9.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dependencies": { "jsesc": "~0.5.0" }, @@ -16521,28 +19038,33 @@ }, "node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "bin": { "jsesc": "bin/jsesc" } }, "node_modules/relateurl": { "version": "0.2.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "engines": { "node": ">= 0.10" } }, "node_modules/remote-git-tags": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remote-git-tags/-/remote-git-tags-3.0.0.tgz", + "integrity": "sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/renderkid": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", "dependencies": { "css-select": "^4.1.3", "dom-converter": "^0.2.0", @@ -16553,38 +19075,44 @@ }, "node_modules/request-progress": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", "dev": true, - "license": "MIT", "dependencies": { "throttleit": "^1.0.0" } }, "node_modules/require-directory": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "engines": { "node": ">=0.10.0" } }, "node_modules/require-from-string": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "engines": { "node": ">=0.10.0" } }, "node_modules/require-package-name": { "version": "2.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz", + "integrity": "sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==", + "dev": true }, "node_modules/requires-port": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "node_modules/resolve": { "version": "1.22.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -16599,11 +19127,13 @@ }, "node_modules/resolve-alpn": { "version": "1.2.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" }, "node_modules/resolve-cwd": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dependencies": { "resolve-from": "^5.0.0" }, @@ -16613,8 +19143,9 @@ }, "node_modules/resolve-dir": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", "dev": true, - "license": "MIT", "dependencies": { "expand-tilde": "^2.0.0", "global-modules": "^1.0.0" @@ -16625,23 +19156,26 @@ }, "node_modules/resolve-from": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "engines": { "node": ">=8" } }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, "node_modules/responselike": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", "dev": true, - "license": "MIT", "dependencies": { "lowercase-keys": "^3.0.0" }, @@ -16654,8 +19188,9 @@ }, "node_modules/restore-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, - "license": "MIT", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -16666,15 +19201,17 @@ }, "node_modules/retry": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/reusify": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -16682,12 +19219,15 @@ }, "node_modules/rfdc": { "version": "1.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true }, "node_modules/rimraf": { "version": "3.0.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dependencies": { "glob": "^7.1.3" }, @@ -16700,7 +19240,8 @@ }, "node_modules/rimraf/node_modules/brace-expansion": { "version": "1.1.11", - "license": "MIT", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -16708,7 +19249,9 @@ }, "node_modules/rimraf/node_modules/glob": { "version": "7.2.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -16726,7 +19269,8 @@ }, "node_modules/rimraf/node_modules/minimatch": { "version": "3.1.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -16736,7 +19280,8 @@ }, "node_modules/ripemd160": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -16744,7 +19289,8 @@ }, "node_modules/roarr": { "version": "2.15.4", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", "optional": true, "dependencies": { "boolean": "^3.0.1", @@ -16760,12 +19306,14 @@ }, "node_modules/roarr/node_modules/sprintf-js": { "version": "1.1.3", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "optional": true }, "node_modules/rollup": { - "version": "4.20.0", - "license": "MIT", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.0.tgz", + "integrity": "sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==", "dependencies": { "@types/estree": "1.0.5" }, @@ -16777,28 +19325,29 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.20.0", - "@rollup/rollup-android-arm64": "4.20.0", - "@rollup/rollup-darwin-arm64": "4.20.0", - "@rollup/rollup-darwin-x64": "4.20.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.20.0", - "@rollup/rollup-linux-arm-musleabihf": "4.20.0", - "@rollup/rollup-linux-arm64-gnu": "4.20.0", - "@rollup/rollup-linux-arm64-musl": "4.20.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.20.0", - "@rollup/rollup-linux-riscv64-gnu": "4.20.0", - "@rollup/rollup-linux-s390x-gnu": "4.20.0", - "@rollup/rollup-linux-x64-gnu": "4.20.0", - "@rollup/rollup-linux-x64-musl": "4.20.0", - "@rollup/rollup-win32-arm64-msvc": "4.20.0", - "@rollup/rollup-win32-ia32-msvc": "4.20.0", - "@rollup/rollup-win32-x64-msvc": "4.20.0", + "@rollup/rollup-android-arm-eabi": "4.21.0", + "@rollup/rollup-android-arm64": "4.21.0", + "@rollup/rollup-darwin-arm64": "4.21.0", + "@rollup/rollup-darwin-x64": "4.21.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.0", + "@rollup/rollup-linux-arm-musleabihf": "4.21.0", + "@rollup/rollup-linux-arm64-gnu": "4.21.0", + "@rollup/rollup-linux-arm64-musl": "4.21.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.0", + "@rollup/rollup-linux-riscv64-gnu": "4.21.0", + "@rollup/rollup-linux-s390x-gnu": "4.21.0", + "@rollup/rollup-linux-x64-gnu": "4.21.0", + "@rollup/rollup-linux-x64-musl": "4.21.0", + "@rollup/rollup-win32-arm64-msvc": "4.21.0", + "@rollup/rollup-win32-ia32-msvc": "4.21.0", + "@rollup/rollup-win32-x64-msvc": "4.21.0", "fsevents": "~2.3.2" } }, "node_modules/rollup-plugin-cleanup": { "version": "3.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/rollup-plugin-cleanup/-/rollup-plugin-cleanup-3.2.1.tgz", + "integrity": "sha512-zuv8EhoO3TpnrU8MX8W7YxSbO4gmOR0ny06Lm3nkFfq0IVKdBUtHwhVzY1OAJyNCIAdLiyPnOrU0KnO0Fri1GQ==", "dependencies": { "js-cleanup": "^1.2.0", "rollup-pluginutils": "^2.8.2" @@ -16812,7 +19361,8 @@ }, "node_modules/rollup-plugin-import-css": { "version": "3.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/rollup-plugin-import-css/-/rollup-plugin-import-css-3.5.1.tgz", + "integrity": "sha512-cXgMPCUoDu64A2OFme4Is3eHmLiA54qTzxfvCbsORzro3C1adSe1fMMKUqfOUKTXROAPpW9PNDjpaGgPloGJOQ==", "dependencies": { "@rollup/pluginutils": "^5.0.4" }, @@ -16825,8 +19375,9 @@ }, "node_modules/rollup-plugin-node-builtins": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-builtins/-/rollup-plugin-node-builtins-2.1.2.tgz", + "integrity": "sha512-bxdnJw8jIivr2yEyt8IZSGqZkygIJOGAWypXvHXnwKAbUcN4Q/dGTx7K0oAJryC/m6aq6tKutltSeXtuogU6sw==", "dev": true, - "license": "ISC", "dependencies": { "browserify-fs": "^1.0.0", "buffer-es6": "^4.9.2", @@ -16836,7 +19387,8 @@ }, "node_modules/rollup-plugin-visualizer": { "version": "5.12.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz", + "integrity": "sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==", "dependencies": { "open": "^8.4.0", "picomatch": "^2.3.1", @@ -16860,29 +19412,34 @@ }, "node_modules/rollup-plugin-visualizer/node_modules/source-map": { "version": "0.7.4", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "engines": { "node": ">= 8" } }, "node_modules/rollup-pluginutils": { "version": "2.8.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", "dependencies": { "estree-walker": "^0.6.1" } }, "node_modules/rollup-pluginutils/node_modules/estree-walker": { "version": "0.6.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==" }, "node_modules/rrweb-cssom": { "version": "0.7.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", + "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==" }, "node_modules/run-applescript": { "version": "7.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", "engines": { "node": ">=18" }, @@ -16892,8 +19449,9 @@ }, "node_modules/run-con": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/run-con/-/run-con-1.3.2.tgz", + "integrity": "sha512-CcfE+mYiTcKEzg0IqS08+efdnH0oJ3zV0wSUFBNrMHMuxCtXvBCLzCJHatwuXDcu/RlhjTziTo/a1ruQik6/Yg==", "dev": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", "ini": "~4.1.0", @@ -16906,16 +19464,18 @@ }, "node_modules/run-con/node_modules/ini": { "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", "dev": true, - "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/run-con/node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -16925,6 +19485,8 @@ }, "node_modules/run-parallel": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "funding": [ { "type": "github", @@ -16939,22 +19501,23 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/rxjs": { "version": "7.8.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/safe-array-concat": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "get-intrinsic": "^1.2.4", @@ -16970,6 +19533,8 @@ }, "node_modules/safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -16983,13 +19548,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/safe-regex-test": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -17004,11 +19569,13 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/saxes": { "version": "6.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dependencies": { "xmlchars": "^2.2.0" }, @@ -17018,18 +19585,21 @@ }, "node_modules/scale-ts": { "version": "1.6.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/scale-ts/-/scale-ts-1.6.0.tgz", + "integrity": "sha512-Ja5VCjNZR8TGKhUumy9clVVxcDpM+YFjAnkMuwQy68Hixio3VRRvWdE3g8T/yC+HXA0ZDQl2TGyUmtmbcVl40Q==" }, "node_modules/scheduler": { "version": "0.23.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "dependencies": { "loose-envify": "^1.1.0" } }, "node_modules/schema-utils": { "version": "4.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -17046,15 +19616,18 @@ }, "node_modules/seedrandom": { "version": "3.0.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", + "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" }, "node_modules/select-hose": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" }, "node_modules/selfsigned": { "version": "2.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" @@ -17065,7 +19638,8 @@ }, "node_modules/semver": { "version": "7.6.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -17075,13 +19649,15 @@ }, "node_modules/semver-compare": { "version": "1.0.0", - "devOptional": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "devOptional": true }, "node_modules/semver-diff": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^7.3.5" }, @@ -17094,12 +19670,14 @@ }, "node_modules/semver-utils": { "version": "1.1.4", - "dev": true, - "license": "APACHEv2" + "resolved": "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.4.tgz", + "integrity": "sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA==", + "dev": true }, "node_modules/send": { "version": "0.18.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -17121,22 +19699,26 @@ }, "node_modules/send/node_modules/debug": { "version": "2.6.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { "ms": "2.0.0" } }, "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/send/node_modules/ms": { "version": "2.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/serialize-error": { "version": "7.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", "optional": true, "dependencies": { "type-fest": "^0.13.1" @@ -17150,7 +19732,8 @@ }, "node_modules/serialize-error/node_modules/type-fest": { "version": "0.13.1", - "license": "(MIT OR CC0-1.0)", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", "optional": true, "engines": { "node": ">=10" @@ -17161,14 +19744,16 @@ }, "node_modules/serialize-javascript": { "version": "6.0.2", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/serve-index": { "version": "1.9.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -17184,21 +19769,24 @@ }, "node_modules/serve-index/node_modules/debug": { "version": "2.6.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { "ms": "2.0.0" } }, "node_modules/serve-index/node_modules/depd": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "engines": { "node": ">= 0.6" } }, "node_modules/serve-index/node_modules/http-errors": { "version": "1.6.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -17211,26 +19799,31 @@ }, "node_modules/serve-index/node_modules/inherits": { "version": "2.0.3", - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/serve-index/node_modules/setprototypeof": { "version": "1.1.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" }, "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "engines": { "node": ">= 0.6" } }, "node_modules/serve-static": { "version": "1.15.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -17243,11 +19836,13 @@ }, "node_modules/set-blocking": { "version": "2.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "node_modules/set-function-length": { "version": "1.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -17262,8 +19857,9 @@ }, "node_modules/set-function-name": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, - "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -17276,15 +19872,18 @@ }, "node_modules/setimmediate": { "version": "1.0.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" }, "node_modules/setprototypeof": { "version": "1.2.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "node_modules/sha.js": { "version": "2.4.11", - "license": "(MIT AND BSD-3-Clause)", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -17295,7 +19894,8 @@ }, "node_modules/shallow-clone": { "version": "3.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dependencies": { "kind-of": "^6.0.2" }, @@ -17305,8 +19905,9 @@ }, "node_modules/sharp": { "version": "0.32.6", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", + "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", "hasInstallScript": true, - "license": "Apache-2.0", "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.2", @@ -17326,11 +19927,13 @@ }, "node_modules/sharp/node_modules/node-addon-api": { "version": "6.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==" }, "node_modules/shebang-command": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -17340,22 +19943,25 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "engines": { "node": ">=8" } }, "node_modules/shell-quote": { "version": "1.8.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/shiki": { "version": "0.14.7", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.7.tgz", + "integrity": "sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-sequence-parser": "^1.1.0", "jsonc-parser": "^3.2.0", @@ -17365,7 +19971,8 @@ }, "node_modules/side-channel": { "version": "1.0.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -17381,18 +19988,23 @@ }, "node_modules/sift": { "version": "17.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz", + "integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==" }, "node_modules/siginfo": { "version": "2.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==" }, "node_modules/signal-exit": { "version": "3.0.7", - "license": "ISC" + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/simple-concat": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", "funding": [ { "type": "github", @@ -17406,11 +20018,12 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/simple-get": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", "funding": [ { "type": "github", @@ -17425,7 +20038,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "decompress-response": "^6.0.0", "once": "^1.3.1", @@ -17434,19 +20046,22 @@ }, "node_modules/simple-swizzle": { "version": "0.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", "dependencies": { "is-arrayish": "^0.3.1" } }, "node_modules/simple-swizzle/node_modules/is-arrayish": { "version": "0.3.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, "node_modules/simple-update-notifier": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -17456,28 +20071,32 @@ }, "node_modules/sisteransi": { "version": "1.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true }, "node_modules/skip-regex": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/skip-regex/-/skip-regex-1.0.2.tgz", + "integrity": "sha512-pEjMUbwJ5Pl/6Vn6FsamXHXItJXSRftcibixDmNCWbWhic0hzHrwkMZo0IZ7fMRH9KxcWDFSkzhccB4285PutA==", "engines": { "node": ">=4.2" } }, "node_modules/slash": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/slice-ansi": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -17489,8 +20108,9 @@ }, "node_modules/slice-ansi/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -17503,8 +20123,9 @@ }, "node_modules/slice-ansi/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -17514,12 +20135,14 @@ }, "node_modules/slice-ansi/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/smart-buffer": { "version": "4.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -17527,15 +20150,17 @@ }, "node_modules/smol-toml": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.2.2.tgz", + "integrity": "sha512-fVEjX2ybKdJKzFL46VshQbj9PuA4IUKivalgp48/3zwS9vXzyykzQ6AX92UxHSvWJagziMRLeHMgEzoGO7A8hQ==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">= 18" } }, "node_modules/smoldot": { "version": "2.0.22", - "license": "GPL-3.0-or-later WITH Classpath-exception-2.0", + "resolved": "https://registry.npmjs.org/smoldot/-/smoldot-2.0.22.tgz", + "integrity": "sha512-B50vRgTY6v3baYH6uCgL15tfaag5tcS2o/P5q1OiXcKGv1axZDfz2dzzMuIkVpyMR2ug11F6EAtQlmYBQd292g==", "optional": true, "dependencies": { "ws": "^8.8.1" @@ -17543,7 +20168,8 @@ }, "node_modules/socket.io-client": { "version": "4.7.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz", + "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", @@ -17556,7 +20182,8 @@ }, "node_modules/socket.io-parser": { "version": "4.2.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -17567,7 +20194,8 @@ }, "node_modules/sockjs": { "version": "0.3.24", - "license": "MIT", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", @@ -17576,7 +20204,8 @@ }, "node_modules/socks": { "version": "2.8.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" @@ -17588,8 +20217,9 @@ }, "node_modules/socks-proxy-agent": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dev": true, - "license": "MIT", "dependencies": { "agent-base": "^6.0.2", "debug": "^4.3.3", @@ -17601,21 +20231,24 @@ }, "node_modules/source-map": { "version": "0.6.1", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-js": { "version": "1.2.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { "version": "0.5.21", - "license": "MIT", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -17623,31 +20256,38 @@ }, "node_modules/sourcemap-codec": { "version": "1.4.8", - "license": "MIT" + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead" }, "node_modules/sparse-bitfield": { "version": "3.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", "dependencies": { "memory-pager": "^1.0.2" } }, "node_modules/spawn-command": { "version": "0.0.2", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", + "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", "dev": true }, "node_modules/spawn-please": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spawn-please/-/spawn-please-1.0.0.tgz", + "integrity": "sha512-Kz33ip6NRNKuyTRo3aDWyWxeGeM0ORDO552Fs6E1nj4pLWPkl37SrRtTnq+MEopVaqgmaO6bAvVS+v64BJ5M/A==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/spdx-correct": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -17655,26 +20295,30 @@ }, "node_modules/spdx-exceptions": { "version": "2.5.0", - "dev": true, - "license": "CC-BY-3.0" + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true }, "node_modules/spdx-expression-parse": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, - "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-license-ids": { - "version": "3.0.18", - "dev": true, - "license": "CC0-1.0" + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "dev": true }, "node_modules/spdy": { "version": "4.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", @@ -17688,7 +20332,8 @@ }, "node_modules/spdy-transport": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", @@ -17700,13 +20345,15 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true }, "node_modules/sshpk": { "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", "dev": true, - "license": "MIT", "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -17729,13 +20376,15 @@ }, "node_modules/sshpk/node_modules/jsbn": { "version": "0.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true }, "node_modules/ssri": { "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.1.1" }, @@ -17745,8 +20394,9 @@ }, "node_modules/ssri/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -17756,29 +20406,34 @@ }, "node_modules/stackback": { "version": "0.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==" }, "node_modules/statuses": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "engines": { "node": ">= 0.8" } }, "node_modules/std-env": { "version": "3.7.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==" }, "node_modules/store": { "version": "2.0.12", - "license": "MIT", + "resolved": "https://registry.npmjs.org/store/-/store-2.0.12.tgz", + "integrity": "sha512-eO9xlzDpXLiMr9W1nQ3Nfp9EzZieIQc10zPPMP5jsVV7bLOziSFFBP0XoDXACEIFtdI+rIz0NwWVA/QVJ8zJtw==", "engines": { "node": "*" } }, "node_modules/stream-browserify": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", "dependencies": { "inherits": "~2.0.4", "readable-stream": "^3.5.0" @@ -17786,7 +20441,8 @@ }, "node_modules/stream-http": { "version": "3.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", "dependencies": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.4", @@ -17796,7 +20452,8 @@ }, "node_modules/streamx": { "version": "2.18.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.18.0.tgz", + "integrity": "sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==", "dependencies": { "fast-fifo": "^1.3.2", "queue-tick": "^1.0.1", @@ -17808,19 +20465,22 @@ }, "node_modules/string_decoder": { "version": "1.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dependencies": { "safe-buffer": "~5.2.0" } }, "node_modules/string-range": { "version": "1.2.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/string-range/-/string-range-1.2.2.tgz", + "integrity": "sha512-tYft6IFi8SjplJpxCUxyqisD3b+R2CSkomrtJYCkvuf1KuCAWgz7YXt4O0jip7efpfCemwHEzTEAO8EuOYgh3w==", + "dev": true }, "node_modules/string-replace-loader": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string-replace-loader/-/string-replace-loader-3.1.0.tgz", + "integrity": "sha512-5AOMUZeX5HE/ylKDnEa/KKBqvlnFmRZudSOjVJHxhoJg9QYTwl1rECx7SLR8BBH7tfxb4Rp7EM2XVfQFxIhsbQ==", "dependencies": { "loader-utils": "^2.0.0", "schema-utils": "^3.0.0" @@ -17831,7 +20491,8 @@ }, "node_modules/string-replace-loader/node_modules/ajv": { "version": "6.12.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -17845,18 +20506,21 @@ }, "node_modules/string-replace-loader/node_modules/ajv-keywords": { "version": "3.5.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/string-replace-loader/node_modules/json-schema-traverse": { "version": "0.4.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/string-replace-loader/node_modules/schema-utils": { "version": "3.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -17872,7 +20536,8 @@ }, "node_modules/string-width": { "version": "4.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -17885,7 +20550,8 @@ "node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -17897,8 +20563,9 @@ }, "node_modules/string.prototype.padend": { "version": "3.1.6", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz", + "integrity": "sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -17914,8 +20581,9 @@ }, "node_modules/string.prototype.trim": { "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -17931,8 +20599,9 @@ }, "node_modules/string.prototype.trimend": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -17944,8 +20613,9 @@ }, "node_modules/string.prototype.trimstart": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -17960,7 +20630,8 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -17971,7 +20642,8 @@ "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -17981,30 +20653,34 @@ }, "node_modules/strip-bom": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "engines": { "node": ">=4" } }, "node_modules/strip-final-newline": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "engines": { "node": ">=6" } }, "node_modules/strip-json-comments": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", + "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/strip-literal": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", + "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", "dev": true, - "license": "MIT", "dependencies": { "acorn": "^8.10.0" }, @@ -18014,11 +20690,13 @@ }, "node_modules/stylis": { "version": "4.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" }, "node_modules/sumchecker": { "version": "3.0.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", "dependencies": { "debug": "^4.1.0" }, @@ -18028,8 +20706,9 @@ }, "node_modules/superagent": { "version": "9.0.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-9.0.2.tgz", + "integrity": "sha512-xuW7dzkUpcJq7QnhOsnNUgtYp3xRwpt2F7abdRYIpCsAt0hhUqia0EdxyXZQQpNmGtsCzYHryaKSV3q3GJnq7w==", "dev": true, - "license": "MIT", "dependencies": { "component-emitter": "^1.3.0", "cookiejar": "^2.1.4", @@ -18047,8 +20726,9 @@ }, "node_modules/superagent/node_modules/mime": { "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, - "license": "MIT", "bin": { "mime": "cli.js" }, @@ -18058,8 +20738,9 @@ }, "node_modules/supertest": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.0.0.tgz", + "integrity": "sha512-qlsr7fIC0lSddmA3tzojvzubYxvlGtzumcdHgPwbFWMISQwL22MhM2Y3LNt+6w9Yyx7559VW5ab70dgphm8qQA==", "dev": true, - "license": "MIT", "dependencies": { "methods": "^1.1.2", "superagent": "^9.0.1" @@ -18070,7 +20751,8 @@ }, "node_modules/supports-color": { "version": "5.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dependencies": { "has-flag": "^3.0.0" }, @@ -18080,7 +20762,8 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "engines": { "node": ">= 0.4" }, @@ -18090,18 +20773,21 @@ }, "node_modules/symbol-tree": { "version": "3.2.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, "node_modules/tapable": { "version": "2.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "engines": { "node": ">=6" } }, "node_modules/tar": { "version": "6.2.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -18116,7 +20802,8 @@ }, "node_modules/tar-fs": { "version": "3.0.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", + "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" @@ -18128,7 +20815,8 @@ }, "node_modules/tar-stream": { "version": "3.1.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "dependencies": { "b4a": "^1.6.4", "fast-fifo": "^1.2.0", @@ -18137,14 +20825,16 @@ }, "node_modules/tar/node_modules/minipass": { "version": "5.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "engines": { "node": ">=8" } }, "node_modules/terser": { "version": "5.31.6", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", + "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -18160,7 +20850,8 @@ }, "node_modules/terser-webpack-plugin": { "version": "5.3.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dependencies": { "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", @@ -18192,7 +20883,8 @@ }, "node_modules/terser-webpack-plugin/node_modules/ajv": { "version": "6.12.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -18206,18 +20898,21 @@ }, "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { "version": "3.5.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { "version": "0.4.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { "version": "3.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -18233,12 +20928,14 @@ }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "node_modules/test-exclude": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, - "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -18250,8 +20947,9 @@ }, "node_modules/test-exclude/node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -18259,8 +20957,10 @@ }, "node_modules/test-exclude/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -18278,8 +20978,9 @@ }, "node_modules/test-exclude/node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -18289,14 +20990,16 @@ }, "node_modules/text-decoder": { "version": "1.1.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.1.tgz", + "integrity": "sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==", "dependencies": { "b4a": "^1.6.4" } }, "node_modules/thingies": { "version": "1.21.0", - "license": "Unlicense", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", + "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", "engines": { "node": ">=10.18" }, @@ -18306,24 +21009,28 @@ }, "node_modules/throttleit": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", + "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/through": { "version": "2.3.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true }, "node_modules/thunky": { "version": "1.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" }, "node_modules/timers-browserify": { "version": "2.0.12", - "license": "MIT", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", "dependencies": { "setimmediate": "^1.0.4" }, @@ -18333,40 +21040,46 @@ }, "node_modules/tinybench": { "version": "2.9.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==" }, "node_modules/tinypool": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz", + "integrity": "sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.0.0" } }, "node_modules/tinyspy": { "version": "2.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", "engines": { "node": ">=14.0.0" } }, "node_modules/tmp": { "version": "0.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", "engines": { "node": ">=14.14" } }, "node_modules/to-fast-properties": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "engines": { "node": ">=4" } }, "node_modules/to-regex-range": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dependencies": { "is-number": "^7.0.0" }, @@ -18376,22 +21089,25 @@ }, "node_modules/toidentifier": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "engines": { "node": ">=0.6" } }, "node_modules/touch": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", "dev": true, - "license": "ISC", "bin": { "nodetouch": "bin/nodetouch.js" } }, "node_modules/tough-cookie": { "version": "4.1.4", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -18399,138 +21115,502 @@ "url-parse": "^1.5.3" }, "engines": { - "node": ">=6" + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tree-dump": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz", + "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/tsc-alias": { + "version": "1.8.10", + "resolved": "https://registry.npmjs.org/tsc-alias/-/tsc-alias-1.8.10.tgz", + "integrity": "sha512-Ibv4KAWfFkFdKJxnWfVtdOmB0Zi1RJVxcbPGiCDsFpCQSsmpWyuzHG3rQyI5YkobWwxFPEyQfu1hdo4qLG2zPw==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.3", + "commander": "^9.0.0", + "globby": "^11.0.4", + "mylas": "^2.1.9", + "normalize-path": "^3.0.0", + "plimit-lit": "^1.2.6" + }, + "bin": { + "tsc-alias": "dist/bin/index.js" + } + }, + "node_modules/tsc-alias/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/tsconfck": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.1.tgz", + "integrity": "sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==", + "bin": { + "tsconfck": "bin/tsconfck.js" + }, + "engines": { + "node": "^18 || >=20" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/tsx": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.17.0.tgz", + "integrity": "sha512-eN4mnDA5UMKDt4YZixo9tBioibaMBpoxBkD+rIPAjVmYERSG0/dWEY1CEFuV89CgASlKL499q8AhmkMnnjtOJg==", + "dev": true, + "dependencies": { + "esbuild": "~0.23.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", + "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/darwin-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-loong64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "license": "MIT", + "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 4.0.0" + "node": ">=18" } }, - "node_modules/tr46": { - "version": "0.0.3", - "license": "MIT" - }, - "node_modules/tree-dump": { - "version": "1.0.2", - "license": "Apache-2.0", + "node_modules/tsx/node_modules/@esbuild/linux-s390x": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=18" } }, - "node_modules/tree-kill": { - "version": "1.2.2", + "node_modules/tsx/node_modules/@esbuild/linux-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "bin": { - "tree-kill": "cli.js" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" } }, - "node_modules/tsc-alias": { - "version": "1.8.10", + "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": "^3.5.3", - "commander": "^9.0.0", - "globby": "^11.0.4", - "mylas": "^2.1.9", - "normalize-path": "^3.0.0", - "plimit-lit": "^1.2.6" - }, - "bin": { - "tsc-alias": "dist/bin/index.js" + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/tsc-alias/node_modules/commander": { - "version": "9.5.0", + "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": "^12.20.0 || >=14" + "node": ">=18" } }, - "node_modules/tsconfck": { - "version": "3.1.1", - "license": "MIT", - "bin": { - "tsconfck": "bin/tsconfck.js" - }, + "node_modules/tsx/node_modules/@esbuild/sunos-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": "^18 || >=20" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=18" } }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "license": "MIT", - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, + "node_modules/tsx/node_modules/@esbuild/win32-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6" + "node": ">=18" } }, - "node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "node_modules/tsx": { - "version": "4.17.0", + "node_modules/tsx/node_modules/@esbuild/win32-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "cpu": [ + "ia32" + ], "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "~0.23.0", - "get-tsconfig": "^4.7.5" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" + "node": ">=18" } }, - "node_modules/tsx/node_modules/@esbuild/linux-x64": { - "version": "0.23.0", + "node_modules/tsx/node_modules/@esbuild/win32-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ - "linux" + "win32" ], "engines": { "node": ">=18" } }, "node_modules/tsx/node_modules/esbuild": { - "version": "0.23.0", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", + "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", "dev": true, "hasInstallScript": true, - "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -18538,46 +21618,49 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.23.0", - "@esbuild/android-arm": "0.23.0", - "@esbuild/android-arm64": "0.23.0", - "@esbuild/android-x64": "0.23.0", - "@esbuild/darwin-arm64": "0.23.0", - "@esbuild/darwin-x64": "0.23.0", - "@esbuild/freebsd-arm64": "0.23.0", - "@esbuild/freebsd-x64": "0.23.0", - "@esbuild/linux-arm": "0.23.0", - "@esbuild/linux-arm64": "0.23.0", - "@esbuild/linux-ia32": "0.23.0", - "@esbuild/linux-loong64": "0.23.0", - "@esbuild/linux-mips64el": "0.23.0", - "@esbuild/linux-ppc64": "0.23.0", - "@esbuild/linux-riscv64": "0.23.0", - "@esbuild/linux-s390x": "0.23.0", - "@esbuild/linux-x64": "0.23.0", - "@esbuild/netbsd-x64": "0.23.0", - "@esbuild/openbsd-arm64": "0.23.0", - "@esbuild/openbsd-x64": "0.23.0", - "@esbuild/sunos-x64": "0.23.0", - "@esbuild/win32-arm64": "0.23.0", - "@esbuild/win32-ia32": "0.23.0", - "@esbuild/win32-x64": "0.23.0" + "@esbuild/aix-ppc64": "0.23.1", + "@esbuild/android-arm": "0.23.1", + "@esbuild/android-arm64": "0.23.1", + "@esbuild/android-x64": "0.23.1", + "@esbuild/darwin-arm64": "0.23.1", + "@esbuild/darwin-x64": "0.23.1", + "@esbuild/freebsd-arm64": "0.23.1", + "@esbuild/freebsd-x64": "0.23.1", + "@esbuild/linux-arm": "0.23.1", + "@esbuild/linux-arm64": "0.23.1", + "@esbuild/linux-ia32": "0.23.1", + "@esbuild/linux-loong64": "0.23.1", + "@esbuild/linux-mips64el": "0.23.1", + "@esbuild/linux-ppc64": "0.23.1", + "@esbuild/linux-riscv64": "0.23.1", + "@esbuild/linux-s390x": "0.23.1", + "@esbuild/linux-x64": "0.23.1", + "@esbuild/netbsd-x64": "0.23.1", + "@esbuild/openbsd-arm64": "0.23.1", + "@esbuild/openbsd-x64": "0.23.1", + "@esbuild/sunos-x64": "0.23.1", + "@esbuild/win32-arm64": "0.23.1", + "@esbuild/win32-ia32": "0.23.1", + "@esbuild/win32-x64": "0.23.1" } }, "node_modules/tty-browserify": { "version": "0.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" }, "node_modules/tunnel": { "version": "0.0.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", "engines": { "node": ">=0.6.11 <=0.7.0 || >=0.7.3" } }, "node_modules/tunnel-agent": { "version": "0.6.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dependencies": { "safe-buffer": "^5.0.1" }, @@ -18587,20 +21670,23 @@ }, "node_modules/tweetnacl": { "version": "0.14.5", - "dev": true, - "license": "Unlicense" + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true }, "node_modules/type-detect": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "engines": { "node": ">=4" } }, "node_modules/type-fest": { "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -18610,7 +21696,8 @@ }, "node_modules/type-is": { "version": "1.6.18", - "license": "MIT", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -18621,8 +21708,9 @@ }, "node_modules/typed-array-buffer": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -18634,8 +21722,9 @@ }, "node_modules/typed-array-byte-length": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -18652,8 +21741,9 @@ }, "node_modules/typed-array-byte-offset": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, - "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -18671,8 +21761,9 @@ }, "node_modules/typed-array-length": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -18690,21 +21781,24 @@ }, "node_modules/typedarray": { "version": "0.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, - "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/typedoc": { "version": "0.25.13", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.13.tgz", + "integrity": "sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "lunr": "^2.3.9", "marked": "^4.3.0", @@ -18722,33 +21816,37 @@ } }, "node_modules/typedoc-plugin-mdn-links": { - "version": "3.2.8", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/typedoc-plugin-mdn-links/-/typedoc-plugin-mdn-links-3.2.9.tgz", + "integrity": "sha512-+bjuG/rPyeRBGA/ILk8u2j7KksohicCsUd+qcTQitOaS9GLvN69zcQlCJU1KqcPHpt3fTqJnVmyhMRe5F+ig7w==", "dev": true, - "license": "MIT", "peerDependencies": { "typedoc": ">= 0.23.14 || 0.24.x || 0.25.x || 0.26.x" } }, "node_modules/typedoc-plugin-missing-exports": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/typedoc-plugin-missing-exports/-/typedoc-plugin-missing-exports-2.3.0.tgz", + "integrity": "sha512-iI9ITNNLlbsLCBBeYDyu0Qqp3GN/9AGyWNKg8bctRXuZEPT7G1L+0+MNWG9MsHcf/BFmNbXL0nQ8mC/tXRicog==", "dev": true, - "license": "MIT", "peerDependencies": { "typedoc": "0.24.x || 0.25.x" } }, "node_modules/typedoc-plugin-zod": { - "version": "1.2.0", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/typedoc-plugin-zod/-/typedoc-plugin-zod-1.2.1.tgz", + "integrity": "sha512-oPo0PhcryKNR9UYZ6F4LFqDpQEBtNRQe6CpRTOUGrdqZOeoIZtJBVVZnSn/pBJiBU+Y6iZ/HsPESLZn1BPeLkw==", "dev": true, - "license": "MIT", "peerDependencies": { "typedoc": "0.23.x || 0.24.x || 0.25.x || 0.26.x" } }, "node_modules/typedoc/node_modules/minimatch": { "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -18761,7 +21859,8 @@ }, "node_modules/typescript": { "version": "5.1.6", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -18772,17 +21871,20 @@ }, "node_modules/uc.micro": { "version": "2.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true }, "node_modules/ufo": { "version": "1.5.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==" }, "node_modules/unbox-primitive": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -18795,12 +21897,14 @@ }, "node_modules/undefsafe": { "version": "2.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true }, "node_modules/undici": { "version": "5.28.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", "dependencies": { "@fastify/busboy": "^2.0.0" }, @@ -18809,19 +21913,22 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "license": "MIT" + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -18832,22 +21939,36 @@ }, "node_modules/unicode-match-property-value-ecmascript": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "engines": { "node": ">=4" } }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/unique-filename": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", "dev": true, - "license": "ISC", "dependencies": { "unique-slug": "^3.0.0" }, @@ -18857,8 +21978,9 @@ }, "node_modules/unique-slug": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" }, @@ -18868,8 +21990,9 @@ }, "node_modules/unique-string": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", "dev": true, - "license": "MIT", "dependencies": { "crypto-random-string": "^4.0.0" }, @@ -18882,7 +22005,8 @@ }, "node_modules/universal-github-app-jwt": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-1.1.2.tgz", + "integrity": "sha512-t1iB2FmLFE+yyJY9+3wMx0ejB+MQpEVkH0gQv7dR6FZyltyq+ZZO0uDpbopxhrZ3SLEO4dCEkIujOMldEQ2iOA==", "dependencies": { "@types/jsonwebtoken": "^9.0.0", "jsonwebtoken": "^9.0.2" @@ -18890,33 +22014,39 @@ }, "node_modules/universal-user-agent": { "version": "6.0.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==" }, "node_modules/universalify": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "node_modules/unpipe": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "engines": { "node": ">= 0.8" } }, "node_modules/untildify": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/update-browserslist-db": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "funding": [ { "type": "opencollective", @@ -18931,7 +22061,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "escalade": "^3.1.2", "picocolors": "^1.0.1" @@ -18945,8 +22074,9 @@ }, "node_modules/update-notifier": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "boxen": "^7.0.0", "chalk": "^5.0.1", @@ -18972,8 +22102,9 @@ }, "node_modules/update-notifier/node_modules/chalk": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, - "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -18983,14 +22114,16 @@ }, "node_modules/uri-js": { "version": "4.4.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/url": { "version": "0.11.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", + "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", "dependencies": { "punycode": "^1.4.1", "qs": "^6.12.3" @@ -19001,7 +22134,8 @@ }, "node_modules/url-parse": { "version": "1.5.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -19009,11 +22143,13 @@ }, "node_modules/url/node_modules/punycode": { "version": "1.4.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" }, "node_modules/util": { "version": "0.12.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -19024,30 +22160,35 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/utila": { "version": "0.4.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" }, "node_modules/utils-merge": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "engines": { "node": ">= 0.4.0" } }, "node_modules/uuid": { "version": "8.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/v8-to-istanbul": { "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, - "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", @@ -19059,8 +22200,9 @@ }, "node_modules/validate-npm-package-license": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -19068,8 +22210,9 @@ }, "node_modules/validate-npm-package-name": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", "dev": true, - "license": "ISC", "dependencies": { "builtins": "^5.0.0" }, @@ -19079,25 +22222,28 @@ }, "node_modules/varuint-bitcoin": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz", + "integrity": "sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw==", "dependencies": { "safe-buffer": "^5.1.1" } }, "node_modules/vary": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "engines": { "node": ">= 0.8" } }, "node_modules/verror": { "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, "engines": [ "node >=0.6.0" ], - "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -19105,12 +22251,13 @@ } }, "node_modules/vite": { - "version": "5.4.0", - "license": "MIT", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.2.tgz", + "integrity": "sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==", "dependencies": { "esbuild": "^0.21.3", - "postcss": "^8.4.40", - "rollup": "^4.13.0" + "postcss": "^8.4.41", + "rollup": "^4.20.0" }, "bin": { "vite": "bin/vite.js" @@ -19163,7 +22310,8 @@ }, "node_modules/vite-bundle-visualizer": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/vite-bundle-visualizer/-/vite-bundle-visualizer-1.2.1.tgz", + "integrity": "sha512-cwz/Pg6+95YbgIDp+RPwEToc4TKxfsFWSG/tsl2DSZd9YZicUag1tQXjJ5xcL7ydvEoaC2FOZeaXOU60t9BRXw==", "dependencies": { "cac": "^6.7.14", "import-from-esm": "^1.3.3", @@ -19179,8 +22327,9 @@ }, "node_modules/vite-node": { "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.6.tgz", + "integrity": "sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==", "dev": true, - "license": "MIT", "dependencies": { "cac": "^6.7.14", "debug": "^4.3.4", @@ -19201,7 +22350,8 @@ }, "node_modules/vite-plugin-no-bundle": { "version": "3.0.0", - "license": "Unlicense", + "resolved": "https://registry.npmjs.org/vite-plugin-no-bundle/-/vite-plugin-no-bundle-3.0.0.tgz", + "integrity": "sha512-B8O4ZmWHbA8MWhsCqjcxwCLW5Kk2Q1Ax7JhZBBB/ort+DNONkBA2HND0d9lQ5d0Q+JSOMYAQDDQ1qAS1nmThyA==", "dependencies": { "fast-glob": "^3.2.12", "micromatch": "^4.0.5" @@ -19209,8 +22359,9 @@ }, "node_modules/vite-plugin-node-polyfills": { "version": "0.21.0", + "resolved": "https://registry.npmjs.org/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.21.0.tgz", + "integrity": "sha512-Sk4DiKnmxN8E0vhgEhzLudfJQfaT8k4/gJ25xvUPG54KjLJ6HAmDKbr4rzDD/QWEY+Lwg80KE85fGYBQihEPQA==", "dev": true, - "license": "MIT", "dependencies": { "@rollup/plugin-inject": "^5.0.5", "node-stdlib-browser": "^1.2.0" @@ -19224,7 +22375,8 @@ }, "node_modules/vite-tsconfig-paths": { "version": "4.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.2.tgz", + "integrity": "sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==", "dependencies": { "debug": "^4.1.1", "globrex": "^0.1.2", @@ -19241,7 +22393,8 @@ }, "node_modules/vitest": { "version": "1.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz", + "integrity": "sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==", "dependencies": { "@vitest/expect": "1.6.0", "@vitest/runner": "1.6.0", @@ -19304,7 +22457,8 @@ }, "node_modules/vitest/node_modules/@vitest/expect": { "version": "1.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz", + "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==", "dependencies": { "@vitest/spy": "1.6.0", "@vitest/utils": "1.6.0", @@ -19316,7 +22470,8 @@ }, "node_modules/vitest/node_modules/@vitest/runner": { "version": "1.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.0.tgz", + "integrity": "sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==", "dependencies": { "@vitest/utils": "1.6.0", "p-limit": "^5.0.0", @@ -19328,7 +22483,8 @@ }, "node_modules/vitest/node_modules/@vitest/snapshot": { "version": "1.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.0.tgz", + "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==", "dependencies": { "magic-string": "^0.30.5", "pathe": "^1.1.1", @@ -19340,7 +22496,8 @@ }, "node_modules/vitest/node_modules/@vitest/spy": { "version": "1.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz", + "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==", "dependencies": { "tinyspy": "^2.2.0" }, @@ -19350,7 +22507,8 @@ }, "node_modules/vitest/node_modules/@vitest/utils": { "version": "1.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz", + "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==", "dependencies": { "diff-sequences": "^29.6.3", "estree-walker": "^3.0.3", @@ -19363,14 +22521,16 @@ }, "node_modules/vitest/node_modules/estree-walker": { "version": "3.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dependencies": { "@types/estree": "^1.0.0" } }, "node_modules/vitest/node_modules/execa": { "version": "8.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", @@ -19391,7 +22551,8 @@ }, "node_modules/vitest/node_modules/get-stream": { "version": "8.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "engines": { "node": ">=16" }, @@ -19401,14 +22562,16 @@ }, "node_modules/vitest/node_modules/human-signals": { "version": "5.0.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "engines": { "node": ">=16.17.0" } }, "node_modules/vitest/node_modules/is-stream": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -19418,11 +22581,13 @@ }, "node_modules/vitest/node_modules/js-tokens": { "version": "9.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", + "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==" }, "node_modules/vitest/node_modules/local-pkg": { "version": "0.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", "dependencies": { "mlly": "^1.4.2", "pkg-types": "^1.0.3" @@ -19436,7 +22601,8 @@ }, "node_modules/vitest/node_modules/mimic-fn": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "engines": { "node": ">=12" }, @@ -19446,7 +22612,8 @@ }, "node_modules/vitest/node_modules/npm-run-path": { "version": "5.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dependencies": { "path-key": "^4.0.0" }, @@ -19459,7 +22626,8 @@ }, "node_modules/vitest/node_modules/onetime": { "version": "6.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dependencies": { "mimic-fn": "^4.0.0" }, @@ -19472,7 +22640,8 @@ }, "node_modules/vitest/node_modules/p-limit": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", "dependencies": { "yocto-queue": "^1.0.0" }, @@ -19485,7 +22654,8 @@ }, "node_modules/vitest/node_modules/path-key": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "engines": { "node": ">=12" }, @@ -19495,7 +22665,8 @@ }, "node_modules/vitest/node_modules/signal-exit": { "version": "4.1.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "engines": { "node": ">=14" }, @@ -19505,7 +22676,8 @@ }, "node_modules/vitest/node_modules/strip-final-newline": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "engines": { "node": ">=12" }, @@ -19515,7 +22687,8 @@ }, "node_modules/vitest/node_modules/strip-literal": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", + "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", "dependencies": { "js-tokens": "^9.0.0" }, @@ -19525,14 +22698,16 @@ }, "node_modules/vitest/node_modules/tinypool": { "version": "0.8.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", + "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", "engines": { "node": ">=14.0.0" } }, "node_modules/vitest/node_modules/vite-node": { "version": "1.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.0.tgz", + "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==", "dependencies": { "cac": "^6.7.14", "debug": "^4.3.4", @@ -19552,28 +22727,33 @@ }, "node_modules/vm-browserify": { "version": "1.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" }, "node_modules/void-elements": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", "engines": { "node": ">=0.10.0" } }, "node_modules/vscode-oniguruma": { "version": "1.7.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", + "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", + "dev": true }, "node_modules/vscode-textmate": { "version": "8.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", + "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", + "dev": true }, "node_modules/w3c-xmlserializer": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", "dependencies": { "xml-name-validator": "^5.0.0" }, @@ -19583,7 +22763,8 @@ }, "node_modules/watchpack": { "version": "2.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -19594,29 +22775,34 @@ }, "node_modules/wbuf": { "version": "1.7.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dependencies": { "minimalistic-assert": "^1.0.0" } }, "node_modules/web-streams-polyfill": { "version": "3.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", "engines": { "node": ">= 8" } }, "node_modules/web-vitals": { "version": "2.1.4", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz", + "integrity": "sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg==" }, "node_modules/webidl-conversions": { "version": "3.0.1", - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/webpack": { "version": "5.93.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz", + "integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", @@ -19661,7 +22847,8 @@ }, "node_modules/webpack-cli": { "version": "5.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^2.1.1", @@ -19704,14 +22891,16 @@ }, "node_modules/webpack-cli/node_modules/commander": { "version": "10.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "engines": { "node": ">=14" } }, "node_modules/webpack-dev-middleware": { - "version": "7.3.0", - "license": "MIT", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.2.tgz", + "integrity": "sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==", "dependencies": { "colorette": "^2.0.10", "memfs": "^4.6.0", @@ -19738,7 +22927,8 @@ }, "node_modules/webpack-dev-server": { "version": "5.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz", + "integrity": "sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==", "dependencies": { "@types/bonjour": "^3.5.13", "@types/connect-history-api-fallback": "^1.5.4", @@ -19795,7 +22985,8 @@ }, "node_modules/webpack-dev-server/node_modules/define-lazy-prop": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "engines": { "node": ">=12" }, @@ -19805,14 +22996,16 @@ }, "node_modules/webpack-dev-server/node_modules/ipaddr.js": { "version": "2.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", "engines": { "node": ">= 10" } }, "node_modules/webpack-dev-server/node_modules/is-wsl": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", "dependencies": { "is-inside-container": "^1.0.0" }, @@ -19825,7 +23018,8 @@ }, "node_modules/webpack-dev-server/node_modules/open": { "version": "10.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", @@ -19841,7 +23035,8 @@ }, "node_modules/webpack-dev-server/node_modules/rimraf": { "version": "5.0.10", - "license": "ISC", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", "dependencies": { "glob": "^10.3.7" }, @@ -19854,7 +23049,8 @@ }, "node_modules/webpack-merge": { "version": "5.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -19866,14 +23062,16 @@ }, "node_modules/webpack-sources": { "version": "3.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "engines": { "node": ">=10.13.0" } }, "node_modules/webpack/node_modules/ajv": { "version": "6.12.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -19887,18 +23085,21 @@ }, "node_modules/webpack/node_modules/ajv-keywords": { "version": "3.5.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/webpack/node_modules/json-schema-traverse": { "version": "0.4.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/webpack/node_modules/schema-utils": { "version": "3.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -19914,7 +23115,8 @@ }, "node_modules/websocket-driver": { "version": "0.7.4", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", @@ -19926,14 +23128,16 @@ }, "node_modules/websocket-extensions": { "version": "0.1.4", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "engines": { "node": ">=0.8.0" } }, "node_modules/whatwg-encoding": { "version": "3.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", "dependencies": { "iconv-lite": "0.6.3" }, @@ -19943,7 +23147,8 @@ }, "node_modules/whatwg-encoding/node_modules/iconv-lite": { "version": "0.6.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -19953,14 +23158,16 @@ }, "node_modules/whatwg-mimetype": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "engines": { "node": ">=18" } }, "node_modules/whatwg-url": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -19968,7 +23175,8 @@ }, "node_modules/which": { "version": "2.0.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dependencies": { "isexe": "^2.0.0" }, @@ -19981,8 +23189,9 @@ }, "node_modules/which-boxed-primitive": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, - "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -19996,7 +23205,8 @@ }, "node_modules/which-typed-array": { "version": "1.1.15", - "license": "MIT", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -20013,7 +23223,8 @@ }, "node_modules/why-is-node-running": { "version": "2.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" @@ -20027,15 +23238,17 @@ }, "node_modules/wide-align": { "version": "1.1.5", - "license": "ISC", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } }, "node_modules/widest-line": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", "dev": true, - "license": "MIT", "dependencies": { "string-width": "^5.0.1" }, @@ -20048,8 +23261,9 @@ }, "node_modules/widest-line/node_modules/ansi-regex": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -20059,13 +23273,15 @@ }, "node_modules/widest-line/node_modules/emoji-regex": { "version": "9.2.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, "node_modules/widest-line/node_modules/string-width": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, - "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -20080,8 +23296,9 @@ }, "node_modules/widest-line/node_modules/strip-ansi": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -20094,11 +23311,13 @@ }, "node_modules/wildcard": { "version": "2.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" }, "node_modules/wrap-ansi": { "version": "8.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -20114,7 +23333,8 @@ "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -20129,7 +23349,8 @@ }, "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -20142,7 +23363,8 @@ }, "node_modules/wrap-ansi-cjs/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { "color-name": "~1.1.4" }, @@ -20152,11 +23374,13 @@ }, "node_modules/wrap-ansi-cjs/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/wrap-ansi/node_modules/ansi-regex": { "version": "6.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "engines": { "node": ">=12" }, @@ -20166,7 +23390,8 @@ }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "6.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "engines": { "node": ">=12" }, @@ -20176,11 +23401,13 @@ }, "node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "9.2.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "node_modules/wrap-ansi/node_modules/string-width": { "version": "5.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -20195,7 +23422,8 @@ }, "node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "7.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -20208,12 +23436,14 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "license": "ISC" + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write-file-atomic": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -20223,7 +23453,8 @@ }, "node_modules/ws": { "version": "8.18.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "engines": { "node": ">=10.0.0" }, @@ -20242,8 +23473,9 @@ }, "node_modules/xdg-basedir": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -20253,54 +23485,64 @@ }, "node_modules/xml": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", + "dev": true }, "node_modules/xml-name-validator": { "version": "5.0.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", "engines": { "node": ">=18" } }, "node_modules/xmlchars": { "version": "2.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, "node_modules/xmlhttprequest-ssl": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", "engines": { "node": ">=0.4.0" } }, "node_modules/xtend": { "version": "4.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "engines": { "node": ">=0.4" } }, "node_modules/y18n": { "version": "5.0.8", - "license": "ISC", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "engines": { "node": ">=10" } }, "node_modules/yallist": { "version": "4.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yaml": { "version": "1.10.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "engines": { "node": ">= 6" } }, "node_modules/yargs": { "version": "17.7.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -20316,14 +23558,16 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "engines": { "node": ">=12" } }, "node_modules/yauzl": { "version": "2.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -20331,7 +23575,8 @@ }, "node_modules/yocto-queue": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", "engines": { "node": ">=12.20" }, @@ -20341,7 +23586,8 @@ }, "node_modules/zod": { "version": "3.23.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -20403,6 +23649,7 @@ "@polkadot/util-crypto": "12.6.2", "@prosopo/common": "2.0.1", "@prosopo/contract": "2.0.1", + "@prosopo/dotenv": "2.0.1", "@prosopo/env": "2.0.1", "@prosopo/provider": "2.0.1", "@prosopo/types": "2.0.1", @@ -20564,7 +23811,8 @@ }, "packages/datasets-fs/node_modules/@noble/hashes": { "version": "1.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", "engines": { "node": ">= 16" }, @@ -20585,8 +23833,9 @@ }, "packages/detector/node_modules/typescript": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", + "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", "dev": true, - "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -20595,6 +23844,75 @@ "node": ">=14.17" } }, + "packages/dotenv": { + "name": "@prosopo/dotenv", + "version": "2.0.1", + "license": "Apache-2.0", + "dependencies": { + "dotenv": "^16.0.1", + "find-up": "^7.0.0" + }, + "devDependencies": { + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "engines": { + "node": ">=20", + "npm": ">=9" + } + }, + "packages/dotenv/node_modules/find-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", + "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", + "dependencies": { + "locate-path": "^7.2.0", + "path-exists": "^5.0.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/dotenv/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/dotenv/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/dotenv/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, "packages/env": { "name": "@prosopo/env", "version": "2.0.1", @@ -20830,7 +24148,6 @@ "@polkadot/util-crypto": "12.6.2", "@prosopo/common": "2.0.1", "@prosopo/config": "2.0.1", - "@prosopo/contract": "2.0.1", "@prosopo/database": "2.0.1", "@prosopo/datasets": "2.0.1", "@prosopo/env": "2.0.1", @@ -20863,13 +24180,20 @@ } }, "packages/provider/node_modules/@types/node": { - "version": "18.19.44", + "version": "18.19.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz", + "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==", "dev": true, - "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } }, + "packages/provider/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "packages/server": { "name": "@prosopo/server", "version": "2.0.1", @@ -20991,13 +24315,20 @@ } }, "packages/types/node_modules/@types/node": { - "version": "18.19.44", + "version": "18.19.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.45.tgz", + "integrity": "sha512-VZxPKNNhjKmaC1SUYowuXSRSMGyQGmQjvvA1xE4QZ0xce2kLtEhPDS+kqpCPBZYgqblCLQ2DAjSzmgCM5auvhA==", "dev": true, - "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } }, + "packages/types/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "packages/util": { "name": "@prosopo/util", "version": "2.0.1", @@ -21005,14 +24336,13 @@ "dependencies": { "@noble/hashes": "^1.3.3", "@prosopo/config": "2.0.1", - "@prosopo/util": "2.0.1", + "dotenv": "^16.0.1", "lodash": "^4.17.21", "seedrandom": "^3.0.5" }, "devDependencies": { "@types/lodash": "^4.14.198", "@types/seedrandom": "^3.0.5", - "dotenv": "^16.0.1", "tslib": "2.6.2", "typescript": "5.1.6", "vitest": "^1.3.1" diff --git a/package.json b/package.json index 8a41902902..ad6fd6225f 100644 --- a/package.json +++ b/package.json @@ -1,164 +1,164 @@ { - "name": "@prosopo/captcha", - "version": "2.0.1", - "author": "Prosopo", - "type": "module", - "repository": { - "type": "git", - "url": "git+https://github.com/prosopo/captcha.git" - }, - "scripts": { - "hostid": "npm run cmd -- \"dig +short %s.prosopo.io | tail -n1 | tee /dev/tty | nslookup | cut -d = -f 2 | head -n1 | cut -d ' ' -f 2 | sed 's/\\.*$//g'\"", - "cmd:about": "perform string substitution on the command and then execute it. Make sure to use --, e.g. npm run cmd -- my args here", - "cmd": "f() { (cmd=$1; shift; printf \"$cmd\" $@ | bash -ex) ;}; f", - "build": "npm run cmd -- \"npm run -w @prosopo/%s build\"", - "build:all": "npm run ws -- build", - "build:all:cjs": "npm run ws -- --if-present build:cjs", - "bundle:all": "npm run ws -- --if-present bundle", - "build:bundle": "npm run -w @prosopo/procaptcha-bundle bundle", - "clean": "npm run cmd -- \"npm run -w @prosopo/%s clean\"", - "clean-npm:node-modules": "rimraf --glob --verbose '**/node_modules'", - "clean-npm:package-lock": "rimraf --glob --verbose '**/package-lock.json'", - "clean:npm": "run-p clean-npm:*", - "clean-ts:buildinfo": "rimraf --glob --verbose '**/*.tsbuildinfo'", - "clean-ts:dist": "rimraf --glob --verbose '**/dist'", - "clean:ts": "run-p clean-ts:*", - "clean:all": "npm run ws -- clean", - "i": "npm i", - "nuke": "run-s clean:ts clean:npm i", - "deploy_dapp": "npm run -w @prosopo/scripts cli deploy_dapp -- --logLevel=debug --update_env", - "version": "f() { npm run -w @prosopo/scripts cli -- version -v $@; npm i; }; f", - "publish:dry-run": "npm --workspaces publish --dry-run", - "publish": "npm --workspaces publish --access=public", - "ws:ls": "npm run --workspaces env | grep npm_package_name | cut -d '=' -f 2", - "ws:about": "run a command for each workspace member, exiting immediately if any command fails. Don't forget the `--` !", - "ws": "f() { (set -e; npm run --silent ws:ls | while read -r line; do npm run -w $line $@; done); }; f", - "cli": "npm -w @prosopo/cli run cli", - "setup": "npm -w @prosopo/scripts run setup", - "setup:all": "npm run setup", - "start:provider": "npm -w @prosopo/cli run start", - "start:server": "npm -w @prosopo/client-example-server run start", - "start:demo": "npm -w @prosopo/client-example run start", - "start:demo:pow": "npm -w @prosopo/client-pow-example run start", - "start:demo:frictionless": "npm -w @prosopo/client-frictionless-example run start", - "start:bundle": "npm -w @prosopo/client-bundle-example run start", - "start:all": "npx concurrently \"npm run start:server\" \"npm run start:provider\" \"npm run start:demo\" \"npm run start:bundle\" --kill-others", - "start:all:pow": "npx concurrently \"npm run start:server\" \"npm run start:provider\" \"npm run start:demo:pow\" \"npm run start:bundle\" --kill-others", - "populate-data": "npm -w @prosopo/provider run populate-data", - "test": "npm run ws -- test", - "lint:license": "npm run -w @prosopo/scripts license", - "lint-fix:license": "npm run -w @prosopo/scripts license:fix", - "lint:dockerfile": "find . \\( -name 'Dockerfile' -o -name '*.dockerfile' \\) ! -path '*/node_modules/*' | xargs -P 1 --verbose -I {} bash -c 'docker run --rm -i hadolint/hadolint < {} || exit 255'", - "lint:caddyfile": "find . -name '*.Caddyfile' | xargs -P 1 --verbose -I {} bash -c \"caddy fmt --diff {} || exit 255\"", - "lint-fix:caddyfile": "find . -name '*.Caddyfile' | xargs -P 1 --verbose -I {} bash -c \"caddy fmt --overwrite {} || exit 255\"", - "lint:actions": "docker run --rm -v $(pwd):/repo --workdir /repo rhysd/actionlint:latest -color", - "lint:shell": "find . -name '*.sh' ! -path '*/node_modules/*' | xargs -P 1 --verbose -I {} bash -c \"shellcheck {} || exit 255\"", - "lint:yaml": "yamllint .", - "lint-py:check": "ruff check .", - "lint-py:format": "ruff format --check --diff .", - "lint:py": "run-s lint-py:*", - "lint-fix-py:check": "ruff check --fix --unsafe-fixes .", - "lint-fix-py:format": "ruff format .", - "lint-fix:py": "run-s lint-fix-py:*", - "lint:js": "biome check .", - "lint-fix:js": "npm run --silent lint:js -- --fix --unsafe", - "lint:html": "htmlhint '**/*.{html,svg}' --config htmlhint.json", - "lint:md": "markdownlint '**/*.md' --ignore-path .gitignore", - "lint-fix:md": "npm run --silent lint:md -- --fix", - "lint": "run-s lint:*", - "lint-fix": "run-s lint-fix:*", - "docker:rust": "f() { if [ \"$CI\" = \"true\" ]; then FLAGS=''; else FLAGS='-it'; fi ; mkdir -p node_modules/cargo-cache && docker run --rm $FLAGS -u $(id -u):$(id -g) --cpu-quota=-1 -v $PWD:/src -v $PWD/node_modules/cargo-cache:/usr/local/cargo/registry prosopo/cargo-contract:4.1.1 \"export RUST_BACKTRACE=1; $@\" ;}; f", - "lint-rs:clippy": "npm run --silent docker:rust -- 'find . -name \"Cargo.toml\" ! -path '*/node_modules/*' | xargs -P 1 --verbose -I {} bash -c \"cargo clippy --manifest-path {} -- -D warnings -A clippy::too_many_arguments || exit 255\"'", - "lint-rs:check": "npm run --silent docker:rust -- 'find . -name \"Cargo.toml\" ! -path '*/node_modules/*' | xargs -P 1 --verbose -I {} bash -c \"cargo check --manifest-path {} || exit 255\"'", - "lint-rs:fmt": "npm run --silent docker:rust -- 'find . -name \"Cargo.toml\" ! -path '*/node_modules/*' | xargs -P 1 --verbose -I {} bash -c \"cargo fmt --check --manifest-path {} || exit 255\"'", - "lint:rs": "run-s lint-rs:fmt lint-rs:clippy lint-rs:check", - "lint-fix-rs:fmt": "npm run --silent docker:rust -- 'find . -name \"Cargo.toml\" ! -path '*/node_modules/*' | xargs -P 1 --verbose -I {} bash -c \"cargo fmt --manifest-path {} || exit 255\"'", - "lint-fix-rs:clippy": "npm run --silent docker:rust -- 'find . -name \"Cargo.toml\" ! -path '*/node_modules/*' | xargs -P 1 --verbose -I {} bash -c \"cargo clippy --manifest-path {} --fix --allow-dirty -- -D warnings -A clippy::too_many_arguments || exit 255\"'", - "lint-fix:rs": "run-s lint-fix-rs:fmt lint-fix-rs:clippy", - "lint-toml:lint": "npx taplo lint", - "lint-toml:format": "npx taplo format --check", - "lint:toml": "run-s lint-toml:*", - "lint-fix:toml": "npx taplo format", - "lint-changed:js": "npm run --silent lint:js -- --changed", - "lint-changed-fix:js": "npm run --silent lint-fix:js -- --changed", - "removePolkadotJSWarnings": "sed -i 's/console.warn\\(.*\\);//g' ./node_modules/@polkadot/util/versionDetect.js && sed -i 's/console.warn\\(.*\\);//g' ./node_modules/@polkadot/util/cjs/versionDetect.js || true", - "postinstall": "npm run removePolkadotJSWarnings", - "docs": "npx typedoc --plugin typedoc-plugin-missing-exports --plugin typedoc-plugin-mdn-links --plugin typedoc-plugin-zod 2>&1 | grep -v \"Serialized project contained a reflection\" && echo 'docs.prosopo.io' >> docs/CNAME" - }, - "private": true, - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "workspaces": [ - "dev/*", - "packages/*", - "demos/*" - ], - "dependencies": { - "@prosopo/flux": "2.0.1" - }, - "devDependencies": { - "@biomejs/biome": "1.8.3", - "@polkadot/x-textdecoder": "12.6.2", - "@polkadot/x-textencoder": "12.6.2", - "@taplo/cli": "^0.7.0", - "@types/node": "^20.2.5", - "@vitest/coverage-v8": "^1.3.1", - "babel-plugin-import": "^1.13.6", - "concurrently": "^8.2.2", - "cypress": "^13.12.0", - "depcheck": "^1.4.7", - "htmlhint": "^1.1.4", - "markdownlint-cli": "^0.41.0", - "node-loader": "^2.0.0", - "nodemon": "^3.0.1", - "npm-check-updates": "^15.3.4", - "npm-run-all": "^4.1.5", - "tsc-alias": "^1.8.6", - "tslib": "2.6.2", - "typedoc": "^0.25.13", - "typedoc-plugin-mdn-links": "^3.1.16", - "typedoc-plugin-missing-exports": "^2.2.0", - "typedoc-plugin-zod": "^1.1.2", - "typescript": "5.1.6" - }, - "description": "Prosopo Procaptcha is a privacy-focused, secure alternative to reCAPTCHA. This repository integrates prosopo packages for development purposes.", - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "keywords": [ - "captcha", - "prosopo", - "privacy", - "security", - "reCAPTCHA", - "anti-bot", - "authentication", - "verification", - "user-verification", - "privacy-focused", - "bot-detection", - "human-verification", - "form-security", - "web-security", - "anti-spam", - "frontend-security", - "open-source", - "free", - "captcha-alternative", - "hcaptcha", - "google-recaptcha", - "recaptcha-alternative", - "recaptcha-v3", - "recaptcha-v2", - "cloudflare-turnstile-alternative", - "hcaptcha-alternative", - "prosopo-captcha", - "procaptcha", - "prosopo-procaptcha", - "web3-captcha" - ], - "license": "Apache-2.0" + "name": "@prosopo/captcha", + "version": "2.0.2", + "author": "Prosopo", + "type": "module", + "repository": { + "type": "git", + "url": "git+https://github.com/prosopo/captcha.git" + }, + "scripts": { + "hostid": "npm run cmd -- \"dig +short %s.prosopo.io | tail -n1 | tee /dev/tty | nslookup | cut -d = -f 2 | head -n1 | cut -d ' ' -f 2 | sed 's/\\.*$//g'\"", + "cmd:about": "perform string substitution on the command and then execute it. Make sure to use --, e.g. npm run cmd -- my args here", + "cmd": "f() { (cmd=$1; shift; printf \"$cmd\" $@ | bash -ex) ;}; f", + "build": "npm run cmd -- \"npm run -w @prosopo/%s build\"", + "build:all": "npm run ws -- build", + "build:all:cjs": "npm run ws -- --if-present build:cjs", + "bundle:all": "npm run ws -- --if-present bundle", + "build:bundle": "npm run -w @prosopo/procaptcha-bundle bundle", + "clean": "npm run cmd -- \"npm run -w @prosopo/%s clean\"", + "clean-npm:node-modules": "rimraf --glob --verbose '**/node_modules'", + "clean-npm:package-lock": "rimraf --glob --verbose '**/package-lock.json'", + "clean:npm": "run-p clean-npm:*", + "clean-ts:buildinfo": "rimraf --glob --verbose '**/*.tsbuildinfo'", + "clean-ts:dist": "rimraf --glob --verbose '**/dist'", + "clean:ts": "run-p clean-ts:*", + "clean:all": "npm run ws -- clean", + "i": "npm i", + "nuke": "run-s clean:ts clean:npm i", + "deploy_dapp": "npm run -w @prosopo/scripts cli deploy_dapp -- --logLevel=debug --update_env", + "version": "f() { npm run -w @prosopo/scripts cli -- version -v $@; npm i; }; f", + "publish:dry-run": "npm --workspaces publish --dry-run", + "publish": "npm --workspaces publish --access=public", + "ws:ls": "npm run --workspaces env | grep npm_package_name | cut -d '=' -f 2", + "ws:about": "run a command for each workspace member, exiting immediately if any command fails. Don't forget the `--` !", + "ws": "f() { (set -e; npm run --silent ws:ls | while read -r line; do npm run -w $line $@; done); }; f", + "cli": "npm -w @prosopo/cli run cli", + "setup": "npm -w @prosopo/scripts run setup", + "setup:all": "npm run setup", + "start:provider": "npm -w @prosopo/cli run start", + "start:server": "npm -w @prosopo/client-example-server run start", + "start:demo": "npm -w @prosopo/client-example run start", + "start:demo:pow": "npm -w @prosopo/client-pow-example run start", + "start:demo:frictionless": "npm -w @prosopo/client-frictionless-example run start", + "start:bundle": "npm -w @prosopo/client-bundle-example run start", + "start:all": "npx concurrently \"npm run start:server\" \"npm run start:provider\" \"npm run start:demo\" \"npm run start:bundle\" --kill-others", + "start:all:pow": "npx concurrently \"npm run start:server\" \"npm run start:provider\" \"npm run start:demo:pow\" \"npm run start:bundle\" --kill-others", + "populate-data": "npm -w @prosopo/provider run populate-data", + "test": "npm run ws -- test", + "lint:license": "npm run -w @prosopo/scripts license", + "lint-fix:license": "npm run -w @prosopo/scripts license:fix", + "lint:dockerfile": "find . \\( -name 'Dockerfile' -o -name '*.dockerfile' \\) ! -path '*/node_modules/*' | xargs -P 1 --verbose -I {} bash -c 'docker run --rm -i hadolint/hadolint < {} || exit 255'", + "lint:caddyfile": "find . -name '*.Caddyfile' | xargs -P 1 --verbose -I {} bash -c \"caddy fmt --diff {} || exit 255\"", + "lint-fix:caddyfile": "find . -name '*.Caddyfile' | xargs -P 1 --verbose -I {} bash -c \"caddy fmt --overwrite {} || exit 255\"", + "lint:actions": "docker run --rm -v $(pwd):/repo --workdir /repo rhysd/actionlint:latest -color", + "lint:shell": "find . -name '*.sh' ! -path '*/node_modules/*' | xargs -P 1 --verbose -I {} bash -c \"shellcheck {} || exit 255\"", + "lint:yaml": "yamllint .", + "lint-py:check": "ruff check .", + "lint-py:format": "ruff format --check --diff .", + "lint:py": "run-s lint-py:*", + "lint-fix-py:check": "ruff check --fix --unsafe-fixes .", + "lint-fix-py:format": "ruff format .", + "lint-fix:py": "run-s lint-fix-py:*", + "lint:js": "biome check .", + "lint-fix:js": "npm run --silent lint:js -- --fix --unsafe", + "lint:html": "htmlhint '**/*.{html,svg}' --config htmlhint.json", + "lint:md": "markdownlint '**/*.md' --ignore-path .gitignore", + "lint-fix:md": "npm run --silent lint:md -- --fix", + "lint": "run-s lint:*", + "lint-fix": "run-s lint-fix:*", + "docker:rust": "f() { if [ \"$CI\" = \"true\" ]; then FLAGS=''; else FLAGS='-it'; fi ; mkdir -p node_modules/cargo-cache && docker run --rm $FLAGS -u $(id -u):$(id -g) --cpu-quota=-1 -v $PWD:/src -v $PWD/node_modules/cargo-cache:/usr/local/cargo/registry prosopo/cargo-contract:4.1.1 \"export RUST_BACKTRACE=1; $@\" ;}; f", + "lint-rs:clippy": "npm run --silent docker:rust -- 'find . -name \"Cargo.toml\" ! -path '*/node_modules/*' | xargs -P 1 --verbose -I {} bash -c \"cargo clippy --manifest-path {} -- -D warnings -A clippy::too_many_arguments || exit 255\"'", + "lint-rs:check": "npm run --silent docker:rust -- 'find . -name \"Cargo.toml\" ! -path '*/node_modules/*' | xargs -P 1 --verbose -I {} bash -c \"cargo check --manifest-path {} || exit 255\"'", + "lint-rs:fmt": "npm run --silent docker:rust -- 'find . -name \"Cargo.toml\" ! -path '*/node_modules/*' | xargs -P 1 --verbose -I {} bash -c \"cargo fmt --check --manifest-path {} || exit 255\"'", + "lint:rs": "run-s lint-rs:fmt lint-rs:clippy lint-rs:check", + "lint-fix-rs:fmt": "npm run --silent docker:rust -- 'find . -name \"Cargo.toml\" ! -path '*/node_modules/*' | xargs -P 1 --verbose -I {} bash -c \"cargo fmt --manifest-path {} || exit 255\"'", + "lint-fix-rs:clippy": "npm run --silent docker:rust -- 'find . -name \"Cargo.toml\" ! -path '*/node_modules/*' | xargs -P 1 --verbose -I {} bash -c \"cargo clippy --manifest-path {} --fix --allow-dirty -- -D warnings -A clippy::too_many_arguments || exit 255\"'", + "lint-fix:rs": "run-s lint-fix-rs:fmt lint-fix-rs:clippy", + "lint-toml:lint": "npx taplo lint", + "lint-toml:format": "npx taplo format --check", + "lint:toml": "run-s lint-toml:*", + "lint-fix:toml": "npx taplo format", + "lint-changed:js": "npm run --silent lint:js -- --changed", + "lint-changed-fix:js": "npm run --silent lint-fix:js -- --changed", + "removePolkadotJSWarnings": "sed -i 's/console.warn\\(.*\\);//g' ./node_modules/@polkadot/util/versionDetect.js && sed -i 's/console.warn\\(.*\\);//g' ./node_modules/@polkadot/util/cjs/versionDetect.js || true", + "postinstall": "npm run removePolkadotJSWarnings", + "docs": "npx typedoc --plugin typedoc-plugin-missing-exports --plugin typedoc-plugin-mdn-links --plugin typedoc-plugin-zod 2>&1 | grep -v \"Serialized project contained a reflection\" && echo 'docs.prosopo.io' >> docs/CNAME" + }, + "private": true, + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "workspaces": [ + "dev/*", + "packages/*", + "demos/*" + ], + "dependencies": { + "@prosopo/flux": "2.0.2" + }, + "devDependencies": { + "@biomejs/biome": "1.8.3", + "@polkadot/x-textdecoder": "12.6.2", + "@polkadot/x-textencoder": "12.6.2", + "@taplo/cli": "^0.7.0", + "@types/node": "^20.2.5", + "@vitest/coverage-v8": "^1.3.1", + "babel-plugin-import": "^1.13.6", + "concurrently": "^8.2.2", + "cypress": "^13.12.0", + "depcheck": "^1.4.7", + "htmlhint": "^1.1.4", + "markdownlint-cli": "^0.41.0", + "node-loader": "^2.0.0", + "nodemon": "^3.0.1", + "npm-check-updates": "^15.3.4", + "npm-run-all": "^4.1.5", + "tsc-alias": "^1.8.6", + "tslib": "2.6.2", + "typedoc": "^0.25.13", + "typedoc-plugin-mdn-links": "^3.1.16", + "typedoc-plugin-missing-exports": "^2.2.0", + "typedoc-plugin-zod": "^1.1.2", + "typescript": "5.1.6" + }, + "description": "Prosopo Procaptcha is a privacy-focused, secure alternative to reCAPTCHA. This repository integrates prosopo packages for development purposes.", + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "keywords": [ + "captcha", + "prosopo", + "privacy", + "security", + "reCAPTCHA", + "anti-bot", + "authentication", + "verification", + "user-verification", + "privacy-focused", + "bot-detection", + "human-verification", + "form-security", + "web-security", + "anti-spam", + "frontend-security", + "open-source", + "free", + "captcha-alternative", + "hcaptcha", + "google-recaptcha", + "recaptcha-alternative", + "recaptcha-v3", + "recaptcha-v2", + "cloudflare-turnstile-alternative", + "hcaptcha-alternative", + "prosopo-captcha", + "procaptcha", + "prosopo-procaptcha", + "web3-captcha" + ], + "license": "Apache-2.0" } diff --git a/packages/account/package.json b/packages/account/package.json index 3fadd04eb6..3900696a15 100644 --- a/packages/account/package.json +++ b/packages/account/package.json @@ -1,55 +1,55 @@ { - "name": "@prosopo/account", - "version": "2.0.1", - "description": "Services and Utils for Prosopo account gen and management", - "main": "dist/index.js", - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build" - }, - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/prosopo/types.git" - }, - "author": "Prosopo Limited", - "license": "Apache-2.0", - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "dependencies": { - "react": "^18.3.1", - "@fingerprintjs/fingerprintjs": "^3.3.6", - "@polkadot/api": "10.13.1", - "@polkadot/extension-base": "0.46.9", - "@polkadot/extension-dapp": "0.46.9", - "@polkadot/extension-inject": "0.46.9", - "@polkadot/keyring": "12.6.2", - "@polkadot/rpc-provider": "10.13.1", - "@polkadot/util": "12.6.2", - "@polkadot/util-crypto": "12.6.2", - "@prosopo/common": "2.0.1", - "@prosopo/detector": "2.0.1", - "@prosopo/types": "2.0.1", - "@prosopo/util": "2.0.1" - }, - "devDependencies": { - "@prosopo/config": "2.0.1", - "tslib": "2.6.2", - "typescript": "5.1.6" - }, - "sideEffects": false + "name": "@prosopo/account", + "version": "2.0.2", + "description": "Services and Utils for Prosopo account gen and management", + "main": "dist/index.js", + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/prosopo/types.git" + }, + "author": "Prosopo Limited", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "dependencies": { + "react": "^18.3.1", + "@fingerprintjs/fingerprintjs": "^3.3.6", + "@polkadot/api": "10.13.1", + "@polkadot/extension-base": "0.46.9", + "@polkadot/extension-dapp": "0.46.9", + "@polkadot/extension-inject": "0.46.9", + "@polkadot/keyring": "12.6.2", + "@polkadot/rpc-provider": "10.13.1", + "@polkadot/util": "12.6.2", + "@polkadot/util-crypto": "12.6.2", + "@prosopo/common": "2.0.2", + "@prosopo/detector": "2.0.2", + "@prosopo/types": "2.0.2", + "@prosopo/util": "2.0.2" + }, + "devDependencies": { + "@prosopo/config": "2.0.2", + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "sideEffects": false } diff --git a/packages/account/src/extension/ExtensionWeb2.ts b/packages/account/src/extension/ExtensionWeb2.ts index b8869802b0..f41e2fd975 100644 --- a/packages/account/src/extension/ExtensionWeb2.ts +++ b/packages/account/src/extension/ExtensionWeb2.ts @@ -111,7 +111,6 @@ export class ExtensionWeb2 extends Extension { const type: KeypairType = "sr25519"; const keyring = new Keyring({ type, - ss58Format: config.networks[config.defaultNetwork].ss58Format, }); const keypair = keyring.addFromMnemonic(mnemonic); const address = keypair.address; @@ -122,15 +121,4 @@ export class ExtensionWeb2 extends Extension { }; } - getNetwork = (config: ProcaptchaClientConfigOutput) => { - const network = config.networks[config.defaultNetwork]; - if (!network) { - throw new ProsopoEnvError("DEVELOPER.NETWORK_NOT_FOUND", { - context: { - error: `No network found for environment ${config.defaultEnvironment}`, - }, - }); - } - return network; - }; } diff --git a/packages/api/package.json b/packages/api/package.json index d805942b90..d465138465 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -1,42 +1,42 @@ { - "name": "@prosopo/api", - "version": "2.0.1", - "description": "Wrapper for the provider API", - "main": "dist/index.js", - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/prosopo/captcha.git" - }, - "author": "PROSOPO LIMITED ", - "license": "Apache-2.0", - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "dependencies": { - "@prosopo/types": "2.0.1" - }, - "devDependencies": { - "@prosopo/config": "2.0.1", - "tslib": "2.6.2", - "typescript": "5.1.6" - }, - "sideEffects": false + "name": "@prosopo/api", + "version": "2.0.2", + "description": "Wrapper for the provider API", + "main": "dist/index.js", + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/prosopo/captcha.git" + }, + "author": "PROSOPO LIMITED ", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "dependencies": { + "@prosopo/types": "2.0.2" + }, + "devDependencies": { + "@prosopo/config": "2.0.2", + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "sideEffects": false } diff --git a/packages/api/src/api/ProviderApi.ts b/packages/api/src/api/ProviderApi.ts index 4f0f6c6a81..7116b9407e 100644 --- a/packages/api/src/api/ProviderApi.ts +++ b/packages/api/src/api/ProviderApi.ts @@ -22,7 +22,6 @@ import { type GetPowCaptchaChallengeRequestBodyType, type GetPowCaptchaResponse, type ImageVerificationResponse, - type NetworkConfig, type PowCaptchaSolutionResponse, type ProcaptchaToken, type Provider, @@ -31,21 +30,20 @@ import { type ServerPowCaptchaVerifyRequestBodyType, type StoredEvents, SubmitPowCaptchaSolutionBody, + TGetImageCaptchaChallengePathAndParams, type VerificationResponse, type VerifySolutionBodyTypeInput, } from "@prosopo/types"; import HttpClientBase from "./HttpClientBase.js"; export default class ProviderApi extends HttpClientBase implements ProviderApi { - private network: NetworkConfig; private account: string; - constructor(network: NetworkConfig, providerUrl: string, account: string) { + constructor(providerUrl: string, account: string) { const providerUrlWithProtocol = !providerUrl.startsWith("http") ? `https://${providerUrl}` : providerUrl; super(providerUrlWithProtocol); - this.network = network; this.account = account; } @@ -53,11 +51,11 @@ export default class ProviderApi extends HttpClientBase implements ProviderApi { userAccount: string, randomProvider: RandomProvider, ): Promise { - const { provider, blockNumber } = randomProvider; + const { provider } = randomProvider; const dappAccount = this.account; - const url = `${ApiPaths.GetImageCaptchaChallenge}/${ + const url: TGetImageCaptchaChallengePathAndParams = `${ApiPaths.GetImageCaptchaChallenge}/${ provider.datasetId - }/${userAccount}/${dappAccount}/${blockNumber.toString().replace(/,/g, "")}`; + }/${userAccount}/${dappAccount}`; return this.fetch(url); } @@ -65,39 +63,36 @@ export default class ProviderApi extends HttpClientBase implements ProviderApi { captchas: CaptchaSolution[], requestHash: string, userAccount: string, - salt: string, timestamp: string, - providerTimestampSignature: string, + providerRequestHashSignature: string, userRequestHashSignature: string, ): Promise { - const captchaSolutionBody: CaptchaSolutionBodyType = - CaptchaSolutionBody.parse({ - captchas, - requestHash, - [ApiParams.user]: userAccount, - [ApiParams.dapp]: this.account, - salt, - [ApiParams.timestamp]: timestamp, - [ApiParams.signature]: { - [ApiParams.user]: { - [ApiParams.requestHash]: userRequestHashSignature, - }, - [ApiParams.provider]: { - [ApiParams.timestamp]: providerTimestampSignature, - }, + const body: CaptchaSolutionBodyType = { + [ApiParams.user]: userAccount, + [ApiParams.dapp]: this.account, + [ApiParams.captchas]: captchas, + [ApiParams.requestHash]: requestHash, + [ApiParams.timestamp]: timestamp, + [ApiParams.signature]: { + [ApiParams.user]: { + [ApiParams.requestHash]: userRequestHashSignature, + }, + [ApiParams.provider]: { + [ApiParams.requestHash]: providerRequestHashSignature, }, - }); - return this.post(ApiPaths.SubmitImageCaptchaSolution, captchaSolutionBody); + }, + }; + return this.post(ApiPaths.SubmitImageCaptchaSolution, body); } public verifyDappUser( token: ProcaptchaToken, - dappUserSignature: string, + signature: string, maxVerifiedTime?: number, ): Promise { const payload: VerifySolutionBodyTypeInput = { [ApiParams.token]: token, - [ApiParams.dappUserSignature]: dappUserSignature, + [ApiParams.dappSignature]: signature, }; if (maxVerifiedTime) { payload[ApiParams.maxVerifiedTime] = maxVerifiedTime; @@ -113,7 +108,7 @@ export default class ProviderApi extends HttpClientBase implements ProviderApi { ): Promise { const payload: VerifySolutionBodyTypeInput = { [ApiParams.token]: token, - [ApiParams.dappUserSignature]: dappUserSignature, + [ApiParams.dappSignature]: dappUserSignature, ...(maxVerifiedTime && { [ApiParams.maxVerifiedTime]: maxVerifiedTime }), }; diff --git a/packages/cli/package.json b/packages/cli/package.json index 2d4d727541..e99f61f4c2 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,57 +1,58 @@ { - "name": "@prosopo/cli", - "version": "2.0.1", - "description": "CLI for Prosopo Provider", - "main": "dist/index.js", - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "scripts": { - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build", - "bundle": "NODE_ENV=${NODE_ENV:-production}; vite build --config vite.config.ts --mode $NODE_ENV", - "test": "NODE_ENV=${NODE_ENV:-test}; npx vitest run --config ./vite.test.config.ts", - "cli": "node ./dist/cli.js", - "start": "node ./dist/cli.js --api" - }, - "dependencies": { - "@polkadot/keyring": "12.6.2", - "@polkadot/util": "12.6.2", - "@polkadot/util-crypto": "12.6.2", - "@prosopo/common": "2.0.1", - "@prosopo/contract": "2.0.1", - "@prosopo/env": "2.0.1", - "@prosopo/provider": "2.0.1", - "@prosopo/types": "2.0.1", - "@prosopo/util": "2.0.1", - "cors": "^2.8.5", - "cron-parser": "^4.9.0", - "dotenv": "^16.0.1", - "express-rate-limit": "^7.3.1", - "yargs": "^17.7.2", - "zod": "^3.22.4" - }, - "devDependencies": { - "@prosopo/config": "2.0.1", - "@types/cors": "^2.8.14", - "@types/yargs": "^17.0.32", - "es-main": "^1.2.0", - "express": "^4.18.2", - "tslib": "2.6.2", - "typescript": "5.1.6", - "vite": "^5.1.7", - "vitest": "^1.3.1" - }, - "author": "Prosopo", - "license": "Apache-2.0", - "sideEffects": false + "name": "@prosopo/cli", + "version": "2.0.2", + "description": "CLI for Prosopo Provider", + "main": "dist/index.js", + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "scripts": { + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build", + "bundle": "NODE_ENV=${NODE_ENV:-production}; vite build --config vite.config.ts --mode $NODE_ENV", + "test": "NODE_ENV=${NODE_ENV:-test}; npx vitest run --config ./vite.test.config.ts", + "cli": "node ./dist/cli.js", + "start": "node ./dist/cli.js --api" + }, + "dependencies": { + "@polkadot/keyring": "12.6.2", + "@polkadot/util": "12.6.2", + "@polkadot/util-crypto": "12.6.2", + "@prosopo/common": "2.0.2", + "@prosopo/contract": "2.0.2", + "@prosopo/dotenv": "2.0.2", + "@prosopo/env": "2.0.2", + "@prosopo/provider": "2.0.2", + "@prosopo/types": "2.0.2", + "@prosopo/util": "2.0.2", + "cors": "^2.8.5", + "cron-parser": "^4.9.0", + "dotenv": "^16.0.1", + "express-rate-limit": "^7.3.1", + "yargs": "^17.7.2", + "zod": "^3.22.4" + }, + "devDependencies": { + "@prosopo/config": "2.0.2", + "@types/cors": "^2.8.14", + "@types/yargs": "^17.0.32", + "es-main": "^1.2.0", + "express": "^4.18.2", + "tslib": "2.6.2", + "typescript": "5.1.6", + "vite": "^5.1.7", + "vitest": "^1.3.1" + }, + "author": "Prosopo", + "license": "Apache-2.0", + "sideEffects": false } diff --git a/packages/cli/src/argv.ts b/packages/cli/src/argv.ts index 0282d9b9a2..d5b9182a83 100644 --- a/packages/cli/src/argv.ts +++ b/packages/cli/src/argv.ts @@ -16,30 +16,35 @@ import { LogLevel, getLogger } from "@prosopo/common"; import type { ProsopoConfigOutput } from "@prosopo/types"; import yargs from "yargs"; import { hideBin } from "yargs/helpers"; -import { commandProviderSetDataset, commandVersion } from "./commands/index.js"; +import { + commandProviderSetDataset, + commandStoreCaptchasExternally, + commandVersion, +} from "./commands/index.js"; export type AwaitedProcessedArgs = { - [x: string]: unknown; - api: boolean; - _: (string | number)[]; - $0: string; + [x: string]: unknown; + api: boolean; + _: (string | number)[]; + $0: string; }; export function processArgs( - args: string[], - pair: KeyringPair, - config: ProsopoConfigOutput, + args: string[], + pair: KeyringPair, + config: ProsopoConfigOutput, ) { - const logger = getLogger(LogLevel.enum.info, "CLI"); - return yargs(hideBin(args)) - .usage("Usage: $0 [global options] [options]") - .option("api", { demand: false, default: false, type: "boolean" } as const) - .option("adminApi", { - demand: false, - default: false, - type: "boolean", - } as const) - .command(commandProviderSetDataset(pair, config, { logger })) - .command(commandVersion(pair, config, { logger })) - .parse(); + const logger = getLogger(LogLevel.enum.info, "CLI"); + return yargs(hideBin(args)) + .usage("Usage: $0 [global options] [options]") + .option("api", { demand: false, default: false, type: "boolean" } as const) + .option("adminApi", { + demand: false, + default: false, + type: "boolean", + } as const) + .command(commandProviderSetDataset(pair, config, { logger })) + .command(commandStoreCaptchasExternally(pair, config, { logger })) + .command(commandVersion(pair, config, { logger })) + .parse(); } diff --git a/packages/cli/src/cli.ts b/packages/cli/src/cli.ts index 9b6a5064f4..e7f9654c1d 100644 --- a/packages/cli/src/cli.ts +++ b/packages/cli/src/cli.ts @@ -17,18 +17,17 @@ import { getPairAsync } from "@prosopo/contract"; import type { ProsopoConfigOutput } from "@prosopo/types"; import { isMain } from "@prosopo/util"; import { processArgs } from "./argv.js"; -import { loadEnv } from "./env.js"; +import { loadEnv } from "@prosopo/dotenv"; import getConfig from "./prosopo.config.js"; import ReloadingAPI from "./reloader.js"; const log = getLogger(LogLevel.enum.info, "CLI"); async function main() { - const envPath = loadEnv(); + const envPath = loadEnv(); // quick fix to allow for new dataset structure that only has `{ solved: true }` captchas const config: ProsopoConfigOutput = getConfig( - undefined, undefined, undefined, { @@ -37,47 +36,44 @@ async function main() { }, ); - if (config.devOnlyWatchEvents) { - log.warn( - ` + if (config.devOnlyWatchEvents) { + log.warn( + ` ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! EVENT TRACKING ON. IF NOT DEVELOPMENT, PLEASE STOP, CHANGE THE ENVIRONMENT, AND RESTART ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! `, - ); - } + ); + } const pair = await getPairAsync( - config.networks[config.defaultNetwork], config.account.secret, config.account.address, ); - log.info(`Pair address: ${pair.address}`); - - log.info(`Contract address: ${process.env.PROSOPO_CONTRACT_ADDRESS}`); + log.info(`Pair address: ${pair.address}`); - const processedArgs = await processArgs(process.argv, pair, config); + const processedArgs = await processArgs(process.argv, pair, config); - log.info(`Processsed args: ${JSON.stringify(processedArgs, null, 4)}`); - if (processedArgs.api) { - await new ReloadingAPI(envPath, config, pair, processedArgs) - .start() - .then(() => { - log.info("Reloading API started..."); - }); - } else { - process.exit(0); - } + log.info(`Processsed args: ${JSON.stringify(processedArgs, null, 4)}`); + if (processedArgs.api) { + await new ReloadingAPI(envPath, config, pair, processedArgs) + .start() + .then(() => { + log.info("Reloading API started..."); + }); + } else { + process.exit(0); + } } //if main process if (isMain(import.meta.url, "provider")) { - main() - .then(() => { - log.info("Running main process..."); - }) - .catch((error) => { - log.error(error); - }); + main() + .then(() => { + log.info("Running main process..."); + }) + .catch((error) => { + log.error(error); + }); } diff --git a/packages/cli/src/commands/index.ts b/packages/cli/src/commands/index.ts index 0b6a690999..46b5439001 100644 --- a/packages/cli/src/commands/index.ts +++ b/packages/cli/src/commands/index.ts @@ -11,6 +11,6 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -export { default as commandProviderDeregister } from "./providerDeregister.js"; export { default as commandProviderSetDataset } from "./providerSetDataset.js"; +export { default as commandStoreCaptchasExternally } from "./storeCaptchasExternally.js"; export { default as commandVersion } from "./version.js"; diff --git a/packages/cli/src/commands/providerDeregister.ts b/packages/cli/src/commands/providerDeregister.ts index 0f7902e20d..ba4ede2ed5 100644 --- a/packages/cli/src/commands/providerDeregister.ts +++ b/packages/cli/src/commands/providerDeregister.ts @@ -1,9 +1,3 @@ -import type { KeyringPair } from "@polkadot/keyring/types"; -import { LogLevel, type Logger, getLogger } from "@prosopo/common"; -import { ProsopoEnvError } from "@prosopo/common"; -import { ProviderEnvironment } from "@prosopo/env"; -import { Tasks } from "@prosopo/provider"; -import type { ProsopoConfigOutput } from "@prosopo/types"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -17,42 +11,49 @@ import type { ProsopoConfigOutput } from "@prosopo/types"; // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + +import type { KeyringPair } from "@polkadot/keyring/types"; +import { LogLevel, type Logger, getLogger } from "@prosopo/common"; +import { ProsopoEnvError } from "@prosopo/common"; +import { ProviderEnvironment } from "@prosopo/env"; +import { Tasks } from "@prosopo/provider"; +import type { ProsopoConfigOutput } from "@prosopo/types"; import type { ArgumentsCamelCase, Argv } from "yargs"; import { validateAddress } from "./validators.js"; export default ( - pair: KeyringPair, - config: ProsopoConfigOutput, - cmdArgs?: { logger?: Logger }, + pair: KeyringPair, + config: ProsopoConfigOutput, + cmdArgs?: { logger?: Logger }, ) => { - const logger = - cmdArgs?.logger || getLogger(LogLevel.enum.info, "cli.provider_deregister"); + const logger = + cmdArgs?.logger || getLogger(LogLevel.enum.info, "cli.provider_deregister"); - return { - command: "provider_deregister", - describe: "Deregister a Provider", - builder: (yargs: Argv) => - yargs.option("address", { - type: "string" as const, - demand: true, - desc: "The AccountId of the Provider", - } as const), - handler: async (argv: ArgumentsCamelCase) => { - try { - const env = new ProviderEnvironment(config, pair); - await env.isReady(); - const tasks = new Tasks(env); + return { + command: "provider_deregister", + describe: "Deregister a Provider", + builder: (yargs: Argv) => + yargs.option("address", { + type: "string" as const, + demand: true, + desc: "The AccountId of the Provider", + } as const), + handler: async (argv: ArgumentsCamelCase) => { + try { + const env = new ProviderEnvironment(config, pair); + await env.isReady(); + const tasks = new Tasks(env); - // TODO provider deregister does not accept params... it should? - // await tasks.contract.tx.providerDeregister(argv.address) + // TODO provider deregister does not accept params... it should? + // await tasks.contract.tx.providerDeregister(argv.address) - // logger.info('Provider registered') + // logger.info('Provider registered') - throw new ProsopoEnvError("GENERAL.NOT_IMPLEMENTED"); - } catch (err) { - logger.error(err); - } - }, - middlewares: [validateAddress], - }; + throw new ProsopoEnvError("GENERAL.NOT_IMPLEMENTED"); + } catch (err) { + logger.error(err); + } + }, + middlewares: [validateAddress], + }; }; diff --git a/packages/cli/src/commands/providerSetDataset.ts b/packages/cli/src/commands/providerSetDataset.ts index 0de6dc071d..854ff3f7ae 100644 --- a/packages/cli/src/commands/providerSetDataset.ts +++ b/packages/cli/src/commands/providerSetDataset.ts @@ -1,9 +1,3 @@ -import type { KeyringPair } from "@polkadot/keyring/types"; -import { LogLevel, type Logger, getLogger } from "@prosopo/common"; -import { ProviderEnvironment } from "@prosopo/env"; -import { Tasks } from "@prosopo/provider"; -import type { ProsopoConfigOutput } from "@prosopo/types"; -import type { ArgumentsCamelCase, Argv } from "yargs"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -17,42 +11,49 @@ import type { ArgumentsCamelCase, Argv } from "yargs"; // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + +import type { KeyringPair } from "@polkadot/keyring/types"; +import { LogLevel, type Logger, getLogger } from "@prosopo/common"; +import { ProviderEnvironment } from "@prosopo/env"; +import { Tasks } from "@prosopo/provider"; +import type { ProsopoConfigOutput } from "@prosopo/types"; +import type { ArgumentsCamelCase, Argv } from "yargs"; import * as z from "zod"; import { loadJSONFile } from "../files.js"; export default ( - pair: KeyringPair, - config: ProsopoConfigOutput, - cmdArgs?: { logger?: Logger }, + pair: KeyringPair, + config: ProsopoConfigOutput, + cmdArgs?: { logger?: Logger }, ) => { - const logger = - cmdArgs?.logger || - getLogger(LogLevel.enum.info, "cli.provider_set_data_set"); + const logger = + cmdArgs?.logger || + getLogger(LogLevel.enum.info, "cli.provider_set_data_set"); - return { - command: "provider_set_data_set", - describe: "Add a dataset as a Provider", - builder: (yargs: Argv) => - yargs.option("file", { - type: "string" as const, - demand: true, - desc: "The file path of a JSON dataset file", - } as const), - handler: async (argv: ArgumentsCamelCase) => { - try { - const env = new ProviderEnvironment(config, pair); - await env.isReady(); - const tasks = new Tasks(env); - const file = z.string().parse(argv.file); - const jsonFile = loadJSONFile(file) as JSON; - logger.info(`Loaded JSON from ${file}`); - const result = - await tasks.datasetManager.providerSetDatasetFromFile(jsonFile); - logger.info(JSON.stringify(result, null, 2)); - } catch (err) { - logger.error(err); - } - }, - middlewares: [], - }; + return { + command: "provider_set_data_set", + describe: "Add a dataset as a Provider", + builder: (yargs: Argv) => + yargs.option("file", { + type: "string" as const, + demand: true, + desc: "The file path of a JSON dataset file", + } as const), + handler: async (argv: ArgumentsCamelCase) => { + try { + const env = new ProviderEnvironment(config, pair); + await env.isReady(); + const tasks = new Tasks(env); + const file = z.string().parse(argv.file); + const jsonFile = loadJSONFile(file) as JSON; + logger.info(`Loaded JSON from ${file}`); + const result = + await tasks.datasetManager.providerSetDatasetFromFile(jsonFile); + logger.info(JSON.stringify(result, null, 2)); + } catch (err) { + logger.error(err); + } + }, + middlewares: [], + }; }; diff --git a/packages/cli/src/commands/storeCaptchasExternally.ts b/packages/cli/src/commands/storeCaptchasExternally.ts new file mode 100644 index 0000000000..794638c529 --- /dev/null +++ b/packages/cli/src/commands/storeCaptchasExternally.ts @@ -0,0 +1,46 @@ +// Copyright 2021-2024 Prosopo (UK) Ltd. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import type { KeyringPair } from "@polkadot/keyring/types"; +import { LogLevel, type Logger, getLogger } from "@prosopo/common"; +import { ProviderEnvironment } from "@prosopo/env"; +import { Tasks } from "@prosopo/provider"; +import type { ProsopoConfigOutput } from "@prosopo/types"; + +export default ( + pair: KeyringPair, + config: ProsopoConfigOutput, + cmdArgs?: { logger?: Logger }, +) => { + const logger = + cmdArgs?.logger || getLogger(LogLevel.enum.info, "cli.store_captchas"); + + return { + command: "store_captchas", + describe: "Store captcha records externally for billing purposes", + handler: async () => { + try { + const env = new ProviderEnvironment(config, pair); + await env.isReady(); + const tasks = new Tasks(env); + await tasks.datasetManager.storeCommitmentsExternal().catch((err) => { + env.logger.error(err); + }); + } catch (err) { + logger.error(err); + } + }, + middlewares: [], + }; +}; diff --git a/packages/cli/src/commands/validators.ts b/packages/cli/src/commands/validators.ts index 0716791320..66a9ee14ed 100644 --- a/packages/cli/src/commands/validators.ts +++ b/packages/cli/src/commands/validators.ts @@ -1,11 +1,3 @@ -import type { Compact } from "@polkadot/types-codec/base"; -import type { u128 } from "@polkadot/types-codec/primitive"; -import { ProsopoEnvError } from "@prosopo/common"; -import { encodeStringAddress } from "@prosopo/provider"; -import { PayeeSchema } from "@prosopo/types"; -import { lodash } from "@prosopo/util/lodash"; -import parser from "cron-parser"; -import type { ArgumentsCamelCase } from "yargs"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,71 +11,47 @@ import type { ArgumentsCamelCase } from "yargs"; // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -import * as z from "zod"; -export const validateAddress = ( - argv: ArgumentsCamelCase, -): { address: string } => { - const address = encodeStringAddress(argv.address as string); - - return { address }; -}; - -export const validateContract = (argv: ArgumentsCamelCase) => { - const address = encodeStringAddress(argv.contract as string); +import type { Compact } from "@polkadot/types-codec/base"; +import type { u128 } from "@polkadot/types-codec/primitive"; +import { ProsopoEnvError } from "@prosopo/common"; +import { encodeStringAddress } from "@prosopo/provider"; +import parser from "cron-parser"; - return { address }; -}; +import type { ArgumentsCamelCase } from "yargs"; -export const validatePayee = (argv: ArgumentsCamelCase) => { - try { - if (!argv.payee) return; - const _ = lodash(); - const payeeArg: string = _.capitalize(z.string().parse(argv.payee)); - const payee = PayeeSchema.parse(payeeArg); +export const validateAddress = ( + argv: ArgumentsCamelCase, +): { address: string } => { + const address = encodeStringAddress(argv.address as string); - return { payee }; - } catch (error) { - throw new ProsopoEnvError("CLI.PARAMETER_ERROR", { - context: { payee: [argv.payee], error }, - }); - } + return { address }; }; export const validateValue = (argv: ArgumentsCamelCase) => { - if (typeof argv.value !== "number") { - throw new ProsopoEnvError("CLI.PARAMETER_ERROR", { - context: { value: [argv.value] }, - }); - } - const value: Compact = argv.value as unknown as Compact; - return { value }; -}; - -export const validateFee = (argv: ArgumentsCamelCase) => { - if (typeof argv.fee !== "number") { - throw new ProsopoEnvError("CLI.PARAMETER_ERROR", { - context: { name: validateValue.name, fee: argv.fee }, - }); - } - const fee: Compact = argv.fee as unknown as Compact; - return { fee }; + if (typeof argv.value !== "number") { + throw new ProsopoEnvError("CLI.PARAMETER_ERROR", { + context: { value: [argv.value] }, + }); + } + const value: Compact = argv.value as unknown as Compact; + return { value }; }; export const validateScheduleExpression = (argv: ArgumentsCamelCase) => { - if (typeof argv.schedule === "string") { - const result = parser.parseString(argv.schedule as string); - - if (argv.schedule in result.errors) { - throw new ProsopoEnvError("CLI.PARAMETER_ERROR", { - context: { - payee: [argv.shedule], - failedFuncName: validateScheduleExpression.name, - }, - }); - } - - return { schedule: argv.schedule as string }; - } - return { schedule: null }; + if (typeof argv.schedule === "string") { + const result = parser.parseString(argv.schedule as string); + + if (argv.schedule in result.errors) { + throw new ProsopoEnvError("CLI.PARAMETER_ERROR", { + context: { + payee: [argv.shedule], + failedFuncName: validateScheduleExpression.name, + }, + }); + } + + return { schedule: argv.schedule as string }; + } + return { schedule: null }; }; diff --git a/packages/cli/src/env.ts b/packages/cli/src/env.ts deleted file mode 100644 index 4627772a84..0000000000 --- a/packages/cli/src/env.ts +++ /dev/null @@ -1,52 +0,0 @@ -import path from "node:path"; -import { fileURLToPath } from "node:url"; -// Copyright 2021-2024 Prosopo (UK) Ltd. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -import { LogLevel, getLogger } from "@prosopo/common"; -import dotenv from "dotenv"; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); -const logger = getLogger( - process.env.PROSOPO_LOG_LEVEL || LogLevel.enum.info, - "env", -); - -export function getEnv() { - if (process.env.NODE_ENV) { - return process.env.NODE_ENV.replace(/\W/g, ""); - } - return "development"; -} - -export function loadEnv( - rootDir?: string, - filename?: string, - filePath?: string, -): string { - const envPath = getEnvFile(path.resolve(rootDir || "."), filename, filePath); - const args = { path: envPath }; - logger.info(`Loading env from ${envPath}`); - dotenv.config(args); - return envPath; -} - -export function getEnvFile( - rootDir?: string, - filename = ".env", - filepath = path.join(__dirname, "../.."), -) { - const env = getEnv(); - return path.join(rootDir || filepath, `${filename}.${env}`); -} diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index d623be271f..581e0fbbeb 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -17,4 +17,3 @@ export * from "./start.js"; export * from "./process.env.js"; export * from "./files.js"; export { default as defaultConfig } from "./prosopo.config.js"; -export * from "./env.js"; diff --git a/packages/cli/src/prosopo.config.ts b/packages/cli/src/prosopo.config.ts index f26c5c58c4..77a6bb7570 100644 --- a/packages/cli/src/prosopo.config.ts +++ b/packages/cli/src/prosopo.config.ts @@ -17,13 +17,11 @@ import { type BatchCommitConfigSchema, DatabaseTypes, EnvironmentTypesSchema, - NetworkNamesSchema, type ProsopoCaptchaCountConfigSchemaInput, type ProsopoCaptchaSolutionConfigSchema, type ProsopoConfigInput, type ProsopoConfigOutput, ProsopoConfigSchema, - type ProsopoNetworksSchemaInput, } from "@prosopo/types"; import { getRateLimitConfig } from "./RateLimiter.js"; import { getAddress, getPassword, getSecret } from "./process.env.js"; @@ -43,7 +41,6 @@ function getMongoURI(): string { } export default function getConfig( - networksConfig?: ProsopoNetworksSchemaInput, captchaSolutionsConfig?: typeof ProsopoCaptchaSolutionConfigSchema, batchCommitConfig?: typeof BatchCommitConfigSchema, captchaServeConfig?: ProsopoCaptchaCountConfigSchemaInput, @@ -54,9 +51,6 @@ export default function getConfig( defaultEnvironment: process.env.PROSOPO_DEFAULT_ENVIRONMENT ? EnvironmentTypesSchema.parse(process.env.PROSOPO_DEFAULT_ENVIRONMENT) : EnvironmentTypesSchema.enum.development, - defaultNetwork: process.env.PROSOPO_DEFAULT_NETWORK - ? NetworkNamesSchema.parse(process.env.PROSOPO_DEFAULT_NETWORK) - : NetworkNamesSchema.enum.development, account: { address: getAddress(who), password: getPassword(who), @@ -88,7 +82,6 @@ export default function getConfig( ? Number.parseInt(process.env.PROSOPO_API_PORT) : 9229, }, - networks: networksConfig, captchaSolutions: captchaSolutionsConfig, batchCommit: batchCommitConfig, captchas: captchaServeConfig, diff --git a/packages/cli/src/reloader.ts b/packages/cli/src/reloader.ts index 8879afc0bc..fc18eed0f5 100644 --- a/packages/cli/src/reloader.ts +++ b/packages/cli/src/reloader.ts @@ -18,62 +18,62 @@ import { LogLevel, getLogger } from "@prosopo/common"; import { ProviderEnvironment } from "@prosopo/env"; import type { ProsopoConfigOutput } from "@prosopo/types"; import type { AwaitedProcessedArgs } from "./argv.js"; -import { loadEnv } from "./env.js"; +import { loadEnv } from "@prosopo/dotenv"; import { start } from "./start.js"; const log = getLogger(LogLevel.enum.info, "CLI"); export default class ReloadingAPI { - // biome-ignore lint/suspicious/noExplicitAny: TODO fix - private _envWatcher: any; - private _envPath: string; - private _config: ProsopoConfigOutput; - private _pair: KeyringPair; - private _processedArgs: AwaitedProcessedArgs; - private api: Server | undefined; - private _restarting: boolean; + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + private _envWatcher: any; + private _envPath: string; + private _config: ProsopoConfigOutput; + private _pair: KeyringPair; + private _processedArgs: AwaitedProcessedArgs; + private api: Server | undefined; + private _restarting: boolean; - constructor( - envPath: string, - config: ProsopoConfigOutput, - pair: KeyringPair, - processedArgs: AwaitedProcessedArgs, - ) { - this._envPath = envPath; - this._config = config; - this._pair = pair; - this._processedArgs = processedArgs; - this._restarting = false; - } + constructor( + envPath: string, + config: ProsopoConfigOutput, + pair: KeyringPair, + processedArgs: AwaitedProcessedArgs, + ) { + this._envPath = envPath; + this._config = config; + this._pair = pair; + this._processedArgs = processedArgs; + this._restarting = false; + } - public async start() { - log.info("Starting API"); - this._envWatcher = await this._watchEnv(); - loadEnv(); - const env = new ProviderEnvironment(this._config, this._pair); - await env.isReady(); - this.api = await start(env, !!this._processedArgs.adminApi); - } + public async start() { + log.info("Starting API"); + this._envWatcher = await this._watchEnv(); + loadEnv(); + const env = new ProviderEnvironment(this._config, this._pair); + await env.isReady(); + this.api = await start(env, !!this._processedArgs.adminApi); + } - public async stop() { - log.info("Stopping API"); - return new Promise((resolve) => { - if (this.api) { - this.api.close(resolve); - } - }); - } + public async stop() { + log.info("Stopping API"); + return new Promise((resolve) => { + if (this.api) { + this.api.close(resolve); + } + }); + } - private async _watchEnv() { - return fs.watchFile(this._envPath, async () => { - log.info(`env file change detected. Restarting: ${this._restarting}`); - if (!this._restarting) { - this._restarting = true; - await this.stop(); - loadEnv(); - await this.start(); - this._restarting = false; - } - }); - } + private async _watchEnv() { + return fs.watchFile(this._envPath, async () => { + log.info(`env file change detected. Restarting: ${this._restarting}`); + if (!this._restarting) { + this._restarting = true; + await this.stop(); + loadEnv(); + await this.start(); + this._restarting = false; + } + }); + } } diff --git a/packages/cli/src/start.ts b/packages/cli/src/start.ts index 9090fbc63f..98b512632a 100644 --- a/packages/cli/src/start.ts +++ b/packages/cli/src/start.ts @@ -1,13 +1,3 @@ -import type { Server } from "node:net"; -import { i18nMiddleware } from "@prosopo/common"; -import { getPairAsync } from "@prosopo/contract"; -import { ProviderEnvironment } from "@prosopo/env"; -import { - prosopoAdminRouter, - prosopoRouter, - prosopoVerifyRouter, - storeCaptchasExternally, -} from "@prosopo/provider"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -21,74 +11,84 @@ import { // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + +import type { Server } from "node:net"; +import { i18nMiddleware } from "@prosopo/common"; +import { getPairAsync } from "@prosopo/contract"; +import { ProviderEnvironment } from "@prosopo/env"; +import { + prosopoAdminRouter, + prosopoRouter, + prosopoVerifyRouter, + storeCaptchasExternally, +} from "@prosopo/provider"; import type { CombinedApiPaths } from "@prosopo/types"; import cors from "cors"; import express from "express"; import rateLimit from "express-rate-limit"; -import { loadEnv } from "./env.js"; +import { loadEnv } from "@prosopo/dotenv"; import { getDB, getSecret } from "./process.env.js"; import getConfig from "./prosopo.config.js"; function startApi(env: ProviderEnvironment, admin = false): Server { - env.logger.info("Starting Prosopo API"); - const apiApp = express(); - const apiPort = env.config.server.port; - // https://express-rate-limit.mintlify.app/guides/troubleshooting-proxy-issues - apiApp.set( - "trust proxy", - env.config.proxyCount /* number of proxies between user and server */, - ); - apiApp.use(cors()); - apiApp.use(express.json({ limit: "50mb" })); - apiApp.use(i18nMiddleware({})); - apiApp.use(prosopoRouter(env)); - apiApp.use(prosopoVerifyRouter(env)); + env.logger.info("Starting Prosopo API"); + const apiApp = express(); + const apiPort = env.config.server.port; + // https://express-rate-limit.mintlify.app/guides/troubleshooting-proxy-issues + apiApp.set( + "trust proxy", + env.config.proxyCount /* number of proxies between user and server */, + ); + apiApp.use(cors()); + apiApp.use(express.json({ limit: "50mb" })); + apiApp.use(i18nMiddleware({})); + apiApp.use(prosopoRouter(env)); + apiApp.use(prosopoVerifyRouter(env)); - if (admin) { - apiApp.use(prosopoAdminRouter(env)); - } + if (admin) { + apiApp.use(prosopoAdminRouter(env)); + } - // Rate limiting - const rateLimits = env.config.rateLimits; - for (const [path, limit] of Object.entries(rateLimits)) { - const enumPath = path as CombinedApiPaths; - apiApp.use(enumPath, rateLimit(limit)); - } + // Rate limiting + const rateLimits = env.config.rateLimits; + for (const [path, limit] of Object.entries(rateLimits)) { + const enumPath = path as CombinedApiPaths; + apiApp.use(enumPath, rateLimit(limit)); + } - return apiApp.listen(apiPort, () => { - env.logger.info(`Prosopo app listening at http://localhost:${apiPort}`); - }); + return apiApp.listen(apiPort, () => { + env.logger.info(`Prosopo app listening at http://localhost:${apiPort}`); + }); } export async function start(env?: ProviderEnvironment, admin?: boolean) { - if (!env) { - loadEnv(); + if (!env) { + loadEnv(); - // Fail to start api if db is not defined - getDB(); + // Fail to start api if db is not defined + getDB(); - const secret = getSecret(); - const config = getConfig(undefined, undefined, undefined, { - solved: { count: 2 }, - unsolved: { count: 0 }, - }); + const secret = getSecret(); + const config = getConfig(undefined, undefined, { + solved: { count: 2 }, + unsolved: { count: 0 }, + }); - const pair = await getPairAsync( - config.networks[config.defaultNetwork], - secret, - "", - ); - env = new ProviderEnvironment(config, pair); - } + const pair = await getPairAsync( + secret, + "", + ); + env = new ProviderEnvironment(config, pair); + } - await env.isReady(); + await env.isReady(); - // Start the scheduled job - if (env.pair) { - storeCaptchasExternally(env.pair, env.config).catch((err) => { - console.error("Failed to start scheduler:", err); - }); - } + // Start the scheduled job + if (env.pair) { + storeCaptchasExternally(env.pair, env.config).catch((err) => { + console.error("Failed to start scheduler:", err); + }); + } - return startApi(env, admin); + return startApi(env, admin); } diff --git a/packages/cli/tsconfig.cjs.json b/packages/cli/tsconfig.cjs.json index 75e0fd769b..a01ae1390e 100644 --- a/packages/cli/tsconfig.cjs.json +++ b/packages/cli/tsconfig.cjs.json @@ -15,6 +15,9 @@ { "path": "../contract/tsconfig.cjs.json" }, + { + "path": "../dotenv/tsconfig.cjs.json" + }, { "path": "../env/tsconfig.cjs.json" }, diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json index 69e836f65b..c237870d7a 100644 --- a/packages/cli/tsconfig.json +++ b/packages/cli/tsconfig.json @@ -16,6 +16,9 @@ { "path": "../contract" }, + { + "path": "../dotenv" + }, { "path": "../env" }, diff --git a/packages/cli/vite.config.ts b/packages/cli/vite.config.ts index aa4d578a80..dfe071c5d3 100644 --- a/packages/cli/vite.config.ts +++ b/packages/cli/vite.config.ts @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. import * as path from "node:path"; -import { loadEnv } from "@prosopo/cli"; +import { loadEnv } from "@prosopo/dotenv"; import { ViteBackendConfig } from "@prosopo/config"; import { defineConfig } from "vite"; import { version } from "./package.json"; @@ -31,29 +31,29 @@ process.env.TS_NODE_PROJECT = path.resolve("./tsconfig.json"); // Merge with generic backend config export default defineConfig(async ({ command, mode }) => { - const backendConfig = await ViteBackendConfig( - packageName, - packageVersion, - bundleName, - dir, - entry, - command, - mode, - ); - return defineConfig({ - define: { - ...backendConfig.define, - ...(process.env.PROSOPO_MONGO_EVENTS_URI && { - "process.env.PROSOPO_MONGO_EVENTS_URI": JSON.stringify( - process.env.PROSOPO_MONGO_EVENTS_URI, - ), - }), - ...(process.env._DEV_ONLY_WATCH_EVENTS && { - "process.env._DEV_ONLY_WATCH_EVENTS": JSON.stringify( - process.env._DEV_ONLY_WATCH_EVENTS, - ), - }), - }, - ...backendConfig, - }); + const backendConfig = await ViteBackendConfig( + packageName, + packageVersion, + bundleName, + dir, + entry, + command, + mode, + ); + return defineConfig({ + define: { + ...backendConfig.define, + ...(process.env.PROSOPO_MONGO_EVENTS_URI && { + "process.env.PROSOPO_MONGO_EVENTS_URI": JSON.stringify( + process.env.PROSOPO_MONGO_EVENTS_URI, + ), + }), + ...(process.env._DEV_ONLY_WATCH_EVENTS && { + "process.env._DEV_ONLY_WATCH_EVENTS": JSON.stringify( + process.env._DEV_ONLY_WATCH_EVENTS, + ), + }), + }, + ...backendConfig, + }); }); diff --git a/packages/common/package.json b/packages/common/package.json index ff8a2e1ac7..b1d5b29364 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -1,57 +1,57 @@ { - "name": "@prosopo/common", - "version": "2.0.1", - "description": "Prosopo common library", - "main": "./dist/index.js", - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "types": "./dist/index.d.ts", - "scripts": { - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build", - "test": "NODE_ENV=${NODE_ENV:-test}; npx vitest run --config ./vite.test.config.ts" - }, - "author": "Prosopo Limited", - "license": "Apache-2.0", - "dependencies": { - "@prosopo/util": "2.0.1", - "@polkadot/util-crypto": "12.6.2", - "consola": "^3.2.3", - "i18next": "^21.9.2", - "i18next-browser-languagedetector": "^7.2.1", - "i18next-http-backend": "^1.4.4", - "i18next-http-middleware": "^3.2.1", - "react-i18next": "^11.18.6", - "react": "^18.3.1", - "zod": "^3.22.3" - }, - "devDependencies": { - "@prosopo/config": "2.0.1", - "dotenv": "^16.0.1", - "tslib": "2.6.2", - "typescript": "5.1.6", - "vitest": "^1.3.1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/prosopo/captcha.git" - }, - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "publishConfig": { - "registry": "https://registry.npmjs.org" - }, - "sideEffects": false + "name": "@prosopo/common", + "version": "2.0.2", + "description": "Prosopo common library", + "main": "./dist/index.js", + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "types": "./dist/index.d.ts", + "scripts": { + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build", + "test": "NODE_ENV=${NODE_ENV:-test}; npx vitest run --config ./vite.test.config.ts" + }, + "author": "Prosopo Limited", + "license": "Apache-2.0", + "dependencies": { + "@prosopo/util": "2.0.2", + "@polkadot/util-crypto": "12.6.2", + "consola": "^3.2.3", + "i18next": "^21.9.2", + "i18next-browser-languagedetector": "^7.2.1", + "i18next-http-backend": "^1.4.4", + "i18next-http-middleware": "^3.2.1", + "react-i18next": "^11.18.6", + "react": "^18.3.1", + "zod": "^3.22.3" + }, + "devDependencies": { + "@prosopo/config": "2.0.2", + "dotenv": "^16.0.1", + "tslib": "2.6.2", + "typescript": "5.1.6", + "vitest": "^1.3.1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/prosopo/captcha.git" + }, + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "publishConfig": { + "registry": "https://registry.npmjs.org" + }, + "sideEffects": false } diff --git a/packages/common/src/locales/en.json b/packages/common/src/locales/en.json index 9e60fb118a..dfdc81a434 100644 --- a/packages/common/src/locales/en.json +++ b/packages/common/src/locales/en.json @@ -111,6 +111,7 @@ "INVALID_ITEM_HASH": "Invalid item hash", "DIFFERENT_DATASET_IDS": "Dataset ids do not match", "INVALID_BLOCK_NO": "Invalid block number", + "INVALID_TIMESTAMP": "Invalid timestamp", "ID_MISMATCH": "captcha id mismatch", "MISSING_ITEM_HASH": "missing item hash", "INVALID_LEAF_HASH": "Invalid leaf hash", @@ -119,7 +120,9 @@ "DAPP_USER_SOLUTION_NOT_FOUND": "Dapp user solution not found", "INVALID_PROVIDER_URL": "Invalid provider url", "NO_CAPTCHA": "No captcha found", - "INVALID_TOKEN": "Invalid token" + "INVALID_TOKEN": "Invalid token", + "IP_ADDRESS_MISMATCH": "IP address mismatch", + "INVALID_SOLUTION": "Invalid solution" }, "API": { "BODY_UNDEFINED": "Body must be defined in API POST call", @@ -133,6 +136,7 @@ "USER_NOT_VERIFIED": "User not verified", "USER_NOT_VERIFIED_TIME_EXPIRED": "User not verified. Captcha solution has expired.", "USER_NOT_VERIFIED_NO_SOLUTION": "User not verified. No captcha solution found.", + "USER_ALREADY_VERIFIED": "This solution has already been verified. User should complete a new captcha.", "UNKNOWN": "Unknown API error" }, "CLI": { diff --git a/packages/common/src/utils.ts b/packages/common/src/utils.ts index 4854a71f91..061c21aeaf 100644 --- a/packages/common/src/utils.ts +++ b/packages/common/src/utils.ts @@ -15,75 +15,64 @@ import type { TFunction } from "i18next"; // limitations under the License. import { ProsopoError } from "./error.js"; import translationEn from "./locales/en.json" assert { type: "json" }; +import { z } from "zod"; export function isClientSide(): boolean { - return !!( - typeof window !== "undefined" && - window.document && - window.document.createElement - ); + return !!( + typeof window !== "undefined" && + window.document && + window.document.createElement + ); } export type TFunctionParams = Parameters; -// https://medium.com/xgeeks/typescript-utility-keyof-nested-object-fa3e457ef2b2 -// slightly modified since we only need string keys, number is there so IDE/Typescript doesn't complain -type NestedKeyOf = { - [Key in keyof ObjectType & (string | number)]: ObjectType[Key] extends object - ? `${Key}.${NestedKeyOf}` - : `${Key}`; -}[keyof ObjectType & (string | number)]; - type Node = - | { - [key: string]: Node | string; - } - | string; + | { + [key: string]: Node | string; + } + | string; function getLeafFieldPath(obj: Node): string[] { - if (typeof obj === "string") { - return [obj]; - } + if (typeof obj === "string") { + return []; + } - return Object.keys(obj).reduce((arr, key) => { - const value = obj[key]; - if (value === undefined) { - throw new ProsopoError("DEVELOPER.KEY_ERROR", { - context: { error: `Undefined value for key ${key}` }, - }); - } - const children = getLeafFieldPath(value); + return Object.keys(obj).reduce((arr, key) => { + const value = obj[key]; + if (value === undefined) { + throw new ProsopoError("DEVELOPER.KEY_ERROR", { + context: { error: `Undefined value for key ${key}` }, + }); + } + const children = getLeafFieldPath(value); - return arr.concat( - children.map((child) => { - return `${key}.${child}`; - }), - ); - }, [] as string[]); + return arr.concat( + children.map((child) => { + return `${key}.${child}`; + }), + ); + }, [] as string[]); } -export type TranslationKey = NestedKeyOf; -export const translationKeys = getLeafFieldPath( - translationEn, -) as TranslationKey[]; +export const TranslationKeysSchema = z.enum( + getLeafFieldPath(translationEn) as [string, ...string[]], +); -// String utils +export type TranslationKey = z.infer; -export const trimProviderUrl = (url: string) => { - return hexToString(url); -}; +const TranslationFileSchema = z.record( + TranslationKeysSchema, + z.record(TranslationKeysSchema, z.string()), +); -export function snakeToCamelCase(str: string): string { - return str.replace(/([-_][a-z])/g, (group) => - group.toUpperCase().replace("-", "").replace("_", ""), - ); -} +// String utils export function reverseHexString(str: string): `0x${string}` { - return `0x${ - str - .match(/.{1,2}/g) - ?.reverse() - .join("") || "" - }`; + return `0x${ + str + .match(/.{1,2}/g) + ?.reverse() + .join("") || "" + }`; } diff --git a/packages/contract/package.json b/packages/contract/package.json index 892d87e51c..c297b248a7 100644 --- a/packages/contract/package.json +++ b/packages/contract/package.json @@ -1,78 +1,78 @@ { - "name": "@prosopo/contract", - "version": "2.0.1", - "author": "PROSOPO LIMITED ", - "license": "Apache-2.0", - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build" - }, - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "files": [ - "dist" - ], - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - }, - "./contract/interface": { - "types": "./dist/contract/interface.d.ts", - "import": "./dist/contract/interface.js", - "require": "./dist/cjs/contract/interface.cjs", - "default": "./dist/contract/interface.js" - } - }, - "typesVersions": { - "*": { - "types": [ - "dist/types" - ], - "captcha": [ - "dist/captcha" - ] - } - }, - "dependencies": { - "@polkadot/api": "10.13.1", - "@polkadot/api-contract": "10.13.1", - "@polkadot/keyring": "12.6.2", - "@polkadot/types": "10.13.1", - "@polkadot/types-codec": "10.13.1", - "@polkadot/util": "12.6.2", - "@polkadot/util-crypto": "12.6.2", - "@prosopo/common": "2.0.1", - "@prosopo/types": "2.0.1", - "@prosopo/util": "2.0.1", - "@prosopo/typechain-types": "1.1.15", - "@prosopo/tx": "2.0.1", - "rxjs": "^7.8.1" - }, - "devDependencies": { - "@prosopo/config": "2.0.1", - "@polkadot/api-augment": "10.13.1", - "tslib": "2.6.2", - "typescript": "5.1.6" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/prosopo/captcha.git" - }, - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "publishConfig": { - "registry": "https://registry.npmjs.org" - }, - "description": "", - "sideEffects": false + "name": "@prosopo/contract", + "version": "2.0.2", + "author": "PROSOPO LIMITED ", + "license": "Apache-2.0", + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build" + }, + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + }, + "./contract/interface": { + "types": "./dist/contract/interface.d.ts", + "import": "./dist/contract/interface.js", + "require": "./dist/cjs/contract/interface.cjs", + "default": "./dist/contract/interface.js" + } + }, + "typesVersions": { + "*": { + "types": [ + "dist/types" + ], + "captcha": [ + "dist/captcha" + ] + } + }, + "dependencies": { + "@polkadot/api": "10.13.1", + "@polkadot/api-contract": "10.13.1", + "@polkadot/keyring": "12.6.2", + "@polkadot/types": "10.13.1", + "@polkadot/types-codec": "10.13.1", + "@polkadot/util": "12.6.2", + "@polkadot/util-crypto": "12.6.2", + "@prosopo/common": "2.0.2", + "@prosopo/types": "2.0.2", + "@prosopo/util": "2.0.2", + "@prosopo/typechain-types": "1.1.15", + "@prosopo/tx": "2.0.2", + "rxjs": "^7.8.1" + }, + "devDependencies": { + "@prosopo/config": "2.0.2", + "@polkadot/api-augment": "10.13.1", + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/prosopo/captcha.git" + }, + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "publishConfig": { + "registry": "https://registry.npmjs.org" + }, + "description": "", + "sideEffects": false } diff --git a/packages/contract/src/accounts/getPair.ts b/packages/contract/src/accounts/getPair.ts index d303d1770f..5d51ee1adf 100644 --- a/packages/contract/src/accounts/getPair.ts +++ b/packages/contract/src/accounts/getPair.ts @@ -1,6 +1,3 @@ -import type { ApiPromise } from "@polkadot/api/promise/Api"; -import { Keyring } from "@polkadot/keyring"; -import type { KeyringPair, KeyringPair$Json } from "@polkadot/keyring/types"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -14,6 +11,10 @@ import type { KeyringPair, KeyringPair$Json } from "@polkadot/keyring/types"; // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + +import type { ApiPromise } from "@polkadot/api/promise/Api"; +import { Keyring } from "@polkadot/keyring"; +import type { KeyringPair, KeyringPair$Json } from "@polkadot/keyring/types"; import type { AccountId } from "@polkadot/types/interfaces"; import { cryptoWaitReady } from "@polkadot/util-crypto"; import { mnemonicValidate } from "@polkadot/util-crypto/mnemonic"; @@ -22,85 +23,77 @@ import { hexToU8a } from "@polkadot/util/hex"; import { isHex } from "@polkadot/util/is"; import { ProsopoEnvError } from "@prosopo/common"; import { - type NetworkConfig, - NetworkPairTypeSchema, - type PolkadotSecretJSON, + NetworkPairTypeSchema, + type PolkadotSecretJSON, } from "@prosopo/types"; export async function getPairAsync( - networkConfig?: NetworkConfig, - secret?: string | KeyringPair$Json | PolkadotSecretJSON, - account?: string | Uint8Array, - pairType?: KeypairType, - ss58Format?: number, + secret?: string | KeyringPair$Json | PolkadotSecretJSON, + account?: string | Uint8Array, + pairType?: KeypairType, + ss58Format?: number, ): Promise { - await cryptoWaitReady(); - return getPair(networkConfig, secret, account, pairType, ss58Format); + await cryptoWaitReady(); + return getPair(secret, account, pairType, ss58Format); } export function getPair( - networkConfig?: NetworkConfig, - secret?: string | KeyringPair$Json | PolkadotSecretJSON, - account?: string | Uint8Array, - pairType?: KeypairType, - ss58Format?: number, + secret?: string | KeyringPair$Json | PolkadotSecretJSON, + account?: string | Uint8Array, + pairType?: KeypairType, + ss58Format?: number, ): KeyringPair { - if (networkConfig) { - pairType = networkConfig.pairType; - ss58Format = networkConfig.ss58Format; - } else if (!pairType || !ss58Format) { - throw new ProsopoEnvError("GENERAL.NO_PAIR_TYPE_OR_SS58_FORMAT"); - } - const keyring = new Keyring({ type: pairType, ss58Format }); - if (!secret && account) { - return keyring.addFromAddress(account); - } - if (secret && typeof secret === "string") { - if (mnemonicValidate(secret)) { - return keyring.addFromMnemonic(secret); - } - if (isHex(secret)) { - return keyring.addFromSeed(hexToU8a(secret)); - } - if (secret.startsWith("//")) { - return keyring.addFromUri(secret); - } - try { - const json = JSON.parse(secret); - const { - encoding: { content }, - } = json; - const keyring = new Keyring({ type: content[1], ss58Format }); - return keyring.addFromJson(json as KeyringPair$Json); - } catch (e) { - throw new ProsopoEnvError("GENERAL.NO_MNEMONIC_OR_SEED", { - context: { error: e }, - }); - } - } else if (typeof secret === "object") { - return keyring.addFromJson(secret as KeyringPair$Json); - } else { - throw new ProsopoEnvError("GENERAL.NO_MNEMONIC_OR_SEED"); - } + pairType = pairType || "sr25519"; + ss58Format = ss58Format || 42; + const keyring = new Keyring({ type: pairType, ss58Format }); + if (!secret && account) { + return keyring.addFromAddress(account); + } + if (secret && typeof secret === "string") { + if (mnemonicValidate(secret)) { + return keyring.addFromMnemonic(secret); + } + if (isHex(secret)) { + return keyring.addFromSeed(hexToU8a(secret)); + } + if (secret.startsWith("//")) { + return keyring.addFromUri(secret); + } + try { + const json = JSON.parse(secret); + const { + encoding: { content }, + } = json; + const keyring = new Keyring({ type: content[1], ss58Format }); + return keyring.addFromJson(json as KeyringPair$Json); + } catch (e) { + throw new ProsopoEnvError("GENERAL.NO_MNEMONIC_OR_SEED", { + context: { error: e }, + }); + } + } else if (typeof secret === "object") { + return keyring.addFromJson(secret as KeyringPair$Json); + } else { + throw new ProsopoEnvError("GENERAL.NO_MNEMONIC_OR_SEED"); + } } export function getReadOnlyPair( - api: ApiPromise, - userAccount?: string, + api: ApiPromise, + userAccount?: string, ): KeyringPair { - // 5C4hrfjw9DjXZTzV3MwzrrAr9P1MJhSrvWGWqi1eSuyUpnhM is the all zero address - return getPair( - undefined, - undefined, - userAccount || getZeroAddress(api).toHex(), - NetworkPairTypeSchema.parse("sr25519"), - api.registry.chainSS58, - ); + // 5C4hrfjw9DjXZTzV3MwzrrAr9P1MJhSrvWGWqi1eSuyUpnhM is the all zero address + return getPair( + undefined, + userAccount || getZeroAddress(api).toHex(), + NetworkPairTypeSchema.parse("sr25519"), + api.registry.chainSS58, + ); } export function getZeroAddress(api: ApiPromise): AccountId { - return api.registry.createType( - "AccountId", - new Uint8Array(new Array(32).fill(0)), - ); + return api.registry.createType( + "AccountId", + new Uint8Array(new Array(32).fill(0)), + ); } diff --git a/packages/contract/src/contract/block.ts b/packages/contract/src/contract/block.ts index 88d044f64d..6f6ad67402 100644 --- a/packages/contract/src/contract/block.ts +++ b/packages/contract/src/contract/block.ts @@ -18,38 +18,16 @@ import { BN } from "@polkadot/util/bn"; * Get the current block time in milliseconds */ export const getBlockTimeMs = (api: ApiPromise): number => { - const babe = api.consts.babe; - const blockTime = babe ? babe.expectedBlockTime : new BN(6000); - return blockTime.toNumber(); + const babe = api.consts.babe; + const blockTime = babe ? babe.expectedBlockTime : new BN(6000); + return blockTime.toNumber(); }; /** * Get the current block number */ export const getCurrentBlockNumber = async ( - api: ApiPromise, + api: ApiPromise, ): Promise => { - return (await api.rpc.chain.getBlock()).block.header.number.toNumber(); -}; - -/** - * Verify the time since the blockNumber is equal to or less than the maxVerifiedTime. - * @param api - * @param maxVerifiedTime - * @param blockNumber - */ -export const verifyRecency = async ( - challenge: string, - maxVerifiedTime: number, -) => { - // Get the current block number - const timestamp = challenge.split("___")[0]; - - if (!timestamp) { - throw new Error("Invalid challenge"); - } - - const currentTimestamp = Date.now(); - const challengeTimestamp = Number.parseInt(timestamp, 10); - return currentTimestamp - challengeTimestamp <= maxVerifiedTime; + return (await api.rpc.chain.getBlock()).block.header.number.toNumber(); }; diff --git a/packages/database/package.json b/packages/database/package.json index 86a0060cb2..f56c42e698 100644 --- a/packages/database/package.json +++ b/packages/database/package.json @@ -1,46 +1,46 @@ { - "name": "@prosopo/database", - "version": "2.0.1", - "description": "Prosopo database plugins for provider", - "main": "dist/index.js", - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build" - }, - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/prosopo/captcha.git" - }, - "author": "Prosopo Limited", - "license": "Apache-2.0", - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "dependencies": { - "@prosopo/common": "2.0.1", - "@prosopo/config": "2.0.1", - "@prosopo/types": "2.0.1", - "@prosopo/types-database": "2.0.1", - "mongodb-memory-server": "^9.4.0", - "mongoose": "^8.5.1" - }, - "devDependencies": { - "tslib": "2.6.2", - "typescript": "5.1.6" - }, - "sideEffects": false + "name": "@prosopo/database", + "version": "2.0.2", + "description": "Prosopo database plugins for provider", + "main": "dist/index.js", + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/prosopo/captcha.git" + }, + "author": "Prosopo Limited", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "dependencies": { + "@prosopo/common": "2.0.2", + "@prosopo/config": "2.0.2", + "@prosopo/types": "2.0.2", + "@prosopo/types-database": "2.0.2", + "mongodb-memory-server": "^9.4.0", + "mongoose": "^8.5.1" + }, + "devDependencies": { + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "sideEffects": false } diff --git a/packages/database/src/captchaDatabase/captchaDatabase.ts b/packages/database/src/captchaDatabase/captchaDatabase.ts index afff869714..96ada208d9 100644 --- a/packages/database/src/captchaDatabase/captchaDatabase.ts +++ b/packages/database/src/captchaDatabase/captchaDatabase.ts @@ -1,4 +1,3 @@ -import { getLoggerDefault } from "@prosopo/common"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -12,21 +11,25 @@ import { getLoggerDefault } from "@prosopo/common"; // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + +import { getLoggerDefault } from "@prosopo/common"; import { + PowCaptchaRecord, PowCaptchaRecordSchema, + PoWCaptchaStored, type UserCommitmentRecord, UserCommitmentRecordSchema, } from "@prosopo/types-database"; import mongoose from "mongoose"; -import { PowCaptcha } from "@prosopo/types"; +import { PoWCaptchaUser } from "@prosopo/types"; const logger = getLoggerDefault(); let StoredImageCaptcha: mongoose.Model; -let StoredPoWCaptcha: mongoose.Model; +let StoredPoWCaptcha: mongoose.Model; export const saveCaptchas = async ( imageCaptchaEvents: UserCommitmentRecord[], - powCaptchaEvents: PowCaptcha[], + powCaptchaEvents: PoWCaptchaStored[], atlasUri: string, ) => { const connection = mongoose.createConnection(atlasUri, { @@ -40,7 +43,7 @@ export const saveCaptchas = async ( "StoredImageCaptcha", UserCommitmentRecordSchema, ); - StoredPoWCaptcha = connection.model( + StoredPoWCaptcha = connection.model( "StoredPoWCaptcha", PowCaptchaRecordSchema, ); @@ -49,12 +52,28 @@ export const saveCaptchas = async ( .on("error", reject); }); if (imageCaptchaEvents.length) { - await StoredImageCaptcha.insertMany(imageCaptchaEvents); - logger.info("Mongo Saved Image Events"); + const result = await StoredImageCaptcha.bulkWrite( + imageCaptchaEvents.map((doc) => ({ + updateOne: { + filter: { id: doc.id }, + update: { $set: doc }, + upsert: true, + }, + })), + ); + logger.info("Mongo Saved Image Events", result); } if (powCaptchaEvents.length) { - await StoredPoWCaptcha.insertMany(powCaptchaEvents); - logger.info("Mongo Saved PoW Events"); + const result = await StoredPoWCaptcha.bulkWrite( + powCaptchaEvents.map((doc) => ({ + updateOne: { + filter: { challenge: doc.challenge }, + update: { $set: doc }, + upsert: true, + }, + })), + ); + logger.info("Mongo Saved PoW Events", result); } await connection.close(); diff --git a/packages/database/src/databases/mongo.ts b/packages/database/src/databases/mongo.ts index 2b2803a1f4..6b6de864a6 100644 --- a/packages/database/src/databases/mongo.ts +++ b/packages/database/src/databases/mongo.ts @@ -14,13 +14,15 @@ import { isHex } from "@polkadot/util/is"; import { AsyncFactory, + getLoggerDefault, type Logger, ProsopoDBError, ProsopoEnvError, - getLoggerDefault, + TranslationKey, } from "@prosopo/common"; import { type Captcha, + CaptchaResult, type CaptchaSolution, CaptchaStates, CaptchaStatus, @@ -30,7 +32,6 @@ import { DatasetWithIdsAndTreeSchema, type Hash, type PendingCaptchaRequest, - type PowCaptcha, PoWChallengeComponents, PoWChallengeId, ScheduledTaskNames, @@ -43,21 +44,25 @@ import { DatasetRecordSchema, PendingRecordSchema, PowCaptchaRecordSchema, + type PoWCaptchaStored, + ScheduledTask, type ScheduledTaskRecord, ScheduledTaskRecordSchema, ScheduledTaskSchema, type SolutionRecord, SolutionRecordSchema, + StoredCaptcha, + StoredStatus, + StoredStatusNames, type Tables, type UserCommitmentRecord, UserCommitmentRecordSchema, UserCommitmentSchema, type UserSolutionRecord, UserSolutionRecordSchema, - UserSolutionSchema, } from "@prosopo/types-database"; import { type DeleteResult, ServerApiVersion } from "mongodb"; -import mongoose, { type Connection } from "mongoose"; +import mongoose, { type Connection, ObjectId } from "mongoose"; mongoose.set("strictQuery", false); @@ -471,7 +476,10 @@ export class ProsopoDatabase extends AsyncFactory implements Database { captchas: CaptchaSolution[], commit: UserCommitmentRecord, ): Promise { - const commitmentRecord = UserCommitmentSchema.parse(commit); + const commitmentRecord = UserCommitmentSchema.parse({ + ...commit, + lastUpdatedTimestamp: Date.now(), + }); if (captchas.length) { await this.tables?.commitment.updateOne( { @@ -505,39 +513,65 @@ export class ProsopoDatabase extends AsyncFactory implements Database { * @description Adds a new PoW Captcha record to the database. * @param {string} challenge The challenge string for the captcha. * @param components The components of the PoW challenge. - * @param {boolean} checked Indicates if the captcha has been checked. + * @param difficulty + * @param providerSignature + * @param ipAddress + * @param serverChecked + * @param userSubmitted + * @param storedStatus + * @param userSignature * @returns {Promise} A promise that resolves when the record is added. */ async storePowCaptchaRecord( challenge: PoWChallengeId, components: PoWChallengeComponents, - checked: boolean, - stored = false + difficulty: number, + providerSignature: string, + ipAddress: string, + serverChecked: boolean = false, + userSubmitted: boolean = false, + storedStatus: StoredStatus = StoredStatusNames.notStored, + userSignature?: string, ): Promise { const tables = this.getTables(); - const powCaptchaRecord: PowCaptcha = { + const powCaptchaRecord: PoWCaptchaStored = { challenge, ...components, - checked, - stored + ipAddress, + result: { status: CaptchaStatus.pending }, + userSubmitted, + serverChecked, + difficulty, + providerSignature, + userSignature, + lastUpdatedTimestamp: Date.now(), }; try { await tables.powCaptcha.create(powCaptchaRecord); this.logger.info("PowCaptcha record added successfully", { challenge, - checked, - stored + userSubmitted, + serverChecked, + storedStatus, }); } catch (error) { this.logger.error("Failed to add PowCaptcha record", { error, challenge, - checked, + userSubmitted, + serverChecked, + storedStatus, }); throw new ProsopoDBError("DATABASE.CAPTCHA_UPDATE_FAILED", { - context: { error, challenge, checked }, + context: { + error, + challenge, + userSubmitted, + serverChecked, + storedStatus, + }, logger: this.logger, }); } @@ -546,11 +580,11 @@ export class ProsopoDatabase extends AsyncFactory implements Database { /** * @description Retrieves a PoW Captcha record by its challenge string. * @param {string} challenge The challenge string to search for. - * @returns {Promise} A promise that resolves with the found record or null if not found. + * @returns {Promise} A promise that resolves with the found record or null if not found. */ async getPowCaptchaRecordByChallenge( challenge: string, - ): Promise { + ): Promise { if (!this.tables) { throw new ProsopoEnvError("DATABASE.DATABASE_UNDEFINED", { context: { failedFuncName: this.getPowCaptchaRecordByChallenge.name }, @@ -559,9 +593,8 @@ export class ProsopoDatabase extends AsyncFactory implements Database { } try { - const record: PowCaptcha | null | undefined = await this.tables.powCaptcha - .findOne({ challenge }) - .lean(); + const record: PoWCaptchaStored | null | undefined = + await this.tables.powCaptcha.findOne({ challenge }).lean(); if (record) { this.logger.info("PowCaptcha record retrieved successfully", { challenge, @@ -585,42 +618,73 @@ export class ProsopoDatabase extends AsyncFactory implements Database { /** * @description Updates a PoW Captcha record in the database. * @param {string} challenge The challenge string of the captcha to be updated. - * @param {boolean} checked New value indicating whether the captcha has been checked. + * @param result + * @param serverChecked + * @param userSubmitted + * @param storedStatus + * @param userSignature * @returns {Promise} A promise that resolves when the record is updated. */ async updatePowCaptchaRecord( - challenge: string, - checked: boolean, + challenge: PoWChallengeId, + result: CaptchaResult, + serverChecked: boolean = false, + userSubmitted: boolean = false, + userSignature?: string, ): Promise { const tables = this.getTables(); - + const timestamp = Date.now(); + const update: Pick< + PoWCaptchaStored, + | "result" + | "serverChecked" + | "userSubmitted" + | "storedAtTimestamp" + | "userSignature" + | "lastUpdatedTimestamp" + > = { + result, + serverChecked, + userSubmitted, + userSignature, + lastUpdatedTimestamp: timestamp, + }; try { const updateResult = await tables.powCaptcha.updateOne( { challenge }, - { $set: { checked } }, + { + $set: update, + }, ); if (updateResult.matchedCount === 0) { this.logger.info("No PowCaptcha record found to update", { challenge, - checked, + ...update, }); throw new ProsopoDBError("DATABASE.CAPTCHA_GET_FAILED", { - context: { challenge, checked }, + context: { + challenge, + ...update, + }, logger: this.logger, }); } this.logger.info("PowCaptcha record updated successfully", { challenge, - checked, + ...update, }); } catch (error) { this.logger.error("Failed to update PowCaptcha record", { error, challenge, - checked, + ...update, }); throw new ProsopoDBError("DATABASE.CAPTCHA_UPDATE_FAILED", { - context: { error, challenge, checked }, + context: { + error, + challenge, + ...update, + }, logger: this.logger, }); } @@ -631,22 +695,26 @@ export class ProsopoDatabase extends AsyncFactory implements Database { async getProcessedDappUserSolutions(): Promise { const docs = await this.tables?.usersolution .find({ processed: true }) - .lean(); - return docs ? docs.map((doc) => UserSolutionSchema.parse(doc)) : []; + .lean(); + return docs || []; } - /** @description Get processed Dapp User captcha commitments from the commitments table + /** @description Get processed Dapp User image captcha commitments from the commitments table */ async getProcessedDappUserCommitments(): Promise { - const docs = await this.tables?.commitment.find({ processed: true }).lean(); - return docs ? docs.map((doc) => UserCommitmentSchema.parse(doc)) : []; + const docs = await this.tables?.commitment + .find({ processed: true }) + .lean(); + return docs || []; } - /** @description Get Dapp User captcha commitments from the commitments table that have not been batched on-chain + /** @description Get serverChecked Dapp User image captcha commitments from the commitments table */ - async getUnbatchedDappUserCommitments(): Promise { - const docs = await this.tables?.commitment.find({ batched: false }).lean(); - return docs ? docs.map((doc) => UserCommitmentSchema.parse(doc)) : []; + async getCheckedDappUserCommitments(): Promise { + const docs = await this.tables?.commitment + .find({ [StoredStatusNames.serverChecked]: true }) + .lean(); + return docs || []; } /** @description Get Dapp User captcha commitments from the commitments table that have not been counted towards the @@ -655,50 +723,91 @@ export class ProsopoDatabase extends AsyncFactory implements Database { async getUnstoredDappUserCommitments(): Promise { const docs = await this.tables?.commitment .find({ - $or: [{ stored: false }, { stored: { $exists: false } }], + $or: [ + { storedStatus: { $ne: StoredStatusNames.stored } }, + { storedStatus: { $exists: false } }, + ], }) - .lean(); - return docs ? docs.map((doc) => UserCommitmentSchema.parse(doc)) : []; + .lean(); + return docs || []; } /** @description Mark a list of captcha commits as stored */ async markDappUserCommitmentsStored(commitmentIds: Hash[]): Promise { + const updateDoc: Pick = { + storedAtTimestamp: Date.now(), + }; await this.tables?.commitment.updateMany( { id: { $in: commitmentIds } }, - { $set: { stored: true } }, + { $set: updateDoc }, + { upsert: false }, + ); + } + + /** @description Mark a list of captcha commits as checked + */ + async markDappUserCommitmentsChecked(commitmentIds: Hash[]): Promise { + const updateDoc: Pick< + StoredCaptcha, + "serverChecked" | "lastUpdatedTimestamp" + > = { + [StoredStatusNames.serverChecked]: true, + lastUpdatedTimestamp: Date.now(), + }; + + await this.tables?.commitment.updateMany( + { id: { $in: commitmentIds } }, + { $set: updateDoc }, { upsert: false }, ); } /** @description Get Dapp User PoW captcha commitments that have not been counted towards the client's total */ - async getUnstoredDappUserPoWCommitments(): Promise { + async getUnstoredDappUserPoWCommitments(): Promise { const docs = await this.tables?.powCaptcha - .find({ - $or: [{ stored: false }, { stored: { $exists: false } }], + .find({ + $or: [ + { storedStatus: { $ne: StoredStatusNames.stored } }, + { storedStatus: { $exists: false } }, + ], }) - .lean(); + .lean(); return docs || []; } /** @description Mark a list of PoW captcha commits as stored */ - async markDappUserPoWCommitmentsStored( - challenges: string[], - ): Promise { + async markDappUserPoWCommitmentsStored(challenges: string[]): Promise { + const updateDoc: Pick = { + storedAtTimestamp: Date.now(), + }; + await this.tables?.powCaptcha.updateMany( { challenge: { $in: challenges } }, - { $set: { stored: true } }, + { $set: updateDoc }, { upsert: false }, ); } - /** @description Get Dapp User captcha commitments from the commitments table that have been batched on-chain + /** @description Mark a list of PoW captcha commits as checked by the server */ - async getBatchedDappUserCommitments(): Promise { - const docs = await this.tables?.commitment.find({ batched: true }).lean(); - return docs ? docs.map((doc) => UserCommitmentSchema.parse(doc)) : []; + async markDappUserPoWCommitmentsChecked(challenges: string[]): Promise { + const updateDoc: Pick< + StoredCaptcha, + "serverChecked" | "lastUpdatedTimestamp" + > = { + [StoredStatusNames.serverChecked]: true, + lastUpdatedTimestamp: Date.now(), + }; + await this.tables?.powCaptcha.updateMany( + { challenge: { $in: challenges } }, + { + $set: updateDoc, + }, + { upsert: false }, + ); } /** @description Remove processed Dapp User captcha solutions from the user solution table @@ -731,7 +840,8 @@ export class ProsopoDatabase extends AsyncFactory implements Database { requestHash: string, salt: string, deadlineTimestamp: number, - requestedAtBlock: number, + requestedAtTimestamp: number, + ipAddress: string, ): Promise { if (!isHex(requestHash)) { throw new ProsopoDBError("DATABASE.INVALID_HASH", { @@ -747,7 +857,8 @@ export class ProsopoDatabase extends AsyncFactory implements Database { salt, requestHash, deadlineTimestamp, - requestedAtBlock, + requestedAtTimestamp, + ipAddress, }; await this.tables?.pending.updateOne( { requestHash: requestHash }, @@ -797,7 +908,7 @@ export class ProsopoDatabase extends AsyncFactory implements Database { { requestHash: requestHash }, { $set: { - pending: false, + [CaptchaStatus.pending]: false, }, }, { upsert: true }, @@ -955,24 +1066,26 @@ export class ProsopoDatabase extends AsyncFactory implements Database { ): Promise { const commitmentCursor = this.tables?.commitment ?.findOne({ id: commitmentId }) - .lean(); + .lean(); const doc = await commitmentCursor; - return doc ? UserCommitmentSchema.parse(doc) : undefined; + return doc ? doc : undefined; } /** * @description Get dapp user commitment by user account - * @param {string[]} userAccount + * @param {string} userAccount + * @param {string} dappAccount */ async getDappUserCommitmentByAccount( userAccount: string, + dappAccount: string, ): Promise { const docs: UserCommitmentRecord[] | null | undefined = await this.tables?.commitment // sort by most recent first to avoid old solutions being used in development - ?.find({ userAccount }, { _id: 0 }, { sort: { _id: -1 } }) + ?.find({ userAccount, dappAccount }, { _id: 0 }, { sort: { _id: -1 } }) .lean(); return docs ? (docs as UserCommitmentRecord[]) : []; @@ -984,10 +1097,16 @@ export class ProsopoDatabase extends AsyncFactory implements Database { */ async approveDappUserCommitment(commitmentId: string): Promise { try { + const result: CaptchaResult = { status: CaptchaStatus.approved }; + const updateDoc: Pick = + { + result, + lastUpdatedTimestamp: Date.now(), + }; await this.tables?.commitment ?.findOneAndUpdate( { id: commitmentId }, - { $set: { status: CaptchaStatus.approved } }, + { $set: updateDoc }, { upsert: false }, ) .lean(); @@ -999,42 +1118,51 @@ export class ProsopoDatabase extends AsyncFactory implements Database { } /** - * @description Flag a dapp user's solutions as used by calculated solution - * @param {string[]} captchaIds + * @description Disapprove a dapp user's solution + * @param {string} commitmentId + * @param reason */ - async flagProcessedDappUserSolutions(captchaIds: Hash[]): Promise { + async disapproveDappUserCommitment( + commitmentId: string, + reason?: TranslationKey, + ): Promise { try { - await this.tables?.usersolution - ?.updateMany( - { captchaId: { $in: captchaIds } }, - { $set: { processed: true } }, + const updateDoc: Pick = + { + result: { status: CaptchaStatus.disapproved, reason }, + lastUpdatedTimestamp: Date.now(), + }; + + await this.tables?.commitment + ?.findOneAndUpdate( + { id: commitmentId }, + { $set: updateDoc }, { upsert: false }, ) .lean(); } catch (err) { - throw new ProsopoDBError("DATABASE.SOLUTION_FLAG_FAILED", { - context: { error: err, captchaIds }, + throw new ProsopoDBError("DATABASE.SOLUTION_APPROVE_FAILED", { + context: { error: err, commitmentId }, }); } } /** - * @description Flag dapp users' commitments as used by calculated solution - * @param {string[]} commitmentIds + * @description Flag a dapp user's solutions as used by calculated solution + * @param {string[]} captchaIds */ - async flagProcessedDappUserCommitments(commitmentIds: Hash[]): Promise { + async flagProcessedDappUserSolutions(captchaIds: Hash[]): Promise { try { - const distinctCommitmentIds = [...new Set(commitmentIds)]; - await this.tables?.commitment + await this.tables?.usersolution ?.updateMany( - { id: { $in: distinctCommitmentIds } }, + { captchaId: { $in: captchaIds } }, { $set: { processed: true } }, { upsert: false }, ) .lean(); } catch (err) { - throw new ProsopoDBError("DATABASE.COMMITMENT_FLAG_FAILED", { - context: { error: err, commitmentIds }, + throw new ProsopoDBError("DATABASE.SOLUTION_FLAG_FAILED", { + context: { error: err, captchaIds }, }); } } @@ -1043,13 +1171,13 @@ export class ProsopoDatabase extends AsyncFactory implements Database { * @description Flag dapp users' commitments as used by calculated solution * @param {string[]} commitmentIds */ - async flagBatchedDappUserCommitments(commitmentIds: Hash[]): Promise { + async flagProcessedDappUserCommitments(commitmentIds: Hash[]): Promise { try { const distinctCommitmentIds = [...new Set(commitmentIds)]; await this.tables?.commitment ?.updateMany( { id: { $in: distinctCommitmentIds } }, - { $set: { batched: true } }, + { $set: { processed: true } }, { upsert: false }, ) .lean(); @@ -1060,30 +1188,11 @@ export class ProsopoDatabase extends AsyncFactory implements Database { } } - /** - * @description Get the last batch commit time or return 0 if none - */ - async getLastBatchCommitTime(): Promise { - const cursor = this.tables?.scheduler - ?.findOne({ - processName: ScheduledTaskNames.BatchCommitment, - status: ScheduledTaskStatus.Completed, - }) - .sort({ timestamp: -1 }); - const doc: ScheduledTaskRecord | null | undefined = await cursor?.lean(); - - if (doc) { - return doc.datetime; - } - - return new Date(0); - } - /** * @description Get a scheduled task status record by task ID and status */ async getScheduledTaskStatus( - taskId: string, + taskId: ObjectId, status: ScheduledTaskStatus, ): Promise { const cursor: ScheduledTaskRecord | undefined | null = @@ -1116,22 +1225,41 @@ export class ProsopoDatabase extends AsyncFactory implements Database { } /** - * @description Store the status of a scheduled task and an optional result + * @description Create the status of a scheduled task */ - async storeScheduledTaskStatus( - taskId: `0x${string}`, - task: ScheduledTaskNames, + async createScheduledTaskStatus( + taskName: ScheduledTaskNames, status: ScheduledTaskStatus, - result?: ScheduledTaskResult, - ): Promise { - const now = new Date(); + ): Promise { + const now = new Date().getTime(); const doc = ScheduledTaskSchema.parse({ - taskId, - processName: task, + processName: taskName, datetime: now, status, - ...(result && { result }), }); - await this.tables?.scheduler.create(doc); + const taskRecord = await this.tables?.scheduler.create(doc); + return taskRecord._id; + } + + /** + * @description Update the status of a scheduled task and an optional result + */ + async updateScheduledTaskStatus( + taskId: ObjectId, + status: ScheduledTaskStatus, + result?: ScheduledTaskResult, + ): Promise { + const update: Omit = { + status, + updated: new Date().getTime(), + ...(result && { result }), + }; + await this.tables?.scheduler.updateOne( + { _id: taskId }, + { $set: update }, + { + upsert: false, + }, + ); } } diff --git a/packages/datasets-fs/package.json b/packages/datasets-fs/package.json index abb86a43ec..349770b9c7 100644 --- a/packages/datasets-fs/package.json +++ b/packages/datasets-fs/package.json @@ -1,65 +1,65 @@ { - "name": "@prosopo/datasets-fs", - "version": "2.0.1", - "author": "PROSOPO LIMITED ", - "license": "Apache-2.0", - "private": false, - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "scripts": { - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build", - "test": "NODE_ENV=${NODE_ENV:-test}; npx vitest run --config ./vite.test.config.ts", - "cli": "node ./dist/cli.js" - }, - "main": "./dist/index.js", - "type": "module", - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "types": "./dist/index.d.ts", - "dependencies": { - "@noble/hashes": "1.3.3", - "@polkadot/util": "12.6.2", - "@polkadot/util-crypto": "12.6.2", - "@prosopo/common": "2.0.1", - "@prosopo/types": "2.0.1", - "@prosopo/util": "2.0.1", - "bcrypt": "^5.1.0", - "cli-progress": "^3.12.0", - "sharp": "^0.32.1", - "vitest": "^1.3.1", - "yargs": "^17.7.2", - "zod": "^3.22.3" - }, - "devDependencies": { - "@prosopo/config": "2.0.1", - "@types/bcrypt": "^5.0.0", - "@types/cli-progress": "^3.11.2", - "dotenv": "^16.0.1", - "tslib": "2.6.2", - "typescript": "5.1.6" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/prosopo/captcha.git" - }, - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "publishConfig": { - "registry": "https://registry.npmjs.org" - }, - "description": "Datasets for use with providers", - "directories": { - "test": "tests" - }, - "sideEffects": false + "name": "@prosopo/datasets-fs", + "version": "2.0.2", + "author": "PROSOPO LIMITED ", + "license": "Apache-2.0", + "private": false, + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "scripts": { + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build", + "test": "NODE_ENV=${NODE_ENV:-test}; npx vitest run --config ./vite.test.config.ts", + "cli": "node ./dist/cli.js" + }, + "main": "./dist/index.js", + "type": "module", + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "types": "./dist/index.d.ts", + "dependencies": { + "@noble/hashes": "1.3.3", + "@polkadot/util": "12.6.2", + "@polkadot/util-crypto": "12.6.2", + "@prosopo/common": "2.0.2", + "@prosopo/types": "2.0.2", + "@prosopo/util": "2.0.2", + "bcrypt": "^5.1.0", + "cli-progress": "^3.12.0", + "sharp": "^0.32.1", + "vitest": "^1.3.1", + "yargs": "^17.7.2", + "zod": "^3.22.3" + }, + "devDependencies": { + "@prosopo/config": "2.0.2", + "@types/bcrypt": "^5.0.0", + "@types/cli-progress": "^3.11.2", + "dotenv": "^16.0.1", + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/prosopo/captcha.git" + }, + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "publishConfig": { + "registry": "https://registry.npmjs.org" + }, + "description": "Datasets for use with providers", + "directories": { + "test": "tests" + }, + "sideEffects": false } diff --git a/packages/datasets/package.json b/packages/datasets/package.json index 2da2e73237..048cf972cf 100644 --- a/packages/datasets/package.json +++ b/packages/datasets/package.json @@ -1,72 +1,72 @@ { - "name": "@prosopo/datasets", - "version": "2.0.1", - "author": "PROSOPO LIMITED ", - "license": "Apache-2.0", - "private": false, - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "scripts": { - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build", - "test": "NODE_ENV=${NODE_ENV:-test}; npx vitest run --config ./vite.test.config.ts", - "cli": "node ./dist/cli.js" - }, - "main": "./dist/index.js", - "type": "module", - "types": "./dist/index.d.ts", - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - }, - "./captcha": { - "types": "./dist/captcha/index.d.ts", - "import": "./dist/captcha/index.js", - "require": "./dist/cjs/captcha/index.cjs", - "default": "./dist/captcha/index.js" - } - }, - "typesVersions": { - "*": { - "types": [ - "dist/types" - ], - "captcha": [ - "dist/captcha" - ] - } - }, - "dependencies": { - "@polkadot/util": "12.6.2", - "@prosopo/common": "2.0.1", - "@prosopo/types": "2.0.1", - "@prosopo/util": "2.0.1", - "vitest": "^1.3.1" - }, - "devDependencies": { - "@prosopo/config": "2.0.1", - "dotenv": "^16.0.1", - "tslib": "2.6.2", - "typescript": "5.1.6" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/prosopo/captcha.git" - }, - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "publishConfig": { - "registry": "https://registry.npmjs.org" - }, - "description": "Datasets for use with providers", - "directories": { - "test": "tests" - }, - "sideEffects": false + "name": "@prosopo/datasets", + "version": "2.0.2", + "author": "PROSOPO LIMITED ", + "license": "Apache-2.0", + "private": false, + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "scripts": { + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build", + "test": "NODE_ENV=${NODE_ENV:-test}; npx vitest run --config ./vite.test.config.ts", + "cli": "node ./dist/cli.js" + }, + "main": "./dist/index.js", + "type": "module", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + }, + "./captcha": { + "types": "./dist/captcha/index.d.ts", + "import": "./dist/captcha/index.js", + "require": "./dist/cjs/captcha/index.cjs", + "default": "./dist/captcha/index.js" + } + }, + "typesVersions": { + "*": { + "types": [ + "dist/types" + ], + "captcha": [ + "dist/captcha" + ] + } + }, + "dependencies": { + "@polkadot/util": "12.6.2", + "@prosopo/common": "2.0.2", + "@prosopo/types": "2.0.2", + "@prosopo/util": "2.0.2", + "vitest": "^1.3.1" + }, + "devDependencies": { + "@prosopo/config": "2.0.2", + "dotenv": "^16.0.1", + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/prosopo/captcha.git" + }, + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "publishConfig": { + "registry": "https://registry.npmjs.org" + }, + "description": "Datasets for use with providers", + "directories": { + "test": "tests" + }, + "sideEffects": false } diff --git a/packages/detector/package.json b/packages/detector/package.json index 81486c63dc..e8f74103d6 100644 --- a/packages/detector/package.json +++ b/packages/detector/package.json @@ -1,18 +1,18 @@ { - "name": "@prosopo/detector", - "version": "2.0.1", - "main": "src/index.js", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "scripts": { - "test": "echo \"Error: no test specified\" && exit 0", - "build": "tsc --build --verbose", - "clean": "tsc --build --clean" - }, - "devDependencies": { - "typescript": "5.3.2" - }, - "type": "module" + "name": "@prosopo/detector", + "version": "2.0.2", + "main": "src/index.js", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 0", + "build": "tsc --build --verbose", + "clean": "tsc --build --clean" + }, + "devDependencies": { + "typescript": "5.3.2" + }, + "type": "module" } diff --git a/packages/dotenv/package.json b/packages/dotenv/package.json new file mode 100644 index 0000000000..c29abb6e74 --- /dev/null +++ b/packages/dotenv/package.json @@ -0,0 +1,48 @@ +{ + "name": "@prosopo/dotenv", + "version": "2.0.2", + "author": "PROSOPO LIMITED ", + "license": "Apache-2.0", + "private": false, + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "scripts": { + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build", + "cli": "node ./dist/js/cli.js", + "test": "echo \"No test specified\"" + }, + "main": "./dist/index.js", + "type": "module", + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "types": "./dist/index.d.ts", + "dependencies": { + "dotenv": "^16.0.1", + "find-up": "^7.0.0" + }, + "devDependencies": { + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/prosopo/captcha.git" + }, + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "publishConfig": { + "registry": "https://registry.npmjs.org" + }, + "description": "Package to handle environment discovery and loading", + "sideEffects": false +} diff --git a/packages/dotenv/src/env.ts b/packages/dotenv/src/env.ts new file mode 100644 index 0000000000..44f15a4af1 --- /dev/null +++ b/packages/dotenv/src/env.ts @@ -0,0 +1,66 @@ +// Copyright 2021-2024 Prosopo (UK) Ltd. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { LogLevel, getLogger } from "@prosopo/common"; +import dotenv from "dotenv"; +import { findUpSync } from "find-up"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const logger = getLogger( + process.env.PROSOPO_LOG_LEVEL || LogLevel.enum.info, + "env", +); + +export function getEnv() { + if (process.env.NODE_ENV) { + return process.env.NODE_ENV.replace(/\W/g, ""); + } + return "development"; +} + +export function loadEnv( + rootDir?: string, + filename?: string, + filePath?: string, +): string { + const envPath = getEnvFile(path.resolve(rootDir || "."), filename, filePath); + const args = { path: envPath }; + logger.info(`Loading env from ${envPath}`); + dotenv.config(args); + return envPath; +} + +/** + * Get the path to the .env file. Search up directories until `.env.${env}` is found. + * If not found, look in the root directory, if specified, or 2 directories up from this file. + * @param rootDir + * @param filename + * @param filepath + */ +export function getEnvFile( + rootDir?: string, + filename = ".env", + filepath = path.join(__dirname, "../.."), +) { + const env = getEnv(); + const fileNameFull = `${filename}.${env}`; + + return ( + findUpSync(fileNameFull, { type: "file" }) || + path.join(rootDir || filepath, fileNameFull) + ); +} diff --git a/packages/dotenv/src/index.ts b/packages/dotenv/src/index.ts new file mode 100644 index 0000000000..39f5fe22f7 --- /dev/null +++ b/packages/dotenv/src/index.ts @@ -0,0 +1 @@ +export * from "./env.js"; diff --git a/packages/dotenv/tsconfig.cjs.json b/packages/dotenv/tsconfig.cjs.json new file mode 100644 index 0000000000..3b068013b8 --- /dev/null +++ b/packages/dotenv/tsconfig.cjs.json @@ -0,0 +1,14 @@ +{ + "extends": "../../tsconfig.cjs.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist/cjs" + }, + "include": [ + "./src/**/*.ts", + "./src/**/*.json", + "./src/**/*.d.ts", + "./src/**/*.tsx" + ], + "references": [] +} diff --git a/packages/dotenv/tsconfig.json b/packages/dotenv/tsconfig.json new file mode 100644 index 0000000000..a18f3294e8 --- /dev/null +++ b/packages/dotenv/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.esm.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist" + }, + "include": ["src", "src/**/*.json"], + "references": [] +} diff --git a/packages/contract/src/contract/buildTx.ts b/packages/dotenv/vite.cjs.config.ts similarity index 76% rename from packages/contract/src/contract/buildTx.ts rename to packages/dotenv/vite.cjs.config.ts index 82e5cbb8fb..b631fd793f 100644 --- a/packages/contract/src/contract/buildTx.ts +++ b/packages/dotenv/vite.cjs.config.ts @@ -1,3 +1,4 @@ +import path from "node:path"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -11,3 +12,8 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. +import { ViteCommonJSConfig } from "@prosopo/config"; + +export default function () { + return ViteCommonJSConfig("util", path.resolve("./tsconfig.cjs.json")); +} diff --git a/packages/dotenv/vite.test.config.ts b/packages/dotenv/vite.test.config.ts new file mode 100644 index 0000000000..8970726bb8 --- /dev/null +++ b/packages/dotenv/vite.test.config.ts @@ -0,0 +1,32 @@ +import fs from "node:fs"; +import path from "node:path"; +// Copyright 2021-2024 Prosopo (UK) Ltd. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +import { ViteTestConfig } from "@prosopo/config"; +import dotenv from "dotenv"; +process.env.NODE_ENV = "test"; +// if .env.test exists at this level, use it, otherwise use the one at the root +const envFile = `.env.${process.env.NODE_ENV || "development"}`; +let envPath = envFile; +if (fs.existsSync(envFile)) { + envPath = path.resolve(envFile); +} else if (fs.existsSync(`../../${envFile}`)) { + envPath = path.resolve(`../../${envFile}`); +} else { + throw new Error(`No ${envFile} file found`); +} + +dotenv.config({ path: envPath }); + +export default ViteTestConfig; diff --git a/packages/env/package.json b/packages/env/package.json index 49a4a0e635..e6b7283682 100644 --- a/packages/env/package.json +++ b/packages/env/package.json @@ -1,48 +1,48 @@ { - "name": "@prosopo/env", - "version": "2.0.1", - "description": "Path env prosopo environment", - "main": "dist/index.js", - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build" - }, - "dependencies": { - "@polkadot/api": "10.13.1", - "@polkadot/keyring": "12.6.2", - "@polkadot/rpc-provider": "10.13.1", - "@polkadot/util": "12.6.2", - "@polkadot/util-crypto": "12.6.2", - "@prosopo/common": "2.0.1", - "@prosopo/contract": "2.0.1", - "@prosopo/database": "2.0.1", - "@prosopo/types": "2.0.1", - "@prosopo/types-database": "2.0.1", - "@prosopo/types-env": "2.0.1", - "@prosopo/util": "2.0.1" - }, - "overrides": { - "@polkadot/keyring": "12.6.2" - }, - "devDependencies": { - "@prosopo/config": "2.0.1", - "tslib": "2.6.2", - "typescript": "5.1.6" - }, - "author": "Prosopo", - "license": "Apache-2.0", - "sideEffects": false + "name": "@prosopo/env", + "version": "2.0.2", + "description": "Path env prosopo environment", + "main": "dist/index.js", + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build" + }, + "dependencies": { + "@polkadot/api": "10.13.1", + "@polkadot/keyring": "12.6.2", + "@polkadot/rpc-provider": "10.13.1", + "@polkadot/util": "12.6.2", + "@polkadot/util-crypto": "12.6.2", + "@prosopo/common": "2.0.2", + "@prosopo/contract": "2.0.2", + "@prosopo/database": "2.0.2", + "@prosopo/types": "2.0.2", + "@prosopo/types-database": "2.0.2", + "@prosopo/types-env": "2.0.2", + "@prosopo/util": "2.0.2" + }, + "overrides": { + "@polkadot/keyring": "12.6.2" + }, + "devDependencies": { + "@prosopo/config": "2.0.2", + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "author": "Prosopo", + "license": "Apache-2.0", + "sideEffects": false } diff --git a/packages/env/src/env.ts b/packages/env/src/env.ts index 0b4fa938e0..bd333e0e91 100644 --- a/packages/env/src/env.ts +++ b/packages/env/src/env.ts @@ -19,7 +19,6 @@ import { Databases } from "@prosopo/database"; import type { AssetsResolver, EnvironmentTypes, - NetworkNames, } from "@prosopo/types"; import type { ProsopoBasicConfigOutput } from "@prosopo/types"; import type { Database } from "@prosopo/types-database"; @@ -29,10 +28,7 @@ import { get } from "@prosopo/util"; export class Environment implements ProsopoEnvironment { config: ProsopoBasicConfigOutput; db: Database | undefined; - contractAddress: string; defaultEnvironment: EnvironmentTypes; - defaultNetwork: NetworkNames; - contractName: string; logger: Logger; assetsResolver: AssetsResolver | undefined; keyring: Keyring; @@ -41,40 +37,19 @@ export class Environment implements ProsopoEnvironment { constructor(config: ProsopoBasicConfigOutput, pair?: KeyringPair) { this.config = config; this.defaultEnvironment = this.config.defaultEnvironment; - this.defaultNetwork = this.config.defaultNetwork; this.pair = pair; this.logger = getLogger(this.config.logLevel, "ProsopoEnvironment"); - if ( - this.config.defaultNetwork && - Object.prototype.hasOwnProperty.call( - this.config.networks, - this.config.defaultNetwork, - ) && - this.config.networks && - this.config.networks[this.defaultNetwork] - ) { - const network = this.config.networks[this.defaultNetwork]; - this.contractAddress = network?.contract.address; - this.contractName = network?.contract.name; - this.keyring = new Keyring({ - type: "sr25519", // TODO get this from the chain - }); - if (this.pair) this.keyring.addPair(this.pair); - if (this.config.database) { - this.importDatabase().catch((err) => { - throw new ProsopoEnvError("DATABASE.DATABASE_IMPORT_FAILED", { - context: { error: err }, - logger: this.logger, - }); + this.keyring = new Keyring({ + type: "sr25519", + }); + if (this.pair) this.keyring.addPair(this.pair); + if (this.config.database) { + this.importDatabase().catch((err) => { + throw new ProsopoEnvError("DATABASE.DATABASE_IMPORT_FAILED", { + context: { error: err }, + logger: this.logger, }); - } - } else { - throw new ProsopoEnvError("CONFIG.UNKNOWN_ENVIRONMENT", { - context: { - constructor: this.constructor.name, - environment: this.config.defaultEnvironment, - }, }); } } diff --git a/packages/file-server/package.json b/packages/file-server/package.json index 1db6e2a52e..5a0e9951db 100644 --- a/packages/file-server/package.json +++ b/packages/file-server/package.json @@ -1,41 +1,41 @@ { - "name": "@prosopo/file-server", - "version": "2.0.1", - "description": "Simple static file server", - "main": "dist/index.js", - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build", - "start": "node ./dist/index.js" - }, - "dependencies": { - "@prosopo/util": "2.0.1", - "dotenv": "^16.0.1", - "express": "^4.18.2", - "node-fetch": "^3.3.2", - "sharp": "^0.32.4" - }, - "devDependencies": { - "@prosopo/config": "2.0.1", - "@types/express": "^4.17.17", - "@types/node": "^20.5.9", - "tslib": "2.6.2", - "typescript": "5.1.6" - }, - "author": "Prosopo", - "license": "Apache-2.0", - "sideEffects": false + "name": "@prosopo/file-server", + "version": "2.0.2", + "description": "Simple static file server", + "main": "dist/index.js", + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build", + "start": "node ./dist/index.js" + }, + "dependencies": { + "@prosopo/util": "2.0.2", + "dotenv": "^16.0.1", + "express": "^4.18.2", + "node-fetch": "^3.3.2", + "sharp": "^0.32.4" + }, + "devDependencies": { + "@prosopo/config": "2.0.2", + "@types/express": "^4.17.17", + "@types/node": "^20.5.9", + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "author": "Prosopo", + "license": "Apache-2.0", + "sideEffects": false } diff --git a/packages/load-balancer/package.json b/packages/load-balancer/package.json index cb9845ab08..5b67d53688 100644 --- a/packages/load-balancer/package.json +++ b/packages/load-balancer/package.json @@ -1,41 +1,41 @@ { - "name": "@prosopo/load-balancer", - "version": "2.0.1", - "description": "Provider load balancer", - "main": "dist/index.js", - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose" - }, - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/prosopo/captcha.git" - }, - "author": "Prosopo Limited", - "license": "Apache-2.0", - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "dependencies": { - "@prosopo/common": "2.0.1", - "@prosopo/types": "2.0.1" - }, - "devDependencies": { - "tslib": "2.6.2", - "typescript": "5.1.6" - }, - "sideEffects": false + "name": "@prosopo/load-balancer", + "version": "2.0.2", + "description": "Provider load balancer", + "main": "dist/index.js", + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/prosopo/captcha.git" + }, + "author": "Prosopo Limited", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "dependencies": { + "@prosopo/common": "2.0.2", + "@prosopo/types": "2.0.2" + }, + "devDependencies": { + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "sideEffects": false } diff --git a/packages/load-balancer/src/index.ts b/packages/load-balancer/src/index.ts index 1c4db2f548..93ab74edfd 100644 --- a/packages/load-balancer/src/index.ts +++ b/packages/load-balancer/src/index.ts @@ -15,83 +15,83 @@ import { ProsopoEnvError } from "@prosopo/common"; import type { EnvironmentTypes } from "@prosopo/types"; export type HardcodedProvider = { - address: string; - url: string; - datasetId: string; - datasetIdContent: string; + address: string; + url: string; + datasetId: string; + datasetIdContent: string; }; export const loadBalancer = ( - environment: EnvironmentTypes, + environment: EnvironmentTypes, ): HardcodedProvider[] => { - if (environment === "production") { - return [ - { - address: "5CFHA8d3S1XXkZuBwGqiuA6SECTzfoucq397YL34FuPAH89G", - url: "https://pronode2.prosopo.io", - datasetId: - "0x7eca1e4806d91c9f905448d0ba9ed18b420d2930c8c8e11d3471befbbd75a672", - datasetIdContent: - "0x1b66283e8d4dc61f9a076141974db4ba810bc8385268205a01d650ea0d40c320", - }, - { - address: "5C7bfXYwachNuvmasEFtWi9BMS41uBvo6KpYHVSQmad4nWzw", - url: "https://pronode3.prosopo.io", - datasetId: - "0x7eca1e4806d91c9f905448d0ba9ed18b420d2930c8c8e11d3471befbbd75a672", - datasetIdContent: - "0x1b66283e8d4dc61f9a076141974db4ba810bc8385268205a01d650ea0d40c320", - }, - { - address: "5FnBurrfqWgSLJFMsojjEP74mLX1vZZ9ASyNXKfA5YXu8FR2", - url: "https://pronode4.prosopo.io", - datasetId: - "0xe666b35451f302b9fccfbe783b1de9a6a4420b840abed071931d68a9ccc1c21d", - datasetIdContent: - "0x4cb09a9a3470199a41418267c9ceb0025572f05193e21ab6ef50a7e490f0dd2f", - }, - ]; - } - if (environment === "staging") { - return [ - { - address: "5CFHA8d3S1XXkZuBwGqiuA6SECTzfoucq397YL34FuPAH89G", - url: "https://staging-pronode2.prosopo.io", - datasetId: - "0x7eca1e4806d91c9f905448d0ba9ed18b420d2930c8c8e11d3471befbbd75a672", - datasetIdContent: - "0x1b66283e8d4dc61f9a076141974db4ba810bc8385268205a01d650ea0d40c320", - }, - { - address: "5C7bfXYwachNuvmasEFtWi9BMS41uBvo6KpYHVSQmad4nWzw", - url: "https://staging-pronode3.prosopo.io", - datasetId: - "0x7eca1e4806d91c9f905448d0ba9ed18b420d2930c8c8e11d3471befbbd75a672", - datasetIdContent: - "0x1b66283e8d4dc61f9a076141974db4ba810bc8385268205a01d650ea0d40c320", - }, - { - address: "5FnBurrfqWgSLJFMsojjEP74mLX1vZZ9ASyNXKfA5YXu8FR2", - url: "https://staging-pronode4.prosopo.io", - datasetId: - "0xe666b35451f302b9fccfbe783b1de9a6a4420b840abed071931d68a9ccc1c21d", - datasetIdContent: - "0x4cb09a9a3470199a41418267c9ceb0025572f05193e21ab6ef50a7e490f0dd2f", - }, - ]; - } - if (environment === "development") { - return [ - { - address: "5EjTA28bKSbFPPyMbUjNtArxyqjwq38r1BapVmLZShaqEedV", - url: "http://localhost:9229", - datasetId: - "0x9f460e81ac9c71b486f796a21bb36e2263694756a6621134d110da217fd3ef25", - datasetIdContent: - "0x3a2dbbf5610f04f54581843db3adf7e0fadc02cdb8e42e30b028c850e0603165", - }, - ]; - } + if (environment === "production") { + return [ + { + address: "5CFHA8d3S1XXkZuBwGqiuA6SECTzfoucq397YL34FuPAH89G", + url: "https://pronode2.prosopo.io", + datasetId: + "0x7eca1e4806d91c9f905448d0ba9ed18b420d2930c8c8e11d3471befbbd75a672", + datasetIdContent: + "0x1b66283e8d4dc61f9a076141974db4ba810bc8385268205a01d650ea0d40c320", + }, + { + address: "5C7bfXYwachNuvmasEFtWi9BMS41uBvo6KpYHVSQmad4nWzw", + url: "https://pronode3.prosopo.io", + datasetId: + "0x7eca1e4806d91c9f905448d0ba9ed18b420d2930c8c8e11d3471befbbd75a672", + datasetIdContent: + "0x1b66283e8d4dc61f9a076141974db4ba810bc8385268205a01d650ea0d40c320", + }, + { + address: "5FnBurrfqWgSLJFMsojjEP74mLX1vZZ9ASyNXKfA5YXu8FR2", + url: "https://pronode4.prosopo.io", + datasetId: + "0xe666b35451f302b9fccfbe783b1de9a6a4420b840abed071931d68a9ccc1c21d", + datasetIdContent: + "0x4cb09a9a3470199a41418267c9ceb0025572f05193e21ab6ef50a7e490f0dd2f", + }, + ]; + } + if (environment === "staging") { + return [ + { + address: "5CFHA8d3S1XXkZuBwGqiuA6SECTzfoucq397YL34FuPAH89G", + url: "https://staging-pronode2.prosopo.io", + datasetId: + "0xe666b35451f302b9fccfbe783b1de9a6a4420b840abed071931d68a9ccc1c21d", + datasetIdContent: + "0x4cb09a9a3470199a41418267c9ceb0025572f05193e21ab6ef50a7e490f0dd2f", + }, + { + address: "5C7bfXYwachNuvmasEFtWi9BMS41uBvo6KpYHVSQmad4nWzw", + url: "https://staging-pronode3.prosopo.io", + datasetId: + "0xe666b35451f302b9fccfbe783b1de9a6a4420b840abed071931d68a9ccc1c21d", + datasetIdContent: + "0x4cb09a9a3470199a41418267c9ceb0025572f05193e21ab6ef50a7e490f0dd2f", + }, + { + address: "5FnBurrfqWgSLJFMsojjEP74mLX1vZZ9ASyNXKfA5YXu8FR2", + url: "https://staging-pronode4.prosopo.io", + datasetId: + "0xe666b35451f302b9fccfbe783b1de9a6a4420b840abed071931d68a9ccc1c21d", + datasetIdContent: + "0x4cb09a9a3470199a41418267c9ceb0025572f05193e21ab6ef50a7e490f0dd2f", + }, + ]; + } + if (environment === "development") { + return [ + { + address: "5EjTA28bKSbFPPyMbUjNtArxyqjwq38r1BapVmLZShaqEedV", + url: "http://localhost:9229", + datasetId: + "0x9f460e81ac9c71b486f796a21bb36e2263694756a6621134d110da217fd3ef25", + datasetIdContent: + "0x3a2dbbf5610f04f54581843db3adf7e0fadc02cdb8e42e30b028c850e0603165", + }, + ]; + } - throw new ProsopoEnvError("CONFIG.UNKNOWN_ENVIRONMENT"); + throw new ProsopoEnvError("CONFIG.UNKNOWN_ENVIRONMENT"); }; diff --git a/packages/procaptcha-bundle/package.json b/packages/procaptcha-bundle/package.json index 22312fb550..b43cbb3987 100644 --- a/packages/procaptcha-bundle/package.json +++ b/packages/procaptcha-bundle/package.json @@ -1,61 +1,61 @@ { - "name": "@prosopo/procaptcha-bundle", - "version": "2.0.1", - "author": "PROSOPO LIMITED ", - "license": "Apache-2.0", - "main": "./dist/index.js", - "type": "module", - "sideEffects": false, - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "types": "./dist/index.d.ts", - "source": "./src/index.tsx", - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build", - "start": "NODE_ENV=${NODE_ENV:-development}; vite serve --mode $NODE_ENV --host", - "bundle": "NODE_ENV=${NODE_ENV:-production}; vite build --config vite.config.ts --mode $NODE_ENV --debug", - "bundle:webpack": "NODE_ENV=${NODE_ENV:-production}; webpack build --config webpack.config.cjs --mode $NODE_ENV" - }, - "browserslist": [ - "> 0.5%, last 2 versions, not dead" - ], - "dependencies": { - "@prosopo/procaptcha-frictionless": "2.0.1", - "@prosopo/procaptcha-pow": "2.0.1", - "@prosopo/procaptcha-react": "2.0.1", - "@prosopo/types": "2.0.1", - "@prosopo/util": "2.0.1", - "react": "^18.3.1", - "react-dom": "^18.3.1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/prosopo/captcha.git" - }, - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "description": "", - "publishConfig": { - "registry": "https://registry.npmjs.org" - }, - "devDependencies": { - "@prosopo/config": "2.0.1", - "@prosopo/cli": "2.0.1", - "tslib": "2.6.2", - "vite": "^5.1.7", - "typescript": "^5.1.6" - } + "name": "@prosopo/procaptcha-bundle", + "version": "2.0.2", + "author": "PROSOPO LIMITED ", + "license": "Apache-2.0", + "main": "./dist/index.js", + "type": "module", + "sideEffects": false, + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "types": "./dist/index.d.ts", + "source": "./src/index.tsx", + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build", + "start": "NODE_ENV=${NODE_ENV:-development}; vite serve --mode $NODE_ENV --host", + "bundle": "NODE_ENV=${NODE_ENV:-production}; vite build --config vite.config.ts --mode $NODE_ENV --debug", + "bundle:webpack": "NODE_ENV=${NODE_ENV:-production}; webpack build --config webpack.config.cjs --mode $NODE_ENV" + }, + "browserslist": [ + "> 0.5%, last 2 versions, not dead" + ], + "dependencies": { + "@prosopo/procaptcha-frictionless": "2.0.2", + "@prosopo/procaptcha-pow": "2.0.2", + "@prosopo/procaptcha-react": "2.0.2", + "@prosopo/types": "2.0.2", + "@prosopo/util": "2.0.2", + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/prosopo/captcha.git" + }, + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "description": "", + "publishConfig": { + "registry": "https://registry.npmjs.org" + }, + "devDependencies": { + "@prosopo/config": "2.0.2", + "@prosopo/cli": "2.0.2", + "tslib": "2.6.2", + "vite": "^5.1.7", + "typescript": "^5.1.6" + } } diff --git a/packages/procaptcha-bundle/src/index.tsx b/packages/procaptcha-bundle/src/index.tsx index 7b08cd86c1..ea70230658 100644 --- a/packages/procaptcha-bundle/src/index.tsx +++ b/packages/procaptcha-bundle/src/index.tsx @@ -19,7 +19,6 @@ import { EnvironmentTypesSchema, type Features, FeaturesEnum, - NetworkNamesSchema, type ProcaptchaClientConfigInput, type ProcaptchaClientConfigOutput, ProcaptchaConfigSchema, @@ -66,9 +65,6 @@ const getConfig = (siteKey?: string): ProcaptchaClientConfigOutput => { defaultEnvironment: process.env.PROSOPO_DEFAULT_ENVIRONMENT ? EnvironmentTypesSchema.parse(process.env.PROSOPO_DEFAULT_ENVIRONMENT) : EnvironmentTypesSchema.enum.development, - defaultNetwork: process.env.PROSOPO_DEFAULT_NETWORK - ? NetworkNamesSchema.parse(process.env.PROSOPO_DEFAULT_NETWORK) - : NetworkNamesSchema.enum.development, userAccountAddress: "", account: { address: siteKey, diff --git a/packages/procaptcha-bundle/vite.config.ts b/packages/procaptcha-bundle/vite.config.ts index 6346ad9521..302def2298 100644 --- a/packages/procaptcha-bundle/vite.config.ts +++ b/packages/procaptcha-bundle/vite.config.ts @@ -11,11 +11,13 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + import * as fs from "node:fs"; import * as path from "node:path"; -import { loadEnv } from "@prosopo/cli"; +import { loadEnv } from "@prosopo/dotenv"; import { ViteFrontendConfig } from "@prosopo/config"; import { defineConfig } from "vite"; + // load env using our util because vite loadEnv is not working for .env.development loadEnv(); @@ -28,36 +30,36 @@ const bundleName = "procaptcha"; const packageName = "@prosopo/procaptcha-bundle"; const entry = "./src/index.tsx"; const copyOptions = copyTo - ? { - srcDir: "./dist/bundle", - destDir: copyTo, - } - : undefined; + ? { + srcDir: "./dist/bundle", + destDir: copyTo, + } + : undefined; const tsConfigPaths = [path.resolve("./tsconfig.json")]; const packagesDir = path.resolve(".."); const workspaceRoot = path.resolve("../../"); // Get all folders in packagesDir const packages = fs - .readdirSync(packagesDir) - .filter((f) => fs.statSync(path.join(packagesDir, f)).isDirectory()); + .readdirSync(packagesDir) + .filter((f) => fs.statSync(path.join(packagesDir, f)).isDirectory()); for (const packageName of packages) { - // Add the tsconfig for each package to tsConfigPaths - tsConfigPaths.push(path.resolve(`../${packageName}/tsconfig.json`)); + // Add the tsconfig for each package to tsConfigPaths + tsConfigPaths.push(path.resolve(`../${packageName}/tsconfig.json`)); } // Merge with generic frontend config export default defineConfig(async ({ command, mode }) => { - const frontendConfig = await ViteFrontendConfig( - packageName, - bundleName, - path.resolve(), - entry, - command, - mode, - copyOptions, - tsConfigPaths, - workspaceRoot, - ); - return { - ...frontendConfig, - }; + const frontendConfig = await ViteFrontendConfig( + packageName, + bundleName, + path.resolve(), + entry, + command, + mode, + copyOptions, + tsConfigPaths, + workspaceRoot, + ); + return { + ...frontendConfig, + }; }); diff --git a/packages/procaptcha-common/package.json b/packages/procaptcha-common/package.json index b94c34c221..cd904422a8 100644 --- a/packages/procaptcha-common/package.json +++ b/packages/procaptcha-common/package.json @@ -1,51 +1,51 @@ { - "name": "@prosopo/procaptcha-common", - "version": "2.0.1", - "author": "PROSOPO LIMITED ", - "license": "Apache-2.0", - "main": "./dist/index.js", - "type": "module", - "sideEffects": false, - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "types": "./dist/index.d.ts", - "source": "./src/index.ts", - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build" - }, - "browserslist": [ - "> 0.5%, last 2 versions, not dead" - ], - "dependencies": { - "@prosopo/common": "2.0.1", - "@prosopo/types": "2.0.1" - }, - "devDependencies": { - "@prosopo/config": "2.0.1", - "tslib": "2.6.2", - "typescript": "5.1.6" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/prosopo/captcha.git" - }, - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "description": "", - "publishConfig": { - "registry": "https://registry.npmjs.org" - } + "name": "@prosopo/procaptcha-common", + "version": "2.0.2", + "author": "PROSOPO LIMITED ", + "license": "Apache-2.0", + "main": "./dist/index.js", + "type": "module", + "sideEffects": false, + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "types": "./dist/index.d.ts", + "source": "./src/index.ts", + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build" + }, + "browserslist": [ + "> 0.5%, last 2 versions, not dead" + ], + "dependencies": { + "@prosopo/common": "2.0.2", + "@prosopo/types": "2.0.2" + }, + "devDependencies": { + "@prosopo/config": "2.0.2", + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/prosopo/captcha.git" + }, + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "description": "", + "publishConfig": { + "registry": "https://registry.npmjs.org" + } } diff --git a/packages/procaptcha-common/src/state/builder.ts b/packages/procaptcha-common/src/state/builder.ts index a685d52d75..b64e44b620 100644 --- a/packages/procaptcha-common/src/state/builder.ts +++ b/packages/procaptcha-common/src/state/builder.ts @@ -25,13 +25,13 @@ type useStateType = (defaultValue: T) => [T, (value: T) => void]; export const buildUpdateState = (state: ProcaptchaState, onStateUpdate: ProcaptchaStateUpdateFn) => - (nextState: Partial) => { - // mutate the current state. Note that this is in order of properties in the nextState object. - // e.g. given {b: 2, c: 3, a: 1}, b will be set, then c, then a. This is because JS stores fields in insertion order by default, unless you override it with a class or such by changing the key enumeration order. - Object.assign(state, nextState); - // then call the update function for the frontend to do the same - onStateUpdate(nextState); - }; + (nextState: Partial) => { + // mutate the current state. Note that this is in order of properties in the nextState object. + // e.g. given {b: 2, c: 3, a: 1}, b will be set, then c, then a. This is because JS stores fields in insertion order by default, unless you override it with a class or such by changing the key enumeration order. + Object.assign(state, nextState); + // then call the update function for the frontend to do the same + onStateUpdate(nextState); + }; /** * Wrap a ref to be the same format as useState. @@ -75,10 +75,6 @@ export const useProcaptcha = ( useRef, undefined, ); - const [blockNumber, setBlockNumber] = useRefAsState( - useRef, - undefined, - ); const [successfullChallengeTimeout, setSuccessfullChallengeTimeout] = useRefAsState(useRef, undefined); const [sendData, setSendData] = useState(false); @@ -96,7 +92,6 @@ export const useProcaptcha = ( dappAccount, submission, timeout, - blockNumber, successfullChallengeTimeout, sendData, }, @@ -122,8 +117,6 @@ export const useProcaptcha = ( if (nextState.timeout !== undefined) setTimeout(nextState.timeout); if (nextState.successfullChallengeTimeout !== undefined) setSuccessfullChallengeTimeout(nextState.timeout); - if (nextState.blockNumber !== undefined) - setBlockNumber(nextState.blockNumber); if (nextState.sendData !== undefined) setSendData(nextState.sendData); }, ]; diff --git a/packages/procaptcha-frictionless/package.json b/packages/procaptcha-frictionless/package.json index ab468dc813..be12de9bf7 100644 --- a/packages/procaptcha-frictionless/package.json +++ b/packages/procaptcha-frictionless/package.json @@ -1,55 +1,55 @@ { - "name": "@prosopo/procaptcha-frictionless", - "version": "2.0.1", - "author": "PROSOPO LIMITED ", - "license": "Apache-2.0", - "main": "./dist/index.js", - "type": "module", - "sideEffects": false, - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "types": "./dist/index.d.ts", - "source": "./src/index.ts", - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build" - }, - "browserslist": [ - "> 0.5%, last 2 versions, not dead" - ], - "dependencies": { - "@prosopo/detector": "2.0.1", - "@prosopo/procaptcha-pow": "2.0.1", - "@prosopo/procaptcha-react": "2.0.1", - "@prosopo/types": "2.0.1", - "@prosopo/web-components": "2.0.1", - "react": "^18.3.1" - }, - "devDependencies": { - "@prosopo/config": "2.0.1", - "tslib": "2.6.2", - "typescript": "5.1.6" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/prosopo/captcha.git" - }, - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "description": "", - "publishConfig": { - "registry": "https://registry.npmjs.org" - } + "name": "@prosopo/procaptcha-frictionless", + "version": "2.0.2", + "author": "PROSOPO LIMITED ", + "license": "Apache-2.0", + "main": "./dist/index.js", + "type": "module", + "sideEffects": false, + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "types": "./dist/index.d.ts", + "source": "./src/index.ts", + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build" + }, + "browserslist": [ + "> 0.5%, last 2 versions, not dead" + ], + "dependencies": { + "@prosopo/detector": "2.0.2", + "@prosopo/procaptcha-pow": "2.0.2", + "@prosopo/procaptcha-react": "2.0.2", + "@prosopo/types": "2.0.2", + "@prosopo/web-components": "2.0.2", + "react": "^18.3.1" + }, + "devDependencies": { + "@prosopo/config": "2.0.2", + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/prosopo/captcha.git" + }, + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "description": "", + "publishConfig": { + "registry": "https://registry.npmjs.org" + } } diff --git a/packages/procaptcha-pow/package.json b/packages/procaptcha-pow/package.json index ec8e2b4db3..0940a6963b 100644 --- a/packages/procaptcha-pow/package.json +++ b/packages/procaptcha-pow/package.json @@ -1,70 +1,70 @@ { - "name": "@prosopo/procaptcha-pow", - "version": "2.0.1", - "author": "PROSOPO LIMITED ", - "license": "Apache-2.0", - "main": "./dist/index.js", - "type": "module", - "sideEffects": false, - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "types": "./dist/index.d.ts", - "source": "./src/index.ts", - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build" - }, - "browserslist": [ - "> 0.5%, last 2 versions, not dead" - ], - "dependencies": { - "@emotion/react": "^11.11.1", - "@prosopo/account": "2.0.1", - "@polkadot/api": "10.13.1", - "@polkadot/keyring": "12.6.2", - "@polkadot/rpc-provider": "10.13.1", - "@prosopo/api": "2.0.1", - "@prosopo/common": "2.0.1", - "@prosopo/contract": "2.0.1", - "@prosopo/procaptcha": "2.0.1", - "@prosopo/procaptcha-common": "2.0.1", - "@prosopo/types": "2.0.1", - "@prosopo/util": "2.0.1", - "@prosopo/web-components": "2.0.1", - "react": "^18.3.1" - }, - "overrides": { - "@polkadot/extension-inject": { - "@polkadot/api": { - "version": "10.13.1" - } - } - }, - "devDependencies": { - "@prosopo/config": "2.0.1", - "tslib": "2.6.2", - "typescript": "5.1.6" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/prosopo/captcha.git" - }, - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "description": "", - "publishConfig": { - "registry": "https://registry.npmjs.org" - } + "name": "@prosopo/procaptcha-pow", + "version": "2.0.2", + "author": "PROSOPO LIMITED ", + "license": "Apache-2.0", + "main": "./dist/index.js", + "type": "module", + "sideEffects": false, + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "types": "./dist/index.d.ts", + "source": "./src/index.ts", + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build" + }, + "browserslist": [ + "> 0.5%, last 2 versions, not dead" + ], + "dependencies": { + "@emotion/react": "^11.11.1", + "@prosopo/account": "2.0.2", + "@polkadot/api": "10.13.1", + "@polkadot/keyring": "12.6.2", + "@polkadot/rpc-provider": "10.13.1", + "@prosopo/api": "2.0.2", + "@prosopo/common": "2.0.2", + "@prosopo/contract": "2.0.2", + "@prosopo/procaptcha": "2.0.2", + "@prosopo/procaptcha-common": "2.0.2", + "@prosopo/types": "2.0.2", + "@prosopo/util": "2.0.2", + "@prosopo/web-components": "2.0.2", + "react": "^18.3.1" + }, + "overrides": { + "@polkadot/extension-inject": { + "@polkadot/api": { + "version": "10.13.1" + } + } + }, + "devDependencies": { + "@prosopo/config": "2.0.2", + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/prosopo/captcha.git" + }, + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "description": "", + "publishConfig": { + "registry": "https://registry.npmjs.org" + } } diff --git a/packages/procaptcha-pow/src/components/ProcaptchaWidget.tsx b/packages/procaptcha-pow/src/components/ProcaptchaWidget.tsx index 7dbbe9c156..7fee0a3113 100644 --- a/packages/procaptcha-pow/src/components/ProcaptchaWidget.tsx +++ b/packages/procaptcha-pow/src/components/ProcaptchaWidget.tsx @@ -31,7 +31,7 @@ import { lightTheme, } from "@prosopo/web-components"; import { useEffect, useRef, useState } from "react"; -import { Manager } from "../Services/Manager.js"; +import { Manager } from "../services/Manager.js"; const Procaptcha = (props: ProcaptchaProps) => { const config = props.config; diff --git a/packages/procaptcha-pow/src/Services/Manager.ts b/packages/procaptcha-pow/src/services/Manager.ts similarity index 94% rename from packages/procaptcha-pow/src/Services/Manager.ts rename to packages/procaptcha-pow/src/services/Manager.ts index 4aa3c119d4..b4e3b40df8 100644 --- a/packages/procaptcha-pow/src/Services/Manager.ts +++ b/packages/procaptcha-pow/src/services/Manager.ts @@ -84,18 +84,6 @@ export const Manager = ( return ProcaptchaConfigSchema.parse(config); }; - const getNetwork = (config: ProcaptchaClientConfigOutput) => { - const network = config.networks[config.defaultNetwork]; - if (!network) { - throw new ProsopoEnvError("DEVELOPER.NETWORK_NOT_FOUND", { - context: { - error: `No network found for environment ${config.defaultEnvironment}`, - }, - }); - } - return network; - }; - const getAccount = () => { if (!state.account) { throw new ProsopoEnvError("GENERAL.ACCOUNT_NOT_FOUND", { @@ -188,7 +176,6 @@ export const Manager = ( const providerUrl = getRandomProviderResponse.provider.url; const providerApi = new ProviderApi( - getNetwork(getConfig()), providerUrl, getDappAccount(), ); @@ -239,7 +226,6 @@ export const Manager = ( [ApiParams.user]: getAccount().account.account.address, [ApiParams.dapp]: getDappAccount(), [ApiParams.challenge]: challenge.challenge, - [ApiParams.blockNumber]: getRandomProviderResponse.blockNumber, [ApiParams.nonce]: solution, [ApiParams.timestamp]: challenge.timestamp, [ApiParams.signature]: { @@ -276,7 +262,6 @@ export const Manager = ( datasetId: randomProvderObj.datasetId, datasetIdContent: randomProvderObj.datasetIdContent, }, - blockNumber: 0, }; }; diff --git a/packages/procaptcha-react/package.json b/packages/procaptcha-react/package.json index e40240527e..97a74b3a37 100644 --- a/packages/procaptcha-react/package.json +++ b/packages/procaptcha-react/package.json @@ -1,70 +1,70 @@ { - "name": "@prosopo/procaptcha-react", - "version": "2.0.1", - "author": "PROSOPO LIMITED ", - "license": "Apache-2.0", - "main": "./dist/index.js", - "type": "module", - "sideEffects": false, - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "types": "./dist/index.d.ts", - "source": "./src/index.ts", - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build" - }, - "browserslist": [ - "> 0.5%, last 2 versions, not dead" - ], - "dependencies": { - "@emotion/react": "^11.11.4", - "@prosopo/common": "2.0.1", - "@prosopo/procaptcha": "2.0.1", - "@prosopo/procaptcha-common": "2.0.1", - "@prosopo/types": "2.0.1", - "@prosopo/util": "2.0.1", - "@prosopo/web-components": "2.0.1", - "csstype": "^3.0.2", - "react": "^18.3.1" - }, - "overrides": { - "@polkadot/extension-inject": { - "@polkadot/api": { - "version": "10.13.1" - } - }, - "@polkadot/extension-dapp": { - "@polkadot/api": { - "version": "10.13.1" - } - } - }, - "devDependencies": { - "@prosopo/config": "2.0.1", - "tslib": "2.6.2", - "typescript": "5.1.6" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/prosopo/captcha.git" - }, - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "description": "", - "publishConfig": { - "registry": "https://registry.npmjs.org" - } + "name": "@prosopo/procaptcha-react", + "version": "2.0.2", + "author": "PROSOPO LIMITED ", + "license": "Apache-2.0", + "main": "./dist/index.js", + "type": "module", + "sideEffects": false, + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "types": "./dist/index.d.ts", + "source": "./src/index.ts", + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build" + }, + "browserslist": [ + "> 0.5%, last 2 versions, not dead" + ], + "dependencies": { + "@emotion/react": "^11.11.4", + "@prosopo/common": "2.0.2", + "@prosopo/procaptcha": "2.0.2", + "@prosopo/procaptcha-common": "2.0.2", + "@prosopo/types": "2.0.2", + "@prosopo/util": "2.0.2", + "@prosopo/web-components": "2.0.2", + "csstype": "^3.0.2", + "react": "^18.3.1" + }, + "overrides": { + "@polkadot/extension-inject": { + "@polkadot/api": { + "version": "10.13.1" + } + }, + "@polkadot/extension-dapp": { + "@polkadot/api": { + "version": "10.13.1" + } + } + }, + "devDependencies": { + "@prosopo/config": "2.0.2", + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/prosopo/captcha.git" + }, + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "description": "", + "publishConfig": { + "registry": "https://registry.npmjs.org" + } } diff --git a/packages/procaptcha-react/src/components/CaptchaWidget.tsx b/packages/procaptcha-react/src/components/CaptchaWidget.tsx index f991b42085..1e8bb9b390 100644 --- a/packages/procaptcha-react/src/components/CaptchaWidget.tsx +++ b/packages/procaptcha-react/src/components/CaptchaWidget.tsx @@ -105,7 +105,6 @@ export const CaptchaWidget = ({ // include the padding / margin / border in the width boxSizing: "border-box", }; - console.log("imageStyle index ", index, imageStyle); return (
", - "license": "Apache-2.0", - "main": "./dist/index.js", - "type": "module", - "types": "./dist/index.d.ts", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "scripts": { - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build", - "test": "NODE_ENV=${NODE_ENV:-test}; vitest --run --config vite.test.config.ts" - }, - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - }, - "./modules/Manager": { - "types": "./dist/modules/Manager.d.ts", - "import": "./dist/modules/Manager.js", - "require": "./dist/cjs/modules/Manager.cjs", - "default": "./dist/modules/Manager.js" - } - }, - "dependencies": { - "@polkadot/api": "10.13.1", - "@polkadot/api-contract": "10.13.1", - "@polkadot/util": "12.6.2", - "@polkadot/util-crypto": "12.6.2", - "@prosopo/account": "2.0.1", - "@prosopo/api": "2.0.1", - "@prosopo/common": "2.0.1", - "@prosopo/datasets": "2.0.1", - "@prosopo/load-balancer": "2.0.1", - "@prosopo/procaptcha-common": "2.0.1", - "@prosopo/types": "2.0.1", - "@prosopo/util": "2.0.1", - "jsdom": "^24.1.0" - }, - "overrides": { - "@polkadot/extension-inject": { - "@polkadot/api": { - "version": "10.13.1" - } - }, - "@polkadot/extension-dapp": { - "@polkadot/api": { - "version": "10.13.1" - } - } - }, - "devDependencies": { - "@prosopo/config": "2.0.1", - "dotenv": "^16.0.1", - "tslib": "2.6.2", - "typescript": "5.1.6", - "vitest": "^1.3.1" - }, - "keywords": [], - "repository": { - "type": "git", - "url": "git+https://github.com/prosopo/captcha.git" - }, - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "description": "", - "publishConfig": { - "registry": "https://registry.npmjs.org" - }, - "sideEffects": false + "name": "@prosopo/procaptcha", + "version": "2.0.2", + "author": "PROSOPO LIMITED ", + "license": "Apache-2.0", + "main": "./dist/index.js", + "type": "module", + "types": "./dist/index.d.ts", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "scripts": { + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build", + "test": "NODE_ENV=${NODE_ENV:-test}; vitest --run --config vite.test.config.ts" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + }, + "./modules/Manager": { + "types": "./dist/modules/Manager.d.ts", + "import": "./dist/modules/Manager.js", + "require": "./dist/cjs/modules/Manager.cjs", + "default": "./dist/modules/Manager.js" + } + }, + "dependencies": { + "@polkadot/api": "10.13.1", + "@polkadot/api-contract": "10.13.1", + "@polkadot/util": "12.6.2", + "@polkadot/util-crypto": "12.6.2", + "@prosopo/account": "2.0.2", + "@prosopo/api": "2.0.2", + "@prosopo/common": "2.0.2", + "@prosopo/datasets": "2.0.2", + "@prosopo/load-balancer": "2.0.2", + "@prosopo/procaptcha-common": "2.0.2", + "@prosopo/types": "2.0.2", + "@prosopo/util": "2.0.2", + "jsdom": "^24.1.0" + }, + "overrides": { + "@polkadot/extension-inject": { + "@polkadot/api": { + "version": "10.13.1" + } + }, + "@polkadot/extension-dapp": { + "@polkadot/api": { + "version": "10.13.1" + } + } + }, + "devDependencies": { + "@prosopo/config": "2.0.2", + "dotenv": "^16.0.1", + "tslib": "2.6.2", + "typescript": "5.1.6", + "vitest": "^1.3.1" + }, + "keywords": [], + "repository": { + "type": "git", + "url": "git+https://github.com/prosopo/captcha.git" + }, + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "description": "", + "publishConfig": { + "registry": "https://registry.npmjs.org" + }, + "sideEffects": false } diff --git a/packages/procaptcha/src/modules/Manager.ts b/packages/procaptcha/src/modules/Manager.ts index 22edadcf46..986703c4ed 100644 --- a/packages/procaptcha/src/modules/Manager.ts +++ b/packages/procaptcha/src/modules/Manager.ts @@ -19,7 +19,6 @@ import { ProsopoDatasetError, ProsopoEnvError, ProsopoError, - trimProviderUrl, } from "@prosopo/common"; import { loadBalancer } from "@prosopo/load-balancer"; import { buildUpdateState, getDefaultEvents } from "@prosopo/procaptcha-common"; @@ -43,6 +42,7 @@ import { at, hashToHex } from "@prosopo/util"; import { sleep } from "../utils/utils.js"; import ProsopoCaptchaApi from "./ProsopoCaptchaApi.js"; import storage from "./storage.js"; +import { stringToHex } from "@polkadot/util/string"; const defaultState = (): Partial => { return { @@ -59,18 +59,6 @@ const defaultState = (): Partial => { }; }; -const getNetwork = (config: ProcaptchaClientConfigOutput) => { - const network = config.networks[config.defaultNetwork]; - if (!network) { - throw new ProsopoEnvError("DEVELOPER.NETWORK_NOT_FOUND", { - context: { - error: `No network found for environment ${config.defaultEnvironment}`, - }, - }); - } - return network; -}; - const getRandomActiveProvider = ( config: ProcaptchaClientConfigOutput, ): RandomProvider => { @@ -93,7 +81,6 @@ const getRandomActiveProvider = ( datasetId: randomProvderObj.datasetId, datasetIdContent: randomProvderObj.datasetIdContent, }, - blockNumber: 0, }; }; @@ -174,19 +161,16 @@ export function Manager( await sleep(100); const account = await loadAccount(); - const contract = getNetwork(config).contract.address; // get a random provider const getRandomProviderResponse = getRandomActiveProvider(getConfig()); - const blockNumber = getRandomProviderResponse.blockNumber; const providerUrl = getRandomProviderResponse.provider.url; // get the provider api inst const providerApi = await loadProviderApi(providerUrl); const captchaApi = new ProsopoCaptchaApi( account.account.address, - contract, getRandomProviderResponse, providerApi, config.web2, @@ -220,7 +204,6 @@ export function Manager( challenge, showModal: true, timeout, - blockNumber, }); }); }; @@ -256,7 +239,6 @@ export function Manager( ); const account = getAccount(); - const blockNumber = getBlockNumber(); const signer = getExtension(account).signer; const first = at(challenge.captchas, 0); @@ -274,15 +256,29 @@ export function Manager( }); } + if (!signer || !signer.signRaw) { + throw new ProsopoEnvError("GENERAL.CANT_FIND_KEYRINGPAIR", { + context: { + error: + "Signer is not defined, cannot sign message to prove account ownership", + }, + }); + } + + const userRequestHashSignature = await signer.signRaw({ + address: account.account.address, + data: stringToHex(challenge.requestHash), + type: "bytes", + }); + // send the commitment to the provider const submission: TCaptchaSubmitResult = await captchaApi.submitCaptchaSolution( - signer, + userRequestHashSignature.signature, challenge.requestHash, captchaSolution, - salt, challenge.timestamp, - challenge.signature.provider.timestamp, + challenge.signature.provider.requestHash, ); // mark as is human if solution has been approved @@ -305,7 +301,6 @@ export function Manager( storage.setProcaptchaStorage({ ...storage.getProcaptchaStorage(), providerUrl, - blockNumber, }); events.onHuman( encodeProcaptchaOutput({ @@ -313,11 +308,14 @@ export function Manager( [ApiParams.user]: account.account.address, [ApiParams.dapp]: getDappAccount(), [ApiParams.commitmentId]: hashToHex(submission[1]), - [ApiParams.blockNumber]: blockNumber, [ApiParams.timestamp]: challenge.timestamp, [ApiParams.signature]: { [ApiParams.provider]: { - [ApiParams.timestamp]: challenge.signature.provider.timestamp, + [ApiParams.requestHash]: + challenge.signature.provider.requestHash, + }, + [ApiParams.user]: { + [ApiParams.requestHash]: userRequestHashSignature.signature, }, }, }), @@ -388,11 +386,10 @@ export function Manager( const loadProviderApi = async (providerUrl: string) => { const config = getConfig(); - const network = getNetwork(config); if (!config.account.address) { throw new ProsopoEnvError("GENERAL.SITE_KEY_MISSING"); } - return new ProviderApi(network, providerUrl, config.account.address); + return new ProviderApi(providerUrl, config.account.address); }; const clearTimeout = () => { @@ -462,11 +459,6 @@ export function Manager( return dappAccount; }; - const getBlockNumber = () => { - const blockNumber: number = state.blockNumber || 0; - return blockNumber; - }; - const getExtension = (possiblyAccount?: Account) => { const account = possiblyAccount || getAccount(); if (!account.extension) { diff --git a/packages/procaptcha/src/modules/ProsopoCaptchaApi.ts b/packages/procaptcha/src/modules/ProsopoCaptchaApi.ts index 41bac7d221..f9f119e25b 100644 --- a/packages/procaptcha/src/modules/ProsopoCaptchaApi.ts +++ b/packages/procaptcha/src/modules/ProsopoCaptchaApi.ts @@ -31,7 +31,6 @@ import type { TCaptchaSubmitResult } from "@prosopo/types"; export class ProsopoCaptchaApi implements ProsopoCaptchaApiInterface { userAccount: string; - contract: string; provider: RandomProvider; providerApi: ProviderApi; dappAccount: string; @@ -39,14 +38,12 @@ export class ProsopoCaptchaApi implements ProsopoCaptchaApiInterface { constructor( userAccount: string, - contract: string, provider: RandomProvider, providerApi: ProviderApi, web2: boolean, dappAccount: string, ) { this.userAccount = userAccount; - this.contract = contract; this.provider = provider; this.providerApi = providerApi; this._web2 = web2; @@ -83,12 +80,11 @@ export class ProsopoCaptchaApi implements ProsopoCaptchaApiInterface { } public async submitCaptchaSolution( - signer: Signer, + userRequestHashSignature: string, requestHash: string, solutions: CaptchaSolution[], - salt: string, timestamp: string, - providerTimestampSignature: string, + providerRequestHashSignature: string, ): Promise { const tree = new CaptchaMerkleTree(); @@ -108,35 +104,15 @@ export class ProsopoCaptchaApi implements ProsopoCaptchaApiInterface { const tx: ContractSubmittableResult | undefined = undefined; - let userRequestHashSignature: string | undefined = undefined; - - if (!signer || !signer.signRaw) { - throw new ProsopoEnvError("GENERAL.CANT_FIND_KEYRINGPAIR", { - context: { - error: - "Signer is not defined, cannot sign message to prove account ownership", - }, - }); - } - let result: CaptchaSolutionResponse; - // sign the request hash to prove account ownership - const signed = await signer.signRaw({ - address: this.userAccount, - data: stringToHex(requestHash), - type: "bytes", - }); - userRequestHashSignature = signed.signature; - try { result = await this.providerApi.submitCaptchaSolution( solutions, requestHash, this.userAccount, - salt, timestamp, - providerTimestampSignature, + providerRequestHashSignature, userRequestHashSignature, ); } catch (error) { diff --git a/packages/procaptcha/src/tests/modules/storage.test.ts b/packages/procaptcha/src/tests/modules/storage.test.ts index 7535d51de1..5a6059c029 100644 --- a/packages/procaptcha/src/tests/modules/storage.test.ts +++ b/packages/procaptcha/src/tests/modules/storage.test.ts @@ -23,18 +23,16 @@ describe("storage tests", () => { expect(getAccount()).to.equal("abc"); }); - test("sets provider URL and block number", async () => { + test("sets provider URL", async () => { setAccount("abc"); const procaptchaStorage = getProcaptchaStorage(); setProcaptchaStorage({ ...procaptchaStorage, providerUrl: "http://localhost:9229", - blockNumber: 100, }); expect(getProcaptchaStorage()).toMatchObject({ account: "abc", providerUrl: "http://localhost:9229", - blockNumber: 100, }); }); }); diff --git a/packages/provider/package.json b/packages/provider/package.json index 3ad397ea32..5b93b81e02 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -1,75 +1,74 @@ { - "name": "@prosopo/provider", - "version": "2.0.1", - "author": "PROSOPO LIMITED ", - "license": "Apache-2.0", - "main": "./dist/index.js", - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "scripts": { - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build", - "test": "NODE_ENV=${NODE_ENV:-test}; npx vitest run --config ./vite.test.config.ts", - "mnemonic": "tsx ./scripts/generateMnemonic.ts", - "coverage": "npx c8 npm run test" - }, - "dependencies": { - "@noble/hashes": "^1.3.3", - "@polkadot/api": "10.13.1", - "@polkadot/api-contract": "10.13.1", - "@polkadot/keyring": "12.6.2", - "@polkadot/types": "10.13.1", - "@polkadot/types-codec": "10.13.1", - "@polkadot/types-create": "10.13.1", - "@polkadot/util": "12.6.2", - "@polkadot/util-crypto": "12.6.2", - "@prosopo/common": "2.0.1", - "@prosopo/config": "2.0.1", - "@prosopo/contract": "2.0.1", - "@prosopo/database": "2.0.1", - "@prosopo/datasets": "2.0.1", - "@prosopo/env": "2.0.1", - "@prosopo/tx": "2.0.1", - "@prosopo/typechain-types": "1.1.15", - "@prosopo/types": "2.0.1", - "@prosopo/types-database": "2.0.1", - "@prosopo/types-env": "2.0.1", - "@prosopo/util": "2.0.1", - "cron": "^2.1.0", - "express": "^4.18.1", - "zod": "^3.22.3" - }, - "devDependencies": { - "@types/fs-extra": "^9.0.13", - "@types/node": "^18.0.6", - "@types/supertest": "^6.0.2", - "c8": "^9.1.0", - "dotenv": "^16.0.1", - "fs-extra": "^10.1.0", - "supertest": "^7.0.0", - "tslib": "2.6.2", - "typescript": "5.1.6", - "vite": "^5.1.7", - "vitest": "^1.3.1" - }, - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/prosopo/provider.git" - }, - "description": "The easiest way to deploy the Prosopo contract and run the Provider node is via the [captcha repository](https://github.com/prosopo/captcha/).", - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "sideEffects": false + "name": "@prosopo/provider", + "version": "2.0.2", + "author": "PROSOPO LIMITED ", + "license": "Apache-2.0", + "main": "./dist/index.js", + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "scripts": { + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build", + "test": "NODE_ENV=${NODE_ENV:-test}; npx vitest run --config ./vite.test.config.ts", + "mnemonic": "tsx ./scripts/generateMnemonic.ts", + "coverage": "npx c8 npm run test" + }, + "dependencies": { + "@noble/hashes": "^1.3.3", + "@polkadot/api": "10.13.1", + "@polkadot/api-contract": "10.13.1", + "@polkadot/keyring": "12.6.2", + "@polkadot/types": "10.13.1", + "@polkadot/types-codec": "10.13.1", + "@polkadot/types-create": "10.13.1", + "@polkadot/util": "12.6.2", + "@polkadot/util-crypto": "12.6.2", + "@prosopo/common": "2.0.2", + "@prosopo/config": "2.0.2", + "@prosopo/database": "2.0.2", + "@prosopo/datasets": "2.0.2", + "@prosopo/env": "2.0.2", + "@prosopo/tx": "2.0.2", + "@prosopo/typechain-types": "1.1.15", + "@prosopo/types": "2.0.2", + "@prosopo/types-database": "2.0.2", + "@prosopo/types-env": "2.0.2", + "@prosopo/util": "2.0.2", + "cron": "^2.1.0", + "express": "^4.18.1", + "zod": "^3.22.3" + }, + "devDependencies": { + "@types/fs-extra": "^9.0.13", + "@types/node": "^18.0.6", + "@types/supertest": "^6.0.2", + "c8": "^9.1.0", + "dotenv": "^16.0.1", + "fs-extra": "^10.1.0", + "supertest": "^7.0.0", + "tslib": "2.6.2", + "typescript": "5.1.6", + "vite": "^5.1.7", + "vitest": "^1.3.1" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/prosopo/provider.git" + }, + "description": "The easiest way to deploy the Prosopo contract and run the Provider node is via the [captcha repository](https://github.com/prosopo/captcha/).", + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "sideEffects": false } diff --git a/packages/provider/src/api/captcha.ts b/packages/provider/src/api/captcha.ts index 380a8b0ec9..dcd480ab7f 100644 --- a/packages/provider/src/api/captcha.ts +++ b/packages/provider/src/api/captcha.ts @@ -28,6 +28,7 @@ import { type GetPowCaptchaResponse, type PowCaptchaSolutionResponse, SubmitPowCaptchaSolutionBody, + TGetImageCaptchaChallengePathAndParams, } from "@prosopo/types"; import type { ProviderEnvironment } from "@prosopo/types-env"; import { version } from "@prosopo/util"; @@ -35,6 +36,8 @@ import express, { type Router } from "express"; import { Tasks } from "../tasks/tasks.js"; import { handleErrors } from "./errorHandler.js"; +const NO_IP_ADDRESS = "NO_IP_ADDRESS" as const; + /** * Returns a router connected to the database which can interact with the Proposo protocol * @@ -49,47 +52,45 @@ export function prosopoRouter(env: ProviderEnvironment): Router { * Provides a Captcha puzzle to a Dapp User * @param {string} datasetId - Provider datasetId * @param {string} userAccount - Dapp User AccountId - * @param {string} blockNumber - Block number * @return {Captcha} - The Captcha data */ - router.get( - `${ApiPaths.GetImageCaptchaChallenge}/:${ApiParams.datasetId}/:${ApiParams.user}/:${ApiParams.dapp}/:${ApiParams.blockNumber}`, - async (req, res, next) => { - try { - const { datasetId, user } = CaptchaRequestBody.parse(req.params); - validateAddress(user, false, 42); + const GetImageCaptchaChallengePath: TGetImageCaptchaChallengePathAndParams = `${ApiPaths.GetImageCaptchaChallenge}/:${ApiParams.datasetId}/:${ApiParams.user}/:${ApiParams.dapp}`; + router.get(GetImageCaptchaChallengePath, async (req, res, next) => { + try { + const { datasetId, user } = CaptchaRequestBody.parse(req.params); + validateAddress(user, false, 42); - const taskData = - await tasks.imgCaptchaManager.getRandomCaptchasAndRequestHash( - datasetId, - user, - ); - const captchaResponse: CaptchaResponseBody = { - captchas: taskData.captchas.map((captcha: Captcha) => ({ - ...captcha, - items: captcha.items.map((item) => - parseCaptchaAssets(item, env.assetsResolver), - ), - })), - [ApiParams.requestHash]: taskData.requestHash, - [ApiParams.timestamp]: taskData.timestamp.toString(), - [ApiParams.signature]: { - [ApiParams.provider]: { - [ApiParams.timestamp]: taskData.signedTimestamp, - }, - }, - }; - return res.json(captchaResponse); - } catch (err) { - tasks.logger.error(err); - return next( - new ProsopoApiError("API.BAD_REQUEST", { - context: { error: err, code: 400 }, - }), + const taskData = + await tasks.imgCaptchaManager.getRandomCaptchasAndRequestHash( + datasetId, + user, + req.ip || NO_IP_ADDRESS, ); - } - }, - ); + const captchaResponse: CaptchaResponseBody = { + [ApiParams.captchas]: taskData.captchas.map((captcha: Captcha) => ({ + ...captcha, + items: captcha.items.map((item) => + parseCaptchaAssets(item, env.assetsResolver), + ), + })), + [ApiParams.requestHash]: taskData.requestHash, + [ApiParams.timestamp]: taskData.timestamp.toString(), + [ApiParams.signature]: { + [ApiParams.provider]: { + [ApiParams.requestHash]: taskData.signedRequestHash, + }, + }, + }; + return res.json(captchaResponse); + } catch (err) { + tasks.logger.error(err); + return next( + new ProsopoApiError("API.BAD_REQUEST", { + context: { error: err, code: 400 }, + }), + ); + } + }); /** * Receives solved CAPTCHA challenges from the user, stores to database, and checks against solution commitment @@ -121,7 +122,8 @@ export function prosopoRouter(env: ProviderEnvironment): Router { parsed[ApiParams.captchas], parsed[ApiParams.signature].user.requestHash, parseInt(parsed[ApiParams.timestamp]), - parsed[ApiParams.signature].provider.timestamp, + parsed[ApiParams.signature].provider.requestHash, + req.ip || NO_IP_ADDRESS, ); const returnValue: CaptchaSolutionResponse = { @@ -165,14 +167,25 @@ export function prosopoRouter(env: ProviderEnvironment): Router { origin, ); + await tasks.db.storePowCaptchaRecord( + challenge.challenge, + { + requestedAtTimestamp: challenge.requestedAtTimestamp, + userAccount: user, + dappAccount: dapp, + }, + challenge.difficulty, + challenge.providerSignature, + req.ip || NO_IP_ADDRESS, + ); + const getPowCaptchaResponse: GetPowCaptchaResponse = { challenge: challenge.challenge, difficulty: challenge.difficulty, - timestamp: challenge.timestamp.toString(), + timestamp: challenge.requestedAtTimestamp.toString(), signature: { provider: { - timestamp: challenge.timestampSignature, - challenge: challenge.signature, + challenge: challenge.providerSignature, }, }, }; @@ -208,6 +221,7 @@ export function prosopoRouter(env: ProviderEnvironment): Router { nonce, verifiedTimeout, signature.user.timestamp, + req.ip || NO_IP_ADDRESS, ); const response: PowCaptchaSolutionResponse = { verified }; return res.json(response); diff --git a/packages/provider/src/api/captchaScheduler.ts b/packages/provider/src/api/captchaScheduler.ts index 49e57ee6ac..9248d0b2f9 100644 --- a/packages/provider/src/api/captchaScheduler.ts +++ b/packages/provider/src/api/captchaScheduler.ts @@ -1,6 +1,3 @@ -import type { KeyringPair } from "@polkadot/keyring/types"; -import { ProviderEnvironment } from "@prosopo/env"; -import type { ProsopoConfigOutput } from "@prosopo/types"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -14,8 +11,13 @@ import type { ProsopoConfigOutput } from "@prosopo/types"; // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + +import type { KeyringPair } from "@polkadot/keyring/types"; +import { ProviderEnvironment } from "@prosopo/env"; +import { ProsopoConfigOutput, ScheduledTaskNames } from "@prosopo/types"; import { CronJob } from "cron"; import { Tasks } from "../tasks/tasks.js"; +import { checkIfTaskIsRunning } from "../util.js"; export async function storeCaptchasExternally( pair: KeyringPair, @@ -35,10 +37,21 @@ export async function storeCaptchasExternally( : defaultSchedule; const job = new CronJob(cronSchedule, async () => { - env.logger.log("storeCommitmentsExternal task...."); - await tasks.datasetManager.storeCommitmentsExternal().catch((err) => { - env.logger.error(err); - }); + const taskRunning = await checkIfTaskIsRunning( + ScheduledTaskNames.StoreCommitmentsExternal, + env.getDb(), + ); + env.logger.info( + `${ScheduledTaskNames.StoreCommitmentsExternal} task running: ${taskRunning}`, + ); + if (!taskRunning) { + env.logger.info( + `${ScheduledTaskNames.StoreCommitmentsExternal} task....`, + ); + await tasks.datasetManager.storeCommitmentsExternal().catch((err) => { + env.logger.error(err); + }); + } }); job.start(); diff --git a/packages/provider/src/api/verify.ts b/packages/provider/src/api/verify.ts index 7b21b9e635..19ae9aec71 100644 --- a/packages/provider/src/api/verify.ts +++ b/packages/provider/src/api/verify.ts @@ -13,21 +13,21 @@ import { ProsopoApiError } from "@prosopo/common"; // See the License for the specific language governing permissions and // limitations under the License. import { - ApiParams, - ApiPaths, - CaptchaStatus, - type ImageVerificationResponse, - ServerPowCaptchaVerifyRequestBody, - type VerificationResponse, - VerifySolutionBody, + ApiParams, + ApiPaths, + CaptchaStatus, + type ImageVerificationResponse, + ServerPowCaptchaVerifyRequestBody, + type VerificationResponse, + VerifySolutionBody, } from "@prosopo/types"; import { decodeProcaptchaOutput } from "@prosopo/types"; import type { ProviderEnvironment } from "@prosopo/types-env"; import express, { - type NextFunction, - type Request, - type Response, - type Router, + type NextFunction, + type Request, + type Response, + type Router, } from "express"; import { Tasks } from "../tasks/tasks.js"; import { verifySignature } from "./authMiddleware.js"; @@ -40,200 +40,213 @@ import { handleErrors } from "./errorHandler.js"; * @param {Environment} env - The Prosopo environment */ export function prosopoVerifyRouter(env: ProviderEnvironment): Router { - const router = express.Router(); - const tasks = new Tasks(env); - - /** - * Verifies a solution and returns the verification response. - * @param {Response} res - Express response object. - * @param {Request} req - Express request object. - * @param {NextFunction} next - Express next function. - * @param {boolean} isDapp - Indicates whether the verification is for a dapp (true) or user (false). - */ - async function verifyImageSolution( - res: Response, - req: Request, - next: NextFunction, - isDapp: boolean, - ) { - const parsed = VerifySolutionBody.parse(req.body); - try { - const { dappUserSignature, token } = parsed; - const { user, dapp, blockNumber, commitmentId } = - decodeProcaptchaOutput(token); - - // Verify using the appropriate pair based on isDapp flag - const keyPair = isDapp - ? env.keyring.addFromAddress(dapp) - : env.keyring.addFromAddress(user); - - // Will throw an error if the signature is invalid - verifySignature(dappUserSignature, blockNumber.toString(), keyPair); - - const solution = await (commitmentId - ? tasks.imgCaptchaManager.getDappUserCommitmentById(commitmentId) - : tasks.imgCaptchaManager.getDappUserCommitmentByAccount(user)); - - // No solution exists - if (!solution) { - tasks.logger.debug("Not verified - no solution found"); - const noSolutionResponse: VerificationResponse = { - [ApiParams.status]: req.t("API.USER_NOT_VERIFIED_NO_SOLUTION"), - [ApiParams.verified]: false, - }; - return res.json(noSolutionResponse); - } - - // A solution exists but is disapproved - if (solution.status === CaptchaStatus.disapproved) { - const disapprovedResponse: VerificationResponse = { - [ApiParams.status]: req.t("API.USER_NOT_VERIFIED"), - [ApiParams.verified]: false, - }; - return res.json(disapprovedResponse); - } - - const maxVerifiedTime = parsed.maxVerifiedTime || 60 * 1000; // Default to 1 minute - - // Check if solution was completed recently - if (maxVerifiedTime) { - const currentTime = Date.now(); - const timeSinceCompletion = currentTime - solution.requestedAtTimestamp; - - // A solution exists but has timed out - if (timeSinceCompletion > parsed.maxVerifiedTime) { - const expiredResponse: VerificationResponse = { - [ApiParams.status]: req.t("API.USER_NOT_VERIFIED_TIME_EXPIRED"), - [ApiParams.verified]: false, - }; - tasks.logger.debug("Not verified - time run out"); - return res.json(expiredResponse); - } - } - - const isApproved = solution.status === CaptchaStatus.approved; - const response: ImageVerificationResponse = { - [ApiParams.status]: req.t( - isApproved ? "API.USER_VERIFIED" : "API.USER_NOT_VERIFIED", - ), - [ApiParams.verified]: isApproved, - [ApiParams.commitmentId]: solution.id.toString(), - [ApiParams.blockNumber]: solution.requestedAt, - }; - return res.json(response); - } catch (err) { - return next( - new ProsopoApiError("API.BAD_REQUEST", { - context: { code: 400, error: err }, - }), - ); - } - } - - /** - * Verifies a dapp's solution as being approved or not - * - * @param {string} user - Dapp User AccountId - * @param {string} dapp - Dapp Contract AccountId - * @param {string} blockNumber - The block number at which the captcha was requested - * @param {string} dappUserSignature - The signature fo dapp user - * @param {string} commitmentId - The captcha solution to look up - * @param {number} maxVerifiedTime - The maximum time in milliseconds since the blockNumber - */ - router.post( - ApiPaths.VerifyImageCaptchaSolutionDapp, - async (req, res, next) => { - try { - await verifyImageSolution(res, req, next, true); - } catch (err) { - return next( - new ProsopoApiError("CAPTCHA.PARSE_ERROR", { - context: { code: 400, error: err }, - }), - ); - } - }, - ); - - /** - * Verifies a user's solution as being approved or not - * - * @param {string} user - Dapp User AccountId - * @param {string} dapp - Dapp Contract AccountId - * @param {string} blockNumber - The block number at which the captcha was requested - * @param {string} dappUserSignature - The signature for dapp user - * @param {string} commitmentId - The captcha solution to look up - * @param {number} maxVerifiedTime - The maximum time in milliseconds since the blockNumber - */ - router.post( - ApiPaths.VerifyImageCaptchaSolutionUser, - async (req, res, next) => { - try { - await verifyImageSolution(res, req, next, false); - } catch (err) { - return next( - new ProsopoApiError("CAPTCHA.PARSE_ERROR", { - context: { code: 400, error: err }, - }), - ); - } - }, - ); - - /** - * Verifies a dapp's solution as being approved or not - * - * @param {string} token - Token containing dapp, blockNumber and challenge - * @param {string} dappSignature - Signed token - * @param {number} verifiedTimeout - The maximum time in milliseconds to be valid - */ - router.post(ApiPaths.VerifyPowCaptchaSolution, async (req, res, next) => { - try { - const { token, dappSignature, verifiedTimeout } = - ServerPowCaptchaVerifyRequestBody.parse(req.body); - const { dapp, blockNumber, challenge } = decodeProcaptchaOutput(token); - - if (!challenge) { - const unverifiedResponse: VerificationResponse = { - status: req.t("API.USER_NOT_VERIFIED"), - [ApiParams.verified]: false, - }; - return res.json(unverifiedResponse); - } - - // Verify using the dapp pair passed in the request - const dappPair = env.keyring.addFromAddress(dapp); - - // Will throw an error if the signature is invalid - verifySignature(dappSignature, blockNumber.toString(), dappPair); - - const approved = - await tasks.powCaptchaManager.serverVerifyPowCaptchaSolution( - dapp, - challenge, - verifiedTimeout, - ); - - const verificationResponse: VerificationResponse = { - status: req.t(approved ? "API.USER_VERIFIED" : "API.USER_NOT_VERIFIED"), - [ApiParams.verified]: approved, - }; - - return res.json(verificationResponse); - } catch (err) { - tasks.logger.error(err); - return next( - new ProsopoApiError("API.BAD_REQUEST", { - context: { code: 400, error: err }, - }), - ); - } - }); - - // Your error handler should always be at the end of your application stack. Apparently it means not only after all - // app.use() but also after all your app.get() and app.post() calls. - // https://stackoverflow.com/a/62358794/1178971 - router.use(handleErrors); - - return router; + const router = express.Router(); + const tasks = new Tasks(env); + + /** + * Verifies a solution and returns the verification response. + * @param {Response} res - Express response object. + * @param {Request} req - Express request object. + * @param {NextFunction} next - Express next function. + * @param {boolean} isDapp - Indicates whether the verification is for a dapp (true) or user (false). + */ + async function verifyImageSolution( + res: Response, + req: Request, + next: NextFunction, + isDapp: boolean, + ) { + const parsed = VerifySolutionBody.parse(req.body); + try { + const { dappSignature, token } = parsed; + const { user, dapp, timestamp, commitmentId } = + decodeProcaptchaOutput(token); + + // Verify using the appropriate pair based on isDapp flag + const keyPair = isDapp + ? env.keyring.addFromAddress(dapp) + : env.keyring.addFromAddress(user); + + // Will throw an error if the signature is invalid + verifySignature(dappSignature, timestamp.toString(), keyPair); + + const solution = await (commitmentId + ? tasks.imgCaptchaManager.getDappUserCommitmentById(commitmentId) + : tasks.imgCaptchaManager.getDappUserCommitmentByAccount(user, dapp)); + + // No solution exists + if (!solution) { + tasks.logger.debug("Not verified - no solution found"); + const noSolutionResponse: VerificationResponse = { + [ApiParams.status]: req.t("API.USER_NOT_VERIFIED_NO_SOLUTION"), + [ApiParams.verified]: false, + }; + return res.json(noSolutionResponse); + } + + if (isDapp) { + if (solution.serverChecked) { + const alreadyCheckedResponse: VerificationResponse = { + [ApiParams.status]: req.t("API.USER_ALREADY_VERIFIED"), + [ApiParams.verified]: false, + }; + return res.json(alreadyCheckedResponse); + } else { + // Mark solution as checked + await tasks.imgCaptchaManager.db.markDappUserCommitmentsChecked([ + solution.id, + ]); + } + } + + // A solution exists but is disapproved + if (solution.result.status === CaptchaStatus.disapproved) { + const disapprovedResponse: VerificationResponse = { + [ApiParams.status]: req.t("API.USER_NOT_VERIFIED"), + [ApiParams.verified]: false, + }; + return res.json(disapprovedResponse); + } + + const maxVerifiedTime = parsed.maxVerifiedTime || 60 * 1000; // Default to 1 minute + + // Check if solution was completed recently + if (maxVerifiedTime) { + const currentTime = Date.now(); + const timeSinceCompletion = currentTime - solution.requestedAtTimestamp; + + // A solution exists but has timed out + if (timeSinceCompletion > parsed.maxVerifiedTime) { + const expiredResponse: VerificationResponse = { + [ApiParams.status]: req.t("API.USER_NOT_VERIFIED_TIME_EXPIRED"), + [ApiParams.verified]: false, + }; + tasks.logger.debug("Not verified - time run out"); + return res.json(expiredResponse); + } + } + + const isApproved = solution.result.status === CaptchaStatus.approved; + const response: ImageVerificationResponse = { + [ApiParams.status]: req.t( + isApproved ? "API.USER_VERIFIED" : "API.USER_NOT_VERIFIED", + ), + [ApiParams.verified]: isApproved, + [ApiParams.commitmentId]: solution.id.toString(), + }; + return res.json(response); + } catch (err) { + return next( + new ProsopoApiError("API.BAD_REQUEST", { + context: { code: 400, error: err }, + }), + ); + } + } + + /** + * Verifies a dapp's solution as being approved or not + * + * @param {string} user - Dapp User AccountId + * @param {string} dapp - Dapp Contract AccountId + * @param {string} blockNumber - The block number at which the captcha was requested + * @param {string} dappUserSignature - The signature fo dapp user + * @param {string} commitmentId - The captcha solution to look up + * @param {number} maxVerifiedTime - The maximum time in milliseconds since the blockNumber + */ + router.post( + ApiPaths.VerifyImageCaptchaSolutionDapp, + async (req, res, next) => { + try { + await verifyImageSolution(res, req, next, true); + } catch (err) { + return next( + new ProsopoApiError("CAPTCHA.PARSE_ERROR", { + context: { code: 400, error: err }, + }), + ); + } + }, + ); + + /** + * Verifies a user's solution as being approved or not + * + * @param {string} user - Dapp User AccountId + * @param {string} dapp - Dapp Contract AccountId + * @param {string} dappUserSignature - The signature for dapp user + * @param {string} commitmentId - The captcha solution to look up + * @param {number} maxVerifiedTime - The maximum time in milliseconds since the blockNumber + */ + router.post( + ApiPaths.VerifyImageCaptchaSolutionUser, + async (req, res, next) => { + try { + await verifyImageSolution(res, req, next, false); + } catch (err) { + return next( + new ProsopoApiError("CAPTCHA.PARSE_ERROR", { + context: { code: 400, error: err }, + }), + ); + } + }, + ); + + /** + * Verifies a dapp's solution as being approved or not + * + * @param {string} token - Token containing dapp, blockNumber and challenge + * @param {string} dappSignature - Signed token + * @param {number} verifiedTimeout - The maximum time in milliseconds to be valid + */ + router.post(ApiPaths.VerifyPowCaptchaSolution, async (req, res, next) => { + try { + const { token, dappSignature, verifiedTimeout } = + ServerPowCaptchaVerifyRequestBody.parse(req.body); + const { dapp, timestamp, challenge } = decodeProcaptchaOutput(token); + + if (!challenge) { + const unverifiedResponse: VerificationResponse = { + status: req.t("API.USER_NOT_VERIFIED"), + [ApiParams.verified]: false, + }; + return res.json(unverifiedResponse); + } + + // Verify using the dapp pair passed in the request + const dappPair = env.keyring.addFromAddress(dapp); + + // Will throw an error if the signature is invalid + verifySignature(dappSignature, timestamp.toString(), dappPair); + + const approved = + await tasks.powCaptchaManager.serverVerifyPowCaptchaSolution( + dapp, + challenge, + verifiedTimeout, + ); + + const verificationResponse: VerificationResponse = { + status: req.t(approved ? "API.USER_VERIFIED" : "API.USER_NOT_VERIFIED"), + [ApiParams.verified]: approved, + }; + + return res.json(verificationResponse); + } catch (err) { + tasks.logger.error(err); + return next( + new ProsopoApiError("API.BAD_REQUEST", { + context: { code: 400, error: err }, + }), + ); + } + }); + + // Your error handler should always be at the end of your application stack. Apparently it means not only after all + // app.use() but also after all your app.get() and app.post() calls. + // https://stackoverflow.com/a/62358794/1178971 + router.use(handleErrors); + + return router; } diff --git a/packages/provider/src/tasks/dataset/datasetTasks.ts b/packages/provider/src/tasks/dataset/datasetTasks.ts index ae785ddb39..b91783b6db 100644 --- a/packages/provider/src/tasks/dataset/datasetTasks.ts +++ b/packages/provider/src/tasks/dataset/datasetTasks.ts @@ -14,14 +14,15 @@ import { saveCaptchaEvent, saveCaptchas } from "@prosopo/database"; // See the License for the specific language governing permissions and // limitations under the License. import { parseCaptchaDataset } from "@prosopo/datasets"; -import type { +import { CaptchaConfig, DatasetRaw, - PowCaptcha, ProsopoConfigOutput, + ScheduledTaskNames, + ScheduledTaskStatus, StoredEvents, } from "@prosopo/types"; -import type { Database, UserCommitmentRecord } from "@prosopo/types-database"; +import type { Database } from "@prosopo/types-database"; import { providerValidateDataset } from "./datasetTasksUtils.js"; export class DatasetManager { @@ -80,7 +81,7 @@ export class DatasetManager { } /** - * @description Store commitments externally in the database, clear them from local cache + * @description Store commitments externally in the database * @returns */ async storeCommitmentsExternal(): Promise { @@ -89,18 +90,93 @@ export class DatasetManager { return; } - const commitments = await this.db.getUnstoredDappUserCommitments(); - this.logger.info(`Storing ${commitments.length} commitments externally`); - - const powRecords = await this.db.getUnstoredDappUserPoWCommitments(); - this.logger.info(`Storing ${powRecords.length} pow challenges externally`); - - await saveCaptchas(commitments, powRecords, this.config.mongoCaptchaUri); - await this.db.markDappUserCommitmentsStored( - commitments.map((commitment) => commitment.id), + const lastTask = await this.db.getLastScheduledTaskStatus( + ScheduledTaskNames.StoreCommitmentsExternal, + ScheduledTaskStatus.Completed, ); - await this.db.markDappUserPoWCommitmentsStored( - powRecords.map((powRecords) => powRecords.challenge), + + const taskID = await this.db.createScheduledTaskStatus( + ScheduledTaskNames.StoreCommitmentsExternal, + ScheduledTaskStatus.Running, ); + + try { + let commitments = await this.db.getUnstoredDappUserCommitments(); + + let powRecords = await this.db.getUnstoredDappUserPoWCommitments(); + + // filter to only get records that have been updated since the last task + if (lastTask) { + this.logger.info( + `Filtering records to only get updated records: ${JSON.stringify(lastTask)}`, + ); + this.logger.info("Last task ran at ", new Date(lastTask.updated || 0)); + commitments = commitments.filter( + (commitment) => + lastTask.updated && + commitment.lastUpdatedTimestamp && + (commitment.lastUpdatedTimestamp > lastTask.updated || + !commitment.lastUpdatedTimestamp), + ); + this.logger.info( + "PoW Records to store: ", + powRecords.map((pr) => ({ + challenge: pr.challenge, + lastUpdatedTimestamp: new Date(pr.lastUpdatedTimestamp || 0), + })), + ); + powRecords = powRecords.filter((commitment) => { + return ( + lastTask.updated && + commitment.lastUpdatedTimestamp && + // either the update stamp is more recent than the last time this task ran or there is no update stamp, + // so it is a new record + (commitment.lastUpdatedTimestamp > lastTask.updated || + !commitment.lastUpdatedTimestamp) + ); + }); + } + + if (commitments.length || powRecords.length) { + this.logger.info( + `Storing ${commitments.length} commitments externally`, + ); + + this.logger.info( + `Storing ${powRecords.length} pow challenges externally`, + ); + + await saveCaptchas( + commitments, + powRecords, + this.config.mongoCaptchaUri, + ); + + await this.db.markDappUserCommitmentsStored( + commitments.map((commitment) => commitment.id), + ); + await this.db.markDappUserPoWCommitmentsStored( + powRecords.map((powRecords) => powRecords.challenge), + ); + + await this.db.updateScheduledTaskStatus( + taskID, + ScheduledTaskStatus.Completed, + { + data: { + commitments: commitments.map((c) => c.id), + powRecords: powRecords.map((pr) => pr.challenge), + }, + }, + ); + } + } catch (e: any) { + this.logger.error(e); + await this.db.updateScheduledTaskStatus( + taskID, + ScheduledTaskStatus.Failed, + { error: e.toString() }, + ); + } } } diff --git a/packages/provider/src/tasks/imgCaptcha/imgCaptchaTasks.ts b/packages/provider/src/tasks/imgCaptcha/imgCaptchaTasks.ts index 750e3c60f2..616da6369e 100644 --- a/packages/provider/src/tasks/imgCaptcha/imgCaptchaTasks.ts +++ b/packages/provider/src/tasks/imgCaptcha/imgCaptchaTasks.ts @@ -26,12 +26,16 @@ import { type CaptchaConfig, type CaptchaSolution, CaptchaStatus, - DEFAULT_IMAGE_CAPTCHA_TIMEOUT, type DappUserSolutionResult, + DEFAULT_IMAGE_CAPTCHA_TIMEOUT, type Hash, type PendingCaptchaRequest, } from "@prosopo/types"; -import type { Database, UserCommitmentRecord } from "@prosopo/types-database"; +import { + Database, + StoredStatusNames, + UserCommitmentRecord, +} from "@prosopo/types-database"; import { at } from "@prosopo/util"; import { shuffleArray } from "../../util.js"; import { buildTreeAndGetCommitmentId } from "./imgCaptchaTasksUtils.js"; @@ -77,11 +81,12 @@ export class ImgCaptchaManager { async getRandomCaptchasAndRequestHash( datasetId: string, userAccount: string, + ipAddress: string, ): Promise<{ captchas: Captcha[]; requestHash: string; timestamp: number; - signedTimestamp: string; + signedRequestHash: string; }> { const dataset = await this.db.getDatasetDetails(datasetId); if (!dataset) { @@ -124,8 +129,8 @@ export class ImgCaptchaManager { ); const currentTime = Date.now(); - const signedTimestamp = u8aToHex( - this.pair.sign(stringToHex(currentTime.toString())), + const signedRequestHash = u8aToHex( + this.pair.sign(stringToHex(requestHash)), ); const timeLimit = captchas @@ -139,13 +144,14 @@ export class ImgCaptchaManager { requestHash, salt, deadlineTs, - currentBlockNumber, + currentTime, + ipAddress, ); return { captchas, requestHash, timestamp: currentTime, - signedTimestamp, + signedRequestHash, }; } @@ -155,9 +161,10 @@ export class ImgCaptchaManager { * @param {string} dappAccount * @param {string} requestHash * @param {JSON} captchas - * @param {string} requestHashSignature + * @param {string} userRequestHashSignature * @param timestamp - * @param timestampSignature + * @param providerRequestHashSignature + * @param ipAddress * @return {Promise} result containing the contract event */ async dappUserSolution( @@ -165,39 +172,40 @@ export class ImgCaptchaManager { dappAccount: string, requestHash: string, captchas: CaptchaSolution[], - requestHashSignature: string, // the signature to indicate ownership of account + userRequestHashSignature: string, // the signature to indicate ownership of account timestamp: number, - timestampSignature: string, + providerRequestHashSignature: string, + ipAddress: string, ): Promise { // check that the signature is valid (i.e. the user has signed the request hash with their private key, proving they own their account) const verification = signatureVerify( stringToHex(requestHash), - requestHashSignature, + userRequestHashSignature, userAccount, ); if (!verification.isValid) { // the signature is not valid, so the user is not the owner of the account. May have given a false account address with good reputation in an attempt to impersonate - this.logger.info("Invalid requestHash signature"); + this.logger.info("Invalid user requestHash signature"); throw new ProsopoEnvError("GENERAL.INVALID_SIGNATURE", { context: { failedFuncName: this.dappUserSolution.name, userAccount }, }); } // check that the timestamp signature is valid and signed by the provider - const timestampSigVerify = signatureVerify( - stringToHex(timestamp.toString()), - timestampSignature, + const providerRequestHashSignatureVerify = signatureVerify( + stringToHex(requestHash.toString()), + providerRequestHashSignature, this.pair.address, ); - if (!timestampSigVerify.isValid) { - this.logger.info("Invalid timestamp signature"); + if (!providerRequestHashSignatureVerify.isValid) { + this.logger.info("Invalid provider requestHash signature"); // the signature is not valid, so the user is not the owner of the account. May have given a false account address with good reputation in an attempt to impersonate throw new ProsopoEnvError("GENERAL.INVALID_SIGNATURE", { context: { failedFuncName: this.dappUserSolution.name, userAccount, - error: "timestamp signature is invalid", + error: "requestHash signature is invalid", }, }); } @@ -208,6 +216,7 @@ export class ImgCaptchaManager { }; const pendingRecord = await this.db.getDappUserPending(requestHash); + const unverifiedCaptchaIds = captchas.map((captcha) => captcha.captchaId); const pendingRequest = await this.validateDappUserSolutionRequestIsPending( requestHash, @@ -215,7 +224,6 @@ export class ImgCaptchaManager { userAccount, unverifiedCaptchaIds, ); - console.log("Pending request", pendingRequest); if (pendingRequest) { const { storedCaptchas, receivedCaptchas, captchaIds } = await this.validateReceivedCaptchasAgainstStoredCaptchas(captchas); @@ -232,29 +240,23 @@ export class ImgCaptchaManager { } // Only do stuff if the request is in the local DB - const userSignature = hexToU8a(requestHashSignature); // prevent this request hash from being used twice await this.db.updateDappUserPendingStatus(requestHash); const commit: UserCommitmentRecord = { id: commitmentId, userAccount: userAccount, - dappContract: dappAccount, + dappAccount, providerAccount: this.pair.address, datasetId, - status: CaptchaStatus.pending, - userSignature: Array.from(userSignature), - requestedAt: pendingRecord.requestedAtBlock, // TODO is this correct or should it be block number? - completedAt: 0, //temp - processed: false, - batched: false, - stored: false, + result: { status: CaptchaStatus.pending }, + userSignature: userRequestHashSignature, + userSubmitted: true, + serverChecked: false, requestedAtTimestamp: timestamp, + ipAddress, }; await this.db.storeDappUserSolution(receivedCaptchas, commit); - console.log(receivedCaptchas); - console.log(storedCaptchas); - if (compareCaptchaSolutions(receivedCaptchas, storedCaptchas)) { response = { captchas: captchaIds.map((id) => ({ @@ -265,6 +267,10 @@ export class ImgCaptchaManager { }; await this.db.approveDappUserCommitment(commitmentId); } else { + await this.db.disapproveDappUserCommitment( + commitmentId, + "CAPTCHA.INVALID_SOLUTION", + ); response = { captchas: captchaIds.map((id) => ({ captchaId: id, @@ -377,12 +383,15 @@ export class ImgCaptchaManager { /* Check if dapp user has verified solution in cache */ async getDappUserCommitmentByAccount( userAccount: string, + dappAccount: string, ): Promise { - const dappUserSolutions = - await this.db.getDappUserCommitmentByAccount(userAccount); + const dappUserSolutions = await this.db.getDappUserCommitmentByAccount( + userAccount, + dappAccount, + ); if (dappUserSolutions.length > 0) { for (const dappUserSolution of dappUserSolutions) { - if (dappUserSolution.status === CaptchaStatus.approved) { + if (dappUserSolution.result.status === CaptchaStatus.approved) { return dappUserSolution; } } diff --git a/packages/provider/src/tasks/imgCaptcha/imgCaptchaTasksUtils.ts b/packages/provider/src/tasks/imgCaptcha/imgCaptchaTasksUtils.ts index 89b88ce93f..7daf7e4e3b 100644 --- a/packages/provider/src/tasks/imgCaptcha/imgCaptchaTasksUtils.ts +++ b/packages/provider/src/tasks/imgCaptcha/imgCaptchaTasksUtils.ts @@ -13,37 +13,37 @@ // limitations under the License. import { ProsopoEnvError } from "@prosopo/common"; import { - CaptchaMerkleTree, - computeCaptchaSolutionHash, + CaptchaMerkleTree, + computeCaptchaSolutionHash, } from "@prosopo/datasets"; import type { CaptchaSolution } from "@prosopo/types"; /** * Build merkle tree and get commitment from contract, returning the tree, commitment, and commitmentId * @param {CaptchaSolution[]} captchaSolutions - * @returns {Promise<{ tree: CaptchaMerkleTree, commitment: CaptchaSolutionCommitment, commitmentId: string }>} + * @returns {Promise<{ tree: CaptchaMerkleTree, commitmentId: string }>} */ export const buildTreeAndGetCommitmentId = ( - captchaSolutions: CaptchaSolution[], + captchaSolutions: CaptchaSolution[], ): { tree: CaptchaMerkleTree; commitmentId: string } => { - const tree = new CaptchaMerkleTree(); - const solutionsHashed = captchaSolutions.map((captcha) => - computeCaptchaSolutionHash(captcha), - ); - tree.build(solutionsHashed); + const tree = new CaptchaMerkleTree(); + const solutionsHashed = captchaSolutions.map((captcha) => + computeCaptchaSolutionHash(captcha), + ); + tree.build(solutionsHashed); - const commitmentId = tree.root?.hash; - if (!commitmentId) { - throw new ProsopoEnvError( - "CONTRACT.CAPTCHA_SOLUTION_COMMITMENT_DOES_NOT_EXIST", - { - context: { - failedFuncName: buildTreeAndGetCommitmentId.name, - commitmentId: commitmentId, - }, - }, - ); - } + const commitmentId = tree.root?.hash; + if (!commitmentId) { + throw new ProsopoEnvError( + "CONTRACT.CAPTCHA_SOLUTION_COMMITMENT_DOES_NOT_EXIST", + { + context: { + failedFuncName: buildTreeAndGetCommitmentId.name, + commitmentId: commitmentId, + }, + }, + ); + } - return { tree, commitmentId }; + return { tree, commitmentId }; }; diff --git a/packages/provider/src/tasks/powCaptcha/powTasks.ts b/packages/provider/src/tasks/powCaptcha/powTasks.ts index 5b4082e6e8..fb1fce7aae 100644 --- a/packages/provider/src/tasks/powCaptcha/powTasks.ts +++ b/packages/provider/src/tasks/powCaptcha/powTasks.ts @@ -12,22 +12,21 @@ // See the License for the specific language governing permissions and // limitations under the License. import type { KeyringPair } from "@polkadot/keyring/types"; -import { u8aToHex } from "@polkadot/util"; -import { stringToHex } from "@polkadot/util"; -import { ProsopoEnvError } from "@prosopo/common"; +import { stringToHex, u8aToHex } from "@polkadot/util"; +import { getLoggerDefault, ProsopoEnvError } from "@prosopo/common"; import { ApiParams, + CaptchaResult, + CaptchaStatus, POW_SEPARATOR, type PoWCaptcha, PoWChallengeId, } from "@prosopo/types"; -import type { Database } from "@prosopo/types-database"; -import { at } from "@prosopo/util"; -import { - checkPowSignature, - checkPowSolution, - checkRecentPowSolution, -} from "./powTasksUtils.js"; +import { Database, StoredStatusNames } from "@prosopo/types-database"; +import { at, verifyRecency } from "@prosopo/util"; +import { checkPowSignature, validateSolution } from "./powTasksUtils.js"; + +const logger = getLoggerDefault(); export class PowCaptchaManager { pair: KeyringPair; @@ -53,20 +52,16 @@ export class PowCaptchaManager { origin: string, ): Promise { const difficulty = 4; - const timestamp = Date.now(); + const requestedAtTimestamp = Date.now(); // Use blockhash, userAccount and dappAccount for string for challenge - const challenge: PoWChallengeId = `${timestamp}___${userAccount}___${dappAccount}`; + const challenge: PoWChallengeId = `${requestedAtTimestamp}___${userAccount}___${dappAccount}`; const challengeSignature = u8aToHex(this.pair.sign(stringToHex(challenge))); - const timestampSignature = u8aToHex( - this.pair.sign(stringToHex(timestamp.toString())), - ); return { challenge, difficulty, - signature: challengeSignature, - timestamp, - timestampSignature, + providerSignature: challengeSignature, + requestedAtTimestamp, }; } @@ -75,45 +70,81 @@ export class PowCaptchaManager { * * @param {string} challenge - the starting string for the PoW challenge * @param {string} difficulty - how many leading zeroes the solution must have - * @param {string} signature - proof that the Provider provided the challenge + * @param {string} providerChallengeSignature - proof that the Provider provided the challenge * @param {string} nonce - the string that the user has found that satisfies the PoW challenge * @param {number} timeout - the time in milliseconds since the Provider was selected to provide the PoW captcha - * @param timestampSignature + * @param {string} userTimestampSignature + * @param ipAddress */ async verifyPowCaptchaSolution( challenge: PoWChallengeId, difficulty: number, - signature: string, + providerChallengeSignature: string, nonce: number, timeout: number, - timestampSignature: string, + userTimestampSignature: string, + ipAddress: string, ): Promise { - checkRecentPowSolution(challenge, timeout); + // Check signatures before doing DB reads to avoid unnecessary network connections + checkPowSignature( + challenge, + providerChallengeSignature, + this.pair.address, + ApiParams.challenge, + ); + const challengeSplit = challenge.split(this.POW_SEPARATOR); const timestamp = parseInt(at(challengeSplit, 0)); const userAccount = at(challengeSplit, 1); - const dappAccount = at(challengeSplit, 2); checkPowSignature( timestamp.toString(), - timestampSignature, + userTimestampSignature, userAccount, ApiParams.timestamp, ); - checkPowSignature( - challenge, - signature, - this.pair.address, - ApiParams.challenge, - ); - checkPowSolution(nonce, challenge, difficulty); - await this.db.storePowCaptchaRecord( + const challengeRecord = + await this.db.getPowCaptchaRecordByChallenge(challenge); + + if (!challengeRecord) { + logger.debug("No record of this challenge"); + // no record of this challenge + return false; + } + + if (!verifyRecency(challenge, timeout)) { + await this.db.updatePowCaptchaRecord( + challenge, + { + status: CaptchaStatus.disapproved, + reason: "CAPTCHA.INVALID_TIMESTAMP", + }, + false, + true, + userTimestampSignature, + ); + return false; + } + + const correct = validateSolution(nonce, challenge, difficulty); + + let result: CaptchaResult = { status: CaptchaStatus.approved }; + if (!correct) { + result = { + status: CaptchaStatus.disapproved, + reason: "CAPTCHA.INVALID_SOLUTION", + }; + } + + await this.db.updatePowCaptchaRecord( challenge, - { timestamp, userAccount, dappAccount }, + result, false, + true, + userTimestampSignature, ); - return true; + return correct; } /** @@ -141,7 +172,7 @@ export class PowCaptchaManager { }); } - if (challengeRecord.checked) return false; + if (challengeRecord.serverChecked) return false; const challengeDappAccount = challengeRecord.dappAccount; @@ -155,9 +186,11 @@ export class PowCaptchaManager { }); } - checkRecentPowSolution(challenge, timeout); + verifyRecency(challenge, timeout); - await this.db.updatePowCaptchaRecord(challengeRecord.challenge, true); + await this.db.markDappUserPoWCommitmentsChecked([ + challengeRecord.challenge, + ]); return true; } } diff --git a/packages/provider/src/tasks/powCaptcha/powTasksUtils.ts b/packages/provider/src/tasks/powCaptcha/powTasksUtils.ts index f36f9d7314..10c8f90d45 100644 --- a/packages/provider/src/tasks/powCaptcha/powTasksUtils.ts +++ b/packages/provider/src/tasks/powCaptcha/powTasksUtils.ts @@ -15,72 +15,38 @@ import { sha256 } from "@noble/hashes/sha256"; import { stringToHex } from "@polkadot/util"; import { signatureVerify } from "@polkadot/util-crypto"; import { ProsopoContractError } from "@prosopo/common"; -import { verifyRecency } from "@prosopo/contract"; + +import { verifyRecency } from "@prosopo/util"; export const validateSolution = ( - nonce: number, - challenge: string, - difficulty: number, + nonce: number, + challenge: string, + difficulty: number, ): boolean => - Array.from(sha256(new TextEncoder().encode(nonce + challenge))) - .map((byte) => byte.toString(16).padStart(2, "0")) - .join("") - .startsWith("0".repeat(difficulty)); - -export const checkPowSolution = ( - nonce: number, - challenge: string, - difficulty: number, -): void => { - const solutionValid = validateSolution(nonce, challenge, difficulty); - if (!solutionValid) { - throw new ProsopoContractError("API.CAPTCHA_FAILED", { - context: { - ERROR: "Captcha solution is invalid", - failedFuncName: checkPowSolution.name, - nonce, - challenge, - difficulty, - }, - }); - } -}; + Array.from(sha256(new TextEncoder().encode(nonce + challenge))) + .map((byte) => byte.toString(16).padStart(2, "0")) + .join("") + .startsWith("0".repeat(difficulty)); export const checkPowSignature = ( - challenge: string, - signature: string, - address: string, - signatureType?: string, -): void => { - const signatureVerification = signatureVerify( - stringToHex(challenge), - signature, - address, - ); - if (!signatureVerification.isValid) { - throw new ProsopoContractError("GENERAL.INVALID_SIGNATURE", { - context: { - ERROR: `Signature is invalid for this message: ${signatureType}`, - failedFuncName: checkPowSignature.name, - signature, - signatureType, - }, - }); - } -}; - -export const checkRecentPowSolution = ( - challenge: string, - timeout: number, + challenge: string, + signature: string, + address: string, + signatureType?: string, ): void => { - const recent = verifyRecency(challenge, timeout); - if (!recent) { - throw new ProsopoContractError("CONTRACT.INVALID_BLOCKHASH", { - context: { - ERROR: `Block in which the Provider was selected must be within the last ${timeout / 1000} seconds`, - failedFuncName: checkRecentPowSolution.name, - challenge, - }, - }); - } + const signatureVerification = signatureVerify( + stringToHex(challenge), + signature, + address, + ); + if (!signatureVerification.isValid) { + throw new ProsopoContractError("GENERAL.INVALID_SIGNATURE", { + context: { + ERROR: `Signature is invalid for this message: ${signatureType}`, + failedFuncName: checkPowSignature.name, + signature, + signatureType, + }, + }); + } }; diff --git a/packages/provider/src/tests/integration/imgCaptcha.test.ts b/packages/provider/src/tests/integration/imgCaptcha.test.ts index ffe8399dbe..752981980d 100644 --- a/packages/provider/src/tests/integration/imgCaptcha.test.ts +++ b/packages/provider/src/tests/integration/imgCaptcha.test.ts @@ -15,12 +15,13 @@ import { stringToU8a, u8aToHex } from "@polkadot/util"; import { getPairAsync } from "@prosopo/contract"; import { datasetWithSolutionHashes } from "@prosopo/datasets"; import { - ApiParams, - ApiPaths, - type Captcha, - type CaptchaResponseBody, - type CaptchaSolutionBodyType, - type CaptchaSolutionResponse, + ApiParams, + ApiPaths, + type Captcha, + type CaptchaResponseBody, + type CaptchaSolutionBodyType, + type CaptchaSolutionResponse, + TGetImageCaptchaChallengeURL, } from "@prosopo/types"; import fetch from "node-fetch"; import { describe, expect, it } from "vitest"; @@ -31,151 +32,144 @@ const solutions = datasetWithSolutionHashes; const baseUrl = "http://localhost:9229"; const getSolvedCaptchas = ( - captchas: Captcha[], - solutions: typeof datasetWithSolutionHashes.captchas, + captchas: Captcha[], + solutions: typeof datasetWithSolutionHashes.captchas, ) => - captchas.map((captcha) => { - const solvedCaptcha = solutions.find( - (solvedCaptcha) => - solvedCaptcha.captchaContentId === captcha.captchaContentId, - ); - if (!solvedCaptcha || !solvedCaptcha.solution) { - throw new Error("Solution not found for captcha"); - } - - return { - captchaContentId: captcha.captchaContentId, - captchaId: captcha.captchaId, - salt: solvedCaptcha.salt, - solution: solvedCaptcha.solution, - }; - }); + captchas.map((captcha) => { + const solvedCaptcha = solutions.find( + (solvedCaptcha) => + solvedCaptcha.captchaContentId === captcha.captchaContentId, + ); + if (!solvedCaptcha || !solvedCaptcha.solution) { + throw new Error("Solution not found for captcha"); + } + + return { + captchaContentId: captcha.captchaContentId, + captchaId: captcha.captchaId, + salt: solvedCaptcha.salt, + solution: solvedCaptcha.solution, + }; + }); describe("Image Captcha Integration Tests", () => { - describe("GetImageCaptchaChallenge", () => { - it("should supply an image captcha challenge to a Dapp User", async () => { - const userAccount = "5EquBjgKx98VFyP9xVYeAUE2soNGBUbru7L9pXgdmSmrDrQp"; - const dappAccount = "5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw"; - const origin = "http://localhost"; - - const response = await fetch( - `${baseUrl}${ApiPaths.GetImageCaptchaChallenge}/${solutions.datasetId}/${userAccount}/${dappAccount}/0`, - { - method: "GET", - headers: { - "Content-Type": "application/json", - Origin: origin, - }, - }, - ); - - expect(response.status).toBe(200); - }); - it("should fail if datasetID is incorrect", async () => { - const userAccount = "5EquBjgKx98VFyP9xVYeAUE2soNGBUbru7L9pXgdmSmrDrQp"; - const dappAccount = "5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw"; - - const response = await fetch( - `${baseUrl}${ApiPaths.GetImageCaptchaChallenge}/"thewrongdsetId"/${userAccount}/${dappAccount}/0`, - { - method: "GET", - headers: { - "Content-Type": "application/json", - }, - }, - ); - - expect(response.status).toBe(400); - }); - }); - describe("SubmitImageCaptchaSolution", () => { - it("should verify a correctly completed image captcha as true", async () => { - const pair = await getPairAsync( - undefined, - dummyUserAccount.seed, - undefined, - "sr25519", - 42, - ); - - const userAccount = dummyUserAccount.address; - const dappAccount = "5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw"; - const origin = "http://localhost"; - - const response = await fetch( - `${baseUrl}${ApiPaths.GetImageCaptchaChallenge}/${solutions.datasetId}/${userAccount}/${dappAccount}/0`, - { - method: "GET", - headers: { - "Content-Type": "application/json", - Origin: origin, - }, - }, - ); - - expect(response.status).toBe(200); - - const data = (await response.json()) as CaptchaResponseBody; - - const solvedCaptchas = datasetWithSolutionHashes.captchas.map( - (captcha) => ({ - captchaContentId: captcha.captchaContentId, - solution: captcha.solution - ? captcha.solution.map((s) => s.toString()) - : captcha.solution, - salt: captcha.salt, - }), - ); - - const temp = data.captchas.map((captcha) => { - const solvedCaptcha = solvedCaptchas.find( - (solvedCaptcha) => - solvedCaptcha.captchaContentId === captcha.captchaContentId, - ); - if (!solvedCaptcha || !solvedCaptcha.solution) { - throw new Error("wtf?"); - } - - return { - captchaContentId: captcha.captchaContentId, - captchaId: captcha.captchaId, - salt: solvedCaptcha.salt, - solution: solvedCaptcha.solution, - }; - }); - - const body: CaptchaSolutionBodyType = { - [ApiParams.captchas]: temp, - [ApiParams.dapp]: dappAccount, - [ApiParams.requestHash]: data.requestHash, - [ApiParams.signature]: { - [ApiParams.user]: { - [ApiParams.requestHash]: u8aToHex( - pair.sign(stringToU8a(data.requestHash)), - ), - }, - [ApiParams.provider]: data[ApiParams.signature][ApiParams.provider], - }, - [ApiParams.timestamp]: data.timestamp, - [ApiParams.user]: userAccount, - }; - - const solveThatCaptcha = await fetch( - `${baseUrl}${ApiPaths.SubmitImageCaptchaSolution}`, - { - method: "POST", - headers: { - "Content-Type": "application/json", - Origin: origin, - }, - body: JSON.stringify(body), - }, - ); - const jsonRes = await solveThatCaptcha.json(); - console.log(jsonRes); - - const res = jsonRes as CaptchaSolutionResponse; - expect(res.status).toBe("You correctly answered the captchas"); - }); - }); + describe("GetImageCaptchaChallenge", () => { + it("should supply an image captcha challenge to a Dapp User", async () => { + const userAccount = "5EquBjgKx98VFyP9xVYeAUE2soNGBUbru7L9pXgdmSmrDrQp"; + const dappAccount = "5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw"; + const origin = "http://localhost"; + const getImageCaptchaURL: TGetImageCaptchaChallengeURL = `${baseUrl}${ApiPaths.GetImageCaptchaChallenge}/${solutions.datasetId}/${userAccount}/${dappAccount}`; + + const response = await fetch(getImageCaptchaURL, { + method: "GET", + headers: { + "Content-Type": "application/json", + Origin: origin, + }, + }); + + expect(response.status).toBe(200); + }); + it("should fail if datasetID is incorrect", async () => { + const userAccount = "5EquBjgKx98VFyP9xVYeAUE2soNGBUbru7L9pXgdmSmrDrQp"; + const dappAccount = "5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw"; + const datasetId = "thewrongdsetId"; + const getImageCaptchaURL: TGetImageCaptchaChallengeURL = `${baseUrl}${ApiPaths.GetImageCaptchaChallenge}/${datasetId}/${userAccount}/${dappAccount}`; + + const response = await fetch(getImageCaptchaURL, { + method: "GET", + headers: { + "Content-Type": "application/json", + }, + }); + + expect(response.status).toBe(400); + }); + }); + describe("SubmitImageCaptchaSolution", () => { + it("should verify a correctly completed image captcha as true", async () => { + const pair = await getPairAsync( + dummyUserAccount.seed, + undefined, + "sr25519", + 42, + ); + + const userAccount = dummyUserAccount.address; + const dappAccount = "5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw"; + const origin = "http://localhost"; + const getImageCaptchaURL: TGetImageCaptchaChallengeURL = `${baseUrl}${ApiPaths.GetImageCaptchaChallenge}/${solutions.datasetId}/${userAccount}/${dappAccount}`; + const response = await fetch(getImageCaptchaURL, { + method: "GET", + headers: { + "Content-Type": "application/json", + Origin: origin, + }, + }); + + expect(response.status).toBe(200); + + const data = (await response.json()) as CaptchaResponseBody; + + const solvedCaptchas = datasetWithSolutionHashes.captchas.map( + (captcha) => ({ + captchaContentId: captcha.captchaContentId, + solution: captcha.solution + ? captcha.solution.map((s) => s.toString()) + : captcha.solution, + salt: captcha.salt, + }), + ); + + const temp = data.captchas.map((captcha) => { + const solvedCaptcha = solvedCaptchas.find( + (solvedCaptcha) => + solvedCaptcha.captchaContentId === captcha.captchaContentId, + ); + if (!solvedCaptcha || !solvedCaptcha.solution) { + throw new Error("wtf?"); + } + + return { + captchaContentId: captcha.captchaContentId, + captchaId: captcha.captchaId, + salt: solvedCaptcha.salt, + solution: solvedCaptcha.solution, + }; + }); + + const body: CaptchaSolutionBodyType = { + [ApiParams.captchas]: temp, + [ApiParams.dapp]: dappAccount, + [ApiParams.requestHash]: data.requestHash, + [ApiParams.signature]: { + [ApiParams.user]: { + [ApiParams.requestHash]: u8aToHex( + pair.sign(stringToU8a(data.requestHash)), + ), + }, + [ApiParams.provider]: data[ApiParams.signature][ApiParams.provider], + }, + [ApiParams.timestamp]: data.timestamp, + [ApiParams.user]: userAccount, + }; + + const solveThatCaptcha = await fetch( + `${baseUrl}${ApiPaths.SubmitImageCaptchaSolution}`, + { + method: "POST", + headers: { + "Content-Type": "application/json", + Origin: origin, + }, + body: JSON.stringify(body), + }, + ); + const jsonRes = await solveThatCaptcha.json(); + console.log(jsonRes); + + const res = jsonRes as CaptchaSolutionResponse; + expect(res.status).toBe("You correctly answered the captchas"); + }); + }); }); diff --git a/packages/provider/src/tests/integration/mocks/solvedTestCaptchas.ts b/packages/provider/src/tests/integration/mocks/solvedTestCaptchas.ts index 29db72679c..fb6a349c60 100644 --- a/packages/provider/src/tests/integration/mocks/solvedTestCaptchas.ts +++ b/packages/provider/src/tests/integration/mocks/solvedTestCaptchas.ts @@ -14,1083 +14,1088 @@ import type { DatasetWithIdsAndTree } from "@prosopo/types"; export const dummyUserAccount = { - address: "5H9NydeNeQ1Jkr9YehjJDGB1tgc3VuoYGvG7na4zvNDg4k3r", - seed: "infant pear sad kit mass marriage ill loyal cushion level typical survey", + address: "5H9NydeNeQ1Jkr9YehjJDGB1tgc3VuoYGvG7na4zvNDg4k3r", + seed: "infant pear sad kit mass marriage ill loyal cushion level typical survey", +}; + +export const dummyDappAccount = { + address: "5GUBK2pfdQ3qD994fd44MPJxMKMPVJ6tXNpiQRBPsxuzN3Se", + seed: "joke fury lava eight lonely tumble swap process drop juice during crisp", }; export const datasetWithSolutionHashes = { - datasetId: - "0x9f460e81ac9c71b486f796a21bb36e2263694756a6621134d110da217fd3ef25", - datasetContentId: - "0x3a2dbbf5610f04f54581843db3adf7e0fadc02cdb8e42e30b028c850e0603165", - format: "SelectAll", - contentTree: [ - [ - "0x77ba6bdfedc563a34580c8b9cbcdec64608fda0ebf93649797af751d91b8e7a2", - "0x0460173e77b2280224c8bc409cfdfcae8f77314e535a52db38258fafeb7e4670", - "0x5073c70e3c1a89f69b00bd32c06857dbd045d345c2c2be7970c12bba8edaff82", - "0x36b991ffb57cdcb6d5e5b3ec8d34855069357c4d7409e98af6cd9503c6504f60", - "0xa3cf080335408e6cb29415ac3bdbf57d9dca2c24b52b7a9e682b209e65d586aa", - "0x5d07c582890d4a90b021e2c77b5a8341ec65e5ce31e8b59670b9378ed33a7f31", - "0xa45af7caacd6a2c19219f0a733c8febf453ef62258f6afa22f7f830f6125d9f2", - "0xf4416f464d8df14718f0f1dac447d8b7403c9c8eaa3c5da8cf0019a06197b5f3", - "0x89916d3a386b0dd3942aa659245bca778467d14ebe509312779c56b8a003f4bc", - "0xe36eb6b306154f44fcdbe793a60257c474401e8bd8e63da15f9654e831c08eb2", - "0x7c08a0e5636efa5dff2f8815095ec4390e844e50bfbe63d8e1e1c75ec6540592", - "0x2089b6232685100ad4318d75f9cc2d5909a0cd2ef49e7b3e314726b25a71c807", - "0x466dcd81d4e1d271cf3b5b0cdacb7417119ce11b2843aea517eb3dda847392a9", - "0xe286bba23407a9036b9e60eec7ea41ebfe7f2b1452443da1e9561909534c719d", - "0x452063fa194844cf1f8f622aa7de46b7c948b1fc38fe87426b3443487a5104ce", - "0x78374f5795a85c1ff01fc13e60da3992b7054bcc16945a0820e4a58ba881b9ed", - ], - [ - "0xfd87321affde04a6ec7bf3144caf399fbbdf827cc5da78b0de40b7babbf3e2b5", - "0x524207a9d35ba9347b5551c712969622b3b23868bf36d47cdf5df2ac275ac08e", - "0x1f763f670852d6ee1cbb729c8f89463c02736c3d4501741fc2249f37ea7bc2e5", - "0xf0ef076d0795d20de2572682223cbf4c3df448bb88983329c54328f24c2b0284", - "0x9d09b2e8fb3aa9ace1d5d8da6df872b1fa604e455fc5c139713b8419a430b316", - "0xf237ab7c9ecbf8cbfdc79e59d5c988f659762f2b9950d7876035db7717af8de7", - "0xfb0154e6ce3ad844c4d6507471a6d8fe0e6b50be9191bd313b4ae0d0aace16f5", - "0x5a38b852491c1fd93781ad9a48395ab88180783efcf141a51e4bfb2d3e174e4e", - ], - [ - "0x07a343972179ae82d9d350bf6fc4da0f899371df7b26045dc91ffec21fbee097", - "0x796877d60e8211b953afef6a146b8cefe8383caf197664c1f738fce67d5181d3", - "0x981a8e410f10cac34895f4894adab792e5b6f2863ebb718f82421c29cbb9e3ce", - "0x06f117f1c14da7e1609360dce5470ab181a9a32d6aa78237f4017bb3d3f06fe6", - ], - [ - "0x917afb2ea5ed801defd5ed3f1fddf636bca14e37e7418934612c781ceb13e013", - "0xe3ae5147692d38fbe62aa786dcc0b4c5031fbff200bf1a4261fd0ab2c687d9a2", - ], - ["0x3a2dbbf5610f04f54581843db3adf7e0fadc02cdb8e42e30b028c850e0603165"], - ], - solutionTree: [ - [ - "0xf96f89b2792512ec092ead208301f55ba18023ab7e02bec26c32fe888277cc45", - "0x5d417991939a866abddffec672850be406e31985221914e9b3bbb4eeed57d13b", - "0xb66681a776e4bf1128d1c36c49daaf32e0140e425d6950d47029a8d4286ae670", - "0x683292a791c937e5e9be6f2fe0ac708deb4726af4e37c71cacc36f6371c3a088", - "0x9ad2b46ce33db79f62679a0d0c4262dfff9b359337243d50e47479ae46e4ca8e", - "0xa8309e583ba17f5cbdcbf09aa3c422bc94060a3cd86517b1c456e72be2e2d263", - "0x6cb3449c723ca8f419104446ccda1f98f7cf9eb06a88ecebdf1ba0f5d9228c40", - "0x3bacf645655004bd36c56d3215ff0e1925fdc4241a41fdbb711d4222d3b56af3", - "0x723e7c158ce1621dafd2785996fce297ead3bcf6efb2e3f77a090bd83c8b9362", - "0xf8d0abb371ec9a6984492cb7444bfaef848f7d13cb65b8058d479ab1b1e6c932", - "0xc9d80c281e124d55441b394bec7d6a64e35c4409d57e37bcb9b9748066b095d6", - "0xd0d357d973f3971fa5431d6bcec9819cb2363b1e6d5d585d5bf97f4f18ac76a5", - "0x8683a18e05a9eefb959ba41374f2ef208484079405e9c098910f9d9a4cf60ddf", - "0x43828174c4c62e82cd7be31465df33f10c6de4301d02feeff8ca15cc26ecd3bb", - "0xfbc6d9acb0bc751f3a63682e1a960b74f97fd30b20b633b0acd39e2a4aba1a9c", - "0x59466eea239ed267b0a60ce0f28ec617834b6fbe41f5f38047f50de6539e659c", - ], - [ - "0x38054dca5f875ca7046b0e41c66268c63e51bd8aae96c9f28d3411c2663af043", - "0xc3539913305b78f3d1265a090e3903eb043b08f0bc2f04df21d3f7a55995a812", - "0xf715fbdf71e1635ef0bdbfb119f12a7ea1d78ad541731a76b444328f567dcf31", - "0x9e761cf605b71f9b8c5789c650ae54ef808fd38e509c58ac9bcb3c4c92791769", - "0xdb1a901059cd95e220ab842d6ff9919cd251317f73d680d835156dd82dc0f93e", - "0x93d690c1d76366c427f29c10c060d3dc45b54e7ab1eb58dc4ba04ca711cfec84", - "0x18dfb79b012e7d660317eb6a458afc97604000957f0ce8f24ee4524f70b1af7d", - "0x716aaa481088666d681bebedb5c184de5764565f6608f2fa802df352878bcd63", - ], - [ - "0xfd37f79fd06f9cdf9bcb2e196a51d5c059cde1c5e79f98ff9cf4cb72bbf6ab56", - "0x17622f69a5eaf2da98c398a11d0678a07aee297b3ba09a4824a466d811244e4f", - "0x4b2c23afef161a5cc3e8acb905f0b600e842fdb385a0379459a203bf3f4fea57", - "0xc055496bb6dc077820ad775b7bd946ecf0cfde8484a53bf40938a249eb9c8c7f", - ], - [ - "0x0e92e9e630844d5c8b6afaf2145303ee0a8c419ce68ec44bbc16246ed2571b74", - "0x0397a2316b1372f4fb9062c63b4a2ac43cb7eb8a580d5dd6fd3cb556f501e747", - ], - ["0x9f460e81ac9c71b486f796a21bb36e2263694756a6621134d110da217fd3ef25"], - ], - captchas: [ - { - captchaId: - "0xf96f89b2792512ec092ead208301f55ba18023ab7e02bec26c32fe888277cc45", - captchaContentId: - "0x77ba6bdfedc563a34580c8b9cbcdec64608fda0ebf93649797af751d91b8e7a2", - solved: true, - salt: "0x01010101010101010101010101010101", - items: [ - { - hash: "0x7f4313a6d4240e206d7c7f16d368ddf12d5f1d78296fd3de7e91df1d7739a35f", - data: "https://prosopo.github.io/demo-datasets/img/01.01.jpeg", - type: "image", - }, - { - hash: "0x967a0107da9f2b1658fea482111dcae32b1bc544da0ee5a3797d758937872ceb", - data: "https://prosopo.github.io/demo-datasets/img/01.02.jpeg", - type: "image", - }, - { - hash: "0x369734d30701d97ded13c95b34bcd81fc63160fce136ae0c2eb7a2457b5b96c5", - data: "https://prosopo.github.io/demo-datasets/img/01.03.jpeg", - type: "image", - }, - { - hash: "0x3be8ae584fa11426b8eeac21c87e9f2ab751ab380ec9298b7cd7aed713007ca8", - data: "https://prosopo.github.io/demo-datasets/img/01.04.jpeg", - type: "image", - }, - { - hash: "0x156390dcf3d60b0e6cff5c9d83b5309049fa8a06a44e948cffe469369940a838", - data: "https://prosopo.github.io/demo-datasets/img/01.05.jpeg", - type: "image", - }, - { - hash: "0xd4ff6a66ca9b373061cd1dd0477cf598779a73bc7f048eb12b3b8631ea151d7d", - data: "https://prosopo.github.io/demo-datasets/img/01.06.jpeg", - type: "image", - }, - { - hash: "0xcbcb4ad03e1309f009f78ca0b71125916b5ee8eb8cb53d174f32e58fd3b3dbcd", - data: "https://prosopo.github.io/demo-datasets/img/01.07.jpeg", - type: "image", - }, - { - hash: "0x0e5279ccf0f0f956d510b15af0b7a2c2c99b6f28a565ea0d5a367c7dbf992495", - data: "https://prosopo.github.io/demo-datasets/img/01.08.jpeg", - type: "image", - }, - { - hash: "0x5a9f32b7cb8b55a7ec138d21260df31a401ed4fbaa67550ede344e240bf277ee", - data: "https://prosopo.github.io/demo-datasets/img/01.09.jpeg", - type: "image", - }, - ], - target: "bus", - solution: [ - "0x369734d30701d97ded13c95b34bcd81fc63160fce136ae0c2eb7a2457b5b96c5", - "0x3be8ae584fa11426b8eeac21c87e9f2ab751ab380ec9298b7cd7aed713007ca8", - "0x967a0107da9f2b1658fea482111dcae32b1bc544da0ee5a3797d758937872ceb", - ], - }, - { - captchaId: - "0x5d417991939a866abddffec672850be406e31985221914e9b3bbb4eeed57d13b", - captchaContentId: - "0x0460173e77b2280224c8bc409cfdfcae8f77314e535a52db38258fafeb7e4670", - solved: true, - salt: "0x02020202020202020202020202020202", - items: [ - { - hash: "0x7f4313a6d4240e206d7c7f16d368ddf12d5f1d78296fd3de7e91df1d7739a35f", - data: "https://prosopo.github.io/demo-datasets/img/01.01.jpeg", - type: "image", - }, - { - hash: "0x967a0107da9f2b1658fea482111dcae32b1bc544da0ee5a3797d758937872ceb", - data: "https://prosopo.github.io/demo-datasets/img/01.02.jpeg", - type: "image", - }, - { - hash: "0x369734d30701d97ded13c95b34bcd81fc63160fce136ae0c2eb7a2457b5b96c5", - data: "https://prosopo.github.io/demo-datasets/img/01.03.jpeg", - type: "image", - }, - { - hash: "0x3be8ae584fa11426b8eeac21c87e9f2ab751ab380ec9298b7cd7aed713007ca8", - data: "https://prosopo.github.io/demo-datasets/img/01.04.jpeg", - type: "image", - }, - { - hash: "0x156390dcf3d60b0e6cff5c9d83b5309049fa8a06a44e948cffe469369940a838", - data: "https://prosopo.github.io/demo-datasets/img/01.05.jpeg", - type: "image", - }, - { - hash: "0xd4ff6a66ca9b373061cd1dd0477cf598779a73bc7f048eb12b3b8631ea151d7d", - data: "https://prosopo.github.io/demo-datasets/img/01.06.jpeg", - type: "image", - }, - { - hash: "0xcbcb4ad03e1309f009f78ca0b71125916b5ee8eb8cb53d174f32e58fd3b3dbcd", - data: "https://prosopo.github.io/demo-datasets/img/01.07.jpeg", - type: "image", - }, - { - hash: "0x0e5279ccf0f0f956d510b15af0b7a2c2c99b6f28a565ea0d5a367c7dbf992495", - data: "https://prosopo.github.io/demo-datasets/img/01.08.jpeg", - type: "image", - }, - { - hash: "0x5a9f32b7cb8b55a7ec138d21260df31a401ed4fbaa67550ede344e240bf277ee", - data: "https://prosopo.github.io/demo-datasets/img/01.09.jpeg", - type: "image", - }, - ], - target: "train", - solution: [ - "0x0e5279ccf0f0f956d510b15af0b7a2c2c99b6f28a565ea0d5a367c7dbf992495", - "0x5a9f32b7cb8b55a7ec138d21260df31a401ed4fbaa67550ede344e240bf277ee", - "0x7f4313a6d4240e206d7c7f16d368ddf12d5f1d78296fd3de7e91df1d7739a35f", - ], - }, - { - captchaId: - "0xb66681a776e4bf1128d1c36c49daaf32e0140e425d6950d47029a8d4286ae670", - captchaContentId: - "0x5073c70e3c1a89f69b00bd32c06857dbd045d345c2c2be7970c12bba8edaff82", - solved: true, - salt: "0x05050505050505050505050505050505", - items: [ - { - hash: "0x7f4313a6d4240e206d7c7f16d368ddf12d5f1d78296fd3de7e91df1d7739a35f", - data: "https://prosopo.github.io/demo-datasets/img/01.01.jpeg", - type: "image", - }, - { - hash: "0x967a0107da9f2b1658fea482111dcae32b1bc544da0ee5a3797d758937872ceb", - data: "https://prosopo.github.io/demo-datasets/img/01.02.jpeg", - type: "image", - }, - { - hash: "0x369734d30701d97ded13c95b34bcd81fc63160fce136ae0c2eb7a2457b5b96c5", - data: "https://prosopo.github.io/demo-datasets/img/01.03.jpeg", - type: "image", - }, - { - hash: "0x3be8ae584fa11426b8eeac21c87e9f2ab751ab380ec9298b7cd7aed713007ca8", - data: "https://prosopo.github.io/demo-datasets/img/01.04.jpeg", - type: "image", - }, - { - hash: "0x156390dcf3d60b0e6cff5c9d83b5309049fa8a06a44e948cffe469369940a838", - data: "https://prosopo.github.io/demo-datasets/img/01.05.jpeg", - type: "image", - }, - { - hash: "0xd4ff6a66ca9b373061cd1dd0477cf598779a73bc7f048eb12b3b8631ea151d7d", - data: "https://prosopo.github.io/demo-datasets/img/01.06.jpeg", - type: "image", - }, - { - hash: "0xcbcb4ad03e1309f009f78ca0b71125916b5ee8eb8cb53d174f32e58fd3b3dbcd", - data: "https://prosopo.github.io/demo-datasets/img/01.07.jpeg", - type: "image", - }, - { - hash: "0x0e5279ccf0f0f956d510b15af0b7a2c2c99b6f28a565ea0d5a367c7dbf992495", - data: "https://prosopo.github.io/demo-datasets/img/01.08.jpeg", - type: "image", - }, - { - hash: "0x5a9f32b7cb8b55a7ec138d21260df31a401ed4fbaa67550ede344e240bf277ee", - data: "https://prosopo.github.io/demo-datasets/img/01.09.jpeg", - type: "image", - }, - ], - target: "plane", - solution: [ - "0x156390dcf3d60b0e6cff5c9d83b5309049fa8a06a44e948cffe469369940a838", - "0xcbcb4ad03e1309f009f78ca0b71125916b5ee8eb8cb53d174f32e58fd3b3dbcd", - "0xd4ff6a66ca9b373061cd1dd0477cf598779a73bc7f048eb12b3b8631ea151d7d", - ], - }, - { - captchaId: - "0x683292a791c937e5e9be6f2fe0ac708deb4726af4e37c71cacc36f6371c3a088", - captchaContentId: - "0x36b991ffb57cdcb6d5e5b3ec8d34855069357c4d7409e98af6cd9503c6504f60", - solved: true, - salt: "0x01010101010101010101010101010101", - items: [ - { - hash: "0x0138ab8b1951c2b36284f6abacfc40cc3ec8280adc38462cc5f6b852e17ffe59", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_5.png", - type: "image", - }, - { - hash: "0x42f21fc48111aa49236db34cc4c98571dfb145f146a5672640b9c5568edb77c1", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_24.png", - type: "image", - }, - { - hash: "0xef306d5ae594772d9d5bb0729ff7f9ecdff016c21cd07ea9008856b16698dd06", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_27.png", - type: "image", - }, - { - hash: "0x7291367a7273dcdd07506634f19679679f4c2b3cfb25e3b662c74a4c75ab2d41", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_28.png", - type: "image", - }, - { - hash: "0x0b1539673d659a02a13782745ca98bbb2fed8c95f04621b0aa86e464e4b6773f", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_22.png", - type: "image", - }, - { - hash: "0x5fddbc30f4ac4edd73ac4242f183a2dab7da1bb8e5de3ea483611022319080cd", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_32.png", - type: "image", - }, - { - hash: "0x777ec78a400afa334f16d283803461cbbf814601aea9755b8350683567208172", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_26.png", - type: "image", - }, - { - hash: "0x58dc1a9c15b6e6629179c4fe08c05f12b3be168094a14c8d941e3f973b4b67e0", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_44.png", - type: "image", - }, - { - hash: "0x2ee5bac3c390ebff1f400d4da87a877e3efa1054625bd03102596babd3021589", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_51.png", - type: "image", - }, - ], - target: "dog", - solution: [ - "0x2ee5bac3c390ebff1f400d4da87a877e3efa1054625bd03102596babd3021589", - "0x7291367a7273dcdd07506634f19679679f4c2b3cfb25e3b662c74a4c75ab2d41", - "0xef306d5ae594772d9d5bb0729ff7f9ecdff016c21cd07ea9008856b16698dd06", - ], - }, - { - captchaId: - "0x9ad2b46ce33db79f62679a0d0c4262dfff9b359337243d50e47479ae46e4ca8e", - captchaContentId: - "0xa3cf080335408e6cb29415ac3bdbf57d9dca2c24b52b7a9e682b209e65d586aa", - solved: true, - salt: "0x02020202020202020202020202020202", - items: [ - { - hash: "0x0138ab8b1951c2b36284f6abacfc40cc3ec8280adc38462cc5f6b852e17ffe59", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_5.png", - type: "image", - }, - { - hash: "0x42f21fc48111aa49236db34cc4c98571dfb145f146a5672640b9c5568edb77c1", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_24.png", - type: "image", - }, - { - hash: "0xef306d5ae594772d9d5bb0729ff7f9ecdff016c21cd07ea9008856b16698dd06", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_27.png", - type: "image", - }, - { - hash: "0x7291367a7273dcdd07506634f19679679f4c2b3cfb25e3b662c74a4c75ab2d41", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_28.png", - type: "image", - }, - { - hash: "0x0b1539673d659a02a13782745ca98bbb2fed8c95f04621b0aa86e464e4b6773f", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_22.png", - type: "image", - }, - { - hash: "0x5fddbc30f4ac4edd73ac4242f183a2dab7da1bb8e5de3ea483611022319080cd", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_32.png", - type: "image", - }, - { - hash: "0x777ec78a400afa334f16d283803461cbbf814601aea9755b8350683567208172", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_26.png", - type: "image", - }, - { - hash: "0x58dc1a9c15b6e6629179c4fe08c05f12b3be168094a14c8d941e3f973b4b67e0", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_44.png", - type: "image", - }, - { - hash: "0x2ee5bac3c390ebff1f400d4da87a877e3efa1054625bd03102596babd3021589", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_51.png", - type: "image", - }, - ], - target: "cat", - solution: [ - "0x0138ab8b1951c2b36284f6abacfc40cc3ec8280adc38462cc5f6b852e17ffe59", - "0x0b1539673d659a02a13782745ca98bbb2fed8c95f04621b0aa86e464e4b6773f", - "0x42f21fc48111aa49236db34cc4c98571dfb145f146a5672640b9c5568edb77c1", - ], - }, - { - captchaId: - "0xa8309e583ba17f5cbdcbf09aa3c422bc94060a3cd86517b1c456e72be2e2d263", - captchaContentId: - "0x5d07c582890d4a90b021e2c77b5a8341ec65e5ce31e8b59670b9378ed33a7f31", - solved: true, - salt: "0x03030303030303030303030303030303", - items: [ - { - hash: "0x0138ab8b1951c2b36284f6abacfc40cc3ec8280adc38462cc5f6b852e17ffe59", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_5.png", - type: "image", - }, - { - hash: "0x42f21fc48111aa49236db34cc4c98571dfb145f146a5672640b9c5568edb77c1", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_24.png", - type: "image", - }, - { - hash: "0xef306d5ae594772d9d5bb0729ff7f9ecdff016c21cd07ea9008856b16698dd06", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_27.png", - type: "image", - }, - { - hash: "0x7291367a7273dcdd07506634f19679679f4c2b3cfb25e3b662c74a4c75ab2d41", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_28.png", - type: "image", - }, - { - hash: "0x0b1539673d659a02a13782745ca98bbb2fed8c95f04621b0aa86e464e4b6773f", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_22.png", - type: "image", - }, - { - hash: "0x5fddbc30f4ac4edd73ac4242f183a2dab7da1bb8e5de3ea483611022319080cd", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_32.png", - type: "image", - }, - { - hash: "0x777ec78a400afa334f16d283803461cbbf814601aea9755b8350683567208172", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_26.png", - type: "image", - }, - { - hash: "0x58dc1a9c15b6e6629179c4fe08c05f12b3be168094a14c8d941e3f973b4b67e0", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_44.png", - type: "image", - }, - { - hash: "0x2ee5bac3c390ebff1f400d4da87a877e3efa1054625bd03102596babd3021589", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_51.png", - type: "image", - }, - ], - target: "horse", - solution: [ - "0x58dc1a9c15b6e6629179c4fe08c05f12b3be168094a14c8d941e3f973b4b67e0", - "0x5fddbc30f4ac4edd73ac4242f183a2dab7da1bb8e5de3ea483611022319080cd", - "0x777ec78a400afa334f16d283803461cbbf814601aea9755b8350683567208172", - ], - }, - { - captchaId: - "0x6cb3449c723ca8f419104446ccda1f98f7cf9eb06a88ecebdf1ba0f5d9228c40", - captchaContentId: - "0xa45af7caacd6a2c19219f0a733c8febf453ef62258f6afa22f7f830f6125d9f2", - solved: true, - salt: "0x01010101010101010101010101010101", - items: [ - { - hash: "0x6e0784791bf2edbb348ed69fb8080f69f4c38d3a8169f9204b5600a44bdaa600", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_4.png", - type: "image", - }, - { - hash: "0x15671b7ab4c6d575d51bb0c6c2a5dd05427a2938e9cbcaca1de07c23eaced17f", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_15.png", - type: "image", - }, - { - hash: "0x777ec78a400afa334f16d283803461cbbf814601aea9755b8350683567208172", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_26.png", - type: "image", - }, - { - hash: "0x51fd7b3ae31b6141b37cc063626abd5e1823c40d5da988f087bb3fce4a58d05e", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_94.png", - type: "image", - }, - { - hash: "0xbafe726567fc5b1b67468f77298e80fcee7c7499c499742328aa025b832bf192", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_95.png", - type: "image", - }, - { - hash: "0xe3166f5e1e6e4445e3dce0e69f9d82306e4727019fde875b94a7a6c617eee119", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_20.png", - type: "image", - }, - { - hash: "0x4900a1b4ca395af1c4ea13c52358c8a98d89494ca0a20b251ac9ac16a4fd5377", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_79.png", - type: "image", - }, - { - hash: "0x2040f9ce95c6efba06556a3c9a49538a23f0e1d8ace67d06e1bd7a4538fbc014", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_85.png", - type: "image", - }, - { - hash: "0x5c7b92f11474f9e2f945652eac2e1a603b81adc470480c49e63bb109e62f6624", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_90.png", - type: "image", - }, - ], - target: "plane", - solution: [ - "0x2040f9ce95c6efba06556a3c9a49538a23f0e1d8ace67d06e1bd7a4538fbc014", - "0x6e0784791bf2edbb348ed69fb8080f69f4c38d3a8169f9204b5600a44bdaa600", - ], - }, - { - captchaId: - "0x3bacf645655004bd36c56d3215ff0e1925fdc4241a41fdbb711d4222d3b56af3", - captchaContentId: - "0xf4416f464d8df14718f0f1dac447d8b7403c9c8eaa3c5da8cf0019a06197b5f3", - solved: true, - salt: "0x02020202020202020202020202020202", - items: [ - { - hash: "0x6e0784791bf2edbb348ed69fb8080f69f4c38d3a8169f9204b5600a44bdaa600", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_4.png", - type: "image", - }, - { - hash: "0x15671b7ab4c6d575d51bb0c6c2a5dd05427a2938e9cbcaca1de07c23eaced17f", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_15.png", - type: "image", - }, - { - hash: "0x777ec78a400afa334f16d283803461cbbf814601aea9755b8350683567208172", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_26.png", - type: "image", - }, - { - hash: "0x51fd7b3ae31b6141b37cc063626abd5e1823c40d5da988f087bb3fce4a58d05e", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_94.png", - type: "image", - }, - { - hash: "0xbafe726567fc5b1b67468f77298e80fcee7c7499c499742328aa025b832bf192", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_95.png", - type: "image", - }, - { - hash: "0xe3166f5e1e6e4445e3dce0e69f9d82306e4727019fde875b94a7a6c617eee119", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_20.png", - type: "image", - }, - { - hash: "0x4900a1b4ca395af1c4ea13c52358c8a98d89494ca0a20b251ac9ac16a4fd5377", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_79.png", - type: "image", - }, - { - hash: "0x2040f9ce95c6efba06556a3c9a49538a23f0e1d8ace67d06e1bd7a4538fbc014", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_85.png", - type: "image", - }, - { - hash: "0x5c7b92f11474f9e2f945652eac2e1a603b81adc470480c49e63bb109e62f6624", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_90.png", - type: "image", - }, - ], - target: "dog", - solution: [ - "0x4900a1b4ca395af1c4ea13c52358c8a98d89494ca0a20b251ac9ac16a4fd5377", - "0x5c7b92f11474f9e2f945652eac2e1a603b81adc470480c49e63bb109e62f6624", - "0xbafe726567fc5b1b67468f77298e80fcee7c7499c499742328aa025b832bf192", - ], - }, - { - captchaId: - "0x723e7c158ce1621dafd2785996fce297ead3bcf6efb2e3f77a090bd83c8b9362", - captchaContentId: - "0x89916d3a386b0dd3942aa659245bca778467d14ebe509312779c56b8a003f4bc", - solved: true, - salt: "0x03030303030303030303030303030303", - items: [ - { - hash: "0x6e0784791bf2edbb348ed69fb8080f69f4c38d3a8169f9204b5600a44bdaa600", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_4.png", - type: "image", - }, - { - hash: "0x15671b7ab4c6d575d51bb0c6c2a5dd05427a2938e9cbcaca1de07c23eaced17f", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_15.png", - type: "image", - }, - { - hash: "0x777ec78a400afa334f16d283803461cbbf814601aea9755b8350683567208172", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_26.png", - type: "image", - }, - { - hash: "0x51fd7b3ae31b6141b37cc063626abd5e1823c40d5da988f087bb3fce4a58d05e", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_94.png", - type: "image", - }, - { - hash: "0xbafe726567fc5b1b67468f77298e80fcee7c7499c499742328aa025b832bf192", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_95.png", - type: "image", - }, - { - hash: "0xe3166f5e1e6e4445e3dce0e69f9d82306e4727019fde875b94a7a6c617eee119", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_20.png", - type: "image", - }, - { - hash: "0x4900a1b4ca395af1c4ea13c52358c8a98d89494ca0a20b251ac9ac16a4fd5377", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_79.png", - type: "image", - }, - { - hash: "0x2040f9ce95c6efba06556a3c9a49538a23f0e1d8ace67d06e1bd7a4538fbc014", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_85.png", - type: "image", - }, - { - hash: "0x5c7b92f11474f9e2f945652eac2e1a603b81adc470480c49e63bb109e62f6624", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_90.png", - type: "image", - }, - ], - target: "horse", - solution: [ - "0x51fd7b3ae31b6141b37cc063626abd5e1823c40d5da988f087bb3fce4a58d05e", - "0x777ec78a400afa334f16d283803461cbbf814601aea9755b8350683567208172", - "0xe3166f5e1e6e4445e3dce0e69f9d82306e4727019fde875b94a7a6c617eee119", - ], - }, - { - captchaId: - "0xf8d0abb371ec9a6984492cb7444bfaef848f7d13cb65b8058d479ab1b1e6c932", - captchaContentId: - "0xe36eb6b306154f44fcdbe793a60257c474401e8bd8e63da15f9654e831c08eb2", - solved: true, - salt: "0x04040404040404040404040404040404", - items: [ - { - hash: "0x6e0784791bf2edbb348ed69fb8080f69f4c38d3a8169f9204b5600a44bdaa600", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_4.png", - type: "image", - }, - { - hash: "0x15671b7ab4c6d575d51bb0c6c2a5dd05427a2938e9cbcaca1de07c23eaced17f", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_15.png", - type: "image", - }, - { - hash: "0x777ec78a400afa334f16d283803461cbbf814601aea9755b8350683567208172", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_26.png", - type: "image", - }, - { - hash: "0x51fd7b3ae31b6141b37cc063626abd5e1823c40d5da988f087bb3fce4a58d05e", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_94.png", - type: "image", - }, - { - hash: "0xbafe726567fc5b1b67468f77298e80fcee7c7499c499742328aa025b832bf192", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_95.png", - type: "image", - }, - { - hash: "0xe3166f5e1e6e4445e3dce0e69f9d82306e4727019fde875b94a7a6c617eee119", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_20.png", - type: "image", - }, - { - hash: "0x4900a1b4ca395af1c4ea13c52358c8a98d89494ca0a20b251ac9ac16a4fd5377", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_79.png", - type: "image", - }, - { - hash: "0x2040f9ce95c6efba06556a3c9a49538a23f0e1d8ace67d06e1bd7a4538fbc014", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_85.png", - type: "image", - }, - { - hash: "0x5c7b92f11474f9e2f945652eac2e1a603b81adc470480c49e63bb109e62f6624", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_90.png", - type: "image", - }, - ], - target: "bird", - solution: [ - "0x15671b7ab4c6d575d51bb0c6c2a5dd05427a2938e9cbcaca1de07c23eaced17f", - ], - }, - { - captchaId: - "0xc9d80c281e124d55441b394bec7d6a64e35c4409d57e37bcb9b9748066b095d6", - captchaContentId: - "0x7c08a0e5636efa5dff2f8815095ec4390e844e50bfbe63d8e1e1c75ec6540592", - solved: true, - salt: "0x01010101010101010101010101010101", - items: [ - { - hash: "0x3d2b4cbb43eb98df71bc9ee3d7665e7937b17771718dd096342ccf9e199596e5", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_82.png", - type: "image", - }, - { - hash: "0xc0d85d32dffcbf5803e198c30f8fb09fdc9483d799a37383e89011da233744e0", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_78.png", - type: "image", - }, - { - hash: "0xc74ef4ec7a5f3d63fca003c0cc687540bf224450c4bc6cd8767b6eff4a4d8ab3", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_89.png", - type: "image", - }, - { - hash: "0x61c761e6d4ddd18a685ff1e807f0e078817c09ba1342c2f6621feabb0a1c8c42", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_61.png", - type: "image", - }, - { - hash: "0x2b2f347f9ab0799ee4c2f771c7b7e31489fbb03ba14ad609e23cc9ce87ebc40e", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_69.png", - type: "image", - }, - { - hash: "0x1bd28987173b26558d5a6abb3bbb7d411eebfdf5a54ff579b2720677883b7538", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_71.png", - type: "image", - }, - { - hash: "0x15a422800b166cde2e9d5ac4ab76bf06909737d7896246a5662f341b8b4f02dc", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_33.png", - type: "image", - }, - { - hash: "0x5b1b6833cf2f199e8eacbdd8dd9058de59758ba87e9f3f05e273ad290313d42b", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_25.png", - type: "image", - }, - { - hash: "0x69a472be6e13e4a9b0308b676e4611d45612c684e544758a926b680d74f2a845", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_21.png", - type: "image", - }, - ], - target: "cat", - solution: [ - "0x15a422800b166cde2e9d5ac4ab76bf06909737d7896246a5662f341b8b4f02dc", - "0x69a472be6e13e4a9b0308b676e4611d45612c684e544758a926b680d74f2a845", - "0xc0d85d32dffcbf5803e198c30f8fb09fdc9483d799a37383e89011da233744e0", - ], - }, - { - captchaId: - "0xd0d357d973f3971fa5431d6bcec9819cb2363b1e6d5d585d5bf97f4f18ac76a5", - captchaContentId: - "0x2089b6232685100ad4318d75f9cc2d5909a0cd2ef49e7b3e314726b25a71c807", - solved: true, - salt: "0x01010101010101010101010101010101", - items: [ - { - hash: "0x3d2b4cbb43eb98df71bc9ee3d7665e7937b17771718dd096342ccf9e199596e5", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_82.png", - type: "image", - }, - { - hash: "0xc0d85d32dffcbf5803e198c30f8fb09fdc9483d799a37383e89011da233744e0", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_78.png", - type: "image", - }, - { - hash: "0xc74ef4ec7a5f3d63fca003c0cc687540bf224450c4bc6cd8767b6eff4a4d8ab3", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_89.png", - type: "image", - }, - { - hash: "0x61c761e6d4ddd18a685ff1e807f0e078817c09ba1342c2f6621feabb0a1c8c42", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_61.png", - type: "image", - }, - { - hash: "0x2b2f347f9ab0799ee4c2f771c7b7e31489fbb03ba14ad609e23cc9ce87ebc40e", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_69.png", - type: "image", - }, - { - hash: "0x1bd28987173b26558d5a6abb3bbb7d411eebfdf5a54ff579b2720677883b7538", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_71.png", - type: "image", - }, - { - hash: "0x15a422800b166cde2e9d5ac4ab76bf06909737d7896246a5662f341b8b4f02dc", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_33.png", - type: "image", - }, - { - hash: "0x5b1b6833cf2f199e8eacbdd8dd9058de59758ba87e9f3f05e273ad290313d42b", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_25.png", - type: "image", - }, - { - hash: "0x69a472be6e13e4a9b0308b676e4611d45612c684e544758a926b680d74f2a845", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_21.png", - type: "image", - }, - ], - target: "plane", - solution: [ - "0x2b2f347f9ab0799ee4c2f771c7b7e31489fbb03ba14ad609e23cc9ce87ebc40e", - "0x3d2b4cbb43eb98df71bc9ee3d7665e7937b17771718dd096342ccf9e199596e5", - "0x61c761e6d4ddd18a685ff1e807f0e078817c09ba1342c2f6621feabb0a1c8c42", - ], - }, - { - captchaId: - "0x8683a18e05a9eefb959ba41374f2ef208484079405e9c098910f9d9a4cf60ddf", - captchaContentId: - "0x466dcd81d4e1d271cf3b5b0cdacb7417119ce11b2843aea517eb3dda847392a9", - solved: true, - salt: "0x01010101010101010101010101010101", - items: [ - { - hash: "0x3d2b4cbb43eb98df71bc9ee3d7665e7937b17771718dd096342ccf9e199596e5", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_82.png", - type: "image", - }, - { - hash: "0xc0d85d32dffcbf5803e198c30f8fb09fdc9483d799a37383e89011da233744e0", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_78.png", - type: "image", - }, - { - hash: "0xc74ef4ec7a5f3d63fca003c0cc687540bf224450c4bc6cd8767b6eff4a4d8ab3", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_89.png", - type: "image", - }, - { - hash: "0x61c761e6d4ddd18a685ff1e807f0e078817c09ba1342c2f6621feabb0a1c8c42", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_61.png", - type: "image", - }, - { - hash: "0x2b2f347f9ab0799ee4c2f771c7b7e31489fbb03ba14ad609e23cc9ce87ebc40e", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_69.png", - type: "image", - }, - { - hash: "0x1bd28987173b26558d5a6abb3bbb7d411eebfdf5a54ff579b2720677883b7538", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_71.png", - type: "image", - }, - { - hash: "0x15a422800b166cde2e9d5ac4ab76bf06909737d7896246a5662f341b8b4f02dc", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_33.png", - type: "image", - }, - { - hash: "0x5b1b6833cf2f199e8eacbdd8dd9058de59758ba87e9f3f05e273ad290313d42b", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_25.png", - type: "image", - }, - { - hash: "0x69a472be6e13e4a9b0308b676e4611d45612c684e544758a926b680d74f2a845", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_21.png", - type: "image", - }, - ], - target: "car", - solution: [ - "0x1bd28987173b26558d5a6abb3bbb7d411eebfdf5a54ff579b2720677883b7538", - "0x5b1b6833cf2f199e8eacbdd8dd9058de59758ba87e9f3f05e273ad290313d42b", - "0xc74ef4ec7a5f3d63fca003c0cc687540bf224450c4bc6cd8767b6eff4a4d8ab3", - ], - }, - { - captchaId: - "0x43828174c4c62e82cd7be31465df33f10c6de4301d02feeff8ca15cc26ecd3bb", - captchaContentId: - "0xe286bba23407a9036b9e60eec7ea41ebfe7f2b1452443da1e9561909534c719d", - solved: true, - salt: "0x01010101010101010101010101010101", - items: [ - { - hash: "0xeba2c2c032639c02627f28c6fb77bdd48de56d7a7260f4898a2cfbaa916aa488", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_16.png", - type: "image", - }, - { - hash: "0xd0b4b9447604200567c67f635d19a1702c7392a42264e90b7f63816eb15adf8a", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_17.png", - type: "image", - }, - { - hash: "0xef306d5ae594772d9d5bb0729ff7f9ecdff016c21cd07ea9008856b16698dd06", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_27.png", - type: "image", - }, - { - hash: "0x15a422800b166cde2e9d5ac4ab76bf06909737d7896246a5662f341b8b4f02dc", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_33.png", - type: "image", - }, - { - hash: "0x68a2e06743e929bcfc69a298ed1222d4e098aa19850ef0a3d758136aa3862de6", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_40.png", - type: "image", - }, - { - hash: "0x0ff5e407e8964bc59be44e7c69e36ae4bec27e7b2cc4c9145f0d578ac81d2a70", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_52.png", - type: "image", - }, - { - hash: "0xc0d85d32dffcbf5803e198c30f8fb09fdc9483d799a37383e89011da233744e0", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_78.png", - type: "image", - }, - { - hash: "0x020202020202020202020202020202021a8d88f76f5f01251695a8e488f676dc970f1e2f7ab8af43b12d2b03b5ae54", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_93.png", - type: "image", - }, - { - hash: "0xacac4785d2d7e298af5479c771f3e3035207a47c814901a8c1c788ebee2c73e6", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_70.png", - type: "image", - }, - ], - target: "cat", - solution: [ - "0x020202020202020202020202020202021a8d88f76f5f01251695a8e488f676dc970f1e2f7ab8af43b12d2b03b5ae54", - "0x15a422800b166cde2e9d5ac4ab76bf06909737d7896246a5662f341b8b4f02dc", - "0xc0d85d32dffcbf5803e198c30f8fb09fdc9483d799a37383e89011da233744e0", - ], - }, - { - captchaId: - "0xfbc6d9acb0bc751f3a63682e1a960b74f97fd30b20b633b0acd39e2a4aba1a9c", - captchaContentId: - "0x452063fa194844cf1f8f622aa7de46b7c948b1fc38fe87426b3443487a5104ce", - solved: true, - salt: "0x02020202020202020202020202020202", - items: [ - { - hash: "0xeba2c2c032639c02627f28c6fb77bdd48de56d7a7260f4898a2cfbaa916aa488", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_16.png", - type: "image", - }, - { - hash: "0xd0b4b9447604200567c67f635d19a1702c7392a42264e90b7f63816eb15adf8a", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_17.png", - type: "image", - }, - { - hash: "0xef306d5ae594772d9d5bb0729ff7f9ecdff016c21cd07ea9008856b16698dd06", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_27.png", - type: "image", - }, - { - hash: "0x15a422800b166cde2e9d5ac4ab76bf06909737d7896246a5662f341b8b4f02dc", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_33.png", - type: "image", - }, - { - hash: "0x68a2e06743e929bcfc69a298ed1222d4e098aa19850ef0a3d758136aa3862de6", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_40.png", - type: "image", - }, - { - hash: "0x0ff5e407e8964bc59be44e7c69e36ae4bec27e7b2cc4c9145f0d578ac81d2a70", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_52.png", - type: "image", - }, - { - hash: "0xc0d85d32dffcbf5803e198c30f8fb09fdc9483d799a37383e89011da233744e0", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_78.png", - type: "image", - }, - { - hash: "0x020202020202020202020202020202021a8d88f76f5f01251695a8e488f676dc970f1e2f7ab8af43b12d2b03b5ae54", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_93.png", - type: "image", - }, - { - hash: "0xacac4785d2d7e298af5479c771f3e3035207a47c814901a8c1c788ebee2c73e6", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_70.png", - type: "image", - }, - ], - target: "deer", - solution: [ - "0x0ff5e407e8964bc59be44e7c69e36ae4bec27e7b2cc4c9145f0d578ac81d2a70", - "0xacac4785d2d7e298af5479c771f3e3035207a47c814901a8c1c788ebee2c73e6", - "0xd0b4b9447604200567c67f635d19a1702c7392a42264e90b7f63816eb15adf8a", - ], - }, - { - captchaId: - "0x59466eea239ed267b0a60ce0f28ec617834b6fbe41f5f38047f50de6539e659c", - captchaContentId: - "0x78374f5795a85c1ff01fc13e60da3992b7054bcc16945a0820e4a58ba881b9ed", - solved: true, - salt: "0x03030303030303030303030303030303", - items: [ - { - hash: "0xeba2c2c032639c02627f28c6fb77bdd48de56d7a7260f4898a2cfbaa916aa488", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_16.png", - type: "image", - }, - { - hash: "0xd0b4b9447604200567c67f635d19a1702c7392a42264e90b7f63816eb15adf8a", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_17.png", - type: "image", - }, - { - hash: "0xef306d5ae594772d9d5bb0729ff7f9ecdff016c21cd07ea9008856b16698dd06", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_27.png", - type: "image", - }, - { - hash: "0x15a422800b166cde2e9d5ac4ab76bf06909737d7896246a5662f341b8b4f02dc", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_33.png", - type: "image", - }, - { - hash: "0x68a2e06743e929bcfc69a298ed1222d4e098aa19850ef0a3d758136aa3862de6", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_40.png", - type: "image", - }, - { - hash: "0x0ff5e407e8964bc59be44e7c69e36ae4bec27e7b2cc4c9145f0d578ac81d2a70", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_52.png", - type: "image", - }, - { - hash: "0xc0d85d32dffcbf5803e198c30f8fb09fdc9483d799a37383e89011da233744e0", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_78.png", - type: "image", - }, - { - hash: "0x020202020202020202020202020202021a8d88f76f5f01251695a8e488f676dc970f1e2f7ab8af43b12d2b03b5ae54", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_93.png", - type: "image", - }, - { - hash: "0xacac4785d2d7e298af5479c771f3e3035207a47c814901a8c1c788ebee2c73e6", - data: "https://prosopo.github.io/demo-datasets/img/test_image_png_70.png", - type: "image", - }, - ], - target: "dog", - solution: [ - "0x68a2e06743e929bcfc69a298ed1222d4e098aa19850ef0a3d758136aa3862de6", - "0xeba2c2c032639c02627f28c6fb77bdd48de56d7a7260f4898a2cfbaa916aa488", - "0xef306d5ae594772d9d5bb0729ff7f9ecdff016c21cd07ea9008856b16698dd06", - ], - }, - ], + datasetId: + "0x9f460e81ac9c71b486f796a21bb36e2263694756a6621134d110da217fd3ef25", + datasetContentId: + "0x3a2dbbf5610f04f54581843db3adf7e0fadc02cdb8e42e30b028c850e0603165", + format: "SelectAll", + contentTree: [ + [ + "0x77ba6bdfedc563a34580c8b9cbcdec64608fda0ebf93649797af751d91b8e7a2", + "0x0460173e77b2280224c8bc409cfdfcae8f77314e535a52db38258fafeb7e4670", + "0x5073c70e3c1a89f69b00bd32c06857dbd045d345c2c2be7970c12bba8edaff82", + "0x36b991ffb57cdcb6d5e5b3ec8d34855069357c4d7409e98af6cd9503c6504f60", + "0xa3cf080335408e6cb29415ac3bdbf57d9dca2c24b52b7a9e682b209e65d586aa", + "0x5d07c582890d4a90b021e2c77b5a8341ec65e5ce31e8b59670b9378ed33a7f31", + "0xa45af7caacd6a2c19219f0a733c8febf453ef62258f6afa22f7f830f6125d9f2", + "0xf4416f464d8df14718f0f1dac447d8b7403c9c8eaa3c5da8cf0019a06197b5f3", + "0x89916d3a386b0dd3942aa659245bca778467d14ebe509312779c56b8a003f4bc", + "0xe36eb6b306154f44fcdbe793a60257c474401e8bd8e63da15f9654e831c08eb2", + "0x7c08a0e5636efa5dff2f8815095ec4390e844e50bfbe63d8e1e1c75ec6540592", + "0x2089b6232685100ad4318d75f9cc2d5909a0cd2ef49e7b3e314726b25a71c807", + "0x466dcd81d4e1d271cf3b5b0cdacb7417119ce11b2843aea517eb3dda847392a9", + "0xe286bba23407a9036b9e60eec7ea41ebfe7f2b1452443da1e9561909534c719d", + "0x452063fa194844cf1f8f622aa7de46b7c948b1fc38fe87426b3443487a5104ce", + "0x78374f5795a85c1ff01fc13e60da3992b7054bcc16945a0820e4a58ba881b9ed", + ], + [ + "0xfd87321affde04a6ec7bf3144caf399fbbdf827cc5da78b0de40b7babbf3e2b5", + "0x524207a9d35ba9347b5551c712969622b3b23868bf36d47cdf5df2ac275ac08e", + "0x1f763f670852d6ee1cbb729c8f89463c02736c3d4501741fc2249f37ea7bc2e5", + "0xf0ef076d0795d20de2572682223cbf4c3df448bb88983329c54328f24c2b0284", + "0x9d09b2e8fb3aa9ace1d5d8da6df872b1fa604e455fc5c139713b8419a430b316", + "0xf237ab7c9ecbf8cbfdc79e59d5c988f659762f2b9950d7876035db7717af8de7", + "0xfb0154e6ce3ad844c4d6507471a6d8fe0e6b50be9191bd313b4ae0d0aace16f5", + "0x5a38b852491c1fd93781ad9a48395ab88180783efcf141a51e4bfb2d3e174e4e", + ], + [ + "0x07a343972179ae82d9d350bf6fc4da0f899371df7b26045dc91ffec21fbee097", + "0x796877d60e8211b953afef6a146b8cefe8383caf197664c1f738fce67d5181d3", + "0x981a8e410f10cac34895f4894adab792e5b6f2863ebb718f82421c29cbb9e3ce", + "0x06f117f1c14da7e1609360dce5470ab181a9a32d6aa78237f4017bb3d3f06fe6", + ], + [ + "0x917afb2ea5ed801defd5ed3f1fddf636bca14e37e7418934612c781ceb13e013", + "0xe3ae5147692d38fbe62aa786dcc0b4c5031fbff200bf1a4261fd0ab2c687d9a2", + ], + ["0x3a2dbbf5610f04f54581843db3adf7e0fadc02cdb8e42e30b028c850e0603165"], + ], + solutionTree: [ + [ + "0xf96f89b2792512ec092ead208301f55ba18023ab7e02bec26c32fe888277cc45", + "0x5d417991939a866abddffec672850be406e31985221914e9b3bbb4eeed57d13b", + "0xb66681a776e4bf1128d1c36c49daaf32e0140e425d6950d47029a8d4286ae670", + "0x683292a791c937e5e9be6f2fe0ac708deb4726af4e37c71cacc36f6371c3a088", + "0x9ad2b46ce33db79f62679a0d0c4262dfff9b359337243d50e47479ae46e4ca8e", + "0xa8309e583ba17f5cbdcbf09aa3c422bc94060a3cd86517b1c456e72be2e2d263", + "0x6cb3449c723ca8f419104446ccda1f98f7cf9eb06a88ecebdf1ba0f5d9228c40", + "0x3bacf645655004bd36c56d3215ff0e1925fdc4241a41fdbb711d4222d3b56af3", + "0x723e7c158ce1621dafd2785996fce297ead3bcf6efb2e3f77a090bd83c8b9362", + "0xf8d0abb371ec9a6984492cb7444bfaef848f7d13cb65b8058d479ab1b1e6c932", + "0xc9d80c281e124d55441b394bec7d6a64e35c4409d57e37bcb9b9748066b095d6", + "0xd0d357d973f3971fa5431d6bcec9819cb2363b1e6d5d585d5bf97f4f18ac76a5", + "0x8683a18e05a9eefb959ba41374f2ef208484079405e9c098910f9d9a4cf60ddf", + "0x43828174c4c62e82cd7be31465df33f10c6de4301d02feeff8ca15cc26ecd3bb", + "0xfbc6d9acb0bc751f3a63682e1a960b74f97fd30b20b633b0acd39e2a4aba1a9c", + "0x59466eea239ed267b0a60ce0f28ec617834b6fbe41f5f38047f50de6539e659c", + ], + [ + "0x38054dca5f875ca7046b0e41c66268c63e51bd8aae96c9f28d3411c2663af043", + "0xc3539913305b78f3d1265a090e3903eb043b08f0bc2f04df21d3f7a55995a812", + "0xf715fbdf71e1635ef0bdbfb119f12a7ea1d78ad541731a76b444328f567dcf31", + "0x9e761cf605b71f9b8c5789c650ae54ef808fd38e509c58ac9bcb3c4c92791769", + "0xdb1a901059cd95e220ab842d6ff9919cd251317f73d680d835156dd82dc0f93e", + "0x93d690c1d76366c427f29c10c060d3dc45b54e7ab1eb58dc4ba04ca711cfec84", + "0x18dfb79b012e7d660317eb6a458afc97604000957f0ce8f24ee4524f70b1af7d", + "0x716aaa481088666d681bebedb5c184de5764565f6608f2fa802df352878bcd63", + ], + [ + "0xfd37f79fd06f9cdf9bcb2e196a51d5c059cde1c5e79f98ff9cf4cb72bbf6ab56", + "0x17622f69a5eaf2da98c398a11d0678a07aee297b3ba09a4824a466d811244e4f", + "0x4b2c23afef161a5cc3e8acb905f0b600e842fdb385a0379459a203bf3f4fea57", + "0xc055496bb6dc077820ad775b7bd946ecf0cfde8484a53bf40938a249eb9c8c7f", + ], + [ + "0x0e92e9e630844d5c8b6afaf2145303ee0a8c419ce68ec44bbc16246ed2571b74", + "0x0397a2316b1372f4fb9062c63b4a2ac43cb7eb8a580d5dd6fd3cb556f501e747", + ], + ["0x9f460e81ac9c71b486f796a21bb36e2263694756a6621134d110da217fd3ef25"], + ], + captchas: [ + { + captchaId: + "0xf96f89b2792512ec092ead208301f55ba18023ab7e02bec26c32fe888277cc45", + captchaContentId: + "0x77ba6bdfedc563a34580c8b9cbcdec64608fda0ebf93649797af751d91b8e7a2", + solved: true, + salt: "0x01010101010101010101010101010101", + items: [ + { + hash: "0x7f4313a6d4240e206d7c7f16d368ddf12d5f1d78296fd3de7e91df1d7739a35f", + data: "https://prosopo.github.io/demo-datasets/img/01.01.jpeg", + type: "image", + }, + { + hash: "0x967a0107da9f2b1658fea482111dcae32b1bc544da0ee5a3797d758937872ceb", + data: "https://prosopo.github.io/demo-datasets/img/01.02.jpeg", + type: "image", + }, + { + hash: "0x369734d30701d97ded13c95b34bcd81fc63160fce136ae0c2eb7a2457b5b96c5", + data: "https://prosopo.github.io/demo-datasets/img/01.03.jpeg", + type: "image", + }, + { + hash: "0x3be8ae584fa11426b8eeac21c87e9f2ab751ab380ec9298b7cd7aed713007ca8", + data: "https://prosopo.github.io/demo-datasets/img/01.04.jpeg", + type: "image", + }, + { + hash: "0x156390dcf3d60b0e6cff5c9d83b5309049fa8a06a44e948cffe469369940a838", + data: "https://prosopo.github.io/demo-datasets/img/01.05.jpeg", + type: "image", + }, + { + hash: "0xd4ff6a66ca9b373061cd1dd0477cf598779a73bc7f048eb12b3b8631ea151d7d", + data: "https://prosopo.github.io/demo-datasets/img/01.06.jpeg", + type: "image", + }, + { + hash: "0xcbcb4ad03e1309f009f78ca0b71125916b5ee8eb8cb53d174f32e58fd3b3dbcd", + data: "https://prosopo.github.io/demo-datasets/img/01.07.jpeg", + type: "image", + }, + { + hash: "0x0e5279ccf0f0f956d510b15af0b7a2c2c99b6f28a565ea0d5a367c7dbf992495", + data: "https://prosopo.github.io/demo-datasets/img/01.08.jpeg", + type: "image", + }, + { + hash: "0x5a9f32b7cb8b55a7ec138d21260df31a401ed4fbaa67550ede344e240bf277ee", + data: "https://prosopo.github.io/demo-datasets/img/01.09.jpeg", + type: "image", + }, + ], + target: "bus", + solution: [ + "0x369734d30701d97ded13c95b34bcd81fc63160fce136ae0c2eb7a2457b5b96c5", + "0x3be8ae584fa11426b8eeac21c87e9f2ab751ab380ec9298b7cd7aed713007ca8", + "0x967a0107da9f2b1658fea482111dcae32b1bc544da0ee5a3797d758937872ceb", + ], + }, + { + captchaId: + "0x5d417991939a866abddffec672850be406e31985221914e9b3bbb4eeed57d13b", + captchaContentId: + "0x0460173e77b2280224c8bc409cfdfcae8f77314e535a52db38258fafeb7e4670", + solved: true, + salt: "0x02020202020202020202020202020202", + items: [ + { + hash: "0x7f4313a6d4240e206d7c7f16d368ddf12d5f1d78296fd3de7e91df1d7739a35f", + data: "https://prosopo.github.io/demo-datasets/img/01.01.jpeg", + type: "image", + }, + { + hash: "0x967a0107da9f2b1658fea482111dcae32b1bc544da0ee5a3797d758937872ceb", + data: "https://prosopo.github.io/demo-datasets/img/01.02.jpeg", + type: "image", + }, + { + hash: "0x369734d30701d97ded13c95b34bcd81fc63160fce136ae0c2eb7a2457b5b96c5", + data: "https://prosopo.github.io/demo-datasets/img/01.03.jpeg", + type: "image", + }, + { + hash: "0x3be8ae584fa11426b8eeac21c87e9f2ab751ab380ec9298b7cd7aed713007ca8", + data: "https://prosopo.github.io/demo-datasets/img/01.04.jpeg", + type: "image", + }, + { + hash: "0x156390dcf3d60b0e6cff5c9d83b5309049fa8a06a44e948cffe469369940a838", + data: "https://prosopo.github.io/demo-datasets/img/01.05.jpeg", + type: "image", + }, + { + hash: "0xd4ff6a66ca9b373061cd1dd0477cf598779a73bc7f048eb12b3b8631ea151d7d", + data: "https://prosopo.github.io/demo-datasets/img/01.06.jpeg", + type: "image", + }, + { + hash: "0xcbcb4ad03e1309f009f78ca0b71125916b5ee8eb8cb53d174f32e58fd3b3dbcd", + data: "https://prosopo.github.io/demo-datasets/img/01.07.jpeg", + type: "image", + }, + { + hash: "0x0e5279ccf0f0f956d510b15af0b7a2c2c99b6f28a565ea0d5a367c7dbf992495", + data: "https://prosopo.github.io/demo-datasets/img/01.08.jpeg", + type: "image", + }, + { + hash: "0x5a9f32b7cb8b55a7ec138d21260df31a401ed4fbaa67550ede344e240bf277ee", + data: "https://prosopo.github.io/demo-datasets/img/01.09.jpeg", + type: "image", + }, + ], + target: "train", + solution: [ + "0x0e5279ccf0f0f956d510b15af0b7a2c2c99b6f28a565ea0d5a367c7dbf992495", + "0x5a9f32b7cb8b55a7ec138d21260df31a401ed4fbaa67550ede344e240bf277ee", + "0x7f4313a6d4240e206d7c7f16d368ddf12d5f1d78296fd3de7e91df1d7739a35f", + ], + }, + { + captchaId: + "0xb66681a776e4bf1128d1c36c49daaf32e0140e425d6950d47029a8d4286ae670", + captchaContentId: + "0x5073c70e3c1a89f69b00bd32c06857dbd045d345c2c2be7970c12bba8edaff82", + solved: true, + salt: "0x05050505050505050505050505050505", + items: [ + { + hash: "0x7f4313a6d4240e206d7c7f16d368ddf12d5f1d78296fd3de7e91df1d7739a35f", + data: "https://prosopo.github.io/demo-datasets/img/01.01.jpeg", + type: "image", + }, + { + hash: "0x967a0107da9f2b1658fea482111dcae32b1bc544da0ee5a3797d758937872ceb", + data: "https://prosopo.github.io/demo-datasets/img/01.02.jpeg", + type: "image", + }, + { + hash: "0x369734d30701d97ded13c95b34bcd81fc63160fce136ae0c2eb7a2457b5b96c5", + data: "https://prosopo.github.io/demo-datasets/img/01.03.jpeg", + type: "image", + }, + { + hash: "0x3be8ae584fa11426b8eeac21c87e9f2ab751ab380ec9298b7cd7aed713007ca8", + data: "https://prosopo.github.io/demo-datasets/img/01.04.jpeg", + type: "image", + }, + { + hash: "0x156390dcf3d60b0e6cff5c9d83b5309049fa8a06a44e948cffe469369940a838", + data: "https://prosopo.github.io/demo-datasets/img/01.05.jpeg", + type: "image", + }, + { + hash: "0xd4ff6a66ca9b373061cd1dd0477cf598779a73bc7f048eb12b3b8631ea151d7d", + data: "https://prosopo.github.io/demo-datasets/img/01.06.jpeg", + type: "image", + }, + { + hash: "0xcbcb4ad03e1309f009f78ca0b71125916b5ee8eb8cb53d174f32e58fd3b3dbcd", + data: "https://prosopo.github.io/demo-datasets/img/01.07.jpeg", + type: "image", + }, + { + hash: "0x0e5279ccf0f0f956d510b15af0b7a2c2c99b6f28a565ea0d5a367c7dbf992495", + data: "https://prosopo.github.io/demo-datasets/img/01.08.jpeg", + type: "image", + }, + { + hash: "0x5a9f32b7cb8b55a7ec138d21260df31a401ed4fbaa67550ede344e240bf277ee", + data: "https://prosopo.github.io/demo-datasets/img/01.09.jpeg", + type: "image", + }, + ], + target: "plane", + solution: [ + "0x156390dcf3d60b0e6cff5c9d83b5309049fa8a06a44e948cffe469369940a838", + "0xcbcb4ad03e1309f009f78ca0b71125916b5ee8eb8cb53d174f32e58fd3b3dbcd", + "0xd4ff6a66ca9b373061cd1dd0477cf598779a73bc7f048eb12b3b8631ea151d7d", + ], + }, + { + captchaId: + "0x683292a791c937e5e9be6f2fe0ac708deb4726af4e37c71cacc36f6371c3a088", + captchaContentId: + "0x36b991ffb57cdcb6d5e5b3ec8d34855069357c4d7409e98af6cd9503c6504f60", + solved: true, + salt: "0x01010101010101010101010101010101", + items: [ + { + hash: "0x0138ab8b1951c2b36284f6abacfc40cc3ec8280adc38462cc5f6b852e17ffe59", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_5.png", + type: "image", + }, + { + hash: "0x42f21fc48111aa49236db34cc4c98571dfb145f146a5672640b9c5568edb77c1", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_24.png", + type: "image", + }, + { + hash: "0xef306d5ae594772d9d5bb0729ff7f9ecdff016c21cd07ea9008856b16698dd06", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_27.png", + type: "image", + }, + { + hash: "0x7291367a7273dcdd07506634f19679679f4c2b3cfb25e3b662c74a4c75ab2d41", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_28.png", + type: "image", + }, + { + hash: "0x0b1539673d659a02a13782745ca98bbb2fed8c95f04621b0aa86e464e4b6773f", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_22.png", + type: "image", + }, + { + hash: "0x5fddbc30f4ac4edd73ac4242f183a2dab7da1bb8e5de3ea483611022319080cd", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_32.png", + type: "image", + }, + { + hash: "0x777ec78a400afa334f16d283803461cbbf814601aea9755b8350683567208172", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_26.png", + type: "image", + }, + { + hash: "0x58dc1a9c15b6e6629179c4fe08c05f12b3be168094a14c8d941e3f973b4b67e0", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_44.png", + type: "image", + }, + { + hash: "0x2ee5bac3c390ebff1f400d4da87a877e3efa1054625bd03102596babd3021589", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_51.png", + type: "image", + }, + ], + target: "dog", + solution: [ + "0x2ee5bac3c390ebff1f400d4da87a877e3efa1054625bd03102596babd3021589", + "0x7291367a7273dcdd07506634f19679679f4c2b3cfb25e3b662c74a4c75ab2d41", + "0xef306d5ae594772d9d5bb0729ff7f9ecdff016c21cd07ea9008856b16698dd06", + ], + }, + { + captchaId: + "0x9ad2b46ce33db79f62679a0d0c4262dfff9b359337243d50e47479ae46e4ca8e", + captchaContentId: + "0xa3cf080335408e6cb29415ac3bdbf57d9dca2c24b52b7a9e682b209e65d586aa", + solved: true, + salt: "0x02020202020202020202020202020202", + items: [ + { + hash: "0x0138ab8b1951c2b36284f6abacfc40cc3ec8280adc38462cc5f6b852e17ffe59", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_5.png", + type: "image", + }, + { + hash: "0x42f21fc48111aa49236db34cc4c98571dfb145f146a5672640b9c5568edb77c1", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_24.png", + type: "image", + }, + { + hash: "0xef306d5ae594772d9d5bb0729ff7f9ecdff016c21cd07ea9008856b16698dd06", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_27.png", + type: "image", + }, + { + hash: "0x7291367a7273dcdd07506634f19679679f4c2b3cfb25e3b662c74a4c75ab2d41", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_28.png", + type: "image", + }, + { + hash: "0x0b1539673d659a02a13782745ca98bbb2fed8c95f04621b0aa86e464e4b6773f", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_22.png", + type: "image", + }, + { + hash: "0x5fddbc30f4ac4edd73ac4242f183a2dab7da1bb8e5de3ea483611022319080cd", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_32.png", + type: "image", + }, + { + hash: "0x777ec78a400afa334f16d283803461cbbf814601aea9755b8350683567208172", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_26.png", + type: "image", + }, + { + hash: "0x58dc1a9c15b6e6629179c4fe08c05f12b3be168094a14c8d941e3f973b4b67e0", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_44.png", + type: "image", + }, + { + hash: "0x2ee5bac3c390ebff1f400d4da87a877e3efa1054625bd03102596babd3021589", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_51.png", + type: "image", + }, + ], + target: "cat", + solution: [ + "0x0138ab8b1951c2b36284f6abacfc40cc3ec8280adc38462cc5f6b852e17ffe59", + "0x0b1539673d659a02a13782745ca98bbb2fed8c95f04621b0aa86e464e4b6773f", + "0x42f21fc48111aa49236db34cc4c98571dfb145f146a5672640b9c5568edb77c1", + ], + }, + { + captchaId: + "0xa8309e583ba17f5cbdcbf09aa3c422bc94060a3cd86517b1c456e72be2e2d263", + captchaContentId: + "0x5d07c582890d4a90b021e2c77b5a8341ec65e5ce31e8b59670b9378ed33a7f31", + solved: true, + salt: "0x03030303030303030303030303030303", + items: [ + { + hash: "0x0138ab8b1951c2b36284f6abacfc40cc3ec8280adc38462cc5f6b852e17ffe59", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_5.png", + type: "image", + }, + { + hash: "0x42f21fc48111aa49236db34cc4c98571dfb145f146a5672640b9c5568edb77c1", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_24.png", + type: "image", + }, + { + hash: "0xef306d5ae594772d9d5bb0729ff7f9ecdff016c21cd07ea9008856b16698dd06", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_27.png", + type: "image", + }, + { + hash: "0x7291367a7273dcdd07506634f19679679f4c2b3cfb25e3b662c74a4c75ab2d41", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_28.png", + type: "image", + }, + { + hash: "0x0b1539673d659a02a13782745ca98bbb2fed8c95f04621b0aa86e464e4b6773f", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_22.png", + type: "image", + }, + { + hash: "0x5fddbc30f4ac4edd73ac4242f183a2dab7da1bb8e5de3ea483611022319080cd", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_32.png", + type: "image", + }, + { + hash: "0x777ec78a400afa334f16d283803461cbbf814601aea9755b8350683567208172", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_26.png", + type: "image", + }, + { + hash: "0x58dc1a9c15b6e6629179c4fe08c05f12b3be168094a14c8d941e3f973b4b67e0", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_44.png", + type: "image", + }, + { + hash: "0x2ee5bac3c390ebff1f400d4da87a877e3efa1054625bd03102596babd3021589", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_51.png", + type: "image", + }, + ], + target: "horse", + solution: [ + "0x58dc1a9c15b6e6629179c4fe08c05f12b3be168094a14c8d941e3f973b4b67e0", + "0x5fddbc30f4ac4edd73ac4242f183a2dab7da1bb8e5de3ea483611022319080cd", + "0x777ec78a400afa334f16d283803461cbbf814601aea9755b8350683567208172", + ], + }, + { + captchaId: + "0x6cb3449c723ca8f419104446ccda1f98f7cf9eb06a88ecebdf1ba0f5d9228c40", + captchaContentId: + "0xa45af7caacd6a2c19219f0a733c8febf453ef62258f6afa22f7f830f6125d9f2", + solved: true, + salt: "0x01010101010101010101010101010101", + items: [ + { + hash: "0x6e0784791bf2edbb348ed69fb8080f69f4c38d3a8169f9204b5600a44bdaa600", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_4.png", + type: "image", + }, + { + hash: "0x15671b7ab4c6d575d51bb0c6c2a5dd05427a2938e9cbcaca1de07c23eaced17f", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_15.png", + type: "image", + }, + { + hash: "0x777ec78a400afa334f16d283803461cbbf814601aea9755b8350683567208172", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_26.png", + type: "image", + }, + { + hash: "0x51fd7b3ae31b6141b37cc063626abd5e1823c40d5da988f087bb3fce4a58d05e", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_94.png", + type: "image", + }, + { + hash: "0xbafe726567fc5b1b67468f77298e80fcee7c7499c499742328aa025b832bf192", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_95.png", + type: "image", + }, + { + hash: "0xe3166f5e1e6e4445e3dce0e69f9d82306e4727019fde875b94a7a6c617eee119", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_20.png", + type: "image", + }, + { + hash: "0x4900a1b4ca395af1c4ea13c52358c8a98d89494ca0a20b251ac9ac16a4fd5377", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_79.png", + type: "image", + }, + { + hash: "0x2040f9ce95c6efba06556a3c9a49538a23f0e1d8ace67d06e1bd7a4538fbc014", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_85.png", + type: "image", + }, + { + hash: "0x5c7b92f11474f9e2f945652eac2e1a603b81adc470480c49e63bb109e62f6624", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_90.png", + type: "image", + }, + ], + target: "plane", + solution: [ + "0x2040f9ce95c6efba06556a3c9a49538a23f0e1d8ace67d06e1bd7a4538fbc014", + "0x6e0784791bf2edbb348ed69fb8080f69f4c38d3a8169f9204b5600a44bdaa600", + ], + }, + { + captchaId: + "0x3bacf645655004bd36c56d3215ff0e1925fdc4241a41fdbb711d4222d3b56af3", + captchaContentId: + "0xf4416f464d8df14718f0f1dac447d8b7403c9c8eaa3c5da8cf0019a06197b5f3", + solved: true, + salt: "0x02020202020202020202020202020202", + items: [ + { + hash: "0x6e0784791bf2edbb348ed69fb8080f69f4c38d3a8169f9204b5600a44bdaa600", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_4.png", + type: "image", + }, + { + hash: "0x15671b7ab4c6d575d51bb0c6c2a5dd05427a2938e9cbcaca1de07c23eaced17f", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_15.png", + type: "image", + }, + { + hash: "0x777ec78a400afa334f16d283803461cbbf814601aea9755b8350683567208172", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_26.png", + type: "image", + }, + { + hash: "0x51fd7b3ae31b6141b37cc063626abd5e1823c40d5da988f087bb3fce4a58d05e", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_94.png", + type: "image", + }, + { + hash: "0xbafe726567fc5b1b67468f77298e80fcee7c7499c499742328aa025b832bf192", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_95.png", + type: "image", + }, + { + hash: "0xe3166f5e1e6e4445e3dce0e69f9d82306e4727019fde875b94a7a6c617eee119", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_20.png", + type: "image", + }, + { + hash: "0x4900a1b4ca395af1c4ea13c52358c8a98d89494ca0a20b251ac9ac16a4fd5377", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_79.png", + type: "image", + }, + { + hash: "0x2040f9ce95c6efba06556a3c9a49538a23f0e1d8ace67d06e1bd7a4538fbc014", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_85.png", + type: "image", + }, + { + hash: "0x5c7b92f11474f9e2f945652eac2e1a603b81adc470480c49e63bb109e62f6624", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_90.png", + type: "image", + }, + ], + target: "dog", + solution: [ + "0x4900a1b4ca395af1c4ea13c52358c8a98d89494ca0a20b251ac9ac16a4fd5377", + "0x5c7b92f11474f9e2f945652eac2e1a603b81adc470480c49e63bb109e62f6624", + "0xbafe726567fc5b1b67468f77298e80fcee7c7499c499742328aa025b832bf192", + ], + }, + { + captchaId: + "0x723e7c158ce1621dafd2785996fce297ead3bcf6efb2e3f77a090bd83c8b9362", + captchaContentId: + "0x89916d3a386b0dd3942aa659245bca778467d14ebe509312779c56b8a003f4bc", + solved: true, + salt: "0x03030303030303030303030303030303", + items: [ + { + hash: "0x6e0784791bf2edbb348ed69fb8080f69f4c38d3a8169f9204b5600a44bdaa600", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_4.png", + type: "image", + }, + { + hash: "0x15671b7ab4c6d575d51bb0c6c2a5dd05427a2938e9cbcaca1de07c23eaced17f", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_15.png", + type: "image", + }, + { + hash: "0x777ec78a400afa334f16d283803461cbbf814601aea9755b8350683567208172", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_26.png", + type: "image", + }, + { + hash: "0x51fd7b3ae31b6141b37cc063626abd5e1823c40d5da988f087bb3fce4a58d05e", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_94.png", + type: "image", + }, + { + hash: "0xbafe726567fc5b1b67468f77298e80fcee7c7499c499742328aa025b832bf192", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_95.png", + type: "image", + }, + { + hash: "0xe3166f5e1e6e4445e3dce0e69f9d82306e4727019fde875b94a7a6c617eee119", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_20.png", + type: "image", + }, + { + hash: "0x4900a1b4ca395af1c4ea13c52358c8a98d89494ca0a20b251ac9ac16a4fd5377", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_79.png", + type: "image", + }, + { + hash: "0x2040f9ce95c6efba06556a3c9a49538a23f0e1d8ace67d06e1bd7a4538fbc014", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_85.png", + type: "image", + }, + { + hash: "0x5c7b92f11474f9e2f945652eac2e1a603b81adc470480c49e63bb109e62f6624", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_90.png", + type: "image", + }, + ], + target: "horse", + solution: [ + "0x51fd7b3ae31b6141b37cc063626abd5e1823c40d5da988f087bb3fce4a58d05e", + "0x777ec78a400afa334f16d283803461cbbf814601aea9755b8350683567208172", + "0xe3166f5e1e6e4445e3dce0e69f9d82306e4727019fde875b94a7a6c617eee119", + ], + }, + { + captchaId: + "0xf8d0abb371ec9a6984492cb7444bfaef848f7d13cb65b8058d479ab1b1e6c932", + captchaContentId: + "0xe36eb6b306154f44fcdbe793a60257c474401e8bd8e63da15f9654e831c08eb2", + solved: true, + salt: "0x04040404040404040404040404040404", + items: [ + { + hash: "0x6e0784791bf2edbb348ed69fb8080f69f4c38d3a8169f9204b5600a44bdaa600", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_4.png", + type: "image", + }, + { + hash: "0x15671b7ab4c6d575d51bb0c6c2a5dd05427a2938e9cbcaca1de07c23eaced17f", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_15.png", + type: "image", + }, + { + hash: "0x777ec78a400afa334f16d283803461cbbf814601aea9755b8350683567208172", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_26.png", + type: "image", + }, + { + hash: "0x51fd7b3ae31b6141b37cc063626abd5e1823c40d5da988f087bb3fce4a58d05e", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_94.png", + type: "image", + }, + { + hash: "0xbafe726567fc5b1b67468f77298e80fcee7c7499c499742328aa025b832bf192", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_95.png", + type: "image", + }, + { + hash: "0xe3166f5e1e6e4445e3dce0e69f9d82306e4727019fde875b94a7a6c617eee119", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_20.png", + type: "image", + }, + { + hash: "0x4900a1b4ca395af1c4ea13c52358c8a98d89494ca0a20b251ac9ac16a4fd5377", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_79.png", + type: "image", + }, + { + hash: "0x2040f9ce95c6efba06556a3c9a49538a23f0e1d8ace67d06e1bd7a4538fbc014", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_85.png", + type: "image", + }, + { + hash: "0x5c7b92f11474f9e2f945652eac2e1a603b81adc470480c49e63bb109e62f6624", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_90.png", + type: "image", + }, + ], + target: "bird", + solution: [ + "0x15671b7ab4c6d575d51bb0c6c2a5dd05427a2938e9cbcaca1de07c23eaced17f", + ], + }, + { + captchaId: + "0xc9d80c281e124d55441b394bec7d6a64e35c4409d57e37bcb9b9748066b095d6", + captchaContentId: + "0x7c08a0e5636efa5dff2f8815095ec4390e844e50bfbe63d8e1e1c75ec6540592", + solved: true, + salt: "0x01010101010101010101010101010101", + items: [ + { + hash: "0x3d2b4cbb43eb98df71bc9ee3d7665e7937b17771718dd096342ccf9e199596e5", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_82.png", + type: "image", + }, + { + hash: "0xc0d85d32dffcbf5803e198c30f8fb09fdc9483d799a37383e89011da233744e0", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_78.png", + type: "image", + }, + { + hash: "0xc74ef4ec7a5f3d63fca003c0cc687540bf224450c4bc6cd8767b6eff4a4d8ab3", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_89.png", + type: "image", + }, + { + hash: "0x61c761e6d4ddd18a685ff1e807f0e078817c09ba1342c2f6621feabb0a1c8c42", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_61.png", + type: "image", + }, + { + hash: "0x2b2f347f9ab0799ee4c2f771c7b7e31489fbb03ba14ad609e23cc9ce87ebc40e", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_69.png", + type: "image", + }, + { + hash: "0x1bd28987173b26558d5a6abb3bbb7d411eebfdf5a54ff579b2720677883b7538", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_71.png", + type: "image", + }, + { + hash: "0x15a422800b166cde2e9d5ac4ab76bf06909737d7896246a5662f341b8b4f02dc", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_33.png", + type: "image", + }, + { + hash: "0x5b1b6833cf2f199e8eacbdd8dd9058de59758ba87e9f3f05e273ad290313d42b", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_25.png", + type: "image", + }, + { + hash: "0x69a472be6e13e4a9b0308b676e4611d45612c684e544758a926b680d74f2a845", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_21.png", + type: "image", + }, + ], + target: "cat", + solution: [ + "0x15a422800b166cde2e9d5ac4ab76bf06909737d7896246a5662f341b8b4f02dc", + "0x69a472be6e13e4a9b0308b676e4611d45612c684e544758a926b680d74f2a845", + "0xc0d85d32dffcbf5803e198c30f8fb09fdc9483d799a37383e89011da233744e0", + ], + }, + { + captchaId: + "0xd0d357d973f3971fa5431d6bcec9819cb2363b1e6d5d585d5bf97f4f18ac76a5", + captchaContentId: + "0x2089b6232685100ad4318d75f9cc2d5909a0cd2ef49e7b3e314726b25a71c807", + solved: true, + salt: "0x01010101010101010101010101010101", + items: [ + { + hash: "0x3d2b4cbb43eb98df71bc9ee3d7665e7937b17771718dd096342ccf9e199596e5", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_82.png", + type: "image", + }, + { + hash: "0xc0d85d32dffcbf5803e198c30f8fb09fdc9483d799a37383e89011da233744e0", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_78.png", + type: "image", + }, + { + hash: "0xc74ef4ec7a5f3d63fca003c0cc687540bf224450c4bc6cd8767b6eff4a4d8ab3", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_89.png", + type: "image", + }, + { + hash: "0x61c761e6d4ddd18a685ff1e807f0e078817c09ba1342c2f6621feabb0a1c8c42", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_61.png", + type: "image", + }, + { + hash: "0x2b2f347f9ab0799ee4c2f771c7b7e31489fbb03ba14ad609e23cc9ce87ebc40e", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_69.png", + type: "image", + }, + { + hash: "0x1bd28987173b26558d5a6abb3bbb7d411eebfdf5a54ff579b2720677883b7538", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_71.png", + type: "image", + }, + { + hash: "0x15a422800b166cde2e9d5ac4ab76bf06909737d7896246a5662f341b8b4f02dc", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_33.png", + type: "image", + }, + { + hash: "0x5b1b6833cf2f199e8eacbdd8dd9058de59758ba87e9f3f05e273ad290313d42b", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_25.png", + type: "image", + }, + { + hash: "0x69a472be6e13e4a9b0308b676e4611d45612c684e544758a926b680d74f2a845", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_21.png", + type: "image", + }, + ], + target: "plane", + solution: [ + "0x2b2f347f9ab0799ee4c2f771c7b7e31489fbb03ba14ad609e23cc9ce87ebc40e", + "0x3d2b4cbb43eb98df71bc9ee3d7665e7937b17771718dd096342ccf9e199596e5", + "0x61c761e6d4ddd18a685ff1e807f0e078817c09ba1342c2f6621feabb0a1c8c42", + ], + }, + { + captchaId: + "0x8683a18e05a9eefb959ba41374f2ef208484079405e9c098910f9d9a4cf60ddf", + captchaContentId: + "0x466dcd81d4e1d271cf3b5b0cdacb7417119ce11b2843aea517eb3dda847392a9", + solved: true, + salt: "0x01010101010101010101010101010101", + items: [ + { + hash: "0x3d2b4cbb43eb98df71bc9ee3d7665e7937b17771718dd096342ccf9e199596e5", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_82.png", + type: "image", + }, + { + hash: "0xc0d85d32dffcbf5803e198c30f8fb09fdc9483d799a37383e89011da233744e0", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_78.png", + type: "image", + }, + { + hash: "0xc74ef4ec7a5f3d63fca003c0cc687540bf224450c4bc6cd8767b6eff4a4d8ab3", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_89.png", + type: "image", + }, + { + hash: "0x61c761e6d4ddd18a685ff1e807f0e078817c09ba1342c2f6621feabb0a1c8c42", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_61.png", + type: "image", + }, + { + hash: "0x2b2f347f9ab0799ee4c2f771c7b7e31489fbb03ba14ad609e23cc9ce87ebc40e", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_69.png", + type: "image", + }, + { + hash: "0x1bd28987173b26558d5a6abb3bbb7d411eebfdf5a54ff579b2720677883b7538", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_71.png", + type: "image", + }, + { + hash: "0x15a422800b166cde2e9d5ac4ab76bf06909737d7896246a5662f341b8b4f02dc", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_33.png", + type: "image", + }, + { + hash: "0x5b1b6833cf2f199e8eacbdd8dd9058de59758ba87e9f3f05e273ad290313d42b", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_25.png", + type: "image", + }, + { + hash: "0x69a472be6e13e4a9b0308b676e4611d45612c684e544758a926b680d74f2a845", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_21.png", + type: "image", + }, + ], + target: "car", + solution: [ + "0x1bd28987173b26558d5a6abb3bbb7d411eebfdf5a54ff579b2720677883b7538", + "0x5b1b6833cf2f199e8eacbdd8dd9058de59758ba87e9f3f05e273ad290313d42b", + "0xc74ef4ec7a5f3d63fca003c0cc687540bf224450c4bc6cd8767b6eff4a4d8ab3", + ], + }, + { + captchaId: + "0x43828174c4c62e82cd7be31465df33f10c6de4301d02feeff8ca15cc26ecd3bb", + captchaContentId: + "0xe286bba23407a9036b9e60eec7ea41ebfe7f2b1452443da1e9561909534c719d", + solved: true, + salt: "0x01010101010101010101010101010101", + items: [ + { + hash: "0xeba2c2c032639c02627f28c6fb77bdd48de56d7a7260f4898a2cfbaa916aa488", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_16.png", + type: "image", + }, + { + hash: "0xd0b4b9447604200567c67f635d19a1702c7392a42264e90b7f63816eb15adf8a", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_17.png", + type: "image", + }, + { + hash: "0xef306d5ae594772d9d5bb0729ff7f9ecdff016c21cd07ea9008856b16698dd06", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_27.png", + type: "image", + }, + { + hash: "0x15a422800b166cde2e9d5ac4ab76bf06909737d7896246a5662f341b8b4f02dc", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_33.png", + type: "image", + }, + { + hash: "0x68a2e06743e929bcfc69a298ed1222d4e098aa19850ef0a3d758136aa3862de6", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_40.png", + type: "image", + }, + { + hash: "0x0ff5e407e8964bc59be44e7c69e36ae4bec27e7b2cc4c9145f0d578ac81d2a70", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_52.png", + type: "image", + }, + { + hash: "0xc0d85d32dffcbf5803e198c30f8fb09fdc9483d799a37383e89011da233744e0", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_78.png", + type: "image", + }, + { + hash: "0x020202020202020202020202020202021a8d88f76f5f01251695a8e488f676dc970f1e2f7ab8af43b12d2b03b5ae54", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_93.png", + type: "image", + }, + { + hash: "0xacac4785d2d7e298af5479c771f3e3035207a47c814901a8c1c788ebee2c73e6", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_70.png", + type: "image", + }, + ], + target: "cat", + solution: [ + "0x020202020202020202020202020202021a8d88f76f5f01251695a8e488f676dc970f1e2f7ab8af43b12d2b03b5ae54", + "0x15a422800b166cde2e9d5ac4ab76bf06909737d7896246a5662f341b8b4f02dc", + "0xc0d85d32dffcbf5803e198c30f8fb09fdc9483d799a37383e89011da233744e0", + ], + }, + { + captchaId: + "0xfbc6d9acb0bc751f3a63682e1a960b74f97fd30b20b633b0acd39e2a4aba1a9c", + captchaContentId: + "0x452063fa194844cf1f8f622aa7de46b7c948b1fc38fe87426b3443487a5104ce", + solved: true, + salt: "0x02020202020202020202020202020202", + items: [ + { + hash: "0xeba2c2c032639c02627f28c6fb77bdd48de56d7a7260f4898a2cfbaa916aa488", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_16.png", + type: "image", + }, + { + hash: "0xd0b4b9447604200567c67f635d19a1702c7392a42264e90b7f63816eb15adf8a", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_17.png", + type: "image", + }, + { + hash: "0xef306d5ae594772d9d5bb0729ff7f9ecdff016c21cd07ea9008856b16698dd06", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_27.png", + type: "image", + }, + { + hash: "0x15a422800b166cde2e9d5ac4ab76bf06909737d7896246a5662f341b8b4f02dc", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_33.png", + type: "image", + }, + { + hash: "0x68a2e06743e929bcfc69a298ed1222d4e098aa19850ef0a3d758136aa3862de6", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_40.png", + type: "image", + }, + { + hash: "0x0ff5e407e8964bc59be44e7c69e36ae4bec27e7b2cc4c9145f0d578ac81d2a70", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_52.png", + type: "image", + }, + { + hash: "0xc0d85d32dffcbf5803e198c30f8fb09fdc9483d799a37383e89011da233744e0", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_78.png", + type: "image", + }, + { + hash: "0x020202020202020202020202020202021a8d88f76f5f01251695a8e488f676dc970f1e2f7ab8af43b12d2b03b5ae54", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_93.png", + type: "image", + }, + { + hash: "0xacac4785d2d7e298af5479c771f3e3035207a47c814901a8c1c788ebee2c73e6", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_70.png", + type: "image", + }, + ], + target: "deer", + solution: [ + "0x0ff5e407e8964bc59be44e7c69e36ae4bec27e7b2cc4c9145f0d578ac81d2a70", + "0xacac4785d2d7e298af5479c771f3e3035207a47c814901a8c1c788ebee2c73e6", + "0xd0b4b9447604200567c67f635d19a1702c7392a42264e90b7f63816eb15adf8a", + ], + }, + { + captchaId: + "0x59466eea239ed267b0a60ce0f28ec617834b6fbe41f5f38047f50de6539e659c", + captchaContentId: + "0x78374f5795a85c1ff01fc13e60da3992b7054bcc16945a0820e4a58ba881b9ed", + solved: true, + salt: "0x03030303030303030303030303030303", + items: [ + { + hash: "0xeba2c2c032639c02627f28c6fb77bdd48de56d7a7260f4898a2cfbaa916aa488", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_16.png", + type: "image", + }, + { + hash: "0xd0b4b9447604200567c67f635d19a1702c7392a42264e90b7f63816eb15adf8a", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_17.png", + type: "image", + }, + { + hash: "0xef306d5ae594772d9d5bb0729ff7f9ecdff016c21cd07ea9008856b16698dd06", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_27.png", + type: "image", + }, + { + hash: "0x15a422800b166cde2e9d5ac4ab76bf06909737d7896246a5662f341b8b4f02dc", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_33.png", + type: "image", + }, + { + hash: "0x68a2e06743e929bcfc69a298ed1222d4e098aa19850ef0a3d758136aa3862de6", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_40.png", + type: "image", + }, + { + hash: "0x0ff5e407e8964bc59be44e7c69e36ae4bec27e7b2cc4c9145f0d578ac81d2a70", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_52.png", + type: "image", + }, + { + hash: "0xc0d85d32dffcbf5803e198c30f8fb09fdc9483d799a37383e89011da233744e0", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_78.png", + type: "image", + }, + { + hash: "0x020202020202020202020202020202021a8d88f76f5f01251695a8e488f676dc970f1e2f7ab8af43b12d2b03b5ae54", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_93.png", + type: "image", + }, + { + hash: "0xacac4785d2d7e298af5479c771f3e3035207a47c814901a8c1c788ebee2c73e6", + data: "https://prosopo.github.io/demo-datasets/img/test_image_png_70.png", + type: "image", + }, + ], + target: "dog", + solution: [ + "0x68a2e06743e929bcfc69a298ed1222d4e098aa19850ef0a3d758136aa3862de6", + "0xeba2c2c032639c02627f28c6fb77bdd48de56d7a7260f4898a2cfbaa916aa488", + "0xef306d5ae594772d9d5bb0729ff7f9ecdff016c21cd07ea9008856b16698dd06", + ], + }, + ], } as DatasetWithIdsAndTree; // Replace the hashes in the solution items above with their index in the items array export const datasetWithIndexSolutions = { - ...datasetWithSolutionHashes, - captchas: datasetWithSolutionHashes.captchas.map((captcha, index) => ({ - ...captcha, - //for solution in captcha.solution, find the index of captcha.item with item.hash == solution - solution: captcha.solution?.map((solution) => - captcha.items.findIndex((item) => item.hash === solution), - ), - })), + ...datasetWithSolutionHashes, + captchas: datasetWithSolutionHashes.captchas.map((captcha, index) => ({ + ...captcha, + //for solution in captcha.solution, find the index of captcha.item with item.hash == solution + solution: captcha.solution?.map((solution) => + captcha.items.findIndex((item) => item.hash === solution), + ), + })), }; diff --git a/packages/provider/src/tests/integration/powCaptcha.test.ts b/packages/provider/src/tests/integration/powCaptcha.test.ts index 657fb04b7a..ebefd8f093 100644 --- a/packages/provider/src/tests/integration/powCaptcha.test.ts +++ b/packages/provider/src/tests/integration/powCaptcha.test.ts @@ -25,7 +25,10 @@ import { } from "@prosopo/types"; import fetch from "node-fetch"; import { describe, expect, it } from "vitest"; -import { dummyUserAccount } from "./mocks/solvedTestCaptchas.js"; +import { + dummyDappAccount, + dummyUserAccount, +} from "./mocks/solvedTestCaptchas.js"; // Define the endpoint path and base URL const baseUrl = "http://localhost:9229"; @@ -118,13 +121,18 @@ describe("PoW Integration Tests", () => { describe("SubmitPowCaptchaSolution", () => { it("should verify a correctly completed PoW captcha as true", async () => { const userPair = await getPairAsync( - undefined, dummyUserAccount.seed, undefined, "sr25519", 42, ); - const dappAccount = "dappAddress"; + const dappPair = await getPairAsync( + dummyDappAccount.seed, + undefined, + "sr25519", + 42, + ); + const dappAccount = dappPair.address; const origin = "http://localhost"; const requestBody: GetPowCaptchaChallengeRequestBodyType = { user: userPair.address, @@ -150,7 +158,6 @@ describe("PoW Integration Tests", () => { const nonce = solvePoW(challenge, difficulty); const verifiedTimeout = 120000; - const dapp = "5C7bfXYwachNuvmasEFtWi9BMS41uBvo6KpYHVSQmad4nWzw"; const submitBody: SubmitPowCaptchaSolutionBodyType = { challenge, difficulty, @@ -165,7 +172,7 @@ describe("PoW Integration Tests", () => { nonce, verifiedTimeout, user: userPair.address, - dapp, + dapp: dappAccount, }; const response = await fetch( `${baseUrl}${ApiPaths.SubmitPowCaptchaSolution}`, @@ -173,6 +180,7 @@ describe("PoW Integration Tests", () => { method: "POST", headers: { "Content-Type": "application/json", + Origin: origin, }, body: JSON.stringify(submitBody), }, @@ -188,7 +196,6 @@ describe("PoW Integration Tests", () => { it("should return false for incorrectly completed PoW captcha", async () => { const userPair = await getPairAsync( - undefined, dummyUserAccount.seed, undefined, "sr25519", @@ -246,12 +253,11 @@ describe("PoW Integration Tests", () => { }, ); - expect(response.status).toBe(400); + expect(response.status).toBe(200); - const data = response.statusText; - expect(data).toBe( - '"You answered one or more captchas incorrectly. Please try again"', - ); + const data = (await response.json()) as PowCaptchaSolutionResponse; + expect(data).toHaveProperty("verified"); + expect(data.verified).toBe(false); }); }); }); diff --git a/packages/provider/src/tests/unit/api/captchaScheduler.test.ts b/packages/provider/src/tests/unit/api/captchaScheduler.test.ts index b48c96ef31..dc4e3faefc 100644 --- a/packages/provider/src/tests/unit/api/captchaScheduler.test.ts +++ b/packages/provider/src/tests/unit/api/captchaScheduler.test.ts @@ -1,8 +1,3 @@ -import type { KeyringPair } from "@polkadot/keyring/types"; -import { ProsopoEnvError } from "@prosopo/common"; -import { ProviderEnvironment } from "@prosopo/env"; -import type { ProsopoConfigOutput } from "@prosopo/types"; -import { CronJob } from "cron"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -16,72 +11,80 @@ import { CronJob } from "cron"; // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + +import type { KeyringPair } from "@polkadot/keyring/types"; +import { ProviderEnvironment } from "@prosopo/env"; +import { ProsopoConfigOutput, ScheduledTaskNames } from "@prosopo/types"; +import { CronJob } from "cron"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { storeCaptchasExternally } from "../../../api/captchaScheduler.js"; import { Tasks } from "../../../tasks/tasks.js"; +import { ProsopoEnvError } from "@prosopo/common"; vi.mock("@prosopo/env", () => ({ - ProviderEnvironment: vi.fn().mockImplementation(() => ({ - isReady: vi.fn().mockResolvedValue(true), - logger: { - log: vi.fn(), - error: vi.fn(), - }, - db: {}, - })), + ProviderEnvironment: vi.fn().mockImplementation(() => ({ + isReady: vi.fn().mockResolvedValue(true), + logger: { + debug: vi.fn().mockImplementation(console.debug), + log: vi.fn().mockImplementation(console.log), + info: vi.fn().mockImplementation(console.info), + error: vi.fn().mockImplementation(console.error), + }, + getDb: vi.fn().mockReturnValue({ + getLastScheduledTaskStatus: vi.fn().mockResolvedValue(undefined), + }), + db: { + getLastScheduledTaskStatus: vi.fn().mockResolvedValue(undefined), + }, + })), })); vi.mock("../../../tasks/tasks.js", () => ({ - Tasks: vi.fn().mockImplementation(() => ({ - datasetManager: { - storeCommitmentsExternal: vi.fn().mockResolvedValue(undefined), - }, - })), + Tasks: vi.fn().mockImplementation(() => ({ + datasetManager: { + storeCommitmentsExternal: vi.fn().mockResolvedValue(undefined), + }, + })), })); vi.mock("cron", () => ({ - CronJob: vi.fn().mockImplementation((cronTime, onTick) => ({ - start: vi.fn().mockImplementation(onTick), - })), + CronJob: vi.fn().mockImplementation((cronTime, onTick) => ({ + start: vi.fn().mockImplementation(onTick), + })), })); -describe("storeCaptchasExternally", () => { - let mockPair: KeyringPair; - let mockConfig: ProsopoConfigOutput; - - beforeEach(() => { - mockPair = {} as KeyringPair; - mockConfig = {} as ProsopoConfigOutput; - }); +vi.mock("../../../util.js", () => ({ + checkIfTaskIsRunning: vi.fn().mockResolvedValue(false), +})); - it("should initialize environment and start cron job", async () => { - await storeCaptchasExternally(mockPair, mockConfig); +describe("storeCaptchasExternally", () => { + let mockPair: KeyringPair; + let mockConfig: ProsopoConfigOutput; - expect(ProviderEnvironment).toHaveBeenCalledWith(mockConfig, mockPair); - expect(Tasks).toHaveBeenCalled(); - expect(CronJob).toHaveBeenCalledWith("0 * * * *", expect.any(Function)); - }); + beforeEach(() => { + mockPair = {} as KeyringPair; + mockConfig = { + captchaScheduler: { + schedule: "0 * * * *", + }, + } as ProsopoConfigOutput; + }); - // it('should throw an error if db is undefined', async () => { - // ;(ProviderEnvironment as any).mockImplementationOnce(() => ({ - // isReady: vi.fn().mockResolvedValue(true), - // logger: { - // log: vi.fn(), - // error: vi.fn(), - // }, - // db: undefined, - // })) + it("should initialize environment and start cron job", async () => { + await storeCaptchasExternally(mockPair, mockConfig); - // await expect(storeCaptchasExternally(mockPair, mockConfig)).rejects.toThrow(ProsopoEnvError) - // }) + expect(ProviderEnvironment).toHaveBeenCalledWith(mockConfig, mockPair); + expect(Tasks).toHaveBeenCalled(); + expect(CronJob).toHaveBeenCalledWith("0 * * * *", expect.any(Function)); + }); - it("should log message when cron job runs", async () => { - await storeCaptchasExternally(mockPair, mockConfig); + it("should log message when cron job runs", async () => { + await storeCaptchasExternally(mockPair, mockConfig); - // biome-ignore lint/suspicious/noExplicitAny: TODO fix - const envInstance = (ProviderEnvironment as any).mock.results[0].value; - expect(envInstance.logger.log).toHaveBeenCalledWith( - "storeCommitmentsExternal task....", - ); - }); + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + const envInstance = (ProviderEnvironment as any).mock.results[0].value; + expect(envInstance.logger.info).toHaveBeenCalledWith( + "StoreCommitmentsExternal task running: false", + ); + }); }); diff --git a/packages/provider/src/tests/unit/tasks/dataset/datasetTasks.test.ts b/packages/provider/src/tests/unit/tasks/dataset/datasetTasks.test.ts index 5a1846b7f7..21db903a5a 100644 --- a/packages/provider/src/tests/unit/tasks/dataset/datasetTasks.test.ts +++ b/packages/provider/src/tests/unit/tasks/dataset/datasetTasks.test.ts @@ -1,13 +1,3 @@ -import type { Logger } from "@prosopo/common"; -import { saveCaptchaEvent, saveCaptchas } from "@prosopo/database"; -import { parseCaptchaDataset } from "@prosopo/datasets"; -import type { - CaptchaConfig, - DatasetRaw, - ProsopoConfigOutput, - StoredEvents, -} from "@prosopo/types"; -import type { Database } from "@prosopo/types-database"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -21,6 +11,24 @@ import type { Database } from "@prosopo/types-database"; // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + +import type { Logger } from "@prosopo/common"; +import { saveCaptchaEvent, saveCaptchas } from "@prosopo/database"; +import { parseCaptchaDataset } from "@prosopo/datasets"; +import { + CaptchaConfig, + DatasetRaw, + ProsopoConfigOutput, + ScheduledTaskNames, + ScheduledTaskStatus, + StoredEvents, +} from "@prosopo/types"; +import type { + Database, + PoWCaptchaStored, + ScheduledTaskRecord, + UserCommitmentRecord, +} from "@prosopo/types-database"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { DatasetManager } from "../../../../tasks/dataset/datasetTasks.js"; @@ -52,8 +60,9 @@ describe("DatasetManager", () => { } as ProsopoConfigOutput; logger = { - info: vi.fn(), - error: vi.fn(), + info: vi.fn().mockImplementation(console.info), + debug: vi.fn().mockImplementation(console.debug), + error: vi.fn().mockImplementation(console.error), } as unknown as Logger; captchaConfig = { @@ -67,6 +76,9 @@ describe("DatasetManager", () => { markDappUserCommitmentsStored: vi.fn(), markDappUserPoWCommitmentsStored: vi.fn(), getUnstoredDappUserPoWCommitments: vi.fn().mockResolvedValue([]), + createScheduledTaskStatus: vi.fn(), + updateScheduledTaskStatus: vi.fn(), + getLastScheduledTaskStatus: vi.fn().mockResolvedValue(undefined), } as unknown as Database; datasetManager = new DatasetManager(config, logger, captchaConfig, db); @@ -133,12 +145,26 @@ describe("DatasetManager", () => { }); it("should store commitments externally if mongoCaptchaUri is set", async () => { - const mockCommitments = [{ id: "commitment1" }]; - const mockPoWCommitments = [{ challenge: "challengeId" }]; + const mockCommitments: Pick[] = [ + { id: "commitment1" }, + ]; + const mockPoWCommitments: Pick[] = [ + { + challenge: "1234567___userAccount___dappAccount", + }, + ]; + // biome-ignore lint/suspicious/noExplicitAny: TODO fix (db.getUnstoredDappUserCommitments as any).mockResolvedValue( mockCommitments, ); + + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + (db.createScheduledTaskStatus as any).mockResolvedValue({}); + + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + (db.updateScheduledTaskStatus as any).mockResolvedValue({}); + // biome-ignore lint/suspicious/noExplicitAny: TODO fix (db.getUnstoredDappUserPoWCommitments as any).mockResolvedValue( mockPoWCommitments, @@ -160,4 +186,79 @@ describe("DatasetManager", () => { mockPoWCommitments.map((c) => c.challenge), ); }); + + it("should not store commitments externally if they have been stored", async () => { + const mockCommitments: Pick< + UserCommitmentRecord, + "id" | "lastUpdatedTimestamp" + >[] = [{ id: "commitment1", lastUpdatedTimestamp: 1 }]; + const mockPoWCommitments: Pick< + PoWCaptchaStored, + "challenge" | "lastUpdatedTimestamp" + >[] = [ + { + challenge: "1234567___userAccount___dappAccount", + lastUpdatedTimestamp: 3, + }, + ]; + const mockLastScheduledTask: Pick = { + updated: 2, + }; + const mockNewScheduledTask: Pick< + ScheduledTaskRecord, + "updated" | "processName" | "_id" + > = { + _id: "testID", + updated: 4, + processName: ScheduledTaskNames.StoreCommitmentsExternal, + }; + + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + (db.getUnstoredDappUserCommitments as any).mockResolvedValue( + mockCommitments, + ); + + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + (db.getUnstoredDappUserPoWCommitments as any).mockResolvedValue( + mockPoWCommitments, + ); + + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + (db.getLastScheduledTaskStatus as any).mockResolvedValue( + mockLastScheduledTask, + ); + + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + (db.createScheduledTaskStatus as any).mockResolvedValue( + mockNewScheduledTask._id, + ); + + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + (db.updateScheduledTaskStatus as any).mockResolvedValue({}); + + await datasetManager.storeCommitmentsExternal(); + + expect(db.getUnstoredDappUserCommitments).toHaveBeenCalled(); + expect(db.getUnstoredDappUserPoWCommitments).toHaveBeenCalled(); + expect(saveCaptchas).toHaveBeenCalledWith( + [], + mockPoWCommitments, + config.mongoCaptchaUri, + ); + expect(db.markDappUserCommitmentsStored).toHaveBeenCalledWith([]); + expect(db.markDappUserPoWCommitmentsStored).toHaveBeenCalledWith( + mockPoWCommitments.map((c) => c.challenge), + ); + + expect(db.updateScheduledTaskStatus).toHaveBeenCalledWith( + mockNewScheduledTask._id, + ScheduledTaskStatus.Completed, + { + data: { + commitments: [], + powRecords: mockPoWCommitments.map((c) => c.challenge), + }, + }, + ); + }); }); diff --git a/packages/provider/src/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.test.ts b/packages/provider/src/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.test.ts index 01c7310bd8..2ee8713c9d 100644 --- a/packages/provider/src/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.test.ts +++ b/packages/provider/src/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.test.ts @@ -12,11 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. import type { KeyringPair } from "@polkadot/keyring/types"; -import { hexToU8a, stringToHex, u8aToHex } from "@polkadot/util"; -import { randomAsHex, signatureVerify } from "@polkadot/util-crypto"; +import { u8aToHex } from "@polkadot/util"; +import { randomAsHex } from "@polkadot/util-crypto"; import { type Logger, ProsopoEnvError } from "@prosopo/common"; import { - compareCaptchaSolutions, computePendingRequestHash, parseAndSortCaptchaSolutions, } from "@prosopo/datasets"; @@ -26,7 +25,11 @@ import { CaptchaStatus, type PendingCaptchaRequest, } from "@prosopo/types"; -import type { Database, UserCommitmentRecord } from "@prosopo/types-database"; +import { + Database, + StoredStatusNames, + UserCommitmentRecord, +} from "@prosopo/types-database"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { ImgCaptchaManager } from "../../../../tasks/imgCaptcha/imgCaptchaTasks.js"; import { shuffleArray } from "../../../../util.js"; @@ -148,32 +151,35 @@ describe("ImgCaptchaManager", () => { const datasetId = "datasetId"; const userAccount = "userAccount"; const dataset = { datasetId, captchas: [] }; - + const ipAddress = "0.0.0.0"; // biome-ignore lint/suspicious/noExplicitAny: TODO fix (db.getDatasetDetails as any).mockResolvedValue(dataset); // biome-ignore lint/suspicious/noExplicitAny: TODO fix (db.getRandomCaptcha as any).mockResolvedValue([]); // biome-ignore lint/suspicious/noExplicitAny: TODO fix (randomAsHex as any).mockReturnValue("randomSalt"); // biome-ignore lint/suspicious/noExplicitAny: TODO fix (computePendingRequestHash as any).mockReturnValue("computedHash"); // biome-ignore lint/suspicious/noExplicitAny: TODO fix - (pair.sign as any).mockReturnValue("signedTimestamp"); // biome-ignore lint/suspicious/noExplicitAny: TODO fix - (u8aToHex as any).mockReturnValue("hexSignedTime"); // biome-ignore lint/suspicious/noExplicitAny: TODO fix + (pair.sign as any).mockReturnValue("hexSignedRequestHash"); // biome-ignore lint/suspicious/noExplicitAny: TODO fix + (u8aToHex as any).mockReturnValue("hexSignedRequestHash"); // biome-ignore lint/suspicious/noExplicitAny: TODO fix (shuffleArray as any).mockReturnValue([]); const result = await imgCaptchaManager.getRandomCaptchasAndRequestHash( datasetId, userAccount, + ipAddress, ); expect(result).toEqual({ captchas: [], requestHash: "computedHash", timestamp: expect.any(Number), - signedTimestamp: "hexSignedTime", + signedRequestHash: "hexSignedRequestHash", }); }); it("should throw an error if dataset details are not found", async () => { const datasetId = "datasetId"; const userAccount = "userAccount"; + const ipAddress = "0.0.0.0"; + // biome-ignore lint/suspicious/noExplicitAny: TODO fix (db.getDatasetDetails as any).mockResolvedValue(null); @@ -181,6 +187,7 @@ describe("ImgCaptchaManager", () => { imgCaptchaManager.getRandomCaptchasAndRequestHash( datasetId, userAccount, + ipAddress, ), ).rejects.toThrow( new ProsopoEnvError("DATABASE.DATASET_GET_FAILED", { @@ -303,17 +310,16 @@ describe("ImgCaptchaManager", () => { const dappUserCommitment: UserCommitmentRecord = { id: "commitmentId", userAccount: "userAccount", - dappContract: "dappContract", + dappAccount: "dappAccount", providerAccount: "providerAccount", datasetId: "datasetId", - status: CaptchaStatus.approved, - userSignature: [], - requestedAt: 0, - completedAt: 0, - processed: false, - batched: false, - stored: false, + result: { status: CaptchaStatus.approved }, + userSignature: "", + userSubmitted: true, + serverChecked: false, requestedAtTimestamp: 0, + ipAddress: "0.0.0.0", + lastUpdatedTimestamp: Date.now(), }; // biome-ignore lint/suspicious/noExplicitAny: TODO fix (db.getDappUserCommitmentById as any).mockResolvedValue(dappUserCommitment); @@ -343,21 +349,21 @@ describe("ImgCaptchaManager", () => { it("should get dapp user commitment by account", async () => { const userAccount = "userAccount"; + const dappAccount = "dappAccount"; const dappUserCommitments: UserCommitmentRecord[] = [ { id: "commitmentId", - userAccount: "userAccount", - dappContract: "dappContract", + userAccount, + dappAccount, providerAccount: "providerAccount", datasetId: "datasetId", - status: CaptchaStatus.approved, - userSignature: [], - requestedAt: 0, - completedAt: 0, - processed: false, - batched: false, - stored: false, + result: { status: CaptchaStatus.approved }, + userSignature: "", + userSubmitted: true, + serverChecked: false, requestedAtTimestamp: 0, + ipAddress: "0.0.0.0", + lastUpdatedTimestamp: Date.now(), }, ]; // biome-ignore lint/suspicious/noExplicitAny: TODO fix @@ -365,22 +371,27 @@ describe("ImgCaptchaManager", () => { dappUserCommitments, ); - const result = - await imgCaptchaManager.getDappUserCommitmentByAccount(userAccount); + const result = await imgCaptchaManager.getDappUserCommitmentByAccount( + userAccount, + dappAccount, + ); expect(result).toEqual(dappUserCommitments[0]); }); it("should return undefined if no approved dapp user commitment is found by account", async () => { const userAccount = "userAccount"; + const dappAccount = "dappAccount"; const dappUserCommitments: UserCommitmentRecord[] = []; // biome-ignore lint/suspicious/noExplicitAny: TODO fix (db.getDappUserCommitmentByAccount as any).mockResolvedValue( dappUserCommitments, ); - const result = - await imgCaptchaManager.getDappUserCommitmentByAccount(userAccount); + const result = await imgCaptchaManager.getDappUserCommitmentByAccount( + userAccount, + dappAccount, + ); expect(result).toBeUndefined(); }); diff --git a/packages/provider/src/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.test.ts b/packages/provider/src/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.test.ts index dccaa3d2ea..9edae456c7 100644 --- a/packages/provider/src/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.test.ts +++ b/packages/provider/src/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.test.ts @@ -1,9 +1,3 @@ -import { ProsopoEnvError } from "@prosopo/common"; -import { - CaptchaMerkleTree, - computeCaptchaSolutionHash, -} from "@prosopo/datasets"; -import type { CaptchaSolution } from "@prosopo/types"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -17,65 +11,71 @@ import type { CaptchaSolution } from "@prosopo/types"; // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. +import { ProsopoEnvError } from "@prosopo/common"; +import { + CaptchaMerkleTree, + computeCaptchaSolutionHash, +} from "@prosopo/datasets"; +import type { CaptchaSolution } from "@prosopo/types"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { buildTreeAndGetCommitmentId } from "../../../../tasks/imgCaptcha/imgCaptchaTasksUtils.js"; vi.mock("@prosopo/datasets", () => ({ - CaptchaMerkleTree: vi.fn().mockImplementation(() => ({ - build: vi.fn(), - root: { hash: "mockedRootHash" }, - })), - computeCaptchaSolutionHash: vi.fn(), + CaptchaMerkleTree: vi.fn().mockImplementation(() => ({ + build: vi.fn(), + root: { hash: "mockedRootHash" }, + })), + computeCaptchaSolutionHash: vi.fn(), })); describe("buildTreeAndGetCommitmentId", () => { - const mockCaptchaSolutions = [ - { challenge: "challenge1", solution: "solution1", salt: "salt1" }, - { challenge: "challenge2", solution: "solution2", salt: "salt2" }, - ] as unknown as CaptchaSolution[]; + const mockCaptchaSolutions = [ + { challenge: "challenge1", solution: "solution1", salt: "salt1" }, + { challenge: "challenge2", solution: "solution2", salt: "salt2" }, + ] as unknown as CaptchaSolution[]; - beforeEach(() => { - vi.clearAllMocks(); - }); + beforeEach(() => { + vi.clearAllMocks(); + }); - it("should build a tree and return the commitmentId", () => { - // biome-ignore lint/suspicious/noExplicitAny: TODO fix - (computeCaptchaSolutionHash as any) - .mockReturnValueOnce("hashedSolution1") - .mockReturnValueOnce("hashedSolution2"); + it("should build a tree and return the commitmentId", () => { + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + (computeCaptchaSolutionHash as any) + .mockReturnValueOnce("hashedSolution1") + .mockReturnValueOnce("hashedSolution2"); - const result = buildTreeAndGetCommitmentId(mockCaptchaSolutions); + const result = buildTreeAndGetCommitmentId(mockCaptchaSolutions); - expect(CaptchaMerkleTree).toHaveBeenCalled(); - expect(computeCaptchaSolutionHash).toHaveBeenCalledWith( - mockCaptchaSolutions[0], - ); - expect(computeCaptchaSolutionHash).toHaveBeenCalledWith( - mockCaptchaSolutions[1], - ); - expect(result).toEqual({ - tree: expect.any(Object), - commitmentId: "mockedRootHash", - }); - }); + expect(CaptchaMerkleTree).toHaveBeenCalled(); + expect(computeCaptchaSolutionHash).toHaveBeenCalledWith( + mockCaptchaSolutions[0], + ); + expect(computeCaptchaSolutionHash).toHaveBeenCalledWith( + mockCaptchaSolutions[1], + ); + expect(result).toEqual({ + tree: expect.any(Object), + commitmentId: "mockedRootHash", + }); + }); - it("should throw an error if commitmentId does not exist", () => { - // biome-ignore lint/suspicious/noExplicitAny: TODO fix - (CaptchaMerkleTree as any).mockImplementation(() => ({ - build: vi.fn(), - root: { hash: null }, - })); + it("should throw an error if commitmentId does not exist", () => { + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + (CaptchaMerkleTree as any).mockImplementation(() => ({ + build: vi.fn(), + root: { hash: null }, + })); - expect(() => buildTreeAndGetCommitmentId(mockCaptchaSolutions)).toThrow( - new ProsopoEnvError( - "CONTRACT.CAPTCHA_SOLUTION_COMMITMENT_DOES_NOT_EXIST", - { - context: { - failedFuncName: "buildTreeAndGetCommitmentId", - commitmentId: null, - }, - }, - ), - ); - }); + expect(() => buildTreeAndGetCommitmentId(mockCaptchaSolutions)).toThrow( + new ProsopoEnvError( + "CONTRACT.CAPTCHA_SOLUTION_COMMITMENT_DOES_NOT_EXIST", + { + context: { + failedFuncName: "buildTreeAndGetCommitmentId", + commitmentId: null, + }, + }, + ), + ); + }); }); diff --git a/packages/provider/src/tests/unit/tasks/powCaptcha/powTasks.test.ts b/packages/provider/src/tests/unit/tasks/powCaptcha/powTasks.test.ts index ef39906e35..fb039c14a1 100644 --- a/packages/provider/src/tests/unit/tasks/powCaptcha/powTasks.test.ts +++ b/packages/provider/src/tests/unit/tasks/powCaptcha/powTasks.test.ts @@ -14,15 +14,20 @@ import type { KeyringPair } from "@polkadot/keyring/types"; import { stringToHex, u8aToHex } from "@polkadot/util"; +import { verifyRecency } from "@prosopo/util"; import { ProsopoEnvError } from "@prosopo/common"; -import { ApiParams, POW_SEPARATOR, PoWChallengeId } from "@prosopo/types"; -import type { Database } from "@prosopo/types-database"; +import { + ApiParams, + CaptchaStatus, + POW_SEPARATOR, + PoWChallengeId, +} from "@prosopo/types"; +import { Database, PoWCaptchaStored } from "@prosopo/types-database"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { PowCaptchaManager } from "../../../../tasks/powCaptcha/powTasks.js"; import { checkPowSignature, - checkPowSolution, - checkRecentPowSolution, + validateSolution, } from "../../../../tasks/powCaptcha/powTasksUtils.js"; vi.mock("@polkadot/util-crypto", () => ({ @@ -34,10 +39,17 @@ vi.mock("@polkadot/util", () => ({ stringToHex: vi.fn(), })); +vi.mock("@prosopo/util", async (importOriginal) => { + const actual = (await importOriginal()) as Record; + return { + ...actual, + verifyRecency: vi.fn(), + }; +}); + vi.mock("../../../../tasks/powCaptcha/powTasksUtils.js", () => ({ - checkRecentPowSolution: vi.fn(), checkPowSignature: vi.fn(), - checkPowSolution: vi.fn(), + validateSolution: vi.fn(), })); describe("PowCaptchaManager", () => { @@ -50,6 +62,7 @@ describe("PowCaptchaManager", () => { storePowCaptchaRecord: vi.fn(), getPowCaptchaRecordByChallenge: vi.fn(), updatePowCaptchaRecord: vi.fn(), + markDappUserPoWCommitmentsChecked: vi.fn(), } as unknown as Database; pair = { @@ -84,60 +97,114 @@ describe("PowCaptchaManager", () => { expect(result.challenge.match(challengeRegExp)).toBeTruthy(); expect(result.difficulty).toEqual(4); - expect(result.signature).toEqual("hexSignedChallenge"); + expect(result.providerSignature).toEqual("hexSignedChallenge"); expect(pair.sign).toHaveBeenCalledWith(stringToHex(result.challenge)); }); }); describe("verifyPowCaptchaSolution", () => { it("should verify a valid PoW captcha solution", async () => { - const timestamp = 123456789; + const requestedAtTimestamp = 123456789; const userAccount = "testUserAccount"; - const challenge: PoWChallengeId = `${timestamp}${POW_SEPARATOR}${userAccount}${POW_SEPARATOR}${pair.address}`; + const challenge: PoWChallengeId = `${requestedAtTimestamp}${POW_SEPARATOR}${userAccount}${POW_SEPARATOR}${pair.address}`; const difficulty = 4; - const signature = "testSignature"; - const timestampSignature = "testTimestampSignature"; + const providerSignature = "testSignature"; + const userSignature = "testTimestampSignature"; const nonce = 12345; const timeout = 1000; + const ipAddress = "ipAddress"; + const challengeRecord: PoWCaptchaStored = { + challenge, + difficulty, + dappAccount: pair.address, + userAccount, + requestedAtTimestamp, + result: { status: CaptchaStatus.pending }, + userSubmitted: false, + serverChecked: false, + ipAddress, + providerSignature, + lastUpdatedTimestamp: Date.now(), + }; // biome-ignore lint/suspicious/noExplicitAny: TODO fix - (checkRecentPowSolution as any).mockImplementation(() => true); + (verifyRecency as any).mockImplementation(() => true); // biome-ignore lint/suspicious/noExplicitAny: TODO fix (checkPowSignature as any).mockImplementation(() => true); // biome-ignore lint/suspicious/noExplicitAny: TODO fix - (checkPowSolution as any).mockImplementation(() => true); + (validateSolution as any).mockImplementation(() => true); + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + (db.getPowCaptchaRecordByChallenge as any).mockResolvedValue( + challengeRecord, + ); + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + (db.updatePowCaptchaRecord as any).mockResolvedValue(true); // biome-ignore lint/suspicious/noExplicitAny: TODO fix + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + (db.markDappUserPoWCommitmentsChecked as any).mockResolvedValue(true); - const result = await powCaptchaManager.verifyPowCaptchaSolution( + const verifyPowCaptchaSolutionArgs: Parameters< + typeof powCaptchaManager.verifyPowCaptchaSolution + > = [ challenge, difficulty, - signature, + providerSignature, nonce, timeout, - timestampSignature, + userSignature, + ipAddress, + ]; + + const result = await powCaptchaManager.verifyPowCaptchaSolution( + ...verifyPowCaptchaSolutionArgs, ); expect(result).toBe(true); - expect(checkRecentPowSolution).toHaveBeenCalledWith(challenge, timeout); - expect(checkPowSignature).toHaveBeenCalledWith( - timestamp.toString(), - timestampSignature, + + // Will cause build to fail if args change + const verifyRecencyArgs: Parameters = [ + challenge, + timeout, + ]; + + expect(verifyRecency).toHaveBeenCalledWith(...verifyRecencyArgs); + + const checKPowSignatureArgs1: Parameters = [ + requestedAtTimestamp.toString(), + userSignature, userAccount, ApiParams.timestamp, - ); - expect(checkPowSignature).toHaveBeenCalledWith( + ]; + + expect(checkPowSignature).toHaveBeenCalledWith(...checKPowSignatureArgs1); + + const checKPowSignatureArgs2: Parameters = [ challenge, - signature, + providerSignature, pair.address, ApiParams.challenge, - ); - expect(checkPowSolution).toHaveBeenCalledWith( + ]; + + expect(checkPowSignature).toHaveBeenCalledWith(...checKPowSignatureArgs2); + + const validateSolutionArgs: Parameters = [ nonce, challenge, difficulty, - ); - expect(db.storePowCaptchaRecord).toHaveBeenCalledWith( + ]; + + expect(validateSolution).toHaveBeenCalledWith(...validateSolutionArgs); + + const updatePowCaptchaRecordArgs: Parameters< + typeof db.updatePowCaptchaRecord + > = [ challenge, - { timestamp, userAccount, dappAccount: pair.address }, + { status: CaptchaStatus.approved }, false, + true, + userSignature, + ]; + + expect(db.updatePowCaptchaRecord).toHaveBeenCalledWith( + ...updatePowCaptchaRecordArgs, ); }); @@ -148,33 +215,45 @@ describe("PowCaptchaManager", () => { const nonce = 12345; const timeout = 1000; const timestampSignature = "testTimestampSignature"; + const ipAddress = "ipAddress"; + const challengeRecord: PoWCaptchaStored = { + challenge, + dappAccount: pair.address, + userAccount: "testUserAccount", + requestedAtTimestamp: 12345, + result: { status: CaptchaStatus.pending }, + userSubmitted: false, + serverChecked: false, + ipAddress, + providerSignature: "testSignature", + difficulty, + lastUpdatedTimestamp: 0, + }; // biome-ignore lint/suspicious/noExplicitAny: TODO fix - (checkRecentPowSolution as any).mockImplementation(() => { - throw new ProsopoEnvError("CAPTCHA.INVALID_CAPTCHA_CHALLENGE", { - context: { - failedFuncName: "verifyPowCaptchaSolution", - }, - }); + (verifyRecency as any).mockImplementation(() => { + return true; }); - await expect( - powCaptchaManager.verifyPowCaptchaSolution( + (db.getPowCaptchaRecordByChallenge as any).mockResolvedValue( + challengeRecord, + ); + + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + (validateSolution as any).mockImplementation(() => false); + + expect( + await powCaptchaManager.verifyPowCaptchaSolution( challenge, difficulty, signature, nonce, timeout, timestampSignature, + ipAddress, ), - ).rejects.toThrow( - new ProsopoEnvError("CAPTCHA.INVALID_CAPTCHA_CHALLENGE", { - context: { - failedFuncName: "verifyPowCaptchaSolution", - }, - }), - ); + ).toBe(false); - expect(checkRecentPowSolution).toHaveBeenCalledWith(challenge, timeout); + expect(verifyRecency).toHaveBeenCalledWith(challenge, timeout); }); }); @@ -195,8 +274,9 @@ describe("PowCaptchaManager", () => { // biome-ignore lint/suspicious/noExplicitAny: TODO fix (db.getPowCaptchaRecordByChallenge as any).mockResolvedValue( challengeRecord, - ); // biome-ignore lint/suspicious/noExplicitAny: TODO fix - (checkRecentPowSolution as any).mockImplementation(() => true); + ); + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + (verifyRecency as any).mockImplementation(() => true); const result = await powCaptchaManager.serverVerifyPowCaptchaSolution( dappAccount, @@ -206,8 +286,15 @@ describe("PowCaptchaManager", () => { expect(result).toBe(true); expect(db.getPowCaptchaRecordByChallenge).toHaveBeenCalledWith(challenge); - expect(checkRecentPowSolution).toHaveBeenCalledWith(challenge, timeout); - expect(db.updatePowCaptchaRecord).toHaveBeenCalledWith(challenge, true); + expect(verifyRecency).toHaveBeenCalledWith(challenge, timeout); + + const markDappUserPoWCommitmentsCheckedArgs: Parameters< + typeof db.markDappUserPoWCommitmentsChecked + > = [[challenge]]; + + expect(db.markDappUserPoWCommitmentsChecked).toHaveBeenCalledWith( + ...markDappUserPoWCommitmentsCheckedArgs, + ); }); it("should throw an error if challenge record is not found", async () => { diff --git a/packages/provider/src/tests/unit/tasks/powCaptcha/powTasksUtils.test.ts b/packages/provider/src/tests/unit/tasks/powCaptcha/powTasksUtils.test.ts index 9c702e3399..03cf2ffbd6 100644 --- a/packages/provider/src/tests/unit/tasks/powCaptcha/powTasksUtils.test.ts +++ b/packages/provider/src/tests/unit/tasks/powCaptcha/powTasksUtils.test.ts @@ -1,6 +1,3 @@ -import { signatureVerify } from "@polkadot/util-crypto"; -import { ProsopoContractError } from "@prosopo/common"; -import { verifyRecency } from "@prosopo/contract"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -14,132 +11,92 @@ import { verifyRecency } from "@prosopo/contract"; // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + +import { signatureVerify } from "@polkadot/util-crypto"; +import { ProsopoContractError } from "@prosopo/common"; import { describe, expect, it, vi } from "vitest"; import { - checkPowSignature, - checkPowSolution, - checkRecentPowSolution, - validateSolution, + checkPowSignature, + validateSolution, } from "../../../../tasks/powCaptcha/powTasksUtils.js"; +import { verifyRecency } from "@prosopo/util"; vi.mock("@polkadot/util-crypto", () => ({ - signatureVerify: vi.fn(), + signatureVerify: vi.fn(), })); -vi.mock("@prosopo/contract", () => ({ - verifyRecency: vi.fn(), +vi.mock("@prosopo/util", () => ({ + verifyRecency: vi.fn(), })); describe("Validation Functions", () => { - describe("validateSolution", () => { - it("should return true for a valid solution", () => { - const nonce = 377; - const challenge = - "6678154___aZZW9CeVFStJw3si91CXBqaEsGR1sk6h1bBEecJ4EBaSgsx___5C7bfXYwachNuvmasEFtWi9BMS41uBvo6KpYHVSQmad4nWzw"; - const difficulty = 4; - const validSolution = validateSolution(nonce, challenge, difficulty); - expect(validSolution).toBe(true); - }); - - it("should return false for an invalid solution", () => { - const nonce = 0; - const challenge = "testChallenge"; - const difficulty = 10; - const validSolution = validateSolution(nonce, challenge, difficulty); - expect(validSolution).toBe(false); - }); - }); - - describe("checkPowSolution", () => { - it("should not throw an error for a valid solution", () => { - const nonce = 377; - const challenge = - "6678154___aZZW9CeVFStJw3si91CXBqaEsGR1sk6h1bBEecJ4EBaSgsx___5C7bfXYwachNuvmasEFtWi9BMS41uBvo6KpYHVSQmad4nWzw"; - const difficulty = 4; - expect(() => - checkPowSolution(nonce, challenge, difficulty), - ).not.toThrow(); - }); - - it("should throw an error for an invalid solution", () => { - const nonce = 0; - const challenge = "testChallenge"; - const difficulty = 10; - expect(() => checkPowSolution(nonce, challenge, difficulty)).toThrow( - new ProsopoContractError("API.CAPTCHA_FAILED", { - context: { - ERROR: "Captcha solution is invalid", - failedFuncName: "checkPowSolution", - nonce, - challenge, - difficulty, - }, - }), - ); - }); - }); - - describe("checkPowSignature", () => { - it("should not throw an error for a valid signature", () => { - const challenge = "testChallenge"; - const signature = "testSignature"; - const providerAddress = "testAddress"; - // biome-ignore lint/suspicious/noExplicitAny: TODO fix - (signatureVerify as any).mockReturnValueOnce({ isValid: true }); + describe("validateSolution", () => { + it("should return true for a valid solution", () => { + const nonce = 377; + const challenge = + "6678154___aZZW9CeVFStJw3si91CXBqaEsGR1sk6h1bBEecJ4EBaSgsx___5C7bfXYwachNuvmasEFtWi9BMS41uBvo6KpYHVSQmad4nWzw"; + const difficulty = 4; + const validSolution = validateSolution(nonce, challenge, difficulty); + expect(validSolution).toBe(true); + }); - expect(() => - checkPowSignature(challenge, signature, providerAddress), - ).not.toThrow(); - }); + it("should return false for an invalid solution", () => { + const nonce = 0; + const challenge = "testChallenge"; + const difficulty = 10; + const validSolution = validateSolution(nonce, challenge, difficulty); + expect(validSolution).toBe(false); + }); + }); - it("should throw an error for an invalid signature", () => { - const challenge = "testChallenge"; - const signature = "testSignature"; - const providerAddress = "testAddress"; - // biome-ignore lint/suspicious/noExplicitAny: TODO fix - (signatureVerify as any).mockReturnValueOnce({ isValid: false }); + describe("checkPowSolution", () => { + it("should return true for a valid solution", () => { + const nonce = 377; + const challenge = + "6678154___aZZW9CeVFStJw3si91CXBqaEsGR1sk6h1bBEecJ4EBaSgsx___5C7bfXYwachNuvmasEFtWi9BMS41uBvo6KpYHVSQmad4nWzw"; + const difficulty = 4; + expect(validateSolution(nonce, challenge, difficulty)).to.be.true; + }); - expect(() => - checkPowSignature(challenge, signature, providerAddress), - ).toThrow( - new ProsopoContractError("GENERAL.INVALID_SIGNATURE", { - context: { - ERROR: "Provider signature is invalid for this message", - failedFuncName: "checkPowSignature", - signature, - }, - }), - ); - }); - }); + it("should throw an error for an invalid solution", () => { + const nonce = 0; + const challenge = "testChallenge"; + const difficulty = 10; + expect(validateSolution(nonce, challenge, difficulty)).to.be.false; + }); + }); - describe("checkRecentPowSolution", () => { - it("should not throw an error for a recent solution", () => { - const challenge = "testChallenge"; - const timeout = 1000; - // biome-ignore lint/suspicious/noExplicitAny: TODO fix - (verifyRecency as any).mockReturnValueOnce(true); + describe("checkPowSignature", () => { + it("should not throw an error for a valid signature", () => { + const challenge = "testChallenge"; + const signature = "testSignature"; + const providerAddress = "testAddress"; + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + (signatureVerify as any).mockReturnValueOnce({ isValid: true }); - expect(() => checkRecentPowSolution(challenge, timeout)).not.toThrow(); - }); + expect(() => + checkPowSignature(challenge, signature, providerAddress), + ).not.toThrow(); + }); - it("should throw an error for a non-recent solution", () => { - const challenge = "testChallenge"; - const timeout = 1000; - // biome-ignore lint/suspicious/noExplicitAny: TODO fix - (verifyRecency as any).mockReturnValueOnce(false); + it("should throw an error for an invalid signature", () => { + const challenge = "testChallenge"; + const signature = "testSignature"; + const providerAddress = "testAddress"; + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + (signatureVerify as any).mockReturnValueOnce({ isValid: false }); - expect(() => checkRecentPowSolution(challenge, timeout)).toThrow( - new ProsopoContractError("CONTRACT.INVALID_BLOCKHASH", { - context: { - ERROR: `Block in which the Provider was selected must be within the last ${ - timeout / 1000 - } seconds`, - failedFuncName: "checkRecentPowSolution", - challenge, - }, - }), - ); - }); - }); + expect(() => + checkPowSignature(challenge, signature, providerAddress), + ).toThrow( + new ProsopoContractError("GENERAL.INVALID_SIGNATURE", { + context: { + ERROR: "Provider signature is invalid for this message", + failedFuncName: "checkPowSignature", + signature, + }, + }), + ); + }); + }); }); diff --git a/packages/provider/src/util.ts b/packages/provider/src/util.ts index c27a35adae..c905fdd531 100644 --- a/packages/provider/src/util.ts +++ b/packages/provider/src/util.ts @@ -2,7 +2,6 @@ import { decodeAddress, encodeAddress } from "@polkadot/util-crypto/address"; import { hexToU8a } from "@polkadot/util/hex"; import { isHex } from "@polkadot/util/is"; import { ProsopoContractError } from "@prosopo/common"; -import { type ScheduledTaskNames, ScheduledTaskStatus } from "@prosopo/types"; // Copyright 2021-2024 Prosopo (UK) Ltd. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -16,92 +15,53 @@ import { type ScheduledTaskNames, ScheduledTaskStatus } from "@prosopo/types"; // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + +import { type ScheduledTaskNames, ScheduledTaskStatus } from "@prosopo/types"; import type { Database } from "@prosopo/types-database"; import { at } from "@prosopo/util"; export function encodeStringAddress(address: string) { - try { - return encodeAddress( - isHex(address) ? hexToU8a(address) : decodeAddress(address), - ); - } catch (err) { - throw new ProsopoContractError("CONTRACT.INVALID_ADDRESS", { - context: { address }, - }); - } + try { + return encodeAddress( + isHex(address) ? hexToU8a(address) : decodeAddress(address), + ); + } catch (err) { + throw new ProsopoContractError("CONTRACT.INVALID_ADDRESS", { + context: { address }, + }); + } } export function shuffleArray(array: T[]): T[] { - for (let arrayIndex = array.length - 1; arrayIndex > 0; arrayIndex--) { - const randIndex = Math.floor(Math.random() * (arrayIndex + 1)); - const tmp = at(array, randIndex); - array[randIndex] = at(array, arrayIndex); - array[arrayIndex] = tmp; - } - return array; -} - -type PromiseQueueRes = { - data?: T; - error?: Error; -}[]; - -/** - * Executes promises in order - * @param array - array of promises - * @returns PromiseQueueRes\ - */ -export async function promiseQueue( - array: (() => Promise)[], -): Promise> { - const ret: PromiseQueueRes = []; - - await [...array, () => Promise.resolve(undefined)].reduce( - (promise, curr, i) => { - return promise - .then((res) => { - // first iteration has no res (initial reduce result) - if (res) { - ret.push({ data: res }); - } - // biome-ignore lint/suspicious/noExplicitAny: TODO fix - return curr() as any; - }) - .catch((err) => { - ret.push({ data: err }); - return curr(); - }); - }, - Promise.resolve(undefined), - ); - - return ret; -} - -export function parseBlockNumber(blockNumberString: string) { - return Number.parseInt(blockNumberString.replace(/,/g, "")); + for (let arrayIndex = array.length - 1; arrayIndex > 0; arrayIndex--) { + const randIndex = Math.floor(Math.random() * (arrayIndex + 1)); + const tmp = at(array, randIndex); + array[randIndex] = at(array, arrayIndex); + array[arrayIndex] = tmp; + } + return array; } /** - * Check if there is a batch running. - * If the batch task is running and not completed, return true. - * If the batch task is running and completed, return false. - * Otherwise, the batch task is not running, return false. + * Check if there is a scheduled task running. + * If the scheduled task is running and not completed, return true. + * If the scheduled task is running and completed, return false. + * Otherwise, the scheduled task is not running, return false. */ export async function checkIfTaskIsRunning( - taskName: ScheduledTaskNames, - db: Database, + taskName: ScheduledTaskNames, + db: Database, ): Promise { - const runningTask = await db.getLastScheduledTaskStatus( - taskName, - ScheduledTaskStatus.Running, - ); - if (runningTask) { - const completedTask = await db.getScheduledTaskStatus( - runningTask.taskId, - ScheduledTaskStatus.Completed, - ); - return !completedTask; - } - return false; + const runningTask = await db.getLastScheduledTaskStatus( + taskName, + ScheduledTaskStatus.Running, + ); + if (runningTask) { + const completedTask = await db.getScheduledTaskStatus( + runningTask.id, + ScheduledTaskStatus.Completed, + ); + return !completedTask; + } + return false; } diff --git a/packages/server/package.json b/packages/server/package.json index e85e3f1aae..4cefc77f37 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,50 +1,50 @@ { - "name": "@prosopo/server", - "version": "2.0.1", - "description": "NodeJS package for server side communication with the prosopo captcha client", - "main": "./dist/index.js", - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/prosopo/captcha.git" - }, - "author": "PROSOPO LIMITED", - "license": "Apache-2.0", - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "sideEffects": false, - "dependencies": { - "@polkadot/api": "10.13.1", - "@polkadot/keyring": "12.6.2", - "@polkadot/rpc-provider": "10.13.1", - "@polkadot/util": "12.6.2", - "@prosopo/api": "2.0.1", - "@prosopo/common": "2.0.1", - "@prosopo/contract": "2.0.1", - "@prosopo/util": "2.0.1", - "@prosopo/types": "2.0.1" - }, - "devDependencies": { - "@prosopo/config": "2.0.1", - "tslib": "2.6.2", - "typescript": "5.1.6" - } + "name": "@prosopo/server", + "version": "2.0.2", + "description": "NodeJS package for server side communication with the prosopo captcha client", + "main": "./dist/index.js", + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/prosopo/captcha.git" + }, + "author": "PROSOPO LIMITED", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "sideEffects": false, + "dependencies": { + "@polkadot/api": "10.13.1", + "@polkadot/keyring": "12.6.2", + "@polkadot/rpc-provider": "10.13.1", + "@polkadot/util": "12.6.2", + "@prosopo/api": "2.0.2", + "@prosopo/common": "2.0.2", + "@prosopo/contract": "2.0.2", + "@prosopo/util": "2.0.2", + "@prosopo/types": "2.0.2" + }, + "devDependencies": { + "@prosopo/config": "2.0.2", + "tslib": "2.6.2", + "typescript": "5.1.6" + } } diff --git a/packages/server/src/config.ts b/packages/server/src/config.ts index f2e665fe99..9e5cc61b83 100644 --- a/packages/server/src/config.ts +++ b/packages/server/src/config.ts @@ -16,7 +16,6 @@ import { ProsopoServerConfigSchema } from "@prosopo/types"; export const getServerConfig = () => ProsopoServerConfigSchema.parse({ defaultEnvironment: process.env.PROSOPO_DEFAULT_ENVIRONMENT, // enviromental variables - defaultNetwork: process.env.PROSOPO_DEFAULT_NETWORK, serverUrl: getServerUrl(), dappName: process.env.PROSOPO_DAPP_NAME || "client-example-server", account: { diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts index 1337880c21..0f9d321af5 100644 --- a/packages/server/src/index.ts +++ b/packages/server/src/index.ts @@ -21,7 +21,6 @@ export const PublicProsopoServer = async ( ) => { // if site key is '' then it will burn address const pair = await getPairAsync( - config.networks[config.defaultNetwork], undefined, config.account.address, ); diff --git a/packages/server/src/server.ts b/packages/server/src/server.ts index b580d139b5..1b5083405e 100644 --- a/packages/server/src/server.ts +++ b/packages/server/src/server.ts @@ -20,63 +20,46 @@ import { type Logger, ProsopoApiError, ProsopoContractError, - ProsopoEnvError, getLogger, } from "@prosopo/common"; import { type CaptchaTimeoutOutput, - ContractAbi, - type NetworkConfig, - NetworkNamesSchema, ProcaptchaOutputSchema, type ProcaptchaToken, type ProsopoServerConfigOutput, } from "@prosopo/types"; import { decodeProcaptchaOutput } from "@prosopo/types"; -import { get } from "@prosopo/util"; export class ProsopoServer { config: ProsopoServerConfigOutput; - prosopoContractAddress: string; - dappContractAddress: string | undefined; + dappAccount: string | undefined; defaultEnvironment: string; - contractName: string; logger: Logger; keyring: Keyring; pair: KeyringPair | undefined; - network: NetworkConfig; constructor(config: ProsopoServerConfigOutput, pair?: KeyringPair) { this.config = config; this.pair = pair; this.defaultEnvironment = this.config.defaultEnvironment; - const networkName = NetworkNamesSchema.parse(this.config.defaultNetwork); - this.network = get(this.config.networks, networkName); - this.prosopoContractAddress = this.network.contract.address; - this.dappContractAddress = this.config.account.address; - this.contractName = this.network.contract.name; + this.dappAccount = this.config.account.address; this.logger = getLogger( this.config.logLevel as unknown as LogLevel, "@prosopo/server", ); this.keyring = new Keyring({ - type: "sr25519", // TODO get this from the chain + type: "sr25519", }); } getProviderApi(providerUrl: string): ProviderApi { - return new ProviderApi( - this.network, - providerUrl, - this.dappContractAddress || "", - ); + return new ProviderApi(providerUrl, this.dappAccount || ""); } /** * Verify the user with the provider URL passed in. If a challenge is provided, we use the challenge to verify the * user. If not, we use the user, dapp, and optionally the commitmentID, to verify the user. * @param token - * @param blockNumber * @param timeouts * @param providerUrl * @param timestamp @@ -84,23 +67,21 @@ export class ProsopoServer { */ public async verifyProvider( token: string, - blockNumber: number, timeouts: CaptchaTimeoutOutput, providerUrl: string, timestamp: number, challenge?: string, ) { this.logger.info("Verifying with provider."); - const blockNumberString = blockNumber.toString(); - const dappUserSignature = this.pair?.sign(blockNumberString); + const dappUserSignature = this.pair?.sign(timestamp.toString()); if (!dappUserSignature) { - throw new ProsopoContractError("CAPTCHA.INVALID_BLOCK_NO", { - context: { error: "Block number not found" }, + throw new ProsopoContractError("CAPTCHA.INVALID_TIMESTAMP", { + context: { error: "Timestamp not found" }, }); } const signatureHex = u8aToHex(dappUserSignature); - const providerApi = await this.getProviderApi(providerUrl); + const providerApi = this.getProviderApi(providerUrl); if (challenge) { const powTimeout = this.config.timeouts.pow.cachedTimeout; const recent = timestamp ? Date.now() - timestamp < powTimeout : false; @@ -142,13 +123,12 @@ export class ProsopoServer { const payload = decodeProcaptchaOutput(token); - const { providerUrl, blockNumber, challenge, timestamp } = + const { providerUrl, challenge, timestamp } = ProcaptchaOutputSchema.parse(payload); if (providerUrl) { return await this.verifyProvider( token, - blockNumber, this.config.timeouts, providerUrl, Number(timestamp), diff --git a/packages/tx/package.json b/packages/tx/package.json index f212762247..b34d277ed5 100644 --- a/packages/tx/package.json +++ b/packages/tx/package.json @@ -1,67 +1,67 @@ { - "name": "@prosopo/tx", - "version": "2.0.1", - "author": "PROSOPO LIMITED ", - "license": "Apache-2.0", - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build" - }, - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "files": [ - "dist" - ], - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "typesVersions": { - "*": { - "types": [ - "dist/types" - ], - "captcha": [ - "dist/captcha" - ] - } - }, - "dependencies": { - "@polkadot/api": "10.13.1", - "@polkadot/api-contract": "10.13.1", - "@polkadot/api-augment": "10.13.1", - "@polkadot/keyring": "12.6.2", - "@polkadot/types": "10.13.1", - "@polkadot/types-codec": "10.13.1", - "@polkadot/util": "12.6.2", - "@prosopo/common": "2.0.1", - "@prosopo/types": "2.0.1" - }, - "devDependencies": { - "@prosopo/config": "2.0.1", - "tslib": "2.6.2", - "typescript": "5.1.6" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/prosopo/captcha.git" - }, - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "publishConfig": { - "registry": "https://registry.npmjs.org" - }, - "description": "", - "sideEffects": false + "name": "@prosopo/tx", + "version": "2.0.2", + "author": "PROSOPO LIMITED ", + "license": "Apache-2.0", + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build" + }, + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "typesVersions": { + "*": { + "types": [ + "dist/types" + ], + "captcha": [ + "dist/captcha" + ] + } + }, + "dependencies": { + "@polkadot/api": "10.13.1", + "@polkadot/api-contract": "10.13.1", + "@polkadot/api-augment": "10.13.1", + "@polkadot/keyring": "12.6.2", + "@polkadot/types": "10.13.1", + "@polkadot/types-codec": "10.13.1", + "@polkadot/util": "12.6.2", + "@prosopo/common": "2.0.2", + "@prosopo/types": "2.0.2" + }, + "devDependencies": { + "@prosopo/config": "2.0.2", + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/prosopo/captcha.git" + }, + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "publishConfig": { + "registry": "https://registry.npmjs.org" + }, + "description": "", + "sideEffects": false } diff --git a/packages/types-database/package.json b/packages/types-database/package.json index e9a455b421..3cab9b1760 100644 --- a/packages/types-database/package.json +++ b/packages/types-database/package.json @@ -1,45 +1,45 @@ { - "name": "@prosopo/types-database", - "version": "2.0.1", - "description": "Types for prosopo database", - "main": "dist/index.js", - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build" - }, - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/prosopo/captcha.git" - }, - "author": "Prosopo Limited", - "license": "Apache-2.0", - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "dependencies": { - "@prosopo/common": "2.0.1", - "@prosopo/types": "2.0.1", - "mongoose": "^8.5.1", - "zod": "^3.22.3" - }, - "devDependencies": { - "tslib": "2.6.2", - "typescript": "5.1.6", - "@prosopo/config": "2.0.1" - }, - "sideEffects": false + "name": "@prosopo/types-database", + "version": "2.0.2", + "description": "Types for prosopo database", + "main": "dist/index.js", + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/prosopo/captcha.git" + }, + "author": "Prosopo Limited", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "dependencies": { + "@prosopo/common": "2.0.2", + "@prosopo/types": "2.0.2", + "mongoose": "^8.5.1", + "zod": "^3.22.3" + }, + "devDependencies": { + "tslib": "2.6.2", + "typescript": "5.1.6", + "@prosopo/config": "2.0.2" + }, + "sideEffects": false } diff --git a/packages/types-database/src/types/mongo.ts b/packages/types-database/src/types/mongo.ts index 2295f87448..e3e54a9d9d 100644 --- a/packages/types-database/src/types/mongo.ts +++ b/packages/types-database/src/types/mongo.ts @@ -11,9 +11,10 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -import type { Logger } from "@prosopo/common"; +import { Logger, TranslationKey, TranslationKeysSchema } from "@prosopo/common"; import { type Captcha, + CaptchaResult, type CaptchaSolution, CaptchaSolutionSchema, type CaptchaStates, @@ -23,9 +24,11 @@ import { type DatasetBase, type DatasetWithIds, type Item, - type PowCaptcha, + PoWCaptchaUser, PoWChallengeComponents, PoWChallengeId, + Timestamp, + TimestampSchema, } from "@prosopo/types"; import type { Hash } from "@prosopo/types"; import type { PendingCaptchaRequest } from "@prosopo/types"; @@ -35,9 +38,14 @@ import { ScheduledTaskStatus, } from "@prosopo/types"; import type { DeleteResult } from "mongodb"; -import { type Connection, type Model, Schema } from "mongoose"; +import mongoose, { + type Connection, + type Model, + ObjectId, + Schema, +} from "mongoose"; import { - type ZodType, + ZodType, any, array, boolean, @@ -47,31 +55,64 @@ import { object, string, type infer as zInfer, + literal, + union, } from "zod"; -export interface UserCommitmentRecord - extends Omit { - userSignature: number[]; - processed: boolean; - batched: boolean; - stored?: boolean; - requestedAtTimestamp: number; +export enum StoredStatusNames { + notStored = "notStored", + userSubmitted = "userSubmitted", + serverChecked = "serverChecked", + stored = "stored", } +export type StoredStatus = + | StoredStatusNames.notStored + | StoredStatusNames.userSubmitted + | StoredStatusNames.serverChecked + | StoredStatusNames.stored; + +export interface StoredCaptcha { + result: { + status: CaptchaStatus; + reason?: TranslationKey; + error?: string; + }; + requestedAtTimestamp: Timestamp; + deadlineTimestamp?: Timestamp; + ipAddress: string; + userSubmitted: boolean; + serverChecked: boolean; + storedAtTimestamp?: Timestamp; + lastUpdatedTimestamp?: Timestamp; +} + +export interface UserCommitmentRecord extends Commit, StoredCaptcha { + userSignature: string; +} + +export interface PoWCaptchaStored extends PoWCaptchaUser, StoredCaptcha {} + +const CaptchaResultSchema = object({ + status: nativeEnum(CaptchaStatus), + reason: TranslationKeysSchema.optional(), + error: string().optional(), +}) satisfies ZodType; + export const UserCommitmentSchema = object({ userAccount: string(), - dappContract: string(), + dappAccount: string(), datasetId: string(), providerAccount: string(), id: string(), - status: nativeEnum(CaptchaStatus), - userSignature: array(number()), - completedAt: number(), - requestedAt: number(), - processed: boolean(), - batched: boolean(), - stored: boolean().optional(), - requestedAtTimestamp: number(), + result: CaptchaResultSchema, + userSignature: string(), + ipAddress: string(), + userSubmitted: boolean(), + serverChecked: boolean(), + storedAtTimestamp: TimestampSchema.optional(), + requestedAtTimestamp: TimestampSchema, + lastUpdatedTimestamp: TimestampSchema.optional(), }) satisfies ZodType; export interface SolutionRecord extends CaptchaSolution { @@ -81,7 +122,7 @@ export interface SolutionRecord extends CaptchaSolution { export interface Tables { captcha: typeof Model; - powCaptcha: typeof Model; + powCaptcha: typeof Model; dataset: typeof Model; solution: typeof Model; usersolution: typeof Model; @@ -116,13 +157,29 @@ export const CaptchaRecordSchema = new Schema({ // Set an index on the captchaId field, ascending CaptchaRecordSchema.index({ captchaId: 1 }); -export const PowCaptchaRecordSchema = new Schema({ +export type PowCaptchaRecord = mongoose.Document & PoWCaptchaStored; + +export const PowCaptchaRecordSchema = new Schema({ challenge: { type: String, required: true }, dappAccount: { type: String, required: true }, userAccount: { type: String, required: true }, - timestamp: { type: Number, required: true }, - checked: { type: Boolean, required: true }, - stored: { type: Boolean, required: true }, + requestedAtTimestamp: { type: Number, required: true }, + lastUpdatedTimestamp: { type: Number, required: false }, + result: { + status: { type: String, enum: CaptchaStatus, required: true }, + reason: { + type: String, + enum: TranslationKeysSchema.options, + required: false, + }, + error: { type: String, required: false }, + }, + difficulty: { type: Number, required: true }, + ipAddress: { type: String, required: true }, + userSignature: { type: String, required: false }, + userSubmitted: { type: Boolean, required: true }, + serverChecked: { type: Boolean, required: true }, + storedAtTimestamp: { type: Number, required: false }, }); // Set an index on the captchaId field, ascending @@ -130,18 +187,26 @@ PowCaptchaRecordSchema.index({ captchaId: 1 }); export const UserCommitmentRecordSchema = new Schema({ userAccount: { type: String, required: true }, - dappContract: { type: String, required: true }, + dappAccount: { type: String, required: true }, providerAccount: { type: String, required: true }, datasetId: { type: String, required: true }, id: { type: String, required: true }, - status: { type: String, required: true }, - requestedAt: { type: Number, required: true }, - completedAt: { type: Number, required: true }, - userSignature: { type: [Number], required: true }, - processed: { type: Boolean, required: true }, - batched: { type: Boolean, required: true }, - stored: { type: Boolean, required: false }, + result: { + status: { type: String, enum: CaptchaStatus, required: true }, + reason: { + type: String, + enum: TranslationKeysSchema.options, + required: false, + }, + error: { type: String, required: false }, + }, + ipAddress: { type: String, required: true }, + userSignature: { type: String, required: true }, + userSubmitted: { type: Boolean, required: true }, + serverChecked: { type: Boolean, required: true }, + storedAtTimestamp: { type: Number, required: false }, requestedAtTimestamp: { type: Number, required: true }, + lastUpdatedTimestamp: { type: Number, required: false }, }); // Set an index on the commitment id field, descending UserCommitmentRecordSchema.index({ id: -1 }); @@ -169,9 +234,11 @@ SolutionRecordSchema.index({ captchaId: 1 }); export const UserSolutionSchema = CaptchaSolutionSchema.extend({ processed: boolean(), + checked: boolean(), commitmentId: string(), }); -export type UserSolutionRecord = zInfer; +export type UserSolutionRecord = mongoose.Document & + zInfer; export const UserSolutionRecordSchema = new Schema( { captchaId: { type: String, required: true }, @@ -179,6 +246,7 @@ export const UserSolutionRecordSchema = new Schema( salt: { type: String, required: true }, solution: [{ type: String, required: true }], processed: { type: Boolean, required: true }, + checked: { type: Boolean, required: true }, commitmentId: { type: String, required: true }, }, { _id: false }, @@ -200,15 +268,16 @@ export const PendingRecordSchema = new Schema({ salt: { type: String, required: true }, requestHash: { type: String, required: true }, deadlineTimestamp: { type: Number, required: true }, // unix timestamp - requestedAtBlock: { type: Number, required: true }, + requestedAtTimestamp: { type: Number, required: true }, // unix timestamp + ipAddress: { type: String, required: true }, }); // Set an index on the requestHash field, descending PendingRecordSchema.index({ requestHash: -1 }); export const ScheduledTaskSchema = object({ - taskId: string(), processName: nativeEnum(ScheduledTaskNames), - datetime: date(), + datetime: TimestampSchema, + updated: TimestampSchema.optional(), status: nativeEnum(ScheduledTaskStatus), result: object({ data: any().optional(), @@ -216,13 +285,15 @@ export const ScheduledTaskSchema = object({ }).optional(), }); -export type ScheduledTaskRecord = zInfer; +export type ScheduledTask = zInfer; + +export type ScheduledTaskRecord = mongoose.Document & ScheduledTask; export const ScheduledTaskRecordSchema = new Schema({ - taskId: { type: String, required: true }, processName: { type: String, enum: ScheduledTaskNames, required: true }, - datetime: { type: Date, required: true }, - status: { type: String, enum: ScheduledTaskStatus, require: true }, + datetime: { type: Number, required: true }, + updated: { type: Number, required: false }, + status: { type: String, enum: ScheduledTaskStatus, required: true }, result: { type: new Schema( { @@ -231,7 +302,6 @@ export const ScheduledTaskRecordSchema = new Schema({ }, { _id: false }, ), - required: false, }, }); @@ -283,7 +353,8 @@ export interface Database { requestHash: string, salt: string, deadlineTimestamp: number, - requestedAtBlock: number, + requestedAtTimestamp: number, + ipAddress: string, ): Promise; getDappUserPending(requestHash: string): Promise; @@ -317,11 +388,17 @@ export interface Database { ): Promise; getDappUserCommitmentByAccount( - accountId: string, + userAccount: string, + dappAccount: string, ): Promise; approveDappUserCommitment(commitmentId: string): Promise; + disapproveDappUserCommitment( + commitmentId: string, + reason?: TranslationKey, + ): Promise; + removeProcessedDappUserSolutions( commitmentIds: Hash[], ): Promise; @@ -334,50 +411,65 @@ export interface Database { getProcessedDappUserCommitments(): Promise; - getUnbatchedDappUserCommitments(): Promise; + getCheckedDappUserCommitments(): Promise; getUnstoredDappUserCommitments(): Promise; markDappUserCommitmentsStored(commitmentIds: Hash[]): Promise; - getUnstoredDappUserPoWCommitments(): Promise; + markDappUserCommitmentsChecked(commitmentIds: Hash[]): Promise; - markDappUserPoWCommitmentsStored(challengeIds: string[]): Promise; + getUnstoredDappUserPoWCommitments(): Promise; - getBatchedDappUserCommitments(): Promise; + markDappUserPoWCommitmentsChecked(challengeIds: string[]): Promise; + + markDappUserPoWCommitmentsStored(challengeIds: string[]): Promise; flagProcessedDappUserSolutions(captchaIds: Hash[]): Promise; flagProcessedDappUserCommitments(commitmentIds: Hash[]): Promise; - flagBatchedDappUserCommitments(commitmentIds: Hash[]): Promise; - - getLastBatchCommitTime(): Promise; - getLastScheduledTaskStatus( task: ScheduledTaskNames, status?: ScheduledTaskStatus, ): Promise; getScheduledTaskStatus( - taskId: string, + taskId: ObjectId, status: ScheduledTaskStatus, ): Promise; - storeScheduledTaskStatus( - taskId: `0x${string}`, + createScheduledTaskStatus( task: ScheduledTaskNames, status: ScheduledTaskStatus, + ): Promise; + + updateScheduledTaskStatus( + taskId: ObjectId, + status: ScheduledTaskStatus, result?: ScheduledTaskResult, ): Promise; storePowCaptchaRecord( challenge: PoWChallengeId, components: PoWChallengeComponents, - checked: boolean, + difficulty: number, + providerSignature: string, + ipAddress: string, + serverChecked?: boolean, + userSubmitted?: boolean, + userSignature?: string, ): Promise; - getPowCaptchaRecordByChallenge(challenge: string): Promise; + getPowCaptchaRecordByChallenge( + challenge: string, + ): Promise; - updatePowCaptchaRecord(challenge: string, checked: boolean): Promise; + updatePowCaptchaRecord( + challenge: PoWChallengeId, + result: CaptchaResult, + serverChecked: boolean, + userSubmitted: boolean, + userSignature?: string, + ): Promise; } diff --git a/packages/types-env/package.json b/packages/types-env/package.json index 4a2065abe0..b376d3a2af 100644 --- a/packages/types-env/package.json +++ b/packages/types-env/package.json @@ -1,48 +1,48 @@ { - "name": "@prosopo/types-env", - "version": "2.0.1", - "description": "Types for prosopo environment", - "main": "dist/index.js", - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build" - }, - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/prosopo/captcha.git" - }, - "author": "Prosopo Limited", - "license": "Apache-2.0", - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "dependencies": { - "@polkadot/api": "10.13.1", - "@polkadot/keyring": "12.6.2", - "@polkadot/rpc-provider": "10.13.1", - "@prosopo/contract": "2.0.1", - "@prosopo/common": "2.0.1", - "@prosopo/types": "2.0.1", - "@prosopo/types-database": "2.0.1" - }, - "devDependencies": { - "tslib": "2.6.2", - "typescript": "5.1.6", - "@prosopo/config": "2.0.1" - }, - "sideEffects": false + "name": "@prosopo/types-env", + "version": "2.0.2", + "description": "Types for prosopo environment", + "main": "dist/index.js", + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/prosopo/captcha.git" + }, + "author": "Prosopo Limited", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "dependencies": { + "@polkadot/api": "10.13.1", + "@polkadot/keyring": "12.6.2", + "@polkadot/rpc-provider": "10.13.1", + "@prosopo/contract": "2.0.2", + "@prosopo/common": "2.0.2", + "@prosopo/types": "2.0.2", + "@prosopo/types-database": "2.0.2" + }, + "devDependencies": { + "tslib": "2.6.2", + "typescript": "5.1.6", + "@prosopo/config": "2.0.2" + }, + "sideEffects": false } diff --git a/packages/types-env/src/env.ts b/packages/types-env/src/env.ts index d27dfe2767..61be99636a 100644 --- a/packages/types-env/src/env.ts +++ b/packages/types-env/src/env.ts @@ -17,7 +17,6 @@ import type { Logger } from "@prosopo/common"; import type { AssetsResolver, EnvironmentTypes, - NetworkNames, } from "@prosopo/types"; import type { ProsopoBasicConfigOutput } from "@prosopo/types"; import type { Database } from "@prosopo/types-database"; @@ -25,10 +24,7 @@ import type { Database } from "@prosopo/types-database"; export interface ProsopoEnvironment { config: ProsopoBasicConfigOutput; db: Database | undefined; - contractAddress: string; defaultEnvironment: EnvironmentTypes; - defaultNetwork: NetworkNames; - contractName: string; logger: Logger; assetsResolver: AssetsResolver | undefined; keyring: Keyring; diff --git a/packages/types/package.json b/packages/types/package.json index 71c48665df..f1124c732c 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,52 +1,52 @@ { - "name": "@prosopo/types", - "version": "2.0.1", - "description": "Types for prosopo TypeScript packages", - "main": "dist/index.js", - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build" - }, - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/prosopo/types.git" - }, - "author": "Prosopo Limited", - "license": "Apache-2.0", - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "dependencies": { - "@polkadot/api": "10.13.1", - "@polkadot/api-contract": "10.13.1", - "@polkadot/extension-inject": "0.46.9", - "@polkadot/keyring": "12.6.2", - "@polkadot/types": "10.13.1", - "@polkadot/types-codec": "10.13.1", - "@polkadot/util": "12.6.2", - "@prosopo/common": "2.0.1", - "scale-ts": "^1.6.0", - "zod": "^3.22.3" - }, - "devDependencies": { - "@types/node": "^18.0.6", - "@prosopo/config": "2.0.1", - "tslib": "2.6.2", - "typescript": "5.1.6" - }, - "sideEffects": false + "name": "@prosopo/types", + "version": "2.0.2", + "description": "Types for prosopo TypeScript packages", + "main": "dist/index.js", + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/prosopo/types.git" + }, + "author": "Prosopo Limited", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "dependencies": { + "@polkadot/api": "10.13.1", + "@polkadot/api-contract": "10.13.1", + "@polkadot/extension-inject": "0.46.9", + "@polkadot/keyring": "12.6.2", + "@polkadot/types": "10.13.1", + "@polkadot/types-codec": "10.13.1", + "@polkadot/util": "12.6.2", + "@prosopo/common": "2.0.2", + "scale-ts": "^1.6.0", + "zod": "^3.22.3" + }, + "devDependencies": { + "@types/node": "^18.0.6", + "@prosopo/config": "2.0.2", + "tslib": "2.6.2", + "typescript": "5.1.6" + }, + "sideEffects": false } diff --git a/packages/types/src/api/api.ts b/packages/types/src/api/api.ts index 6b74fdead5..089b6a8684 100644 --- a/packages/types/src/api/api.ts +++ b/packages/types/src/api/api.ts @@ -33,10 +33,9 @@ export interface ProviderApiInterface { captchas: CaptchaSolution[], requestHash: string, userAccount: string, - salt: string, timestamp: string, - providerTimestampSignature: string, - signature?: string, + providerRequestHashSignature: string, + userRequestHashSignature: string, ): Promise; verifyDappUser( dapp: string, diff --git a/packages/types/src/api/params.ts b/packages/types/src/api/params.ts index dae4be7ca5..bd82661e48 100644 --- a/packages/types/src/api/params.ts +++ b/packages/types/src/api/params.ts @@ -12,29 +12,29 @@ // See the License for the specific language governing permissions and // limitations under the License. export enum ApiParams { - datasetId = "datasetId", - user = "user", - dapp = "dapp", - provider = "provider", - blockNumber = "blockNumber", - requestHash = "requestHash", - captchas = "captchas", - commitmentId = "commitmentId", - proof = "proof", - dappSignature = "dappSignature", - dappUserSignature = "dappUserSignature", - providerUrl = "providerUrl", - procaptchaResponse = "procaptcha-response", - verifiedTimeout = "verifiedTimeout", - maxVerifiedTime = "maxVerifiedTime", - verified = "verified", - status = "status", - challenge = "challenge", - difficulty = "difficulty", - nonce = "nonce", - timeouts = "timeouts", - token = "token", - secret = "secret", - timestamp = "timestamp", - signature = "signature", + datasetId = "datasetId", + user = "user", + dapp = "dapp", + provider = "provider", + blockNumber = "blockNumber", + requestHash = "requestHash", + captchas = "captchas", + commitmentId = "commitmentId", + proof = "proof", + dappSignature = "dappSignature", + dappUserSignature = "dappUserSignature", + providerUrl = "providerUrl", + procaptchaResponse = "procaptcha-response", + verifiedTimeout = "verifiedTimeout", + maxVerifiedTime = "maxVerifiedTime", + verified = "verified", + status = "status", + challenge = "challenge", + difficulty = "difficulty", + nonce = "nonce", + timeouts = "timeouts", + token = "token", + secret = "secret", + timestamp = "timestamp", + signature = "signature", } diff --git a/packages/types/src/config/config.ts b/packages/types/src/config/config.ts index 4d27af645b..0d52c2da56 100644 --- a/packages/types/src/config/config.ts +++ b/packages/types/src/config/config.ts @@ -21,12 +21,10 @@ import { record, string, enum as zEnum } from "zod"; import { union } from "zod"; import type { infer as zInfer } from "zod"; import z, { boolean } from "zod"; -import networks from "../networks/index.js"; import { ApiPathRateLimits, ProviderDefaultRateLimits, } from "../provider/index.js"; -import { NetworkNamesSchema, ProsopoNetworkSchema } from "./network.js"; import { DEFAULT_IMAGE_CAPTCHA_SOLUTION_TIMEOUT, DEFAULT_IMAGE_CAPTCHA_TIMEOUT, @@ -84,7 +82,6 @@ export const ProsopoBaseConfigSchema = object({ defaultEnvironment: EnvironmentTypesSchema.default( EnvironmentTypesSchema.Values.production, ), - defaultNetwork: NetworkNamesSchema.default(NetworkNamesSchema.Values.astar), // The account with which to query the contract.merge sign transactions account: object({ address: string().optional(), @@ -111,13 +108,10 @@ export type PolkadotSecretJSON = zInfer; export const ProsopoBasicConfigSchema = ProsopoBaseConfigSchema.merge( object({ - networks: ProsopoNetworkSchema.default(networks), database: DatabaseConfigSchema.optional(), devOnlyWatchEvents: boolean().optional(), }), ); -export type ProsopoNetworksSchemaInput = input; -export type ProsopoNetworksSchemaOutput = output; export type ProsopoBasicConfigInput = input; export type ProsopoBasicConfigOutput = output; diff --git a/packages/types/src/config/network.ts b/packages/types/src/config/network.ts index 102f0ee594..0b310eeb16 100644 --- a/packages/types/src/config/network.ts +++ b/packages/types/src/config/network.ts @@ -12,24 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. import { - array, literal, - number, - object, - string, union, - enum as zEnum, - type infer as zInfer, } from "zod"; -import { enumMap } from "./enumMap.js"; -export const NetworkNamesSchema = zEnum([ - "development", - "rococo", - "shiden", - "astar", -]); - -export type NetworkNames = zInfer; export const NetworkPairTypeSchema = union([ literal("sr25519"), @@ -37,26 +22,3 @@ export const NetworkPairTypeSchema = union([ literal("ecdsa"), literal("ethereum"), ]); -export const NetworkConfigSchema = object({ - endpoint: array(string().url()), - contract: object({ - address: string(), - name: string(), - }), - pairType: NetworkPairTypeSchema, - ss58Format: number().positive().default(42), -}); - -export type NetworkConfig = zInfer; - -// Force all enum keys to be present in record: https://github.com/colinhacks/zod/issues/1092. -// Unfortunately there doesn't seem to be a way to force at least one key, but not all keys, to be present. See attempt -// below using refine / transform and reported issue: https://github.com/colinhacks/zod/issues/2528 -export const ProsopoNetworkSchema = enumMap( - NetworkNamesSchema, - NetworkConfigSchema.required({ - endpoint: true, - pairType: true, - ss58Format: true, - }), -); diff --git a/packages/types/src/datasets/captcha.ts b/packages/types/src/datasets/captcha.ts index 9373d024a3..3e2b2a038d 100644 --- a/packages/types/src/datasets/captcha.ts +++ b/packages/types/src/datasets/captcha.ts @@ -11,7 +11,6 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -import type { u32 } from "@polkadot/types-codec/primitive"; import type { AccountId } from "@polkadot/types/interfaces/runtime"; import { array, @@ -23,7 +22,9 @@ import { union, type infer as zInfer, undefined as zUndefined, + number as zNumber, } from "zod"; +import { TranslationKey } from "@prosopo/common"; export enum CaptchaTypes { SelectAll = "SelectAll", @@ -42,9 +43,7 @@ export type Item = zInfer; export type HashedItem = zInfer; export type LabelledItem = zInfer; export type Data = zInfer; -export type LabelledData = zInfer; export type CaptchasContainer = zInfer; -export type LabelsContainer = zInfer; export interface Captchas { captchas: CaptchaWithoutId[]; @@ -65,13 +64,6 @@ export interface CaptchaWithoutId extends CaptchaWithoutIdBase { // INCORRECT items are any missing from the solution and unlabelled arrays! } -export type CaptchaSolutionToUpdate = { - captchaId: string; - captchaContentId: string; - salt: string; - solution: HashedSolution[]; -}; - export interface Captcha extends CaptchaWithoutId { captchaId: string; captchaContentId: string; @@ -80,30 +72,28 @@ export interface Captcha extends CaptchaWithoutId { datasetContentId?: string; } -//temp +export interface CaptchaResult { + status: CaptchaStatus; + reason?: TranslationKey; +} + export enum CaptchaStatus { pending = "Pending", approved = "Approved", disapproved = "Disapproved", } -//temp type Hash = string | number[]; -//temp export type Commit = { id: Hash; userAccount: string; datasetId: Hash; - status: CaptchaStatus; - dappContract: string; + dappAccount: string; providerAccount: string; - requestedAt: number; - completedAt: number; - userSignature: Array; + userSignature: string; }; -//temp export enum GovernanceStatus { active = "Active", inactive = "Inactive", @@ -122,7 +112,8 @@ export enum DappPayee { any = "Any", } -export type Timestamp = number; +export const TimestampSchema = zNumber(); +export type Timestamp = zInfer; export type UserAccount = string; export type DappAccount = string; @@ -141,15 +132,6 @@ export const PowChallengeIdSchema = custom((val: any) => { } }); -export interface PowCaptcha { - challenge: PoWChallengeId; - timestamp: Timestamp; - userAccount: UserAccount; - dappAccount: DappAccount; - checked: boolean; - stored: boolean -} - export interface CaptchaSolution { captchaId: string; captchaContentId: string; @@ -158,7 +140,7 @@ export interface CaptchaSolution { } export type PoWChallengeComponents = { - timestamp: Timestamp; + requestedAtTimestamp: Timestamp; userAccount: UserAccount; dappAccount: DappAccount; }; @@ -166,9 +148,14 @@ export type PoWChallengeComponents = { export interface PoWCaptcha { challenge: PoWChallengeId; difficulty: number; - signature: string; - timestamp: number; - timestampSignature: string; + providerSignature: string; + requestedAtTimestamp: number; + userSignature?: string; +} + +export interface PoWCaptchaUser extends PoWCaptcha { + userAccount: UserAccount; + dappAccount: DappAccount; } export type CaptchaConfig = { @@ -186,11 +173,6 @@ export type CaptchaSolutionConfig = { captchaBlockRecency: number; }; -export type LastCorrectCaptchaSchema = { - beforeMs: u32; - dappId: AccountId; -}; - export const CaptchaSchema = object({ captchaId: union([string(), zUndefined()]), captchaContentId: union([string(), zUndefined()]), diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index d9b7c5d421..11b6d9e4f2 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -19,4 +19,3 @@ export * from "./provider/index.js"; export * from "./procaptcha/index.js"; export * from "./procaptcha-bundle/index.js"; export * from "./procaptcha-frictionless/index.js"; -export { default as networks } from "./networks/index.js"; diff --git a/packages/types/src/networks/index.ts b/packages/types/src/networks/index.ts deleted file mode 100644 index 479c7b21e6..0000000000 --- a/packages/types/src/networks/index.ts +++ /dev/null @@ -1,86 +0,0 @@ -import type { ProsopoNetworksSchemaInput } from "../config/index.js"; -// Copyright 2021-2024 Prosopo (UK) Ltd. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -import { - NetworkNamesSchema, - NetworkPairTypeSchema, -} from "../config/network.js"; - -const pairTypeSr25519 = NetworkPairTypeSchema.parse("sr25519"); - -const getContractAddress = (defaultAddress?: string) => { - return process.env.PROSOPO_CONTRACT_ADDRESS - ? process.env.PROSOPO_CONTRACT_ADDRESS - : defaultAddress || ""; -}; - -export default (): ProsopoNetworksSchemaInput => { - return { - [NetworkNamesSchema.Values.development]: { - endpoint: process.env.PROSOPO_SUBSTRATE_ENDPOINT - ? [process.env.PROSOPO_SUBSTRATE_ENDPOINT] - : ["ws://127.0.0.1:9944"], - contract: { - name: "captcha", - address: getContractAddress("CONTRACT_NOT_DEPLOYED"), - }, - pairType: pairTypeSr25519, - ss58Format: 42, - }, - [NetworkNamesSchema.Values.rococo]: { - endpoint: process.env.PROSOPO_SUBSTRATE_ENDPOINT - ? [process.env.PROSOPO_SUBSTRATE_ENDPOINT] - : ["wss://rococo-contracts-rpc.polkadot.io:443"], - contract: { - name: "captcha", - address: getContractAddress( - "5HiVWQhJrysNcFNEWf2crArKht16zrhro3FcekVWocyQjx5u", - ), - }, - pairType: pairTypeSr25519, - ss58Format: 42, - }, - [NetworkNamesSchema.Values.shiden]: { - endpoint: process.env.PROSOPO_SUBSTRATE_ENDPOINT - ? [process.env.PROSOPO_SUBSTRATE_ENDPOINT] - : ["wss://shiden.public.blastapi.io"], - contract: { - address: getContractAddress( - "XpRox5bNg6YV8BHafsuHQ3b8i7gSq3GKPeYLA1b8EZwrDb3", - ), - name: "captcha", - }, - pairType: pairTypeSr25519, - ss58Format: 42, - }, - [NetworkNamesSchema.Values.astar]: { - endpoint: process.env.PROSOPO_SUBSTRATE_ENDPOINT - ? [process.env.PROSOPO_SUBSTRATE_ENDPOINT] - : [ - "wss://rpc.astar.network", - "wss://1rpc.io/astr", - "wss://astar.public.blastapi.io", - "wss://astar.public.curie.radiumblock.co/ws", - ], - contract: { - address: getContractAddress( - "X2NLPj49L4UKWAzX8tS1LHTwioMHNyVurCsvTyUNYxcPuWA", - ), - name: "captcha", - }, - pairType: pairTypeSr25519, - ss58Format: 42, - }, - }; -}; diff --git a/packages/types/src/procaptcha/api.ts b/packages/types/src/procaptcha/api.ts index 31fd8c2bed..46dfb5fa1c 100644 --- a/packages/types/src/procaptcha/api.ts +++ b/packages/types/src/procaptcha/api.ts @@ -25,18 +25,16 @@ import type { TCaptchaSubmitResult } from "./client.js"; export interface ProsopoCaptchaApiInterface { userAccount: string; - contract: IProsopoCaptchaContract | string; provider: RandomProvider; providerApi: ProviderApiInterface; dappAccount: string; web2: boolean; getCaptchaChallenge(): Promise; submitCaptchaSolution( - signer: Signer, + userRequestHashSignature: string, requestHash: string, solutions: CaptchaSolution[], - salt: string, timestamp: string, - providerTimestampSignature: string, + providerRequestHashSignature: string, ): Promise; } diff --git a/packages/types/src/procaptcha/manager.ts b/packages/types/src/procaptcha/manager.ts index 24e383e416..e160f595f7 100644 --- a/packages/types/src/procaptcha/manager.ts +++ b/packages/types/src/procaptcha/manager.ts @@ -70,7 +70,6 @@ export interface ProcaptchaState { submission: TCaptchaSubmitResult | undefined; // the result of the captcha submission. undefined if not submitted timeout: NodeJS.Timeout | undefined; // the timer for the captcha challenge. undefined if not set successfullChallengeTimeout: NodeJS.Timeout | undefined; // the timer for the captcha challenge. undefined if not set - blockNumber: number | undefined; // the block number in which the random provider was chosen. undefined if not set sendData: boolean; // whether to trigger sending user event data (mouse, keyboard, touch) to the provider } diff --git a/packages/types/src/procaptcha/token.ts b/packages/types/src/procaptcha/token.ts index cf990a79e8..b81b0ba5fb 100644 --- a/packages/types/src/procaptcha/token.ts +++ b/packages/types/src/procaptcha/token.ts @@ -16,22 +16,35 @@ import { Option, Struct, str, u32, u64 } from "scale-ts"; import { bigint, number, object, string, type infer as zInfer } from "zod"; import { ApiParams } from "../api/params.js"; +export const RequestHashSignatureSchema = object({ + [ApiParams.requestHash]: string(), +}); + +export type RequestHashSignature = zInfer; + +export const ChallengeSignatureSchema = object({ + [ApiParams.challenge]: string(), +}); + +export type ChallengeSignature = zInfer; + +export const SignatureTypesSchema = object({ + [ApiParams.challenge]: string().optional(), + [ApiParams.requestHash]: string().optional(), + [ApiParams.timestamp]: string().optional(), +}); + export const ProcaptchaOutputSchema = object({ [ApiParams.commitmentId]: string().optional(), [ApiParams.providerUrl]: string().optional(), [ApiParams.dapp]: string(), [ApiParams.user]: string(), - [ApiParams.blockNumber]: number(), [ApiParams.challenge]: string().optional(), [ApiParams.nonce]: number().optional(), [ApiParams.timestamp]: string(), [ApiParams.signature]: object({ - [ApiParams.provider]: object({ - [ApiParams.timestamp]: string(), - }), - [ApiParams.user]: object({ - [ApiParams.timestamp]: string(), - }).optional(), + [ApiParams.provider]: SignatureTypesSchema, + [ApiParams.user]: SignatureTypesSchema, }), }); @@ -50,13 +63,17 @@ export const ProcaptchaTokenCodec = Struct({ [ApiParams.providerUrl]: Option(str), [ApiParams.dapp]: str, [ApiParams.user]: str, - [ApiParams.blockNumber]: u32, [ApiParams.challenge]: Option(str), [ApiParams.nonce]: Option(u32), [ApiParams.timestamp]: str, [ApiParams.signature]: Struct({ [ApiParams.provider]: Struct({ - [ApiParams.timestamp]: str, + [ApiParams.challenge]: Option(str), + [ApiParams.requestHash]: Option(str), + }), + [ApiParams.user]: Struct({ + [ApiParams.timestamp]: Option(str), + [ApiParams.requestHash]: Option(str), }), }), }); @@ -67,7 +84,6 @@ export type ProcaptchaToken = zInfer; export const encodeProcaptchaOutput = ( procaptchaOutput: ProcaptchaOutput, ): ProcaptchaToken => { - console.log("encoding", procaptchaOutput); return u8aToHex( ProcaptchaTokenCodec.enc({ [ApiParams.commitmentId]: undefined, @@ -76,6 +92,19 @@ export const encodeProcaptchaOutput = ( [ApiParams.nonce]: undefined, // override any optional fields by spreading the procaptchaOutput ...procaptchaOutput, + signature: { + provider: { + challenge: + procaptchaOutput.signature.provider?.challenge || undefined, + requestHash: + procaptchaOutput.signature.provider?.requestHash || undefined, + }, + user: { + timestamp: procaptchaOutput.signature.user?.timestamp || undefined, + requestHash: + procaptchaOutput.signature.user?.requestHash || undefined, + }, + }, }), ); }; diff --git a/packages/types/src/provider/api.ts b/packages/types/src/provider/api.ts index 7aacb47d2b..d6989ba5ee 100644 --- a/packages/types/src/provider/api.ts +++ b/packages/types/src/provider/api.ts @@ -35,7 +35,12 @@ import { PoWChallengeId, PowChallengeIdSchema, } from "../datasets/index.js"; -import { ProcaptchaTokenSpec } from "../procaptcha/index.js"; +import { + ChallengeSignature, + ProcaptchaTokenSpec, + RequestHashSignature, + RequestHashSignatureSchema, +} from "../procaptcha/index.js"; export enum ApiPaths { GetImageCaptchaChallenge = "/v1/prosopo/provider/captcha/image", @@ -50,6 +55,18 @@ export enum ApiPaths { SubmitUserEvents = "/v1/prosopo/provider/events", } +export type TGetImageCaptchaChallengePathAndParams = + `${ApiPaths.GetImageCaptchaChallenge}/${string}/${string}/${string}`; + +export type TGetImageCaptchaChallengeURL = + `${string}${TGetImageCaptchaChallengePathAndParams}`; + +export type TGetPowCaptchaChallengeURL = + `${string}${ApiPaths.GetPowCaptchaChallenge}`; + +export type TSubmitPowCaptchaSolutionURL = + `${string}${ApiPaths.SubmitPowCaptchaSolution}`; + export enum AdminApiPaths { BatchCommit = "/v1/prosopo/provider/admin/batch", UpdateDataset = "/v1/prosopo/provider/admin/dataset", @@ -94,7 +111,6 @@ export type FrontendProvider = Omit & { url: string }; export type RandomProvider = { providerAccount: string; provider: FrontendProvider; - blockNumber: number; }; type RateLimitSchemaType = ZodObject<{ @@ -144,7 +160,6 @@ export const CaptchaRequestBody = object({ [ApiParams.user]: string(), [ApiParams.dapp]: string(), [ApiParams.datasetId]: string(), - [ApiParams.blockNumber]: string(), }); export type CaptchaRequestBodyType = zInfer; @@ -154,9 +169,7 @@ export type CaptchaResponseBody = { [ApiParams.requestHash]: string; [ApiParams.timestamp]: string; [ApiParams.signature]: { - [ApiParams.provider]: { - [ApiParams.timestamp]: string; - }; + [ApiParams.provider]: RequestHashSignature; }; }; @@ -167,12 +180,8 @@ export const CaptchaSolutionBody = object({ [ApiParams.requestHash]: string(), [ApiParams.timestamp]: string(), [ApiParams.signature]: object({ - [ApiParams.user]: object({ - [ApiParams.requestHash]: string(), - }), - [ApiParams.provider]: object({ - [ApiParams.timestamp]: string(), - }), + [ApiParams.user]: RequestHashSignatureSchema, + [ApiParams.provider]: RequestHashSignatureSchema, }), }); @@ -180,7 +189,7 @@ export type CaptchaSolutionBodyType = zInfer; export const VerifySolutionBody = object({ [ApiParams.token]: ProcaptchaTokenSpec, - [ApiParams.dappUserSignature]: string(), + [ApiParams.dappSignature]: string(), [ApiParams.maxVerifiedTime]: number() .optional() .default(DEFAULT_IMAGE_MAX_VERIFIED_TIME_CACHED), @@ -195,18 +204,14 @@ export interface PendingCaptchaRequest { salt: string; [ApiParams.requestHash]: string; deadlineTimestamp: number; // unix timestamp - requestedAtBlock: number; // expected block number + requestedAtTimestamp: number; // unix timestamp + ipAddress: string; } export interface ProviderRegistered { status: "Registered" | "Unregistered"; } -export interface ProviderDetails { - provider: Provider; - dbConnectionOk: boolean; -} - export interface VerificationResponse { [ApiParams.status]: string; [ApiParams.verified]: boolean; @@ -214,8 +219,6 @@ export interface VerificationResponse { export interface ImageVerificationResponse extends VerificationResponse { [ApiParams.commitmentId]?: Hash; - // The block at which the captcha was requested - [ApiParams.blockNumber]?: number; } export interface GetPowCaptchaResponse { @@ -223,10 +226,7 @@ export interface GetPowCaptchaResponse { [ApiParams.difficulty]: number; [ApiParams.timestamp]: string; [ApiParams.signature]: { - [ApiParams.provider]: { - [ApiParams.timestamp]: string; - [ApiParams.challenge]: string; - }; + [ApiParams.provider]: ChallengeSignature; }; } @@ -238,7 +238,7 @@ export interface PowCaptchaSolutionResponse { * Request body for the server to verify a PoW captcha solution * @param {string} token - The Procaptcha token * @param {string} dappUserSignature - The signature proving ownership of the site key - * @param {number} verifiedTimeout - The maximum time in milliseconds since the Provider was selected at `blockNumber` + * @param {number} verifiedTimeout - The maximum time in milliseconds since the captcha was requested */ export const ServerPowCaptchaVerifyRequestBody = object({ [ApiParams.token]: ProcaptchaTokenSpec, diff --git a/packages/types/src/provider/scheduler.ts b/packages/types/src/provider/scheduler.ts index 934b76a45f..9d6481b632 100644 --- a/packages/types/src/provider/scheduler.ts +++ b/packages/types/src/provider/scheduler.ts @@ -12,19 +12,20 @@ // See the License for the specific language governing permissions and // limitations under the License. export enum ScheduledTaskNames { - BatchCommitment = "BatchCommitment", - CalculateSolution = "CalculateSolution", + BatchCommitment = "BatchCommitment", + CalculateSolution = "CalculateSolution", + StoreCommitmentsExternal = "StoreCommitmentsExternal", } export enum ScheduledTaskStatus { - Pending = "Pending", - Running = "Running", - Completed = "Completed", - Failed = "Failed", + Pending = "Pending", + Running = "Running", + Completed = "Completed", + Failed = "Failed", } export interface ScheduledTaskResult { - error?: string; - // biome-ignore lint/suspicious/noExplicitAny: TODO fix - data?: Record; + error?: string; + // biome-ignore lint/suspicious/noExplicitAny: TODO fix + data?: Record; } diff --git a/packages/util/package.json b/packages/util/package.json index 86fc4a41d9..5c4a357e02 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -1,61 +1,60 @@ { - "name": "@prosopo/util", - "version": "2.0.1", - "author": "PROSOPO LIMITED ", - "license": "Apache-2.0", - "private": false, - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "scripts": { - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build", - "cli": "node ./dist/js/cli.js", - "test": "NODE_ENV=${NODE_ENV:-test}; npx vitest run --config ./vite.test.config.ts" - }, - "main": "./dist/index.js", - "type": "module", - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - }, - "./lodash": { - "types": "./dist/lodash.d.ts", - "import": "./dist/lodash.js", - "require": "./dist/cjs/lodash.cjs", - "default": "./dist/lodash.js" - } - }, - "types": "./dist/index.d.ts", - "dependencies": { - "@noble/hashes": "^1.3.3", - "@prosopo/config": "2.0.1", - "@prosopo/util": "2.0.1", - "lodash": "^4.17.21", - "seedrandom": "^3.0.5" - }, - "devDependencies": { - "@types/lodash": "^4.14.198", - "@types/seedrandom": "^3.0.5", - "dotenv": "^16.0.1", - "tslib": "2.6.2", - "typescript": "5.1.6", - "vitest": "^1.3.1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/prosopo/captcha.git" - }, - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "publishConfig": { - "registry": "https://registry.npmjs.org" - }, - "description": "Utility package to house all code that is not specific to prosopo. E.g. random number generation, string manipulation, etc.", - "sideEffects": false + "name": "@prosopo/util", + "version": "2.0.2", + "author": "PROSOPO LIMITED ", + "license": "Apache-2.0", + "private": false, + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "scripts": { + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build", + "cli": "node ./dist/js/cli.js", + "test": "NODE_ENV=${NODE_ENV:-test}; npx vitest run --config ./vite.test.config.ts" + }, + "main": "./dist/index.js", + "type": "module", + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + }, + "./lodash": { + "types": "./dist/lodash.d.ts", + "import": "./dist/lodash.js", + "require": "./dist/cjs/lodash.cjs", + "default": "./dist/lodash.js" + } + }, + "types": "./dist/index.d.ts", + "dependencies": { + "@noble/hashes": "^1.3.3", + "@prosopo/config": "2.0.2", + "dotenv": "^16.0.1", + "lodash": "^4.17.21", + "seedrandom": "^3.0.5" + }, + "devDependencies": { + "@types/lodash": "^4.14.198", + "@types/seedrandom": "^3.0.5", + "tslib": "2.6.2", + "typescript": "5.1.6", + "vitest": "^1.3.1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/prosopo/captcha.git" + }, + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "publishConfig": { + "registry": "https://registry.npmjs.org" + }, + "description": "Utility package to house all code that is not specific to prosopo. E.g. random number generation, string manipulation, etc.", + "sideEffects": false } diff --git a/packages/util/src/index.ts b/packages/util/src/index.ts index 10bf1db59f..dba620dc3c 100644 --- a/packages/util/src/index.ts +++ b/packages/util/src/index.ts @@ -27,3 +27,4 @@ export * from "./permutations.js"; export * from "./version.js"; export * from "./hex.js"; export * from "./checks.js"; +export { verifyRecency } from "./verifyRecency.js"; diff --git a/packages/util/src/verifyRecency.ts b/packages/util/src/verifyRecency.ts new file mode 100644 index 0000000000..6e6208e2fd --- /dev/null +++ b/packages/util/src/verifyRecency.ts @@ -0,0 +1,17 @@ +/** + * Verify the time since the blockNumber is equal to or less than the maxVerifiedTime. + * @param challenge + * @param maxVerifiedTime + */ +export const verifyRecency = (challenge: string, maxVerifiedTime: number) => { + // Get the timestamp from the challenge + const timestamp = challenge.split("___")[0]; + + if (!timestamp) { + return false; + } + + const currentTimestamp = Date.now(); + const challengeTimestamp = Number.parseInt(timestamp, 10); + return currentTimestamp - challengeTimestamp <= maxVerifiedTime; +}; diff --git a/packages/web-components/package.json b/packages/web-components/package.json index 62a751b28a..f5a48a64a0 100644 --- a/packages/web-components/package.json +++ b/packages/web-components/package.json @@ -1,44 +1,44 @@ { - "name": "@prosopo/web-components", - "version": "2.0.1", - "description": "Non business logic utilities for web applications", - "main": "dist/index.js", - "type": "module", - "engines": { - "node": ">=20", - "npm": ">=9" - }, - "exports": { - ".": { - "import": "./dist/index.js", - "require": "./dist/cjs/index.cjs" - } - }, - "scripts": { - "test": "echo \"No test specified\"", - "clean": "tsc --build --clean", - "build": "tsc --build --verbose", - "build:cjs": "npx vite --config vite.cjs.config.ts build" - }, - "repository": { - "type": "git", - "url": "git+ssh://git@github.com/prosopo/types.git" - }, - "author": "Prosopo Limited", - "license": "Apache-2.0", - "bugs": { - "url": "https://github.com/prosopo/captcha/issues" - }, - "homepage": "https://github.com/prosopo/captcha#readme", - "dependencies": { - "@emotion/react": "^11.11.1", - "@emotion/styled": "^11.11.0", - "react": "^18.3.1" - }, - "devDependencies": { - "tslib": "2.6.2", - "typescript": "5.1.6", - "@prosopo/config": "2.0.1" - }, - "sideEffects": false + "name": "@prosopo/web-components", + "version": "2.0.2", + "description": "Non business logic utilities for web applications", + "main": "dist/index.js", + "type": "module", + "engines": { + "node": ">=20", + "npm": ">=9" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/cjs/index.cjs" + } + }, + "scripts": { + "test": "echo \"No test specified\"", + "clean": "tsc --build --clean", + "build": "tsc --build --verbose", + "build:cjs": "npx vite --config vite.cjs.config.ts build" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/prosopo/types.git" + }, + "author": "Prosopo Limited", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/prosopo/captcha/issues" + }, + "homepage": "https://github.com/prosopo/captcha#readme", + "dependencies": { + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.11.0", + "react": "^18.3.1" + }, + "devDependencies": { + "tslib": "2.6.2", + "typescript": "5.1.6", + "@prosopo/config": "2.0.2" + }, + "sideEffects": false }