From 7771fe6989485327d6b685f7e2f28840d7b20358 Mon Sep 17 00:00:00 2001 From: Neil Rutledge Date: Thu, 19 May 2022 00:11:28 -0400 Subject: [PATCH 01/29] Add files required for npm packaging --- .npmignore | 0 Makefile | 4 +- index.d.ts | 106 + package-lock.json | 5297 +++++++++++++++++++++++++++++++++++++++- spago.dhall | 28 +- src/Seabug/Seabug.purs | 25 + 6 files changed, 5332 insertions(+), 128 deletions(-) create mode 100644 .npmignore create mode 100644 index.d.ts create mode 100644 src/Seabug/Seabug.purs diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..e69de29 diff --git a/Makefile b/Makefile index b6cdd1e..b979bac 100644 --- a/Makefile +++ b/Makefile @@ -2,8 +2,8 @@ SHELL := bash .ONESHELL: .SHELLFLAGS := -eu -o pipefail -c -ps-sources := $(shell fd -epurs) -ps-entrypoint := Main +ps-sources := $(shell find . -type f -name "*.purs") +ps-entrypoint := Seabug ps-bundle = spago bundle-module -m ${ps-entrypoint} --to output.js run-dev: diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 0000000..f17f6ea --- /dev/null +++ b/index.d.ts @@ -0,0 +1,106 @@ +export function callMarketPlaceBuy(config: Config, args: ContractArgs): + Promise +export function callMarketPlaceListNft(config: Config): + Promise> +export function connectWallet(): Promise +export function getWalletBalance(): Promise + +export type NetworkId + = 0 // Testnet + | 1 // Mainnet + +export type Config = { + serverHost: string, + serverPort: number, + // If CTL Haskell server uses SSL + serverSecureConn: boolean, + ogmiosHost: string, + ogmiosPort: number, + // If Ogmios uses SSL + ogmiosSecureConn: boolean, + datumCacheHost: string, + datumCachePort: number, + // If ogmios-datum-cache uses SSL + datumCacheSecureConn: boolean, + networkId: NetworkId, + // blockfrost.io API key + projectId: string +} + +export type ContractArgs = { + nftCollectionArgs: NftCollectionArgs, + nftIdArgs: NftIdArgs +} + +export type NftCollectionArgs = { + // CurrencySymbol of nft collection + collectionNftCs: string, + lockLockup: bigint, + lockLockupEnd: bigint, + // ValidatorHash of a script locking the nft + lockingScript: string, + //PaymentPubKeyHash of the nft author + author: string, + // Validator hash + daoScript: string, + authorShare: bigint, + daoShare: bigint +} + +export type NftIdArgs = { + // TokenName of the nft collection + collectionNftTn: string, + price: bigint, + // PaymentPubKeyHash of the nft current owner + owner: string +} + +export type NftListing = { + input: Input, + output: Output, + metadata: Metadata +} + +export type Input = { + transaction_id: String, + input_index: number +} + +export type Output = { + address: string, + value: ValueOut, + data_hash: string +} + +export type ValueOut = { + currencySymbol: string, + tokenName: string, + amount: bigint +} + +export type Metadata = { + seabugMetadata: SeabugMetadata + ipfsHash: string +} + +export type SeabugMetadata = { + // Hash of minting policy + policyId: string, + // Hexadecimal string representing bytes of minting policy + mintPolicy: string, + // Currency symbol + collectionNftCS: string, + // Token name + collectionNftTN: string, + // Hash of locking script + lockingScript: string, + // Pub key hash of author + authorPkh: string, + authorShare: bigint, + // Hash of marketplace validator + marketplaceScript: string, + marketplaceShare: bigint, + // Pub key hash of owner + ownerPkh: string, + ownerPrice: bigint +} diff --git a/package-lock.json b/package-lock.json index 04894d9..baa9e38 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,5118 @@ { "name": "seabug-contracts", "version": "0.1.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "seabug-contracts", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@ngua/cardano-serialization-lib-browser": "9.1.2", + "@ngua/cardano-serialization-lib-nodejs": "9.1.2", + "big-integer": "1.6.51", + "bufferutil": "4.0.5", + "node-polyfill-webpack-plugin": "1.1.4", + "uniqid": "5.4.0", + "ws": "8.4.0", + "xhr2": "0.2.1" + }, + "devDependencies": { + "buffer": "6.0.3", + "html-webpack-plugin": "5.5.0", + "webpack": "5.67.0", + "webpack-cli": "4.9.2", + "webpack-dev-server": "4.7.4" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", + "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@ngua/cardano-serialization-lib-browser": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@ngua/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-9.1.2.tgz", + "integrity": "sha512-0KkS3vCwrK8Yxs+yuoFJ05Ou5r0AZJNTWks9otP5h9ODsTUpkgJDb3lVmflJmSB0KnA9JvF3AmcN/swXj/yw+A==" + }, + "node_modules/@ngua/cardano-serialization-lib-nodejs": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@ngua/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-9.1.2.tgz", + "integrity": "sha512-6xpp5Xjcqm9eHIrKBUmmIeZV6n0OeK6t8vCyQzF8KcHEQiknAcIcoIq/wf7sEcLV3ohwn945QCKkM3rKsKF5FA==" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "17.0.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.14.tgz", + "integrity": "sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz", + "integrity": "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "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", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "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", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "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/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==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "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", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/assert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", + "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", + "dependencies": { + "es6-object-assign": "^1.1.0", + "is-nan": "^1.2.1", + "object-is": "^1.0.1", + "util": "^0.12.0" + } + }, + "node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "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", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "node_modules/body-parser": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", + "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", + "dev": true, + "dependencies": { + "bytes": "3.1.1", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.6", + "raw-body": "2.4.2", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", + "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "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, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "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", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "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", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "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", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "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" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "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.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "dependencies": { + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "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", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "node_modules/bufferutil": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz", + "integrity": "sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==", + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/bufferutil/node_modules/node-gyp-build": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", + "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001305", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001305.tgz", + "integrity": "sha512-p7d9YQMji8haf0f+5rbcv9WlQ+N5jMPfRAnUmZRlNxsNeBO3Yr7RYG6M2uTY1h9tCVdlkJg6YNNc4kiAiBLdWA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "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" + } + }, + "node_modules/clean-css": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.4.tgz", + "integrity": "sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "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" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "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", + "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", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "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", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "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", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/css-select": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "dev": true, + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/del/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/del/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "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", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "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, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "node_modules/dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "dependencies": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "dependencies": { + "buffer-indexof": "^1.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domain-browser": { + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", + "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.63", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.63.tgz", + "integrity": "sha512-e0PX/LRJPFRU4kzJKLvTobxyFdnANCvcoDCe8XcyTqP58nTWIwdsHvXLIl1RkB39X5yaosLaroMASWB0oIsgCA==" + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", + "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + }, + "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==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "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" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "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", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "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", + "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" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/execa/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/express": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", + "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", + "dev": true, + "dependencies": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.6", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/filter-obj": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.2.tgz", + "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", + "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "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" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/html-entities": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", + "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", + "dev": true + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", + "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.2.tgz", + "integrity": "sha512-XtmDN5w+vdFTBZaYhdJAbMqn0DP/EhkUaAeo963mojwpKMMbw6nivtFKw07D7DDOH745L5k0VL0P8KRYNEVF/g==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-nan": { + "version": "1.3.2", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", + "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.5", + "foreach": "^2.0.5", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz", + "integrity": "sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "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", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "dev": true, + "dependencies": { + "fs-monkey": "1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "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", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "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" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "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", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dependencies": { + "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "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", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "dependencies": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-forge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", + "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-polyfill-webpack-plugin": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-1.1.4.tgz", + "integrity": "sha512-Z0XTKj1wRWO8o/Vjobsw5iOJCN+Sua3EZEUc2Ziy9CyVvmHKu6o+t4gUH9GOE0czyPR94LI6ZCV/PpcM8b5yow==", + "dependencies": { + "assert": "^2.0.0", + "browserify-zlib": "^0.2.0", + "buffer": "^6.0.3", + "console-browserify": "^1.2.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.12.0", + "domain-browser": "^4.19.0", + "events": "^3.3.0", + "filter-obj": "^2.0.2", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.1", + "process": "^0.11.10", + "punycode": "^2.1.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^3.6.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.2.0", + "string_decoder": "^1.3.0", + "timers-browserify": "^2.0.12", + "tty-browserify": "^0.0.1", + "url": "^0.11.0", + "util": "^0.12.4", + "vm-browserify": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "webpack": ">=5" + } + }, + "node_modules/node-polyfill-webpack-plugin/node_modules/string_decoder": { + "version": "1.3.0", + "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/node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "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.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "dependencies": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "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", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "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", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "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", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/portfinder/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "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", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", + "dev": true, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "engines": { + "node": ">=0.4.x" + } + }, + "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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "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", + "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" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", + "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", + "dev": true, + "dependencies": { + "bytes": "3.1.1", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", + "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", + "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "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" + } + }, + "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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "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", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", + "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", + "dev": true, + "dependencies": { + "node-forge": "^1.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "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" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "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-support": { + "version": "0.5.21", + "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" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/spdy-transport/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/spdy/node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/spdy/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "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" + } + }, + "node_modules/stream-http": { + "version": "3.2.0", + "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", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, + "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==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", + "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "acorn": "^8.5.0" + }, + "peerDependenciesMeta": { + "acorn": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dependencies": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uniqid": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-5.4.0.tgz", + "integrity": "sha512-38JRbJ4Fj94VmnC7G/J/5n5SC7Ab46OM5iNtSstB/ko3l1b5g7ALt4qzHFgGciFkyiRNtDXtLNb+VsxtMSE77A==" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "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.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + }, + "node_modules/util": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", + "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "node_modules/watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/webpack": { + "version": "5.67.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", + "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", + "dependencies": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", + "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.1", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", + "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.2.2", + "ansi-html-community": "^0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "del": "^6.0.0", + "express": "^4.17.1", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "strip-ansi": "^7.0.0", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/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, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz", + "integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "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/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "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==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", + "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.5", + "foreach": "^2.0.5", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/ws": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", + "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xhr2": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.1.tgz", + "integrity": "sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + } + }, "dependencies": { "@discoveryjs/json-ext": { "version": "0.5.6", @@ -88,7 +5198,6 @@ "version": "8.4.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", - "dev": true, "requires": { "@types/estree": "*", "@types/json-schema": "*" @@ -98,7 +5207,6 @@ "version": "3.7.3", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", - "dev": true, "requires": { "@types/eslint": "*", "@types/estree": "*" @@ -107,8 +5215,7 @@ "@types/estree": { "version": "0.0.50", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", - "dev": true + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" }, "@types/express": { "version": "4.17.13", @@ -151,8 +5258,7 @@ "@types/json-schema": { "version": "7.0.9", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" }, "@types/mime": { "version": "1.3.2", @@ -163,8 +5269,7 @@ "@types/node": { "version": "17.0.14", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.14.tgz", - "integrity": "sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==", - "dev": true + "integrity": "sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==" }, "@types/qs": { "version": "6.9.7", @@ -225,7 +5330,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1" @@ -234,26 +5338,22 @@ "@webassemblyjs/floating-point-hex-parser": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" }, "@webassemblyjs/helper-api-error": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" }, "@webassemblyjs/helper-buffer": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" }, "@webassemblyjs/helper-numbers": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, "requires": { "@webassemblyjs/floating-point-hex-parser": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -263,14 +5363,12 @@ "@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" }, "@webassemblyjs/helper-wasm-section": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -282,7 +5380,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } @@ -291,7 +5388,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, "requires": { "@xtuc/long": "4.2.2" } @@ -299,14 +5395,12 @@ "@webassemblyjs/utf8": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" }, "@webassemblyjs/wasm-edit": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -322,7 +5416,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1", @@ -335,7 +5428,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -347,7 +5439,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -361,7 +5452,6 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" @@ -371,7 +5461,8 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", - "dev": true + "dev": true, + "requires": {} }, "@webpack-cli/info": { "version": "1.4.1", @@ -386,19 +5477,18 @@ "version": "1.6.1", "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", - "dev": true + "dev": true, + "requires": {} }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" }, "@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, "accepts": { "version": "1.3.8", @@ -413,14 +5503,13 @@ "acorn": { "version": "8.7.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "dev": true + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==" }, "acorn-import-assertions": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true + "requires": {} }, "aggregate-error": { "version": "3.1.0", @@ -436,7 +5525,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -477,7 +5565,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "requires": {} }, "ansi-html-community": { "version": "0.0.8", @@ -724,7 +5812,6 @@ "version": "4.19.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", - "dev": true, "requires": { "caniuse-lite": "^1.0.30001286", "electron-to-chromium": "^1.4.17", @@ -745,8 +5832,7 @@ "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "buffer-indexof": { "version": "1.1.1", @@ -807,8 +5893,7 @@ "caniuse-lite": { "version": "1.0.30001305", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001305.tgz", - "integrity": "sha512-p7d9YQMji8haf0f+5rbcv9WlQ+N5jMPfRAnUmZRlNxsNeBO3Yr7RYG6M2uTY1h9tCVdlkJg6YNNc4kiAiBLdWA==", - "dev": true + "integrity": "sha512-p7d9YQMji8haf0f+5rbcv9WlQ+N5jMPfRAnUmZRlNxsNeBO3Yr7RYG6M2uTY1h9tCVdlkJg6YNNc4kiAiBLdWA==" }, "chokidar": { "version": "3.5.3", @@ -829,8 +5914,7 @@ "chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" }, "cipher-base": { "version": "1.0.4", @@ -1276,8 +6360,7 @@ "electron-to-chromium": { "version": "1.4.63", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.63.tgz", - "integrity": "sha512-e0PX/LRJPFRU4kzJKLvTobxyFdnANCvcoDCe8XcyTqP58nTWIwdsHvXLIl1RkB39X5yaosLaroMASWB0oIsgCA==", - "dev": true + "integrity": "sha512-e0PX/LRJPFRU4kzJKLvTobxyFdnANCvcoDCe8XcyTqP58nTWIwdsHvXLIl1RkB39X5yaosLaroMASWB0oIsgCA==" }, "elliptic": { "version": "6.5.4", @@ -1310,7 +6393,6 @@ "version": "5.8.3", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", - "dev": true, "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -1358,8 +6440,7 @@ "es-module-lexer": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" }, "es-to-primitive": { "version": "1.2.1", @@ -1379,8 +6460,7 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "escape-html": { "version": "1.0.3", @@ -1392,7 +6472,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -1402,7 +6481,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, "requires": { "estraverse": "^5.2.0" }, @@ -1410,16 +6488,14 @@ "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" } } }, "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" }, "etag": { "version": "1.8.1", @@ -1535,8 +6611,7 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-glob": { "version": "3.2.11", @@ -1554,8 +6629,7 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fastest-levenshtein": { "version": "1.0.12", @@ -1704,14 +6778,12 @@ "glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, "graceful-fs": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", - "dev": true + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" }, "handle-thing": { "version": "2.0.1", @@ -1735,8 +6807,7 @@ "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 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "has-symbols": { "version": "1.0.2", @@ -2234,7 +7305,6 @@ "version": "27.4.6", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz", "integrity": "sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==", - "dev": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -2245,7 +7315,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -2255,14 +7324,12 @@ "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "kind-of": { "version": "6.0.3", @@ -2273,8 +7340,7 @@ "loader-runner": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", - "dev": true + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==" }, "locate-path": { "version": "5.0.0", @@ -2334,8 +7400,7 @@ "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "merge2": { "version": "1.4.1", @@ -2384,14 +7449,12 @@ "mime-db": { "version": "1.51.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "dev": true + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" }, "mime-types": { "version": "2.1.34", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "dev": true, "requires": { "mime-db": "1.51.0" } @@ -2467,8 +7530,7 @@ "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "no-case": { "version": "3.0.4", @@ -2530,8 +7592,7 @@ "node-releases": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", - "dev": true + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" }, "normalize-path": { "version": "3.0.0", @@ -2792,8 +7853,7 @@ "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "picomatch": { "version": "2.3.1", @@ -3125,7 +8185,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, "requires": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -3180,7 +8239,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, "requires": { "randombytes": "^2.1.0" } @@ -3318,14 +8376,12 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -3418,6 +8474,21 @@ "xtend": "^4.0.2" } }, + "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==", + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, "string.prototype.trimend": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", @@ -3436,21 +8507,6 @@ "define-properties": "^1.1.3" } }, - "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==", - "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -3475,14 +8531,12 @@ "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" }, "terser": { "version": "5.10.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", - "dev": true, "requires": { "commander": "^2.20.0", "source-map": "~0.7.2", @@ -3492,14 +8546,12 @@ "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" } } }, @@ -3507,7 +8559,6 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", - "dev": true, "requires": { "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", @@ -3592,7 +8643,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "requires": { "punycode": "^2.1.0" } @@ -3664,7 +8714,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", - "dev": true, "requires": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -3683,7 +8732,6 @@ "version": "5.67.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", - "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", "@types/estree": "^0.0.50", @@ -3889,7 +8937,8 @@ "version": "8.4.2", "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz", "integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==", - "dev": true + "dev": true, + "requires": {} } } }, @@ -3906,8 +8955,7 @@ "webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" }, "websocket-driver": { "version": "0.7.4", @@ -3966,7 +9014,8 @@ "ws": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", - "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==" + "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", + "requires": {} }, "xhr2": { "version": "0.2.1", diff --git a/spago.dhall b/spago.dhall index 6d2145c..e34b5b8 100644 --- a/spago.dhall +++ b/spago.dhall @@ -2,8 +2,32 @@ Welcome to a Spago project! You can edit this file as you like. -} -{ name = "ctl-package-example" -, dependencies = ["aff", "cardano-transaction-lib", "identity"] +{ name = "my-project" +, dependencies = + [ "aff" + , "cardano-transaction-lib" + , "identity" + , "aff-promise" + , "affjax" + , "argonaut" + , "argonaut-codecs" + , "arrays" + , "bifunctors" + , "bigints" + , "control" + , "effect" + , "exceptions" + , "foreign-object" + , "http-methods" + , "lists" + , "newtype" + , "ordered-collections" + , "partial" + , "prelude" + , "transformers" + , "tuples" + , "uint" + ] , packages = ./packages.dhall , sources = [ "exe/**/*.purs", "src/**/*.purs", "test/**/*.purs" ] } diff --git a/src/Seabug/Seabug.purs b/src/Seabug/Seabug.purs new file mode 100644 index 0000000..a58eb36 --- /dev/null +++ b/src/Seabug/Seabug.purs @@ -0,0 +1,25 @@ +module Seabug + ( module Seabug.CallContract + -- , connectWallet + -- , getWalletBalance + ) + where + +-- import Prelude + +-- import Control.Promise (Promise, fromAff) +-- import Data.Maybe (Maybe) +-- import Effect (Effect) +-- import QueryM (callNami) +import Seabug.CallContract +-- import Serialization.Types (Value) +-- import Wallet (Wallet(..), mkNamiWalletAff) + +-- connectWallet :: Effect (Promise Wallet) +-- connectWallet = fromAff mkNamiWalletAff + +-- getWalletBalance :: Effect (Promise (Maybe Value)) +-- getWalletBalance = fromAff $ do +-- (Nami nami) <- mkNamiWalletAff +-- callNami nami _.getBalance + From b435243a58d257c5758dbc057371c0080728f1c5 Mon Sep 17 00:00:00 2001 From: Neil Rutledge Date: Thu, 19 May 2022 00:13:38 -0400 Subject: [PATCH 02/29] Update index.js and readme for npm packaging --- README.md | 2 +- index.js | 39 +++++++++++++++++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d857380..9cd296d 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ # seabug-contracts -TODO +A library for interacting with Seabug smart contracts via the Cardano Transaction Lib (CTL). diff --git a/index.js b/index.js index eb14d5a..1a14733 100644 --- a/index.js +++ b/index.js @@ -5,6 +5,41 @@ // You also need to call `spago bundle-module` to generate the module that is // imported here. From the repository root, run: // spago bundle-module -m
--to output.js -import("./output.js").then((m) => m.main()); +const seabug = import("./output.js"); -console.log("app starting"); +/** + * Calls Seabug Contract 'marketPlaceBuy'. + * It returns a promise holding no data. + * + */ +exports.callMarketPlaceBuy = async (config, args) => { + const sb = await seabug; + return sb.callMarketPlaceBuy(config)(args)(); +}; + +/** + * Calls Seabug Contract 'marketPlaceListNft'. + * Returns a promise holding nft listings. + * + */ +exports.callMarketPlaceListNft = async (config) => { + const sb = await seabug; + return sb.callMarketPlaceListNft(config)(); +}; + +/** + * Connects to Nami wallet. + * Returns a promise holding the Nami wallet object. + */ + exports.connectWallet = async () => { + const sb = await seabug; + return sb.connectWallet(); +}; + +/** + * Returns a promise holding the wallet balance. + */ +exports.getWalletBalance = async () => { + const sb = await seabug; + return sb.getWalletBalance(); +} \ No newline at end of file From e9376f5609a6301418dc4afc0ce7da520b69aa3b Mon Sep 17 00:00:00 2001 From: Neil Rutledge Date: Mon, 23 May 2022 12:07:59 -0400 Subject: [PATCH 03/29] Fix marketplaceValidator json --- src/Seabug/MarketPlace.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/Seabug/MarketPlace.js b/src/Seabug/MarketPlace.js index ff944fa..3bc7abf 100644 --- a/src/Seabug/MarketPlace.js +++ b/src/Seabug/MarketPlace.js @@ -1,14 +1,20 @@ exports._marketplaceValidator = { typedValidator: { - validator: - "5908f801000033232332233223232333222323332223233333333222222223233322232333322223232332232333222323332223232332233223232333332222233223322332233223322332233222222323253353033333006300800530070043333573466e1cd55cea8012400046601664646464646464646464646666ae68cdc39aab9d500a480008cccccccccc064cd409c8c8c8cccd5cd19b8735573aa004900011980f981d1aba15002302c357426ae8940088c98d4c168cd5ce02f02d82c82c09aab9e5001137540026ae854028cd409c0a0d5d0a804999aa8173ae502d35742a010666aa05ceb940b4d5d0a80399a8138219aba15006335027335505404c75a6ae854014c8c8c8cccd5cd19b8735573aa0049000119a8109919191999ab9a3370e6aae7540092000233502933504275a6ae854008c11cd5d09aba25002232635305e3357380c40be0ba0b826aae7940044dd50009aba150023232323333573466e1cd55cea80124000466a04e66a084eb4d5d0a80118239aba135744a004464c6a60bc66ae7018817c1741704d55cf280089baa001357426ae8940088c98d4c168cd5ce02f02d82c82c09aab9e5001137540026ae854010cd409dd71aba15003335027335505475c40026ae854008c0e4d5d09aba2500223263530563357380b40ae0aa0a826ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba150023232323333573466e1d400520062301e303b357426aae79400c8cccd5cd19b875002480108c074c114d5d09aab9e500423333573466e1d400d20022301d3030357426aae7940148cccd5cd19b875004480008c080dd71aba135573ca00c464c6a60a266ae7015414814013c1381341304d55cea80089baa001357426ae8940088c98d4c128cd5ce027025824824082509931a982499ab9c4901035054350004a048135573ca00226ea8004cd540fdd73ae20012212330010030022001222222222212333333333300100b00a00900800700600500400300220012212330010030022001122123300100300212001122123300100300212001122123300100300212001212222300400521222230030052122223002005212222300100520011232230023758002640026aa06a446666aae7c004940388cd4034c010d5d080118019aba200203323232323333573466e1cd55cea801a4000466600e6464646666ae68cdc39aab9d5002480008cc034c0c4d5d0a80119a8098169aba135744a004464c6a606e66ae700ec0e00d80d44d55cf280089baa00135742a006666aa016eb94028d5d0a80119a807bae357426ae8940088c98d4c0cccd5ce01b81a01901889aba25001135573ca00226ea800488848ccc00401000c00880048848cc00400c00880044cd54005d73ad112232230023756002640026aa05e44646666aae7c008940248cd4020cd540c4c018d55cea80118029aab9e500230043574400605c26ae840044488008488488cc00401000c48004488c8c8cccd5cd19b875001480008d4020c014d5d09aab9e500323333573466e1d4009200225008232635302a33573805c05605205004e26aae7540044dd5000890911801001889100089000919191999ab9a3370e6aae7540092000233006300735742a0046eb4d5d09aba25002232635302433573805004a04604426aae7940044dd500091091980080180110009191999ab9a3370e6aae75400520002375c6ae84d55cf280111931a981019ab9c02402101f01e1375400224464646666ae68cdc3a800a40084a00e46666ae68cdc3a8012400446a014600c6ae84d55cf280211999ab9a3370ea00690001280511931a981199ab9c02702402202102001f135573aa00226ea8004484888c00c0104488800844888004480048c8cccd5cd19b8750014800880188cccd5cd19b8750024800080188c98d4c06ccd5ce00f80e00d00c80c09aab9d37540022440042440024002464646464646666ae68cdc3a800a4018401646666ae68cdc3a80124014401a46666ae68cdc3a801a40104660166eb8d5d0a8029bad357426ae8940148cccd5cd19b875004480188cc034dd71aba15007375c6ae84d5d1280391999ab9a3370ea00a9002119809180a1aba15009375c6ae84d5d1280491999ab9a3370ea00c90011180a180a9aba135573ca01646666ae68cdc3a803a400046026602c6ae84d55cf280611931a981019ab9c02402101f01e01d01c01b01a019018135573aa00826aae79400c4d55cf280109aab9e500113754002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024646464646666ae68cdc3a800a400446660106eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d400920002300a300b357426aae7940188c98d4c044cd5ce00a80900800780709aab9d5003135744a00226aae7940044dd5000909118010019110911998008028020019000919191999ab9a3370ea0029001118031bae357426aae79400c8cccd5cd19b875002480008c020dd71aba135573ca008464c6a601666ae7003c0300280240204d55cea80089baa001212230020032122300100320011122232323333573466e1cd55cea80124000466aa016600c6ae854008c014d5d09aba25002232635300833573801801200e00c26aae7940044dd5000a4c2400240022244246600200600422400292010350543100112323001001223300330020020013233223332223322332233322222253353004333573466e1cd4d5403800c88ccc888c8c8c004014c8004d5405888cd4d404c005200022353550180022253353010333573466e3c0080240480444c01c0044c01800cc8004d5405488cd4d404800520002235355017002225335300f333573466e3c00801c04404040044c01800cd4c02cd4c02400c88008888888888801c008005200100600510061335738920121416c6c207370656e7420746f6b656e73206d7573742062652072656d696e7465640000512200212200120012212330010030022001222222222212333333333300100b00a009008007006005004003002200111220021221223300100400312001112212330010030021120011123230010012233003300200200101", + validator: { + getValidator: "5908f801000033232332233223232333222323332223233333333222222223233322232333322223232332232333222323332223232332233223232333332222233223322332233223322332233222222323253353033333006300800530070043333573466e1cd55cea8012400046601664646464646464646464646666ae68cdc39aab9d500a480008cccccccccc064cd409c8c8c8cccd5cd19b8735573aa004900011980f981d1aba15002302c357426ae8940088c98d4c168cd5ce02f02d82c82c09aab9e5001137540026ae854028cd409c0a0d5d0a804999aa8173ae502d35742a010666aa05ceb940b4d5d0a80399a8138219aba15006335027335505404c75a6ae854014c8c8c8cccd5cd19b8735573aa0049000119a8109919191999ab9a3370e6aae7540092000233502933504275a6ae854008c11cd5d09aba25002232635305e3357380c40be0ba0b826aae7940044dd50009aba150023232323333573466e1cd55cea80124000466a04e66a084eb4d5d0a80118239aba135744a004464c6a60bc66ae7018817c1741704d55cf280089baa001357426ae8940088c98d4c168cd5ce02f02d82c82c09aab9e5001137540026ae854010cd409dd71aba15003335027335505475c40026ae854008c0e4d5d09aba2500223263530563357380b40ae0aa0a826ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba150023232323333573466e1d400520062301e303b357426aae79400c8cccd5cd19b875002480108c074c114d5d09aab9e500423333573466e1d400d20022301d3030357426aae7940148cccd5cd19b875004480008c080dd71aba135573ca00c464c6a60a266ae7015414814013c1381341304d55cea80089baa001357426ae8940088c98d4c128cd5ce027025824824082509931a982499ab9c4901035054350004a048135573ca00226ea8004cd540fdd73ae20012212330010030022001222222222212333333333300100b00a00900800700600500400300220012212330010030022001122123300100300212001122123300100300212001122123300100300212001212222300400521222230030052122223002005212222300100520011232230023758002640026aa06a446666aae7c004940388cd4034c010d5d080118019aba200203323232323333573466e1cd55cea801a4000466600e6464646666ae68cdc39aab9d5002480008cc034c0c4d5d0a80119a8098169aba135744a004464c6a606e66ae700ec0e00d80d44d55cf280089baa00135742a006666aa016eb94028d5d0a80119a807bae357426ae8940088c98d4c0cccd5ce01b81a01901889aba25001135573ca00226ea800488848ccc00401000c00880048848cc00400c00880044cd54005d73ad112232230023756002640026aa05e44646666aae7c008940248cd4020cd540c4c018d55cea80118029aab9e500230043574400605c26ae840044488008488488cc00401000c48004488c8c8cccd5cd19b875001480008d4020c014d5d09aab9e500323333573466e1d4009200225008232635302a33573805c05605205004e26aae7540044dd5000890911801001889100089000919191999ab9a3370e6aae7540092000233006300735742a0046eb4d5d09aba25002232635302433573805004a04604426aae7940044dd500091091980080180110009191999ab9a3370e6aae75400520002375c6ae84d55cf280111931a981019ab9c02402101f01e1375400224464646666ae68cdc3a800a40084a00e46666ae68cdc3a8012400446a014600c6ae84d55cf280211999ab9a3370ea00690001280511931a981199ab9c02702402202102001f135573aa00226ea8004484888c00c0104488800844888004480048c8cccd5cd19b8750014800880188cccd5cd19b8750024800080188c98d4c06ccd5ce00f80e00d00c80c09aab9d37540022440042440024002464646464646666ae68cdc3a800a4018401646666ae68cdc3a80124014401a46666ae68cdc3a801a40104660166eb8d5d0a8029bad357426ae8940148cccd5cd19b875004480188cc034dd71aba15007375c6ae84d5d1280391999ab9a3370ea00a9002119809180a1aba15009375c6ae84d5d1280491999ab9a3370ea00c90011180a180a9aba135573ca01646666ae68cdc3a803a400046026602c6ae84d55cf280611931a981019ab9c02402101f01e01d01c01b01a019018135573aa00826aae79400c4d55cf280109aab9e500113754002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024646464646666ae68cdc3a800a400446660106eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d400920002300a300b357426aae7940188c98d4c044cd5ce00a80900800780709aab9d5003135744a00226aae7940044dd5000909118010019110911998008028020019000919191999ab9a3370ea0029001118031bae357426aae79400c8cccd5cd19b875002480008c020dd71aba135573ca008464c6a601666ae7003c0300280240204d55cea80089baa001212230020032122300100320011122232323333573466e1cd55cea80124000466aa016600c6ae854008c014d5d09aba25002232635300833573801801200e00c26aae7940044dd5000a4c2400240022244246600200600422400292010350543100112323001001223300330020020013233223332223322332233322222253353004333573466e1cd4d5403800c88ccc888c8c8c004014c8004d5405888cd4d404c005200022353550180022253353010333573466e3c0080240480444c01c0044c01800cc8004d5405488cd4d404800520002235355017002225335300f333573466e3c00801c04404040044c01800cd4c02cd4c02400c88008888888888801c008005200100600510061335738920121416c6c207370656e7420746f6b656e73206d7573742062652072656d696e7465640000512200212200120012212330010030022001222222222212333333333300100b00a009008007006005004003002200111220021221223300100400312001112212330010030021120011123230010012233003300200200101", + }, validatorHash: { - getScriptHash: "df4def976c66c24bb32f2bdf63da44bd4d77757811e670457b27690b", + getValidatorHash: { + getScriptHash: "df4def976c66c24bb32f2bdf63da44bd4d77757811e670457b27690b", + }, + }, + forwardingMPS: { + getMintingPolicy: "5908c0010000332332233322232323322332232323332223233322232333333332222222232333222323333222232323322323332223232323322332232323333322222332233223322332233223322332222232325335302f332235300a0012235300e002222222222233335302200b203f2333553059120013233505f223335350180032200200200135350160012200133501622533530400021042100103f235302b35301c0012200122235303000322335305500220462333573466e3c00406c11c11802c80fc80fccccd5cd19b8735573a6ea801120002047232635304633573809408e08a0886666ae68cdc39aab9d5002480008cc028c8c8c8c8c8c8c8c8c8c8c8cccd5cd19b8735573aa01490001199999999980c19a813119191999ab9a3370e6aae754009200023301e303635742a00460566ae84d5d1280111931a982b19ab9c05a057055054135573ca00226ea8004d5d0a80519a8130139aba150093335502d75ca0586ae854020ccd540b5d728161aba1500733502603f35742a00c66a04c66aa0a0090eb4d5d0a8029919191999ab9a3370e6aae754009200023350203232323333573466e1cd55cea80124000466a05066a07ceb4d5d0a80118219aba135744a004464c6a60b466ae7017816c1641604d55cf280089baa00135742a0046464646666ae68cdc39aab9d5002480008cd4098cd40f9d69aba150023043357426ae8940088c98d4c168cd5ce02f02d82c82c09aab9e5001137540026ae84d5d1280111931a982b19ab9c05a057055054135573ca00226ea8004d5d0a80219a8133ae35742a00666a04c66aa0a0eb88004d5d0a801181a9aba135744a004464c6a60a466ae7015814c1441404d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a0046464646666ae68cdc3a800a400c4603a606e6ae84d55cf280191999ab9a3370ea00490021180e18209aba135573ca00846666ae68cdc3a801a40044603860586ae84d55cf280291999ab9a3370ea00890001180f9bae357426aae7940188c98d4c134cd5ce02882702602582502482409aab9d5001137540026ae84d5d1280111931a982319ab9c04a0470450441046132635304533573892010350543500046044135573ca00226ea800448848cc00400c008480048848cc00400c0088004888888888848cccccccccc00402c02802402001c01801401000c00880048848cc00400c008800448848cc00400c0084800448848cc00400c0084800448848cc00400c00848004848888c010014848888c00c014848888c008014848888c004014800448c88c008dd6000990009aa81c111999aab9f00125038233503730043574200460066ae880080c08c8c8c8cccd5cd19b8735573aa006900011998039919191999ab9a3370e6aae754009200023300d302e35742a00466a0200546ae84d5d1280111931a981a19ab9c038035033032135573ca00226ea8004d5d0a801999aa805bae500a35742a00466a018eb8d5d09aba25002232635303033573806806205e05c26ae8940044d55cf280089baa00122212333001004003002200122123300100300220011335500175ceb44488c88c008dd5800990009aa81911191999aab9f002250332335032335502e300635573aa004600a6aae794008c010d5d100181589aba100112232323333573466e1d400520002350083005357426aae79400c8cccd5cd19b87500248008940208c98d4c0a8cd5ce01701581481401389aab9d500113754002242446004006224400224002464646666ae68cdc39aab9d5002480008cc018c01cd5d0a8011bad357426ae8940088c98d4c090cd5ce01401281181109aab9e50011375400244246600200600440024646666ae68cdc39aab9d5001480008dd71aba135573ca004464c6a604066ae7009008407c0784dd500089119191999ab9a3370ea00290021280391999ab9a3370ea004900111a80518031aba135573ca00846666ae68cdc3a801a40004a014464c6a604666ae7009c09008808408007c4d55cea80089baa00112122230030041122200211222001120012323333573466e1d40052002200623333573466e1d400920002006232635301b33573803e03803403203026aae74dd50008910010910009000919191919191999ab9a3370ea0029006100591999ab9a3370ea0049005100691999ab9a3370ea00690041198059bae35742a00a6eb4d5d09aba2500523333573466e1d4011200623300d375c6ae85401cdd71aba135744a00e46666ae68cdc3a802a400846602460286ae854024dd71aba135744a01246666ae68cdc3a8032400446028602a6ae84d55cf280591999ab9a3370ea00e900011809980b1aba135573ca018464c6a604066ae7009008407c07807407006c0680640604d55cea80209aab9e5003135573ca00426aae7940044dd500090911111118038041109111111198030048041091111111802804091111110020911111100191091111111980100480411091111111980080480410009191919191999ab9a3370ea002900111998041bad35742a0086eb4d5d0a8019bad357426ae89400c8cccd5cd19b875002480008c028c02cd5d09aab9e5006232635301133573802a02402001e01c26aae75400c4d5d1280089aab9e5001137540024244600400644424466600200a0080064002464646666ae68cdc3a800a40044600c6eb8d5d09aab9e500323333573466e1d4009200023008375c6ae84d55cf280211931a980599ab9c00f00c00a009008135573aa00226ea80048488c00800c8488c00400c800444888c8c8cccd5cd19b8735573aa0049000119aa80598031aba150023005357426ae8940088c98d4c020cd5ce00600480380309aab9e5001137540029309000900088910919800801801089000a490350543100320013550062211222533535006001135350090032200122133353500b0052200230040023335530071200100500400111220021221223300100400312001122123300100300212001112323001001223300330020020014891cdf4def976c66c24bb32f2bdf63da44bd4d77757811e670457b27690b0001", }, - forwardingMPS: - "5908c0010000332332233322232323322332232323332223233322232333333332222222232333222323333222232323322323332223232323322332232323333322222332233223322332233223322332222232325335302f332235300a0012235300e002222222222233335302200b203f2333553059120013233505f223335350180032200200200135350160012200133501622533530400021042100103f235302b35301c0012200122235303000322335305500220462333573466e3c00406c11c11802c80fc80fccccd5cd19b8735573a6ea801120002047232635304633573809408e08a0886666ae68cdc39aab9d5002480008cc028c8c8c8c8c8c8c8c8c8c8c8cccd5cd19b8735573aa01490001199999999980c19a813119191999ab9a3370e6aae754009200023301e303635742a00460566ae84d5d1280111931a982b19ab9c05a057055054135573ca00226ea8004d5d0a80519a8130139aba150093335502d75ca0586ae854020ccd540b5d728161aba1500733502603f35742a00c66a04c66aa0a0090eb4d5d0a8029919191999ab9a3370e6aae754009200023350203232323333573466e1cd55cea80124000466a05066a07ceb4d5d0a80118219aba135744a004464c6a60b466ae7017816c1641604d55cf280089baa00135742a0046464646666ae68cdc39aab9d5002480008cd4098cd40f9d69aba150023043357426ae8940088c98d4c168cd5ce02f02d82c82c09aab9e5001137540026ae84d5d1280111931a982b19ab9c05a057055054135573ca00226ea8004d5d0a80219a8133ae35742a00666a04c66aa0a0eb88004d5d0a801181a9aba135744a004464c6a60a466ae7015814c1441404d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a0046464646666ae68cdc3a800a400c4603a606e6ae84d55cf280191999ab9a3370ea00490021180e18209aba135573ca00846666ae68cdc3a801a40044603860586ae84d55cf280291999ab9a3370ea00890001180f9bae357426aae7940188c98d4c134cd5ce02882702602582502482409aab9d5001137540026ae84d5d1280111931a982319ab9c04a0470450441046132635304533573892010350543500046044135573ca00226ea800448848cc00400c008480048848cc00400c0088004888888888848cccccccccc00402c02802402001c01801401000c00880048848cc00400c008800448848cc00400c0084800448848cc00400c0084800448848cc00400c00848004848888c010014848888c00c014848888c008014848888c004014800448c88c008dd6000990009aa81c111999aab9f00125038233503730043574200460066ae880080c08c8c8c8cccd5cd19b8735573aa006900011998039919191999ab9a3370e6aae754009200023300d302e35742a00466a0200546ae84d5d1280111931a981a19ab9c038035033032135573ca00226ea8004d5d0a801999aa805bae500a35742a00466a018eb8d5d09aba25002232635303033573806806205e05c26ae8940044d55cf280089baa00122212333001004003002200122123300100300220011335500175ceb44488c88c008dd5800990009aa81911191999aab9f002250332335032335502e300635573aa004600a6aae794008c010d5d100181589aba100112232323333573466e1d400520002350083005357426aae79400c8cccd5cd19b87500248008940208c98d4c0a8cd5ce01701581481401389aab9d500113754002242446004006224400224002464646666ae68cdc39aab9d5002480008cc018c01cd5d0a8011bad357426ae8940088c98d4c090cd5ce01401281181109aab9e50011375400244246600200600440024646666ae68cdc39aab9d5001480008dd71aba135573ca004464c6a604066ae7009008407c0784dd500089119191999ab9a3370ea00290021280391999ab9a3370ea004900111a80518031aba135573ca00846666ae68cdc3a801a40004a014464c6a604666ae7009c09008808408007c4d55cea80089baa00112122230030041122200211222001120012323333573466e1d40052002200623333573466e1d400920002006232635301b33573803e03803403203026aae74dd50008910010910009000919191919191999ab9a3370ea0029006100591999ab9a3370ea0049005100691999ab9a3370ea00690041198059bae35742a00a6eb4d5d09aba2500523333573466e1d4011200623300d375c6ae85401cdd71aba135744a00e46666ae68cdc3a802a400846602460286ae854024dd71aba135744a01246666ae68cdc3a8032400446028602a6ae84d55cf280591999ab9a3370ea00e900011809980b1aba135573ca018464c6a604066ae7009008407c07807407006c0680640604d55cea80209aab9e5003135573ca00426aae7940044dd500090911111118038041109111111198030048041091111111802804091111110020911111100191091111111980100480411091111111980080480410009191919191999ab9a3370ea002900111998041bad35742a0086eb4d5d0a8019bad357426ae89400c8cccd5cd19b875002480008c028c02cd5d09aab9e5006232635301133573802a02402001e01c26aae75400c4d5d1280089aab9e5001137540024244600400644424466600200a0080064002464646666ae68cdc3a800a40044600c6eb8d5d09aab9e500323333573466e1d4009200023008375c6ae84d55cf280211931a980599ab9c00f00c00a009008135573aa00226ea80048488c00800c8488c00400c800444888c8c8cccd5cd19b8735573aa0049000119aa80598031aba150023005357426ae8940088c98d4c020cd5ce00600480380309aab9e5001137540029309000900088910919800801801089000a490350543100320013550062211222533535006001135350090032200122133353500b0052200230040023335530071200100500400111220021221223300100400312001122123300100300212001112323001001223300330020020014891cdf4def976c66c24bb32f2bdf63da44bd4d77757811e670457b27690b0001", forwardingMPSHash: { - getScriptHash: "487bb18c7e68bbb8f32e1f4da4ca734f1c4303474bcdb2d2967c6dc4", + getMintingPolicyHash: { + getScriptHash: "487bb18c7e68bbb8f32e1f4da4ca734f1c4303474bcdb2d2967c6dc4", + }, }, }, }; From abe51acfb4e3c89e55c370e887b8540df95c669b Mon Sep 17 00:00:00 2001 From: Neil Rutledge Date: Mon, 23 May 2022 13:50:39 -0400 Subject: [PATCH 04/29] Upgrade CTL and fix errors --- .output.js.swm | Bin 0 -> 53248 bytes .output.js.swn | Bin 0 -> 86016 bytes .output.js.swo | Bin 0 -> 73728 bytes .output.js.swp | Bin 0 -> 94208 bytes Makefile | 2 +- flake.lock | 81 +- flake.nix | 2 +- package-lock.json | 5302 +------------------ package.json | 7 +- packages.dhall | 77 +- spago-packages.nix | 6 +- src/Seabug/Contract/MarketPlaceBuy.purs | 10 +- src/Seabug/Contract/MarketPlaceListNft.purs | 2 +- 13 files changed, 281 insertions(+), 5208 deletions(-) create mode 100644 .output.js.swm create mode 100644 .output.js.swn create mode 100644 .output.js.swo create mode 100644 .output.js.swp diff --git a/.output.js.swm b/.output.js.swm new file mode 100644 index 0000000000000000000000000000000000000000..7ffa4100a21762d6f23be3153018f1acd945b88b GIT binary patch literal 53248 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

=fItc|2=Bk9-; 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 literal 0 HcmV?d00001 diff --git a/.output.js.swn b/.output.js.swn new file mode 100644 index 0000000000000000000000000000000000000000..f2f90189a715d3e4c8e8d72907e884b93208a3ab GIT binary patch literal 86016 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 GO8mdhw3>?m literal 0 HcmV?d00001 diff --git a/.output.js.swo b/.output.js.swo new file mode 100644 index 0000000000000000000000000000000000000000..425402320a6f3623262af545c8d797a6d2be45aa GIT binary patch literal 73728 zcmeHw37i~7*?vpHecu5EnkB$2NhT*r2n5(H2?TPHgTn=q+1=jkB(pP{nb}P?Asm8o z$p>-?N)Ql41(8!k?n45|sem8^L=NSYO9essKX27j-CfnQN0j(|e}B`zeRjI*sd}sG zt+%SHs;jFThaEO~sy{Y8+{3Y%=dGChjmG@AO})1|JTD()b3@v4nZ}Zk-5*oxX3U;G zW5~oYhty3uc(#&M(erVUz@f#Uy-*rj3Nnoy^M^DQ^5tTtsazUb=qR^$l+z1(iLs*i zs$*3HRSk5ffsS&^kg*%j898G3F!8cW&CdRoTg>Usch$YBfvN_o8mMZZs)4Eosv4+j zpsInY2L1~*P;T$<9glqVW8Mzs$(ML-emCUxTWNiAn#1?!b$0j4{MzI{rJzrp@SlCI zkAm^Xh)w*Tl3z%E!CLyn@P8-YMgD1r|HR>^Ir;pU{MQ(MrNjS?d?)$I%&>|7ujI?* z?{fIRkk6AJNrjm3ACW(c{ACXRA^A4)!`9I!Cj1AE{1p!WKKU68zu~%e`1i;!BH!Tf zezyo*sehfAi+%LwY4q( z3G(yEU+M6VlQ;Ea?QQJvk2&F+9sW`BODO+-hku0p;pF$()|US(hdW{y@9sYju=Kgn?!{0~V z=zp^>+u`peZ|t++@b{4aD%1C{!{6=j1HWR+zl;3g41b)%-$~x+|7nN6gM4UzJJ|AX zCvWn1rNiGw-lV_(j&}H8ke|r(9pmt~l0TUI_Z|M{EAJLwbCzWj{5 zslPWk{LSRe{ckJZ4u2E*R?0uk;cp~=1o`(J{s!{1$xq%{pP2MrPu{doD;)kh^2Yww zs|)EmhPA~4p@jQn(lzuVz2B|o10rYSr8_sG|ipW^VBkUxd|Sq{H~{0j2h)Y|ed zCVx8l8y)_;khKRUr65c4+;+dZSwONewD*tKz={+ z;|JUF&nG{V{IL#y9{EY+A9MI~$&Vqw)eu|$IZphCIQ+NB(`>!d9sX?cY_`2?9sVrx zCVdY({Qo%dZtdS z$oC`vp~KTT@snxxymjC@VJ-aI%=1pAk5!v`-V?xWz}3Kyfs=q%U^*}w*b-O^cySZY zTM1kS91nB=ZNL%0p}-ViTVNgF_Zvela3(MhI1s1>)(2kO$n)+4ZUC+XRsa_Qoj?O{ z7%&=G5Ac9LZ|Hds0k;Cj0ds&2fj@2Fd5-`qfg6Bxf#ZQrU>2|gur;t5@b3Da_aJaL z@KfM4pbIzv*Z_EMJmzfK7nELGkYbZvc-2*8`^ji-0UJ8#n-{2X+Gb0dK60^a57^Uk8>0tw07i3aACP z0{R2}fOq?Q-aWu|!0EtJU@9;OSPys&2D1uy1o#1P0nh~O3k(2Wgk9VK919!+90-W5 z)B*bN{pEXmzB-CQxucl(o3l;jbX%rfoI5i`AE*9!zojGJRL&OieoFXSe;L^WGUd$N zIr(fEeg@8%)lef2X>q7IdT%W^{y!dSk`WmXX&e!ne(Pm4x) zLRB@AkD){T1A}}}%#?#>zp=}2?AC=zIOSMoRDMTm=US6BRi3Dd7 z8)`a~UL|&BEiEoaQ^wIs9gBj>td!ZvN0d|TRzc93$fIR6h|@769c5e*D%bER%0|X) zZAW@!Wc}aj`#6>(0s7GH4cViSvX)e)Sj4H4 zBQ(m(Pf2ykf*rOue)jQm_!%@v*Cp{Iv=#zC`CzeMS1e|_Qn^rwc*uc+>~t>3&o8%1 z(T52$2INcRS}awNhC`-ns#B9¿YRe$j!Xs9XVYb2+Iyk()8_V!%Yq+GVWJ!n>Z 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 Q=N`|;l|K~;ERzKOAFYB!9smFU literal 0 HcmV?d00001 diff --git a/Makefile b/Makefile index b979bac..192930d 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ SHELL := bash .ONESHELL: .SHELLFLAGS := -eu -o pipefail -c -ps-sources := $(shell find . -type f -name "*.purs") +ps-sources := $(shell fd -epurs) ps-entrypoint := Seabug ps-bundle = spago bundle-module -m ${ps-entrypoint} --to output.js diff --git a/flake.lock b/flake.lock index 34725f7..eec8303 100644 --- a/flake.lock +++ b/flake.lock @@ -529,6 +529,7 @@ "cardano-wallet": "cardano-wallet", "easy-purescript-nix": "easy-purescript-nix", "ekg-forward": "ekg-forward", + "flake-compat": "flake-compat", "flat": "flat", "goblins": "goblins", "haskell-nix": "haskell-nix", @@ -548,17 +549,17 @@ "servant-purescript": "servant-purescript" }, "locked": { - "lastModified": 1651223750, - "narHash": "sha256-7wvFP7D4itWFNTsUVZMR3sX6i6Zsp0Ko347opAQlZck=", + "lastModified": 1652943957, + "narHash": "sha256-+jjE0/Yrw9NnDkPAFUW/urtebV0C6MyT42TkPMs9wNQ=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "a83d75e852571e6a8ad2e60c449f198e1b3270a2", + "rev": "624c3411c732d222959b7b04b449e6f6ba6acfd6", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "a83d75e852571e6a8ad2e60c449f198e1b3270a2", + "rev": "624c3411c732d222959b7b04b449e6f6ba6acfd6", "type": "github" } }, @@ -628,6 +629,22 @@ } }, "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { "flake": false, "locked": { "lastModified": 1641205782, @@ -643,7 +660,23 @@ "type": "github" } }, - "flake-compat_2": { + "flake-compat_3": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_4": { "flake": false, "locked": { "lastModified": 1650374568, @@ -1505,6 +1538,22 @@ "type": "indirect" } }, + "nixpkgs_3": { + "locked": { + "lastModified": 1634172192, + "narHash": "sha256-FBF4U/T+bMg4sEyT/zkgasvVquGzgdAf4y8uCosKMmo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2cf9db0e3d45b9d00f16f2836cb1297bcadc475e", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2cf9db0e3d45b9d00f16f2836cb1297bcadc475e", + "type": "github" + } + }, "ogmios": { "inputs": { "Win32-network": "Win32-network_2", @@ -1513,7 +1562,7 @@ "cardano-ledger": "cardano-ledger_2", "cardano-node": "cardano-node_2", "cardano-prelude": "cardano-prelude_2", - "flake-compat": "flake-compat", + "flake-compat": "flake-compat_2", "flat": "flat_2", "goblins": "goblins_2", "haskell-nix": "haskell-nix_2", @@ -1532,28 +1581,30 @@ "wai-routes": "wai-routes" }, "locked": { - "lastModified": 1646900647, - "narHash": "sha256-UIUu3B1ONjXCnNJjLwgeGxczo00FrSUd2Iwg1mSb8VQ=", + "lastModified": 1652775217, + "narHash": "sha256-Xt2OaeF45tCPyvKU11ZbcAT/4EkYXcwWWCGVXwPtW/w=", "owner": "mlabs-haskell", "repo": "ogmios", - "rev": "c4f896bf32ad066be8edd8681ee11e4ab059be7f", + "rev": "d187ba9581b9e1b4ed85fdf652b1e08fa6e09d7f", "type": "github" }, "original": { "owner": "mlabs-haskell", "repo": "ogmios", - "rev": "c4f896bf32ad066be8edd8681ee11e4ab059be7f", "type": "github" } }, "ogmios-datum-cache": { - "flake": false, + "inputs": { + "flake-compat": "flake-compat_3", + "nixpkgs": "nixpkgs_3" + }, "locked": { - "lastModified": 1649871652, - "narHash": "sha256-X2oDliRDUb7Y8a5SfBxSzWgzYY0Spun2YwZFN+3gCTE=", + "lastModified": 1652673546, + "narHash": "sha256-fd3UST7vjed7KLOrLsFD8/nP7YXhCAQ3ODFs5SjZ6SQ=", "owner": "mlabs-haskell", "repo": "ogmios-datum-cache", - "rev": "9e8bcbe00f88715afdb202cd9654ec2adc72c09e", + "rev": "dbff887d14122249352c1a853be05023f64a2664", "type": "github" }, "original": { @@ -1718,7 +1769,7 @@ "root": { "inputs": { "cardano-transaction-lib": "cardano-transaction-lib", - "flake-compat": "flake-compat_2", + "flake-compat": "flake-compat_4", "nixpkgs": [ "cardano-transaction-lib", "nixpkgs" diff --git a/flake.nix b/flake.nix index 23c4bdc..59aceef 100644 --- a/flake.nix +++ b/flake.nix @@ -10,7 +10,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "a83d75e852571e6a8ad2e60c449f198e1b3270a2"; + rev = "624c3411c732d222959b7b04b449e6f6ba6acfd6"; }; nixpkgs.follows = "cardano-transaction-lib/nixpkgs"; }; diff --git a/package-lock.json b/package-lock.json index baa9e38..6e0f4c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5118 +1,8 @@ { "name": "seabug-contracts", "version": "0.1.0", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "seabug-contracts", - "version": "0.1.0", - "license": "MIT", - "dependencies": { - "@ngua/cardano-serialization-lib-browser": "9.1.2", - "@ngua/cardano-serialization-lib-nodejs": "9.1.2", - "big-integer": "1.6.51", - "bufferutil": "4.0.5", - "node-polyfill-webpack-plugin": "1.1.4", - "uniqid": "5.4.0", - "ws": "8.4.0", - "xhr2": "0.2.1" - }, - "devDependencies": { - "buffer": "6.0.3", - "html-webpack-plugin": "5.5.0", - "webpack": "5.67.0", - "webpack-cli": "4.9.2", - "webpack-dev-server": "4.7.4" - } - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", - "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@ngua/cardano-serialization-lib-browser": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@ngua/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-9.1.2.tgz", - "integrity": "sha512-0KkS3vCwrK8Yxs+yuoFJ05Ou5r0AZJNTWks9otP5h9ODsTUpkgJDb3lVmflJmSB0KnA9JvF3AmcN/swXj/yw+A==" - }, - "node_modules/@ngua/cardano-serialization-lib-nodejs": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@ngua/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-9.1.2.tgz", - "integrity": "sha512-6xpp5Xjcqm9eHIrKBUmmIeZV6n0OeK6t8vCyQzF8KcHEQiknAcIcoIq/wf7sEcLV3ohwn945QCKkM3rKsKF5FA==" - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", - "dev": true, - "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "node_modules/@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" - }, - "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "node_modules/@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true - }, - "node_modules/@types/http-proxy": { - "version": "1.17.8", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", - "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" - }, - "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "node_modules/@types/node": { - "version": "17.0.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.14.tgz", - "integrity": "sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==" - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "node_modules/@types/retry": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", - "dev": true - }, - "node_modules/@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", - "dev": true, - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "dev": true, - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/ws": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz", - "integrity": "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", - "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", - "dev": true, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", - "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", - "dev": true, - "dependencies": { - "envinfo": "^7.7.3" - }, - "peerDependencies": { - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", - "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", - "dev": true, - "peerDependencies": { - "webpack-cli": "4.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "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", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "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", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", - "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "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/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==", - "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "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", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/assert": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", - "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", - "dependencies": { - "es6-object-assign": "^1.1.0", - "is-nan": "^1.2.1", - "object-is": "^1.0.1", - "util": "^0.12.0" - } - }, - "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "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", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - }, - "node_modules/body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", - "dev": true, - "dependencies": { - "bytes": "3.1.1", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.6", - "raw-body": "2.4.2", - "type-is": "~1.6.18" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dev": true, - "dependencies": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "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, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "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", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "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", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "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", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "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" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "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.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", - "dependencies": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "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", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" - }, - "node_modules/bufferutil": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.5.tgz", - "integrity": "sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/bufferutil/node_modules/node-gyp-build": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" - }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001305", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001305.tgz", - "integrity": "sha512-p7d9YQMji8haf0f+5rbcv9WlQ+N5jMPfRAnUmZRlNxsNeBO3Yr7RYG6M2uTY1h9tCVdlkJg6YNNc4kiAiBLdWA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "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" - } - }, - "node_modules/clean-css": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.4.tgz", - "integrity": "sha512-nKseG8wCzEuji/4yrgM/5cthL9oTDc5UOQyFMvW/Q53oP6gLH690o1NbuTh6Y18nujr7BxlsFuS7gXLnLzKJGg==", - "dev": true, - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", - "dev": true - }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "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" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "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", - "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", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "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", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "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", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/css-select": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", - "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^5.1.0", - "domhandler": "^4.3.0", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, - "dependencies": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dev": true, - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", - "dev": true, - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/del/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/del/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "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", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "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, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", - "dev": true - }, - "node_modules/dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dev": true, - "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dev": true, - "dependencies": { - "buffer-indexof": "^1.0.0" - } - }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "dependencies": { - "utila": "~0.4" - } - }, - "node_modules/dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domain-browser": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", - "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", - "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.63", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.63.tgz", - "integrity": "sha512-e0PX/LRJPFRU4kzJKLvTobxyFdnANCvcoDCe8XcyTqP58nTWIwdsHvXLIl1RkB39X5yaosLaroMASWB0oIsgCA==" - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" - }, - "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==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es6-object-assign": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", - "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=" - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "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" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "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", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/events": { - "version": "3.3.0", - "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", - "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" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/execa/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/express": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", - "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", - "dev": true, - "dependencies": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.4.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.9.6", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.17.2", - "serve-static": "1.14.2", - "setprototypeof": "1.2.0", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/filter-obj": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.2.tgz", - "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/follow-redirects": { - "version": "1.14.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", - "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "node_modules/graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash.js": { - "version": "1.1.7", - "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" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/hpack.js/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/html-entities": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", - "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", - "dev": true - }, - "node_modules/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", - "dev": true, - "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/html-webpack-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", - "dev": true, - "dependencies": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" - }, - "peerDependencies": { - "webpack": "^5.20.0" - } - }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-parser-js": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", - "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==", - "dev": true - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-middleware": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.2.tgz", - "integrity": "sha512-XtmDN5w+vdFTBZaYhdJAbMqn0DP/EhkUaAeo963mojwpKMMbw6nivtFKw07D7DDOH745L5k0VL0P8KRYNEVF/g==", - "dev": true, - "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - } - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "node_modules/ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-nan": { - "version": "1.3.2", - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", - "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-worker": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz", - "integrity": "sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/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==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "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", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memfs": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", - "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", - "dev": true, - "dependencies": { - "fs-monkey": "1.0.3" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "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", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "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" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "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", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "dependencies": { - "mime-db": "1.51.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "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", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "dependencies": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, - "node_modules/multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/node-forge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", - "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", - "dev": true, - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/node-polyfill-webpack-plugin": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-1.1.4.tgz", - "integrity": "sha512-Z0XTKj1wRWO8o/Vjobsw5iOJCN+Sua3EZEUc2Ziy9CyVvmHKu6o+t4gUH9GOE0czyPR94LI6ZCV/PpcM8b5yow==", - "dependencies": { - "assert": "^2.0.0", - "browserify-zlib": "^0.2.0", - "buffer": "^6.0.3", - "console-browserify": "^1.2.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.12.0", - "domain-browser": "^4.19.0", - "events": "^3.3.0", - "filter-obj": "^2.0.2", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "^1.0.1", - "process": "^0.11.10", - "punycode": "^2.1.1", - "querystring-es3": "^0.2.1", - "readable-stream": "^3.6.0", - "stream-browserify": "^3.0.0", - "stream-http": "^3.2.0", - "string_decoder": "^1.3.0", - "timers-browserify": "^2.0.12", - "tty-browserify": "^0.0.1", - "url": "^0.11.0", - "util": "^0.12.4", - "vm-browserify": "^1.1.2" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "webpack": ">=5" - } - }, - "node_modules/node-polyfill-webpack-plugin/node_modules/string_decoder": { - "version": "1.3.0", - "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/node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "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.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "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, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-retry": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", - "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", - "dev": true, - "dependencies": { - "@types/retry": "^0.12.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-retry/node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "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", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "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", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "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", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/portfinder/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "dev": true, - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-addr/node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "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", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", - "dev": true, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "engines": { - "node": ">=0.4.x" - } - }, - "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==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "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", - "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" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", - "dev": true, - "dependencies": { - "bytes": "3.1.1", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "dependencies": { - "resolve": "^1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", - "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "dev": true, - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "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" - } - }, - "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==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "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", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "node_modules/selfsigned": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", - "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", - "dev": true, - "dependencies": { - "node-forge": "^1.2.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", - "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "1.8.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/serve-static": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", - "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/sha.js": { - "version": "2.4.11", - "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" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "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-support": { - "version": "0.5.21", - "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" - } - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - } - }, - "node_modules/spdy-transport/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/spdy-transport/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/spdy/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/spdy/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/stream-browserify": { - "version": "3.0.0", - "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" - } - }, - "node_modules/stream-http": { - "version": "3.2.0", - "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", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" - } - }, - "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==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "acorn": "^8.5.0" - }, - "peerDependenciesMeta": { - "acorn": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", - "dependencies": { - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", - "terser": "^5.7.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "node_modules/timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, - "node_modules/tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/uniqid": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-5.4.0.tgz", - "integrity": "sha512-38JRbJ4Fj94VmnC7G/J/5n5SC7Ab46OM5iNtSstB/ko3l1b5g7ALt4qzHFgGciFkyiRNtDXtLNb+VsxtMSE77A==" - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "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.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - }, - "node_modules/util": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", - "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" - }, - "node_modules/watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/webpack": { - "version": "5.67.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", - "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", - "dependencies": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", - "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.1", - "@webpack-cli/info": "^1.4.1", - "@webpack-cli/serve": "^1.6.1", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "execa": "^5.0.0", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-dev-middleware": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", - "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", - "dev": true, - "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.4.1", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-dev-middleware/node_modules/ajv": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", - "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack-dev-server": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.4.tgz", - "integrity": "sha512-nfdsb02Zi2qzkNmgtZjkrMOcXnYZ6FLKcQwpxT7MvmHKc+oTtDsBju8j+NMyAygZ9GW1jMEUpy3itHtqgEhe1A==", - "dev": true, - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.2.2", - "ansi-html-community": "^0.0.8", - "bonjour": "^3.5.0", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "default-gateway": "^6.0.3", - "del": "^6.0.0", - "express": "^4.17.1", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.0", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "portfinder": "^1.0.28", - "schema-utils": "^4.0.0", - "selfsigned": "^2.0.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "spdy": "^4.0.2", - "strip-ansi": "^7.0.0", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 12.13.0" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/ajv": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", - "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack-dev-server/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack-dev-server/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, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack-dev-server/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz", - "integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "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/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "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==", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", - "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/ws": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", - "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xhr2": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.1.tgz", - "integrity": "sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - } - }, "dependencies": { "@discoveryjs/json-ext": { "version": "0.5.6", @@ -5198,6 +88,7 @@ "version": "8.4.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "dev": true, "requires": { "@types/estree": "*", "@types/json-schema": "*" @@ -5207,6 +98,7 @@ "version": "3.7.3", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, "requires": { "@types/eslint": "*", "@types/estree": "*" @@ -5215,7 +107,8 @@ "@types/estree": { "version": "0.0.50", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "dev": true }, "@types/express": { "version": "4.17.13", @@ -5258,7 +151,8 @@ "@types/json-schema": { "version": "7.0.9", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true }, "@types/mime": { "version": "1.3.2", @@ -5269,7 +163,8 @@ "@types/node": { "version": "17.0.14", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.14.tgz", - "integrity": "sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==" + "integrity": "sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==", + "dev": true }, "@types/qs": { "version": "6.9.7", @@ -5330,6 +225,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1" @@ -5338,22 +234,26 @@ "@webassemblyjs/floating-point-hex-parser": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true }, "@webassemblyjs/helper-api-error": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true }, "@webassemblyjs/helper-buffer": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true }, "@webassemblyjs/helper-numbers": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, "requires": { "@webassemblyjs/floating-point-hex-parser": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -5363,12 +263,14 @@ "@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true }, "@webassemblyjs/helper-wasm-section": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -5380,6 +282,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } @@ -5388,6 +291,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, "requires": { "@xtuc/long": "4.2.2" } @@ -5395,12 +299,14 @@ "@webassemblyjs/utf8": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true }, "@webassemblyjs/wasm-edit": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -5416,6 +322,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-wasm-bytecode": "1.11.1", @@ -5428,6 +335,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-buffer": "1.11.1", @@ -5439,6 +347,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/helper-api-error": "1.11.1", @@ -5452,6 +361,7 @@ "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, "requires": { "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" @@ -5461,8 +371,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", - "dev": true, - "requires": {} + "dev": true }, "@webpack-cli/info": { "version": "1.4.1", @@ -5477,18 +386,19 @@ "version": "1.6.1", "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", - "dev": true, - "requires": {} + "dev": true }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true }, "@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true }, "accepts": { "version": "1.3.8", @@ -5503,13 +413,14 @@ "acorn": { "version": "8.7.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==" + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true }, "acorn-import-assertions": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "requires": {} + "dev": true }, "aggregate-error": { "version": "3.1.0", @@ -5525,6 +436,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -5565,7 +477,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "requires": {} + "dev": true }, "ansi-html-community": { "version": "0.0.8", @@ -5812,6 +724,7 @@ "version": "4.19.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "dev": true, "requires": { "caniuse-lite": "^1.0.30001286", "electron-to-chromium": "^1.4.17", @@ -5832,7 +745,8 @@ "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, "buffer-indexof": { "version": "1.1.1", @@ -5893,7 +807,8 @@ "caniuse-lite": { "version": "1.0.30001305", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001305.tgz", - "integrity": "sha512-p7d9YQMji8haf0f+5rbcv9WlQ+N5jMPfRAnUmZRlNxsNeBO3Yr7RYG6M2uTY1h9tCVdlkJg6YNNc4kiAiBLdWA==" + "integrity": "sha512-p7d9YQMji8haf0f+5rbcv9WlQ+N5jMPfRAnUmZRlNxsNeBO3Yr7RYG6M2uTY1h9tCVdlkJg6YNNc4kiAiBLdWA==", + "dev": true }, "chokidar": { "version": "3.5.3", @@ -5914,7 +829,8 @@ "chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true }, "cipher-base": { "version": "1.0.4", @@ -6360,7 +1276,8 @@ "electron-to-chromium": { "version": "1.4.63", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.63.tgz", - "integrity": "sha512-e0PX/LRJPFRU4kzJKLvTobxyFdnANCvcoDCe8XcyTqP58nTWIwdsHvXLIl1RkB39X5yaosLaroMASWB0oIsgCA==" + "integrity": "sha512-e0PX/LRJPFRU4kzJKLvTobxyFdnANCvcoDCe8XcyTqP58nTWIwdsHvXLIl1RkB39X5yaosLaroMASWB0oIsgCA==", + "dev": true }, "elliptic": { "version": "6.5.4", @@ -6393,6 +1310,7 @@ "version": "5.8.3", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "dev": true, "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -6440,7 +1358,8 @@ "es-module-lexer": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true }, "es-to-primitive": { "version": "1.2.1", @@ -6460,7 +1379,8 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true }, "escape-html": { "version": "1.0.3", @@ -6472,6 +1392,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -6481,6 +1402,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, "requires": { "estraverse": "^5.2.0" }, @@ -6488,14 +1410,16 @@ "estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true } } }, "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true }, "etag": { "version": "1.8.1", @@ -6611,7 +1535,8 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "fast-glob": { "version": "3.2.11", @@ -6629,7 +1554,8 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "fastest-levenshtein": { "version": "1.0.12", @@ -6778,12 +1704,14 @@ "glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true }, "graceful-fs": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "dev": true }, "handle-thing": { "version": "2.0.1", @@ -6807,7 +1735,8 @@ "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "has-symbols": { "version": "1.0.2", @@ -7305,6 +2234,7 @@ "version": "27.4.6", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz", "integrity": "sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==", + "dev": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -7315,6 +2245,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "requires": { "has-flag": "^4.0.0" } @@ -7324,12 +2255,14 @@ "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "kind-of": { "version": "6.0.3", @@ -7340,7 +2273,8 @@ "loader-runner": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==" + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true }, "locate-path": { "version": "5.0.0", @@ -7400,7 +2334,8 @@ "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "merge2": { "version": "1.4.1", @@ -7449,12 +2384,14 @@ "mime-db": { "version": "1.51.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true }, "mime-types": { "version": "2.1.34", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, "requires": { "mime-db": "1.51.0" } @@ -7530,7 +2467,8 @@ "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true }, "no-case": { "version": "3.0.4", @@ -7592,7 +2530,8 @@ "node-releases": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true }, "normalize-path": { "version": "3.0.0", @@ -7853,7 +2792,8 @@ "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "picomatch": { "version": "2.3.1", @@ -8055,6 +2995,11 @@ "resolve": "^1.9.0" } }, + "reconnecting-websocket": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", + "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==" + }, "regexp.prototype.flags": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", @@ -8185,6 +3130,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, "requires": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -8239,6 +3185,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, "requires": { "randombytes": "^2.1.0" } @@ -8376,12 +3323,14 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -8474,21 +3423,6 @@ "xtend": "^4.0.2" } }, - "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==", - "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, "string.prototype.trimend": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", @@ -8507,6 +3441,21 @@ "define-properties": "^1.1.3" } }, + "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==", + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -8531,12 +3480,14 @@ "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true }, "terser": { "version": "5.10.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "dev": true, "requires": { "commander": "^2.20.0", "source-map": "~0.7.2", @@ -8546,12 +3497,14 @@ "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true } } }, @@ -8559,6 +3512,7 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, "requires": { "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", @@ -8643,6 +3597,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -8714,6 +3669,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, "requires": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -8732,6 +3688,7 @@ "version": "5.67.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", + "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", "@types/estree": "^0.0.50", @@ -8937,8 +3894,7 @@ "version": "8.4.2", "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz", "integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==", - "dev": true, - "requires": {} + "dev": true } } }, @@ -8955,7 +3911,8 @@ "webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true }, "websocket-driver": { "version": "0.7.4", @@ -9014,8 +3971,7 @@ "ws": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", - "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", - "requires": {} + "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==" }, "xhr2": { "version": "0.2.1", diff --git a/package.json b/package.json index 180efef..546369d 100644 --- a/package.json +++ b/package.json @@ -20,14 +20,19 @@ "bufferutil": "4.0.5", "node-polyfill-webpack-plugin": "1.1.4", "uniqid": "5.4.0", + "reconnecting-websocket": "4.4.0", "ws": "8.4.0", "xhr2": "0.2.1" }, "devDependencies": { "buffer": "6.0.3", + "html-webpack-plugin": "5.5.0", "webpack": "5.67.0", "webpack-cli": "4.9.2", - "html-webpack-plugin": "5.5.0", "webpack-dev-server": "4.7.4" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/mlabs-haskell/seabug-contracts.git" } } diff --git a/packages.dhall b/packages.dhall index 32fef19..0f2ce93 100644 --- a/packages.dhall +++ b/packages.dhall @@ -108,7 +108,72 @@ let upstream = https://github.com/purescript/package-sets/releases/download/psc-0.14.5-20211116/packages.dhall sha256:7ba810597a275e43c83411d2ab0d4b3c54d0b551436f4b1632e9ff3eb62e327a let additions = - { + { aeson = + { dependencies = + [ "aff" + , "argonaut" + , "argonaut-codecs" + , "argonaut-core" + , "arrays" + , "bifunctors" + , "bigints" + , "const" + , "control" + , "effect" + , "either" + , "exceptions" + , "foldable-traversable" + , "foreign-object" + , "gen" + , "identity" + , "integers" + , "maybe" + , "newtype" + , "node-buffer" + , "node-fs-aff" + , "node-path" + , "nonempty" + , "numbers" + , "partial" + , "prelude" + , "quickcheck" + , "record" + , "sequences" + , "spec" + , "strings" + , "transformers" + , "tuples" + , "typelevel" + , "typelevel-prelude" + , "uint" + , "untagged-union" + ] + , repo = "https://github.com/mlabs-haskell/purescript-aeson.git" + , version = "5054e03ee14376768071c24d63889bfab8db2667" + } + , sequences = + { dependencies = + [ "arrays" + , "assert" + , "console" + , "effect" + , "lazy" + , "maybe" + , "newtype" + , "nonempty" + , "partial" + , "prelude" + , "profunctor" + , "psci-support" + , "quickcheck" + , "quickcheck-laws" + , "tuples" + , "unfoldable" + , "unsafe-coerce" + ] + , repo = "https://github.com/hdgarrood/purescript-sequences" + , version = "v3.0.2" + } , properties = { dependencies = ["prelude", "console"] , repo = "https://github.com/Risto-Stevcev/purescript-properties.git" @@ -171,12 +236,10 @@ let additions = } , cardano-transaction-lib = { dependencies = - [ "aff" + [ "aeson" + , "aff" , "aff-promise" , "affjax" - , "argonaut" - , "argonaut-codecs" - , "argonaut-core" , "arraybuffer-types" , "arrays" , "bifunctors" @@ -193,7 +256,6 @@ let additions = , "exceptions" , "foldable-traversable" , "foreign-object" - , "gen" , "identity" , "integers" , "js-date" @@ -207,7 +269,6 @@ let additions = , "node-buffer" , "node-fs" , "node-fs-aff" - , "node-path" , "nonempty" , "ordered-collections" , "partial" @@ -234,7 +295,7 @@ let additions = , "variant" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "a83d75e852571e6a8ad2e60c449f198e1b3270a2" + , version = "624c3411c732d222959b7b04b449e6f6ba6acfd6" } } in upstream // additions diff --git a/spago-packages.nix b/spago-packages.nix index 35d3b6a..50d9b5f 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -175,11 +175,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "a83d75e852571e6a8ad2e60c449f198e1b3270a2"; + version = "624c3411c732d222959b7b04b449e6f6ba6acfd6"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "a83d75e852571e6a8ad2e60c449f198e1b3270a2"; - sha256 = "1jb54l2a9s4fvyl459vcls5zmify269ma51v6n2xb2pqn0zwa2zg"; + rev = "624c3411c732d222959b7b04b449e6f6ba6acfd6"; + sha256 = "1m607p5krr34wf9wrs02bmnmxfxspx2ibh231rkx7hrbyv9w8f7s"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/src/Seabug/Contract/MarketPlaceBuy.purs b/src/Seabug/Contract/MarketPlaceBuy.purs index b20383b..aaffa80 100644 --- a/src/Seabug/Contract/MarketPlaceBuy.purs +++ b/src/Seabug/Contract/MarketPlaceBuy.purs @@ -14,7 +14,7 @@ import Contract.Address import Contract.ScriptLookups (UnattachedUnbalancedTx, mkUnbalancedTx) import Contract.ScriptLookups ( mintingPolicy - , otherScript + , validator , ownPaymentPubKeyHash , typedValidatorLookups , unspentOutputs @@ -44,7 +44,7 @@ import Contract.Transaction import Contract.TxConstraints ( TxConstraints , mustMintValueWithRedeemer - , mustPayToOtherScript + , mustPayToScript , mustPayWithDatumToPubKey , mustSpendScriptOutput ) @@ -181,7 +181,7 @@ mkMarketplaceTx (NftData nftData) = do lookup = mconcat [ ScriptLookups.mintingPolicy policy , ScriptLookups.typedValidatorLookups $ wrap marketplaceValidator' - , ScriptLookups.otherScript marketplaceValidator'.validator + , ScriptLookups.validator marketplaceValidator'.validator , ScriptLookups.unspentOutputs $ insert utxo utxoIndex $ unwrap userUtxos , ScriptLookups.ownPaymentPubKeyHash pkh ] @@ -191,7 +191,7 @@ mkMarketplaceTx (NftData nftData) = do constraints = filterLowValue daoShare - (mustPayToOtherScript nftCollection.daoScript datum) + (mustPayToScript nftCollection.daoScript datum) <> filterLowValue authorShare (mustPayWithDatumToPubKey nftCollection.author datum) @@ -199,7 +199,7 @@ mkMarketplaceTx (NftData nftData) = do [ mustMintValueWithRedeemer mintRedeemer (newNftValue <> oldNftValue) , mustSpendScriptOutput utxo unitRedeemer , mustPayWithDatumToPubKey nft'.owner datum ownerShare - , mustPayToOtherScript + , mustPayToScript valHash ( Datum $ toData $ MarketplaceDatum { getMarketplaceDatum: curr /\ newName } diff --git a/src/Seabug/Contract/MarketPlaceListNft.purs b/src/Seabug/Contract/MarketPlaceListNft.purs index b985d35..3f02cb2 100644 --- a/src/Seabug/Contract/MarketPlaceListNft.purs +++ b/src/Seabug/Contract/MarketPlaceListNft.purs @@ -51,7 +51,7 @@ marketPlaceListNft = do datumHash <- MaybeT $ pure $ out.dataHash plutusData <- MaybeT $ getDatumByHash datumHash MarketplaceDatum { getMarketplaceDatum: curr /\ name } <- - MaybeT $ pure $ fromData plutusData + MaybeT $ pure $ fromData $ unwrap plutusData let (Identity amt) = toPlutusType out.amount guard $ valueOf amt curr name == one metadata <- MaybeT $ map hush $ getFullSeabugMetadata $ curr /\ name From dbea8a79a74d50f8d2b1556ae2babc2e9a5d17d1 Mon Sep 17 00:00:00 2001 From: Neil Rutledge Date: Fri, 27 May 2022 08:44:18 -0400 Subject: [PATCH 05/29] Bump CTL version and add getWallatBalance function --- flake.lock | 8 ++++---- flake.nix | 2 +- index.js | 24 ++++++++---------------- packages.dhall | 2 +- spago-packages.nix | 30 +++++++++++++++++++++++++++--- src/Seabug/Seabug.purs | 11 +++++------ 6 files changed, 46 insertions(+), 31 deletions(-) diff --git a/flake.lock b/flake.lock index eec8303..669c0b7 100644 --- a/flake.lock +++ b/flake.lock @@ -549,17 +549,17 @@ "servant-purescript": "servant-purescript" }, "locked": { - "lastModified": 1652943957, - "narHash": "sha256-+jjE0/Yrw9NnDkPAFUW/urtebV0C6MyT42TkPMs9wNQ=", + "lastModified": 1653572943, + "narHash": "sha256-ORRAzJMx+gFShpnpfdIm1N/SPf7QkG04BsDbuh2UX10=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "624c3411c732d222959b7b04b449e6f6ba6acfd6", + "rev": "c56f0d4bf94173f16e8ec6888b1a242c1506b018", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "624c3411c732d222959b7b04b449e6f6ba6acfd6", + "rev": "c56f0d4bf94173f16e8ec6888b1a242c1506b018", "type": "github" } }, diff --git a/flake.nix b/flake.nix index 59aceef..8ef58bd 100644 --- a/flake.nix +++ b/flake.nix @@ -10,7 +10,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "624c3411c732d222959b7b04b449e6f6ba6acfd6"; + rev = "c56f0d4bf94173f16e8ec6888b1a242c1506b018"; }; nixpkgs.follows = "cardano-transaction-lib/nixpkgs"; }; diff --git a/index.js b/index.js index 1a14733..f40b29d 100644 --- a/index.js +++ b/index.js @@ -13,8 +13,8 @@ const seabug = import("./output.js"); * */ exports.callMarketPlaceBuy = async (config, args) => { - const sb = await seabug; - return sb.callMarketPlaceBuy(config)(args)(); + const sb = await seabug; + return sb.callMarketPlaceBuy(config)(args)(); }; /** @@ -23,23 +23,15 @@ exports.callMarketPlaceBuy = async (config, args) => { * */ exports.callMarketPlaceListNft = async (config) => { - const sb = await seabug; - return sb.callMarketPlaceListNft(config)(); + const sb = await seabug; + return sb.callMarketPlaceListNft(config)(); }; -/** - * Connects to Nami wallet. - * Returns a promise holding the Nami wallet object. - */ - exports.connectWallet = async () => { - const sb = await seabug; - return sb.connectWallet(); -}; /** - * Returns a promise holding the wallet balance. + * Returns a promise containing the connected wallet's balance. */ exports.getWalletBalance = async () => { - const sb = await seabug; - return sb.getWalletBalance(); -} \ No newline at end of file + const sb = await seabug; + return sb.getWalletBalance(); +}; diff --git a/packages.dhall b/packages.dhall index 0f2ce93..4c525ab 100644 --- a/packages.dhall +++ b/packages.dhall @@ -295,7 +295,7 @@ let additions = , "variant" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "624c3411c732d222959b7b04b449e6f6ba6acfd6" + , version = "c56f0d4bf94173f16e8ec6888b1a242c1506b018" } } in upstream // additions diff --git a/spago-packages.nix b/spago-packages.nix index 50d9b5f..cf71e0b 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -5,6 +5,18 @@ let inputs = { + "aeson" = pkgs.stdenv.mkDerivation { + name = "aeson"; + version = "5054e03ee14376768071c24d63889bfab8db2667"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-aeson.git"; + rev = "5054e03ee14376768071c24d63889bfab8db2667"; + sha256 = "0rwghhh3a2mxgpnirfbdx4hlh4ah0fxsijlvm4a42dllprfwcfgh"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "aff" = pkgs.stdenv.mkDerivation { name = "aff"; version = "v6.0.0"; @@ -175,11 +187,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "624c3411c732d222959b7b04b449e6f6ba6acfd6"; + version = "c56f0d4bf94173f16e8ec6888b1a242c1506b018"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "624c3411c732d222959b7b04b449e6f6ba6acfd6"; - sha256 = "1m607p5krr34wf9wrs02bmnmxfxspx2ibh231rkx7hrbyv9w8f7s"; + rev = "c56f0d4bf94173f16e8ec6888b1a242c1506b018"; + sha256 = "0pazjhfvmny00qw6v46hzqyx5pyl4v97vscrhr903yiijg64051r"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1073,6 +1085,18 @@ let installPhase = "ln -s $src $out"; }; + "sequences" = pkgs.stdenv.mkDerivation { + name = "sequences"; + version = "v3.0.2"; + src = pkgs.fetchgit { + url = "https://github.com/hdgarrood/purescript-sequences"; + rev = "1f1d828ef30070569c812d0af23eb7253bb1e990"; + sha256 = "0mc0jjs1119c2nyd08yhdmliq3s47lhrdknhziga3lnbzja889k4"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "spec" = pkgs.stdenv.mkDerivation { name = "spec"; version = "v5.0.1"; diff --git a/src/Seabug/Seabug.purs b/src/Seabug/Seabug.purs index a58eb36..edbea14 100644 --- a/src/Seabug/Seabug.purs +++ b/src/Seabug/Seabug.purs @@ -1,7 +1,6 @@ module Seabug ( module Seabug.CallContract - -- , connectWallet - -- , getWalletBalance + , getWalletBalance ) where @@ -18,8 +17,8 @@ import Seabug.CallContract -- connectWallet :: Effect (Promise Wallet) -- connectWallet = fromAff mkNamiWalletAff --- getWalletBalance :: Effect (Promise (Maybe Value)) --- getWalletBalance = fromAff $ do --- (Nami nami) <- mkNamiWalletAff --- callNami nami _.getBalance +getWalletBalance :: Effect (Promise (Maybe Value)) +getWalletBalance = fromAff $ do + (Nami nami) <- mkNamiWalletAff + callNami nami _.getBalance From cabfbf9e379b4b61119472a062316e6c1a0dc2ea Mon Sep 17 00:00:00 2001 From: Samuel Williams Date: Mon, 30 May 2022 15:57:20 +0100 Subject: [PATCH 06/29] Fix non-json issues --- src/Seabug/Metadata.purs | 3 ++- src/Seabug/Types.purs | 7 ++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/Seabug/Metadata.purs b/src/Seabug/Metadata.purs index 6ca7fb0..7a59c54 100644 --- a/src/Seabug/Metadata.purs +++ b/src/Seabug/Metadata.purs @@ -34,6 +34,7 @@ import Data.HTTP.Method (Method(GET)) import Data.Newtype (unwrap) import Metadata.Seabug (SeabugMetadata(SeabugMetadata)) import Partial.Unsafe (unsafePartial) +import Types.CborBytes (cborBytesToByteArray) type Hash = String @@ -101,7 +102,7 @@ getMintingTxHash a = mkAsset :: CurrencySymbol -> TokenName -> String mkAsset currSym tname = - ((<>) `on` byteArrayToHex) (getCurrencySymbol currSym) (getTokenName tname) + ((<>) `on` byteArrayToHex) (getCurrencySymbol currSym) (cborBytesToByteArray $ getTokenName tname) decodeField :: forall (a :: Type) diff --git a/src/Seabug/Types.purs b/src/Seabug/Types.purs index cc5790f..aca7faa 100644 --- a/src/Seabug/Types.purs +++ b/src/Seabug/Types.purs @@ -38,11 +38,7 @@ import Contract.Prim.ByteArray , byteArrayToHex ) import Contract.Numeric.Natural (Natural, toBigInt) -import Contract.Scripts - ( ValidatorHash - , ed25519KeyHashToBytes - , scriptHashToBytes - ) +import Contract.Scripts (ValidatorHash) import Contract.Time (Slot) import Control.Monad.Reader.Trans (asks) import Data.Argonaut as Json @@ -50,6 +46,7 @@ import Data.Argonaut.Encode.Encoders (encodeString) import Data.Bifunctor (bimap, lmap) import Data.BigInt (BigInt, fromInt, toInt) import Partial.Unsafe (unsafePartial) +import Serialization.Hash (ed25519KeyHashToBytes, scriptHashToBytes) blake2bHash :: forall (r :: Row Type). ByteArray -> Contract r (Maybe ByteArray) blake2bHash bytes = Contract $ do From 6e25b4e6e6d2f28df1fe419a4339fb9e45c27097 Mon Sep 17 00:00:00 2001 From: Samuel Williams Date: Mon, 30 May 2022 18:27:17 +0100 Subject: [PATCH 07/29] Fix remaining build issues --- spago.dhall | 9 ++-- src/Seabug/CallContract.purs | 56 +++++++++------------ src/Seabug/Contract/MarketPlaceBuy.purs | 26 ++++------ src/Seabug/Contract/MarketPlaceListNft.purs | 19 +++---- src/Seabug/Helpers.purs | 16 +++--- src/Seabug/Metadata.purs | 52 +++++++++++-------- src/Seabug/Seabug.purs | 7 --- src/Seabug/Test.purs | 6 +-- src/Seabug/Types.purs | 39 ++++++-------- 9 files changed, 104 insertions(+), 126 deletions(-) diff --git a/spago.dhall b/spago.dhall index e34b5b8..ac7908c 100644 --- a/spago.dhall +++ b/spago.dhall @@ -4,9 +4,8 @@ You can edit this file as you like. -} { name = "my-project" , dependencies = - [ "aff" - , "cardano-transaction-lib" - , "identity" + [ "aeson" + , "aff" , "aff-promise" , "affjax" , "argonaut" @@ -14,12 +13,12 @@ You can edit this file as you like. , "arrays" , "bifunctors" , "bigints" + , "cardano-transaction-lib" , "control" , "effect" , "exceptions" - , "foreign-object" , "http-methods" - , "lists" + , "maybe" , "newtype" , "ordered-collections" , "partial" diff --git a/src/Seabug/CallContract.purs b/src/Seabug/CallContract.purs index 81005ab..5b33398 100644 --- a/src/Seabug/CallContract.purs +++ b/src/Seabug/CallContract.purs @@ -11,7 +11,7 @@ import Contract.Address (Slot(Slot)) import Contract.Monad ( ConfigParams(ConfigParams) , ContractConfig - , LogLevel(Debug) + , LogLevel , defaultSlotConfig , mkContractConfig , runContract @@ -22,16 +22,7 @@ import Contract.Prim.ByteArray ( byteArrayToHex , hexToByteArray ) -import Contract.Scripts - ( ed25519KeyHashToBytes - , ed25519KeyHashFromBytes - , scriptHashFromBech32 - , scriptHashToBech32Unsafe - ) -import Contract.Transaction - ( TransactionInput(TransactionInput) - , TransactionOutput(TransactionOutput) - ) +import Contract.Transaction (TransactionInput(TransactionInput), TransactionOutput(TransactionOutput)) import Contract.Value ( CurrencySymbol , TokenName @@ -44,11 +35,9 @@ import Contract.Value ) import Control.Promise (Promise) import Control.Promise as Promise -import Data.Array (singleton) import Data.BigInt (BigInt) import Data.BigInt as BigInt -import Data.Identity (Identity(Identity)) -import Data.List (toUnfoldable) +import Data.Maybe (fromJust) import Data.Tuple.Nested ((/\)) import Data.UInt as UInt import Effect (Effect) @@ -58,7 +47,7 @@ import Effect.Exception (Error) import Metadata.Seabug (SeabugMetadata(SeabugMetadata)) import Metadata.Seabug.Share (unShare) import Partial.Unsafe (unsafePartial) -import Plutus.ToPlutusType (toPlutusType) +import Plutus.FromPlutusType (fromPlutusType) import Seabug.Contract.MarketPlaceBuy (marketplaceBuy) import Seabug.Contract.MarketPlaceListNft (ListNftResult, marketPlaceListNft) import Seabug.Types @@ -66,9 +55,14 @@ import Seabug.Types , NftData(NftData) , NftId(NftId) ) -import Serialization.Address (addressBech32, intToNetworkId) +import Serialization.Address (NetworkId, addressBech32, intToNetworkId) +import Serialization.Hash + ( ed25519KeyHashToBytes + , ed25519KeyHashFromBytes + , scriptHashFromBech32 + , scriptHashToBech32Unsafe + ) import Types.Natural as Nat -import Types.UsedTxOuts (newUsedTxOuts) import Wallet (mkNamiWalletAff) -- | Exists temporarily for testing purposes @@ -91,7 +85,7 @@ callMarketPlaceListNft callMarketPlaceListNft cfg = Promise.fromAff do contractConfig <- buildContractConfig cfg listnft <- runContract contractConfig marketPlaceListNft - pure $ buildNftList <$> listnft + pure $ buildNftList (unwrap contractConfig).networkId <$> listnft -- | Configuation needed to call contracts from JS. type ContractConfiguration = @@ -188,13 +182,15 @@ buildContractConfig cfg = do , wallet } -buildNftList :: ListNftResult -> ListNftResultOut +buildNftList :: NetworkId -> ListNftResult -> ListNftResultOut buildNftList + network { input: TransactionInput input, output: TransactionOutput output, metadata } = let transactionId = byteArrayToHex $ unwrap input.transactionId inputIndex = UInt.toInt input.index - address = addressBech32 output.address + -- TODO: What do we do if this fails? + address = addressBech32 $ unsafePartial $ fromJust $ fromPlutusType $ network /\ output.address dataHash = fromMaybe mempty $ byteArrayToHex <<< unwrap <$> output.dataHash ipfsHash = metadata.ipfsHash seabugMetadata = convertSeabugMetaData metadata.seabugMetadata @@ -204,19 +200,15 @@ buildNftList , metadata: { ipfsHash, seabugMetadata } } where - convertValue :: Cardano.Types.Value.Value -> ValueOut - convertValue v = - let - (Identity val) = toPlutusType v - in - mkValueRecord <$> flattenNonAdaAssets val + convertValue :: Value -> ValueOut + convertValue val = mkValueRecord <$> flattenNonAdaAssets val mkValueRecord :: (CurrencySymbol /\ TokenName /\ BigInt) -> { currencySymbol :: String, tokenName :: String, amount :: BigInt } mkValueRecord (currencySymbol /\ tokenName /\ amount) = { currencySymbol: byteArrayToHex $ getCurrencySymbol currencySymbol - , tokenName: byteArrayToHex $ getTokenName tokenName + , tokenName: byteArrayToHex $ unwrap $ getTokenName tokenName , amount } @@ -226,14 +218,14 @@ buildNftList , mintPolicy: byteArrayToHex m.mintPolicy , collectionNftCS: byteArrayToHex $ Cardano.Types.Value.getCurrencySymbol $ m.collectionNftCS - , collectionNftTN: byteArrayToHex $ getTokenName m.collectionNftTN + , collectionNftTN: byteArrayToHex $ unwrap $ getTokenName m.collectionNftTN , lockingScript: scriptHashToBech32Unsafe "script" $ unwrap m.lockingScript - , authorPkh: byteArrayToHex $ ed25519KeyHashToBytes $ unwrap m.authorPkh + , authorPkh: byteArrayToHex $ unwrap $ ed25519KeyHashToBytes $ unwrap m.authorPkh , authorShare: unShare m.authorShare , marketplaceScript: scriptHashToBech32Unsafe "script" $ unwrap m.marketplaceScript , marketplaceShare: unShare m.marketplaceShare - , ownerPkh: byteArrayToHex $ ed25519KeyHashToBytes $ unwrap m.ownerPkh + , ownerPkh: byteArrayToHex $ unwrap $ ed25519KeyHashToBytes $ unwrap m.ownerPkh , ownerPrice: toBigInt m.ownerPrice } @@ -252,7 +244,7 @@ buildNftData { nftCollectionArgs, nftIdArgs } = do owner <- note (error $ "Invalid owner: " <> r.owner) $ wrap <<< wrap - <$> (ed25519KeyHashFromBytes =<< hexToByteArray r.owner) + <$> (ed25519KeyHashFromBytes <<< wrap =<< hexToByteArray r.owner) pure $ NftId { collectionNftTn: tn , price @@ -274,7 +266,7 @@ buildNftData { nftCollectionArgs, nftIdArgs } = do author <- note (error $ "Invalid author: " <> r.author) $ wrap <<< wrap - <$> (ed25519KeyHashFromBytes =<< hexToByteArray r.author) + <$> (ed25519KeyHashFromBytes <<< wrap =<< hexToByteArray r.author) authorShare <- note (error $ "Invalid authorShare: " <> show r.authorShare) $ Nat.fromBigInt r.authorShare daoScript <- note (error $ "Invalid nft daoScript: " <> r.daoScript) diff --git a/src/Seabug/Contract/MarketPlaceBuy.purs b/src/Seabug/Contract/MarketPlaceBuy.purs index aaffa80..814c29d 100644 --- a/src/Seabug/Contract/MarketPlaceBuy.purs +++ b/src/Seabug/Contract/MarketPlaceBuy.purs @@ -8,7 +8,6 @@ import Contract.Prelude import Contract.Address ( getNetworkId , ownPaymentPubKeyHash - , payPubKeyHashBaseAddress ) import Contract.ScriptLookups (UnattachedUnbalancedTx, mkUnbalancedTx) @@ -37,7 +36,7 @@ import Contract.ProtocolParameters.Alonzo (minAdaTxOut) import Contract.Scripts (applyArgs, typedValidatorEnterpriseAddress) import Contract.Transaction ( BalancedSignedTransaction(BalancedSignedTransaction) - , TxOut + , TransactionOutput , balanceAndSignTx , submit ) @@ -53,9 +52,7 @@ import Contract.Value as Value import Contract.Wallet (getWalletAddress) import Data.Array (find) as Array import Data.BigInt (BigInt, fromInt) -import Data.Identity (Identity(Identity)) import Data.Map (insert, toUnfoldable) -import Plutus.ToPlutusType (toPlutusType) import Seabug.MarketPlace (marketplaceValidator) import Seabug.MintingPolicy (mintingPolicy) import Seabug.Token (mkTokenName) @@ -65,7 +62,6 @@ import Seabug.Types , NftData(NftData) , NftId(NftId) ) -import Types.TokenName (TokenName) -- TODO docstring marketplaceBuy :: forall (r :: Row Type). NftData -> Contract r Unit @@ -112,6 +108,7 @@ mkMarketplaceTx (NftData nftData) = do ] curr <- liftedM "marketplaceBuy: Cannot get CurrencySymbol" + $ pure $ Value.scriptCurrencySymbol $ policy -- curr <- liftContractM "marketplaceBuy: Cannot get CurrencySymbol" @@ -125,8 +122,10 @@ mkMarketplaceTx (NftData nftData) = do nft = nftData.nftId nft' = unwrap nft newNft = NftId nft' { owner = pkh } - scriptAddr = - typedValidatorEnterpriseAddress networkId $ wrap marketplaceValidator' + scriptAddr <- + liftedM "marketplaceBuy: Cannot convert validator hash to address" + $ pure + $ typedValidatorEnterpriseAddress networkId $ wrap marketplaceValidator' oldName <- liftedM "marketplaceBuy: Cannot hash old token" $ mkTokenName nft newName <- liftedM "marketplaceBuy: Cannot hash new token" $ mkTokenName newNft @@ -137,12 +136,9 @@ mkMarketplaceTx (NftData nftData) = do valHash = marketplaceValidator'.validatorHash mintRedeemer = Redeemer $ toData $ ChangeOwner nft pkh - containsNft :: forall (a :: Type). (a /\ TxOut) -> Boolean + containsNft :: forall (a :: Type). (a /\ TransactionOutput) -> Boolean containsNft (_ /\ tx) = - let - (Identity amt) = toPlutusType (unwrap tx).amount - in - Value.valueOf amt curr oldName == one + Value.valueOf (unwrap tx).amount curr oldName == one getShare :: BigInt -> BigInt getShare share = (toBigInt nftPrice * share) `div` fromInt 10_000 @@ -167,11 +163,11 @@ mkMarketplaceTx (NftData nftData) = do - shareToSubtract authorShare - shareToSubtract daoShare datum = Datum $ toData $ curr /\ oldName - userAddr <- liftedM "marketplaceBuy: Cannot get user addr" $ getWalletAddress + userAddr <- liftedM "marketplaceBuy: Cannot get user addr" getWalletAddress userUtxos <- - liftedM "marketplaceBuy: Cannot get user Utxos" $ utxosAt userAddr + liftedM "marketplaceBuy: Cannot get user Utxos" $ utxosAt (unwrap userAddr).address scriptUtxos <- - liftedM "marketplaceBuy: Cannot get script Utxos" $ utxosAt scriptAddr + liftedM "marketplaceBuy: Cannot get script Utxos" $ utxosAt (unwrap scriptAddr).address utxo /\ utxoIndex <- liftContractM "marketplaceBuy: NFT not found on marketplace" $ Array.find containsNft diff --git a/src/Seabug/Contract/MarketPlaceListNft.purs b/src/Seabug/Contract/MarketPlaceListNft.purs index 3f02cb2..deb77df 100644 --- a/src/Seabug/Contract/MarketPlaceListNft.purs +++ b/src/Seabug/Contract/MarketPlaceListNft.purs @@ -9,18 +9,13 @@ import Contract.Prelude import Contract.Address (getNetworkId, typedValidatorEnterpriseAddress) import Contract.Monad (Contract, liftContractE, liftedM) import Contract.PlutusData (fromData, getDatumByHash) -import Contract.Transaction - ( TransactionInput - , TransactionOutput(TransactionOutput) - ) +import Contract.Transaction (TransactionInput, TransactionOutput(TransactionOutput)) import Contract.Utxos (utxosAt) import Contract.Value (valueOf) import Control.Alternative (guard) import Control.Monad.Maybe.Trans (MaybeT(MaybeT), runMaybeT) import Data.Array (catMaybes) -import Data.Identity (Identity(Identity)) import Data.Map as Map -import Plutus.ToPlutusType (toPlutusType) import Seabug.MarketPlace (marketplaceValidator) import Seabug.Metadata (FullSeabugMetadata, getFullSeabugMetadata) import Seabug.Types (MarketplaceDatum(MarketplaceDatum)) @@ -40,11 +35,12 @@ marketPlaceListNft marketPlaceListNft = do marketplaceValidator' <- unwrap <$> liftContractE marketplaceValidator networkId <- getNetworkId - let - scriptAddr = - typedValidatorEnterpriseAddress networkId $ wrap marketplaceValidator' + scriptAddr <- + liftedM "marketPlaceListNft: Cannot convert validator hash to address" + $ pure + $ typedValidatorEnterpriseAddress networkId $ wrap marketplaceValidator' scriptUtxos <- Map.toUnfoldable <<< unwrap <$> - liftedM "marketPlaceListNft: Cannot get script Utxos" (utxosAt scriptAddr) + liftedM "marketPlaceListNft: Cannot get script Utxos" (utxosAt (unwrap scriptAddr).address) withMetadata <- for scriptUtxos $ \(input /\ output@(TransactionOutput out)) -> runMaybeT $ do @@ -52,8 +48,7 @@ marketPlaceListNft = do plutusData <- MaybeT $ getDatumByHash datumHash MarketplaceDatum { getMarketplaceDatum: curr /\ name } <- MaybeT $ pure $ fromData $ unwrap plutusData - let (Identity amt) = toPlutusType out.amount - guard $ valueOf amt curr name == one + guard $ valueOf out.amount curr name == one metadata <- MaybeT $ map hush $ getFullSeabugMetadata $ curr /\ name pure { input, output, metadata } pure $ catMaybes withMetadata diff --git a/src/Seabug/Helpers.purs b/src/Seabug/Helpers.purs index 26e839b..2fdbf9f 100644 --- a/src/Seabug/Helpers.purs +++ b/src/Seabug/Helpers.purs @@ -2,23 +2,25 @@ module Seabug.Helpers ( jsonReader ) where +import Aeson + ( class DecodeAeson + , caseAesonObject + , getField + , jsonToAeson + ) import Contract.Prelude import Data.Argonaut ( Json - , class DecodeJson , JsonDecodeError(TypeMismatch) - , caseJsonObject - , getField ) -import Foreign.Object (Object) -- | Helper to decode the local inputs such as unapplied minting policy and -- | typed validator jsonReader :: forall (a :: Type) - . DecodeJson a + . DecodeAeson a => String -> Json -> Either JsonDecodeError a -jsonReader field = caseJsonObject (Left $ TypeMismatch "Expected Object") - $ flip getField field +jsonReader field = jsonToAeson >>> caseAesonObject (Left $ TypeMismatch "Expected Object") + (flip getField field) diff --git a/src/Seabug/Metadata.purs b/src/Seabug/Metadata.purs index 7a59c54..66c769e 100644 --- a/src/Seabug/Metadata.purs +++ b/src/Seabug/Metadata.purs @@ -6,6 +6,7 @@ module Seabug.Metadata import Contract.Prelude +import Aeson as Aeson import Affjax as Affjax import Affjax.RequestHeader as Affjax.RequestHeader import Affjax.ResponseFormat as Affjax.ResponseFormat @@ -26,8 +27,7 @@ import Control.Alternative (guard) import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) import Control.Monad.Reader.Trans (asks) import Control.Monad.Trans.Class (lift) -import Data.Argonaut (class DecodeJson) -import Data.Argonaut as Json +import Data.Argonaut as Argonaut import Data.Bifunctor (bimap, lmap) import Data.Function (on) import Data.HTTP.Method (Method(GET)) @@ -57,7 +57,7 @@ getIpfsHash . SeabugMetadata -> ExceptT ClientError (Contract (projectId :: String | r)) Hash getIpfsHash (SeabugMetadata { collectionNftCS, collectionNftTN }) = do - except <<< (decodeField "image" <=< decodeField "onchain_metadata") + except <<< (decodeField "image" <=< decodeFieldJson "onchain_metadata") =<< mkGetRequest ("assets/" <> mkAsset curr collectionNftTN) where curr :: CurrencySymbol @@ -70,24 +70,24 @@ getMintingTxSeabugMetadata -> Hash -> ExceptT ClientError (Contract (projectId :: String | r)) SeabugMetadata getMintingTxSeabugMetadata currSym txHash = do - j <- mkGetRequest $ "txs/" <> txHash <> "/metadata" + res <- mkGetRequest $ "txs/" <> txHash <> "/metadata" ms <- except $ lmap ClientDecodeJsonError - $ Json.caseJsonArray - (Left (Json.TypeMismatch "Expected array of objects")) + $ Aeson.caseAesonArray + (Left (Argonaut.TypeMismatch "Expected array of objects")) Right - j + (Aeson.jsonToAeson res) except - $ note (ClientDecodeJsonError (Json.UnexpectedValue j)) + $ note (ClientDecodeJsonError (Argonaut.UnexpectedValue res)) $ findSeabugMetadata ms where - findSeabugMetadata :: Array Json.Json -> Maybe SeabugMetadata - findSeabugMetadata = findMap $ Json.caseJsonObject Nothing $ \o -> do - label <- hush $ Json.getField o "label" + findSeabugMetadata :: Array Aeson.Aeson -> Maybe SeabugMetadata + findSeabugMetadata = findMap $ Aeson.caseAesonObject Nothing $ \o -> do + label <- hush $ Aeson.getField o "label" guard $ label == "727" hush $ do - md <- Json.getField o "json_metadata" - Json.decodeJson =<< Json.getField md currSymKey + md <- Aeson.getField o "json_metadata" + Aeson.decodeAeson =<< Aeson.getField md currSymKey currSymKey :: String currSymKey = byteArrayToHex $ getCurrencySymbol currSym @@ -97,7 +97,7 @@ getMintingTxHash . CurrencySymbol /\ TokenName -> ExceptT ClientError (Contract (projectId :: String | r)) Hash getMintingTxHash a = - except <<< decodeField "initial_mint_tx_hash" + except <<< decodeFieldJson "initial_mint_tx_hash" =<< mkGetRequest ("assets/" <> uncurry mkAsset a) mkAsset :: CurrencySymbol -> TokenName -> String @@ -106,25 +106,33 @@ mkAsset currSym tname = decodeField :: forall (a :: Type) - . DecodeJson a + . Aeson.DecodeAeson a => String - -> Json.Json + -> Aeson.Aeson -> Either ClientError a decodeField field = lmap ClientDecodeJsonError <<< - ( Json.decodeJson - <=< Json.caseJsonObject - (Left (Json.TypeMismatch "Expected Object")) - (flip Json.getField field) + ( Aeson.decodeAeson + <=< Aeson.caseAesonObject + (Left (Argonaut.TypeMismatch "Expected Object")) + (flip Aeson.getField field) ) +decodeFieldJson + :: forall (a :: Type) + . Aeson.DecodeAeson a + => String + -> Argonaut.Json + -> Either ClientError a +decodeFieldJson field = decodeField field <<< Aeson.jsonToAeson + mkGetRequest :: forall (r :: Row Type) . String - -> ExceptT ClientError (Contract (projectId :: String | r)) Json.Json + -> ExceptT ClientError (Contract (projectId :: String | r)) Argonaut.Json mkGetRequest path = do projectId <- lift $ asks $ _.projectId <<< unwrap let - req :: Affjax.Request Json.Json + req :: Affjax.Request Argonaut.Json req = Affjax.defaultRequest { url = mkUrl , responseFormat = Affjax.ResponseFormat.json diff --git a/src/Seabug/Seabug.purs b/src/Seabug/Seabug.purs index edbea14..c5a1b22 100644 --- a/src/Seabug/Seabug.purs +++ b/src/Seabug/Seabug.purs @@ -1,6 +1,5 @@ module Seabug ( module Seabug.CallContract - , getWalletBalance ) where @@ -16,9 +15,3 @@ import Seabug.CallContract -- connectWallet :: Effect (Promise Wallet) -- connectWallet = fromAff mkNamiWalletAff - -getWalletBalance :: Effect (Promise (Maybe Value)) -getWalletBalance = fromAff $ do - (Nami nami) <- mkNamiWalletAff - callNami nami _.getBalance - diff --git a/src/Seabug/Test.purs b/src/Seabug/Test.purs index 3020b0f..a4e003f 100644 --- a/src/Seabug/Test.purs +++ b/src/Seabug/Test.purs @@ -40,7 +40,7 @@ main = launchAff_ $ do testNftData :: forall (r :: Row Type). Contract r NftData testNftData = do kh <- liftContractM "`Ed25519KeyHash`" - $ ed25519KeyHashFromBytes + $ ed25519KeyHashFromBytes <<< wrap =<< hexToByteArray "3f3464650beb5324d0e463ebe81fbe1fd519b6438521e96d0d35bd75" collectionNftCs <- liftContractM "`CurrencySymbol`" @@ -48,11 +48,11 @@ testNftData = do =<< hexToByteArray "cf0c1cbf47537f238f756fc1be191abf76009e1988910092184c4b7f" lockingScript <- liftContractM "`ScriptHash`" - $ scriptHashFromBytes + $ scriptHashFromBytes <<< wrap =<< hexToByteArray "6c1039b6973bb0e7ad42de5b16a691ede3e0265cd58caf070ff15ef3" daoScript <- liftContractM "`ScriptHash`" - $ scriptHashFromBytes + $ scriptHashFromBytes <<< wrap =<< hexToByteArray "9da8fa76a2a0f52aa5df10fb7b81f9afe4b20e9068b3f95fadc7477a" tokenName <- liftContractM "`TokenName`" diff --git a/src/Seabug/Types.purs b/src/Seabug/Types.purs index aca7faa..6762e7b 100644 --- a/src/Seabug/Types.purs +++ b/src/Seabug/Types.purs @@ -24,7 +24,7 @@ import Contract.Value ) import Contract.Monad (Contract(Contract), mkHttpUrl) import Contract.Address (PaymentPubKeyHash, PubKeyHash) -import Contract.Aeson (caseAesonObject, getField, jsonToAeson) as Aeson +import Contract.Aeson as Aeson import Contract.PlutusData ( class FromData , class ToData @@ -43,7 +43,6 @@ import Contract.Time (Slot) import Control.Monad.Reader.Trans (asks) import Data.Argonaut as Json import Data.Argonaut.Encode.Encoders (encodeString) -import Data.Bifunctor (bimap, lmap) import Data.BigInt (BigInt, fromInt, toInt) import Partial.Unsafe (unsafePartial) import Serialization.Hash (ed25519KeyHashToBytes, scriptHashToBytes) @@ -58,7 +57,7 @@ blake2bHash bytes = Contract $ do $ encodeString $ byteArrayToHex bytes liftAff (Affjax.post Affjax.ResponseFormat.json url reqBody) - <#> either (const Nothing) (hush <<< Json.decodeJson <<< _.body) + <#> either (const Nothing) (hush <<< Aeson.decodeAeson <<< Aeson.jsonToAeson <<< _.body) -- Field names have been simplified due to row polymorphism. Please let me know -- if the field names must be exact. @@ -173,31 +172,25 @@ derive newtype instance Ord NftCollection -- Note the renaming of fields from their Plutus equivalents, e.g. -- "nftCollection'collectionNftCs" to "collectionNftCs". -instance Json.DecodeJson NftCollection where - decodeJson j = - Json.caseJsonObject +instance Aeson.DecodeAeson NftCollection where + decodeAeson j = + Aeson.caseAesonObject (Left $ Json.TypeMismatch "Expected Json Object") ( \o -> do collectionNftCs <- do - nftCs <- Json.getField o "nftCollection'collectionNftCs" + nftCs <- Aeson.getField o "nftCollection'collectionNftCs" note (Json.TypeMismatch "expected currency symbol") $ mkCurrencySymbol $ Cardano.Types.Value.getCurrencySymbol nftCs - lockLockupEnd <- Json.getField o "nftCollection'lockLockupEnd" - lockingScript <- Json.getField o "nftCollection'lockingScript" - author <- Json.getField o "nftCollection'author" - authorShare <- Json.getField o "nftCollection'authorShare" - daoScript <- Json.getField o "nftCollection'daoScript" - daoShare <- Json.getField o "nftCollection'daoShare" - -- Is the more efficient way to do this? Leave this until the end incase - -- we fail earlier. - let aeson = Aeson.jsonToAeson j - lockLockup <- Aeson.caseAesonObject - (Left $ Json.TypeMismatch "Expected Aeson Object") - (flip Aeson.getField "nftCollection'lockLockup") - aeson + lockLockupEnd <- Aeson.getField o "nftCollection'lockLockupEnd" + lockingScript <- Aeson.getField o "nftCollection'lockingScript" + author <- Aeson.getField o "nftCollection'author" + authorShare <- Aeson.getField o "nftCollection'authorShare" + daoScript <- Aeson.getField o "nftCollection'daoScript" + daoShare <- Aeson.getField o "nftCollection'daoShare" + lockLockup <- Aeson.getField o "nftCollection'lockLockup" pure $ NftCollection { collectionNftCs , lockLockup @@ -388,13 +381,13 @@ instance Hashable CurrencySymbol where hash = hash <<< getCurrencySymbol instance Hashable TokenName where - hash = hash <<< getTokenName + hash = hash <<< unwrap <<< getTokenName instance Hashable ValidatorHash where - hash = hash <<< scriptHashToBytes <<< unwrap + hash = hash <<< unwrap <<< scriptHashToBytes <<< unwrap instance Hashable PaymentPubKeyHash where - hash = hash <<< ed25519KeyHashToBytes <<< unwrap <<< unwrap + hash = hash <<< unwrap <<< ed25519KeyHashToBytes <<< unwrap <<< unwrap instance (Hashable a, Hashable b) => Hashable (a /\ b) where hash (a /\ b) = ((<>) <$> hash a <*> hash b) >>= maybe (pure Nothing) hash From 118e56beb19871adee18f6b442e85f386cfc9fe2 Mon Sep 17 00:00:00 2001 From: Samuel Williams Date: Mon, 30 May 2022 19:17:46 +0100 Subject: [PATCH 08/29] Apply formatting --- src/Seabug/CallContract.purs | 15 +++++++++++---- src/Seabug/Contract/MarketPlaceBuy.purs | 9 ++++++--- src/Seabug/Contract/MarketPlaceListNft.purs | 11 ++++++++--- src/Seabug/Helpers.purs | 3 ++- src/Seabug/Metadata.purs | 3 ++- src/Seabug/Seabug.purs | 3 +-- src/Seabug/Test.purs | 9 ++++++--- src/Seabug/Types.purs | 3 ++- 8 files changed, 38 insertions(+), 18 deletions(-) diff --git a/src/Seabug/CallContract.purs b/src/Seabug/CallContract.purs index 5b33398..b4ae930 100644 --- a/src/Seabug/CallContract.purs +++ b/src/Seabug/CallContract.purs @@ -22,7 +22,10 @@ import Contract.Prim.ByteArray ( byteArrayToHex , hexToByteArray ) -import Contract.Transaction (TransactionInput(TransactionInput), TransactionOutput(TransactionOutput)) +import Contract.Transaction + ( TransactionInput(TransactionInput) + , TransactionOutput(TransactionOutput) + ) import Contract.Value ( CurrencySymbol , TokenName @@ -190,7 +193,9 @@ buildNftList transactionId = byteArrayToHex $ unwrap input.transactionId inputIndex = UInt.toInt input.index -- TODO: What do we do if this fails? - address = addressBech32 $ unsafePartial $ fromJust $ fromPlutusType $ network /\ output.address + address = + addressBech32 $ unsafePartial $ fromJust $ fromPlutusType $ network /\ + output.address dataHash = fromMaybe mempty $ byteArrayToHex <<< unwrap <$> output.dataHash ipfsHash = metadata.ipfsHash seabugMetadata = convertSeabugMetaData metadata.seabugMetadata @@ -220,12 +225,14 @@ buildNftList m.collectionNftCS , collectionNftTN: byteArrayToHex $ unwrap $ getTokenName m.collectionNftTN , lockingScript: scriptHashToBech32Unsafe "script" $ unwrap m.lockingScript - , authorPkh: byteArrayToHex $ unwrap $ ed25519KeyHashToBytes $ unwrap m.authorPkh + , authorPkh: byteArrayToHex $ unwrap $ ed25519KeyHashToBytes $ unwrap + m.authorPkh , authorShare: unShare m.authorShare , marketplaceScript: scriptHashToBech32Unsafe "script" $ unwrap m.marketplaceScript , marketplaceShare: unShare m.marketplaceShare - , ownerPkh: byteArrayToHex $ unwrap $ ed25519KeyHashToBytes $ unwrap m.ownerPkh + , ownerPkh: byteArrayToHex $ unwrap $ ed25519KeyHashToBytes $ unwrap + m.ownerPkh , ownerPrice: toBigInt m.ownerPrice } diff --git a/src/Seabug/Contract/MarketPlaceBuy.purs b/src/Seabug/Contract/MarketPlaceBuy.purs index 814c29d..70405bc 100644 --- a/src/Seabug/Contract/MarketPlaceBuy.purs +++ b/src/Seabug/Contract/MarketPlaceBuy.purs @@ -125,7 +125,8 @@ mkMarketplaceTx (NftData nftData) = do scriptAddr <- liftedM "marketplaceBuy: Cannot convert validator hash to address" $ pure - $ typedValidatorEnterpriseAddress networkId $ wrap marketplaceValidator' + $ typedValidatorEnterpriseAddress networkId + $ wrap marketplaceValidator' oldName <- liftedM "marketplaceBuy: Cannot hash old token" $ mkTokenName nft newName <- liftedM "marketplaceBuy: Cannot hash new token" $ mkTokenName newNft @@ -165,9 +166,11 @@ mkMarketplaceTx (NftData nftData) = do datum = Datum $ toData $ curr /\ oldName userAddr <- liftedM "marketplaceBuy: Cannot get user addr" getWalletAddress userUtxos <- - liftedM "marketplaceBuy: Cannot get user Utxos" $ utxosAt (unwrap userAddr).address + liftedM "marketplaceBuy: Cannot get user Utxos" $ utxosAt + (unwrap userAddr).address scriptUtxos <- - liftedM "marketplaceBuy: Cannot get script Utxos" $ utxosAt (unwrap scriptAddr).address + liftedM "marketplaceBuy: Cannot get script Utxos" $ utxosAt + (unwrap scriptAddr).address utxo /\ utxoIndex <- liftContractM "marketplaceBuy: NFT not found on marketplace" $ Array.find containsNft diff --git a/src/Seabug/Contract/MarketPlaceListNft.purs b/src/Seabug/Contract/MarketPlaceListNft.purs index deb77df..9afafe0 100644 --- a/src/Seabug/Contract/MarketPlaceListNft.purs +++ b/src/Seabug/Contract/MarketPlaceListNft.purs @@ -9,7 +9,10 @@ import Contract.Prelude import Contract.Address (getNetworkId, typedValidatorEnterpriseAddress) import Contract.Monad (Contract, liftContractE, liftedM) import Contract.PlutusData (fromData, getDatumByHash) -import Contract.Transaction (TransactionInput, TransactionOutput(TransactionOutput)) +import Contract.Transaction + ( TransactionInput + , TransactionOutput(TransactionOutput) + ) import Contract.Utxos (utxosAt) import Contract.Value (valueOf) import Control.Alternative (guard) @@ -38,9 +41,11 @@ marketPlaceListNft = do scriptAddr <- liftedM "marketPlaceListNft: Cannot convert validator hash to address" $ pure - $ typedValidatorEnterpriseAddress networkId $ wrap marketplaceValidator' + $ typedValidatorEnterpriseAddress networkId + $ wrap marketplaceValidator' scriptUtxos <- Map.toUnfoldable <<< unwrap <$> - liftedM "marketPlaceListNft: Cannot get script Utxos" (utxosAt (unwrap scriptAddr).address) + liftedM "marketPlaceListNft: Cannot get script Utxos" + (utxosAt (unwrap scriptAddr).address) withMetadata <- for scriptUtxos $ \(input /\ output@(TransactionOutput out)) -> runMaybeT $ do diff --git a/src/Seabug/Helpers.purs b/src/Seabug/Helpers.purs index 2fdbf9f..a22dad2 100644 --- a/src/Seabug/Helpers.purs +++ b/src/Seabug/Helpers.purs @@ -22,5 +22,6 @@ jsonReader => String -> Json -> Either JsonDecodeError a -jsonReader field = jsonToAeson >>> caseAesonObject (Left $ TypeMismatch "Expected Object") +jsonReader field = jsonToAeson >>> caseAesonObject + (Left $ TypeMismatch "Expected Object") (flip getField field) diff --git a/src/Seabug/Metadata.purs b/src/Seabug/Metadata.purs index 66c769e..0bf67e0 100644 --- a/src/Seabug/Metadata.purs +++ b/src/Seabug/Metadata.purs @@ -102,7 +102,8 @@ getMintingTxHash a = mkAsset :: CurrencySymbol -> TokenName -> String mkAsset currSym tname = - ((<>) `on` byteArrayToHex) (getCurrencySymbol currSym) (cborBytesToByteArray $ getTokenName tname) + ((<>) `on` byteArrayToHex) (getCurrencySymbol currSym) + (cborBytesToByteArray $ getTokenName tname) decodeField :: forall (a :: Type) diff --git a/src/Seabug/Seabug.purs b/src/Seabug/Seabug.purs index c5a1b22..c91c040 100644 --- a/src/Seabug/Seabug.purs +++ b/src/Seabug/Seabug.purs @@ -1,7 +1,6 @@ module Seabug ( module Seabug.CallContract - ) - where + ) where -- import Prelude diff --git a/src/Seabug/Test.purs b/src/Seabug/Test.purs index a4e003f..6e8d8e5 100644 --- a/src/Seabug/Test.purs +++ b/src/Seabug/Test.purs @@ -40,7 +40,8 @@ main = launchAff_ $ do testNftData :: forall (r :: Row Type). Contract r NftData testNftData = do kh <- liftContractM "`Ed25519KeyHash`" - $ ed25519KeyHashFromBytes <<< wrap + $ ed25519KeyHashFromBytes + <<< wrap =<< hexToByteArray "3f3464650beb5324d0e463ebe81fbe1fd519b6438521e96d0d35bd75" collectionNftCs <- liftContractM "`CurrencySymbol`" @@ -48,11 +49,13 @@ testNftData = do =<< hexToByteArray "cf0c1cbf47537f238f756fc1be191abf76009e1988910092184c4b7f" lockingScript <- liftContractM "`ScriptHash`" - $ scriptHashFromBytes <<< wrap + $ scriptHashFromBytes + <<< wrap =<< hexToByteArray "6c1039b6973bb0e7ad42de5b16a691ede3e0265cd58caf070ff15ef3" daoScript <- liftContractM "`ScriptHash`" - $ scriptHashFromBytes <<< wrap + $ scriptHashFromBytes + <<< wrap =<< hexToByteArray "9da8fa76a2a0f52aa5df10fb7b81f9afe4b20e9068b3f95fadc7477a" tokenName <- liftContractM "`TokenName`" diff --git a/src/Seabug/Types.purs b/src/Seabug/Types.purs index 6762e7b..aa36dc1 100644 --- a/src/Seabug/Types.purs +++ b/src/Seabug/Types.purs @@ -57,7 +57,8 @@ blake2bHash bytes = Contract $ do $ encodeString $ byteArrayToHex bytes liftAff (Affjax.post Affjax.ResponseFormat.json url reqBody) - <#> either (const Nothing) (hush <<< Aeson.decodeAeson <<< Aeson.jsonToAeson <<< _.body) + <#> either (const Nothing) + (hush <<< Aeson.decodeAeson <<< Aeson.jsonToAeson <<< _.body) -- Field names have been simplified due to row polymorphism. Please let me know -- if the field names must be exact. From 2e4c5d3a010b036b470d099522bde29a2e5d32ea Mon Sep 17 00:00:00 2001 From: Neil Rutledge Date: Thu, 2 Jun 2022 11:43:12 -0400 Subject: [PATCH 09/29] Resolve misc. errors --- .npmignore | 15 +++++++++++++++ flake.lock | 8 ++++---- flake.nix | 2 +- index.d.ts | 10 +++++++--- package-lock.json | 5 +++++ package.json | 1 + packages.dhall | 2 +- seabug-contracts-0.1.0.tgz | Bin 0 -> 417500 bytes spago-packages.nix | 6 +++--- spago.dhall | 1 + src/Seabug/Metadata.purs | 17 +++++++++++------ src/Seabug/MintingPolicy.js | 6 +++++- src/Seabug/Seabug.purs | 21 ++++++++++++--------- webpack.config.js | 2 +- 14 files changed, 67 insertions(+), 29 deletions(-) create mode 100644 seabug-contracts-0.1.0.tgz diff --git a/.npmignore b/.npmignore index e69de29..537c860 100644 --- a/.npmignore +++ b/.npmignore @@ -0,0 +1,15 @@ +.github +.psc-ide-port +.spago +.spago2nix +dist +exe +flake.lock +Makefile +node_modules +output +src +test +*purs +*.nix +*.dhall \ No newline at end of file diff --git a/flake.lock b/flake.lock index 669c0b7..8374a41 100644 --- a/flake.lock +++ b/flake.lock @@ -549,17 +549,17 @@ "servant-purescript": "servant-purescript" }, "locked": { - "lastModified": 1653572943, - "narHash": "sha256-ORRAzJMx+gFShpnpfdIm1N/SPf7QkG04BsDbuh2UX10=", + "lastModified": 1654120390, + "narHash": "sha256-Lixco/Jj3kITVmLBPYTfjSGuQmihP8WB39585OkE/oc=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "c56f0d4bf94173f16e8ec6888b1a242c1506b018", + "rev": "fba82e19da417abb7bbe89815b081a76aea2e5c0", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "c56f0d4bf94173f16e8ec6888b1a242c1506b018", + "rev": "fba82e19da417abb7bbe89815b081a76aea2e5c0", "type": "github" } }, diff --git a/flake.nix b/flake.nix index 8ef58bd..404c10a 100644 --- a/flake.nix +++ b/flake.nix @@ -10,7 +10,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "c56f0d4bf94173f16e8ec6888b1a242c1506b018"; + rev = "fba82e19da417abb7bbe89815b081a76aea2e5c0"; }; nixpkgs.follows = "cardano-transaction-lib/nixpkgs"; }; diff --git a/index.d.ts b/index.d.ts index f17f6ea..5a40880 100644 --- a/index.d.ts +++ b/index.d.ts @@ -1,4 +1,4 @@ -export function callMarketPlaceBuy(config: Config, args: ContractArgs): +export function callMarketPlaceBuy(config: Config, args: BuyNftArgs): Promise export function callMarketPlaceListNft(config: Config): Promise> @@ -24,7 +24,7 @@ export type Config = { datumCacheSecureConn: boolean, networkId: NetworkId, // blockfrost.io API key - projectId: string + projectId: string, } export type ContractArgs = { @@ -32,6 +32,10 @@ export type ContractArgs = { nftIdArgs: NftIdArgs } +export type BuyNftArgs = { + +} + export type NftCollectionArgs = { // CurrencySymbol of nft collection collectionNftCs: string, @@ -41,9 +45,9 @@ export type NftCollectionArgs = { lockingScript: string, //PaymentPubKeyHash of the nft author author: string, + authorShare: bigint, // Validator hash daoScript: string, - authorShare: bigint, daoShare: bigint } diff --git a/package-lock.json b/package-lock.json index 6e0f4c4..a3af14e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -578,6 +578,11 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, + "blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" + }, "bn.js": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", diff --git a/package.json b/package.json index 546369d..31143e0 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "@ngua/cardano-serialization-lib-browser": "9.1.2", "@ngua/cardano-serialization-lib-nodejs": "9.1.2", "big-integer": "1.6.51", + "blakejs": "1.2.1", "bufferutil": "4.0.5", "node-polyfill-webpack-plugin": "1.1.4", "uniqid": "5.4.0", diff --git a/packages.dhall b/packages.dhall index 4c525ab..040755c 100644 --- a/packages.dhall +++ b/packages.dhall @@ -295,7 +295,7 @@ let additions = , "variant" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "c56f0d4bf94173f16e8ec6888b1a242c1506b018" + , version = "fba82e19da417abb7bbe89815b081a76aea2e5c0" } } in upstream // additions diff --git a/seabug-contracts-0.1.0.tgz b/seabug-contracts-0.1.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..c7b561ae7865f52763e562c44b90f5f398e5f284 GIT binary patch literal 417500 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

sfl$ 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

8pmf5v)D<4{y`o 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

o6Fi^wW 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

&eoP>VJ2{0C^#%j_`vkJI_2h`34w_u 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

nM^{Yq_DZDt~MYtNiewiW&(EzjWkW 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

Contract (projectId :: String | r) (Either ClientError FullSeabugMetadata) getFullSeabugMetadata a@(currSym /\ _) = runExceptT $ do seabugMetadata <- getMintingTxSeabugMetadata currSym =<< getMintingTxHash a + log $ show seabugMetadata ipfsHash <- getIpfsHash seabugMetadata pure { seabugMetadata, ipfsHash } @@ -111,12 +114,14 @@ decodeField => String -> Aeson.Aeson -> Either ClientError a -decodeField field = lmap ClientDecodeJsonError <<< - ( Aeson.decodeAeson - <=< Aeson.caseAesonObject - (Left (Argonaut.TypeMismatch "Expected Object")) - (flip Aeson.getField field) - ) +decodeField field = do + traceM $ show field + lmap ClientDecodeJsonError <<< + ( Aeson.decodeAeson + <=< Aeson.caseAesonObject + (Left (Argonaut.TypeMismatch "Expected Object")) + (flip Aeson.getField field) + ) decodeFieldJson :: forall (a :: Type) diff --git a/src/Seabug/MintingPolicy.js b/src/Seabug/MintingPolicy.js index 19565a3..6b7154c 100644 --- a/src/Seabug/MintingPolicy.js +++ b/src/Seabug/MintingPolicy.js @@ -1,3 +1,7 @@ exports._mintingPolicy = { - mintingPolicy: "5912ef0100003233322232323232323322332232323233223233322232333222323333333322222222323233332222323233223233322232333222323233223322323233223232323232323232332232333332222233333222223322332233223322332233223232323222222223232323232232323333333322222222323232323232323530253530230082200222222222223233335303f01425335308b015335308b013335304b12001223535507f0022235355081010032253353091013305400400213305300300110920133505b335507e30480013370210e029001282e299a9a82f18078011080089931a98410099ab9c49010b756e726561636861626c65000830108001108d011335738921124e4654206d757374206265206275726e65640008c0115335308b015335308b013302c501135308401001222001108d0113357389211f4f776e6572206d757374207369676e20746865207472616e73616374696f6e0008c0115335308b0133355302e1200135045504f25335308c015335308c013304d35305500122200333058307b01b5060108d01108e011333573466e1cccc0b0d4c154004888008070d4c2140400888800d200208e0108d01108d0135303150112222222222009108d01133573892011f556e6465726c79696e67204e4654206d75737420626520756e6c6f636b65640008c01108c01108c012323232323225335309101533530910133301300735308a0100722200200110930113357389213e45786163746c79206f6e65206e657720746f6b656e206d757374206265206d696e74656420616e642065786163746c79206f6e65206f6c64206275726e7400092011533530910153353091013300550033305d30800101d5065153353091013300550023305d30810101f50651333553034120013504b5055330063305d30810135308a0100722200150653370266e054010c238054008c23805400d4058424804424804424c044cd5ce248113526f79616c6974696573206e6f742070616964000920110920113370666e09400807120a09c0113370666e09400406520a09c01135308601003222002225335308e01333573466e20008230042400423c044240044ccd54c0c448004d41214148cc00c004009404c888d4c15c0048894cd4c24404cc14801800c54cd4c24404ccd5cd19b8700533303100204f04f093010920115335350645335350640012132353039001222222222253353507033355304012001503f2353550900100122533530a001333573466e3c00803c28804284044d41d400c541d000884d41ccd4d542400400488004541c540605419484c8ccd5cd19baf0020010950109401323535508501001223374a900019aba0375200466ae80dd48009bb108a01335508501501a304f008109201109201109201225335308c015335308c0133300e00200135308501002222001108e0113357389213e45786163746c79206f6e65206e657720746f6b656e206d757374206265206d696e74656420616e642065786163746c79206f6e65206f6c64206275726e740008d0115335308c013302d501235308501002222001108e0113357389211f4f776e6572206d757374207369676e20746865207472616e73616374696f6e0008d01108d0125335308b015335308b0153353505a53353505e30120022100113263530820133573892010b756e726561636861626c65000830108001108c012213535507f0022253353505e00315335308f01333573466e3c008c13001424404240044ccd5cd19b87001480082440424004424004884248044234044cd5ce2491e45786163746c79206f6e65204e4654206d757374206265206d696e7465640008c0115335308b0133355302e1200135045504f25335308c013304d35305500122200333058307b01b50601333573466e1cccc0b0d4c154004888008070d4c2140400888800d200208e0108d01108d0135303150112222222222009108d01133573892011d556e6465726c79696e67204e4654206d757374206265206c6f636b65640008c01108c0135302f500f222222222200723222325335350565335350563006353029500922222222220072135059001150572153353505300110850122135355078002225335350570031089012213535507c0022253353505b00315335308c015335308c013304f006500d13304f002500a108d0115335308c01333573466e1c015200108e0108d011333573466e1c005200208e0108d01108d0115335308c015335308c013304f002500d13304f006500a108d0115335308c01333573466e1c005200108e0108d011333573466e1c015200208e0108d01108d01108d0122108f011084011303f35307b00422233307f0030050041303c00132001355080012253353504e001150532213535507300222533530830133046002500b135058001130060033200135507f2253353504d001150522213535507200222533530820133045002500a13505700113006003135302150012222222222009135301e003220023200135507c2253353504a0011504f2213535506f002225335307f33042002500713505400113006003135301c0012233335302a0012326353072335738921024c6800073070200123263530723357389201024c680007307023263530723357389201024c6800073070375c01e6eb8038dd700698358061bae00b306b00a3333573466e1d40112000230273065500623333573466e1d401520062302b3066500723333573466e1d4019200223302a30675008306e500923333573466e1d401d200423302c30685009375ca014464c6a60d666ae701a81b01a41a019c198194cccd5cd19b8735573aa004900011980b19191919191919191919191999ab9a3370e6aae754029200023333333333024335044232323333573466e1cd55cea8012400046605460ae6ae854008c124d5d09aba2500223263530783357380ee0f20ec0ea26aae7940044dd50009aba1500a33504404535742a012666aa096eb94128d5d0a804199aa825bae504a35742a00e66a0880ba6ae854018cd4110cd541b8199d69aba150053232323333573466e1cd55cea80124000466a0586464646666ae68cdc39aab9d5002480008cd40d0cd417dd69aba150023064357426ae8940088c98d4c1f0cd5ce03d83e83d03c89aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa0049000119a81919a82fbad35742a00460c86ae84d5d1280111931a983e19ab9c07b07d07a079135573ca00226ea8004d5d09aba2500223263530783357380ee0f20ec0ea26aae7940044dd50009aba1500433504475c6ae85400ccd4110cd541b9d710009aba150023056357426ae8940088c98d4c1d0cd5ce03983a83903889aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aab9e5001137540026ae854008c8c8c8cccd5cd19b875001480188c0a4c154d5d09aab9e500323333573466e1d4009200423028305f357426aae7940108cccd5cd19b875003480088c0a0c134d5d09aab9e500523333573466e1d401120002302b375c6ae84d55cf280311931a983799ab9c06e07006d06c06b06a069135573aa00226ea8004d5d09aba2500223263530683357380ce0d20cc0ca26aae7940044dd500089aab9d5004135742a00426ae84d5d1280089aab9e5001137540024446464600200a640026aa0ce4466a6a06a0029000111a9aa82d00111299a9835199ab9a3371e0040120d80d62600e0022600c006640026aa0cc4466a6a0680029000111a9aa82c80111299a9834999ab9a3371e00400e0d60d420022600c006446a600e0044444444444a66a6a07c666aa601c24002a01a4a66a60d8666ae68cdc780600083703689a8208008a820001908370836099a80d11299a9a819801108018800a819190009aa8301108911299a9a81880089a9a80e80191000910999a9a80f802910011802001199aa9803890008028020009109198008018011000911111111109199999999980080580500480400380300280200180110009109198008018011000891091980080180109000891091980080180109000891091980080180109000909111180200290911118018029091111801002909111180080290009091111802002910911119801803002910911119801003002909111180080290008919a80191199a9a807001910010010009a9a8060009100089109198008018010900091b9433355300312001714004664466004646e50cc118004014d4c0fc00c888008cc008dca1a981f801911000998011b9435303f00322200300150145015489003200135504422112225335350150011002221330050023335530071200100500400132001355043221222533535014002153353501400110472210482215335350160031048221533530493300700400213335300912001007003001104a2235300c0022235300e0032232335303400523353035004253353048333573466e3c0080041281245400c412481248cd4c0d4010812494cd4c120ccd5cd19b8f00200104a04915003104915335350180032153353501900221335303100223353032002233530370022335303800223300e002001204c2335303800220v4c23300e00200122204c2223353034004204c2225335304d333573466e1c01800c13c13854cd4c134ccd5cd19b8700500204f04e13300f004001104e104e1047153353501800121047104722333573466e1c00800410810488ccd5cd19b8f0020010410401335002225335303e0021040100103d1221233001003002120011232230023758002640026aa07a446666aae7c004940388cd4034c010d5d080118019aba200203423232323333573466e1cd55cea801a4000466600e6464646666ae68cdc39aab9d5002480008cc034c0b8d5d0a80119a8098151aba135744a004464c6a607066ae700dc0e40d80d44d55cf280089baa00135742a006666aa016eb94028d5d0a80119a807bae357426ae8940088c98d4c0d0cd5ce01981a81901889aba25001135573ca00226ea800488848ccc00401000c00880048848cc00400c00880044cd54005d73ad112232230023756002640026aa06e44646666aae7c008940248cd4020cd540acc018d55cea80118029aab9e500230043574400605e26ae840044488008488488cc00401000c48004488c8c8cccd5cd19b875001480008d4020c014d5d09aab9e500323333573466e1d4009200225008232635302b33573805405805205004e26aae7540044dd5000890911801001889100089000919191999ab9a3370e6aae7540092000233006300735742a0046eb4d5d09aba25002232635302533573804804c04604426aae7940044dd500091091980080180110009191999ab9a3370e6aae75400520002375c6ae84d55cf280111931a981099ab9c02002201f01e1375400224464646666ae68cdc3a800a40084a00e46666ae68cdc3a8012400446a014600c6ae84d55cf280211999ab9a3370ea00690001280511931a981219ab9c02302502202102001f135573aa00226ea8004484888c00c0104488800844888004480048c8cccd5cd19b8750014800880988cccd5cd19b8750024800080988c98d4c070cd5ce00d80e80d00c80c09aab9d3754002464646464646666ae68cdc3a800a4018401646666ae68cdc3a80124014401a46666ae68cdc3a801a40104660166eb8d5d0a8029bad357426ae8940148cccd5cd19b875004480188cc034dd71aba15007375c6ae84d5d1280391999ab9a3370ea00a9002119809180a1aba15009375c6ae84d5d1280491999ab9a3370ea00c90011180a180a9aba135573ca01646666ae68cdc3a803a400046026602c6ae84d55cf280611931a981219ab9c02302502202102001f01e01d01c01b135573aa00826aae79400c4d55cf280109aab9e500113754002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024646464646666ae68cdc3a800a400446660106eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d400920002300a300b357426aae7940188c98d4c054cd5ce00a00b00980900889aab9d5003135744a00226aae7940044dd5000909118010019110911998008028020019000919191999ab9a3370ea0029001118031bae357426aae79400c8cccd5cd19b875002480008c020dd71aba135573ca008464c6a601e66ae7003804003403002c4d55cea80089baa001212230020032122300100320011122232323333573466e1cd55cea80124000466aa010600c6ae854008c014d5d09aba25002232635300c33573801601a01401226aae7940044dd50008891091980080180108900091919191999ab9a3370e6aae75400d2000233300b375c6ae85400cc030d5d0a8011bae357426ae8940088c98d4c020cd5ce00380480300289aba25001135573ca00226ea8005264901035054310012001200122212333001004003002200123253353007333573466e21400400c02402058540044dd6800a40004a66a6008666ae68cdc40008010030028a400020029040497a00990009aa802111299a9802199ab9a33710004904002003002899b8b0020011330033370600490400219b8b3370c00490400200089100109100090008891918008009119801980100100081" + mintingPolicy: { + getMintingPolicy: + "5912ef0100003233322232323232323322332232323233223233322232333222323333333322222222323233332222323233223233322232333222323233223322323233223232323232323232332232333332222233333222223322332233223322332233223232323222222223232323232232323333333322222222323232323232323530253530230082200222222222223233335303f01425335308b015335308b013335304b12001223535507f0022235355081010032253353091013305400400213305300300110920133505b335507e30480013370210e029001282e299a9a82f18078011080089931a98410099ab9c49010b756e726561636861626c65000830108001108d011335738921124e4654206d757374206265206275726e65640008c0115335308b015335308b013302c501135308401001222001108d0113357389211f4f776e6572206d757374207369676e20746865207472616e73616374696f6e0008c0115335308b0133355302e1200135045504f25335308c015335308c013304d35305500122200333058307b01b5060108d01108e011333573466e1cccc0b0d4c154004888008070d4c2140400888800d200208e0108d01108d0135303150112222222222009108d01133573892011f556e6465726c79696e67204e4654206d75737420626520756e6c6f636b65640008c01108c01108c012323232323225335309101533530910133301300735308a0100722200200110930113357389213e45786163746c79206f6e65206e657720746f6b656e206d757374206265206d696e74656420616e642065786163746c79206f6e65206f6c64206275726e7400092011533530910153353091013300550033305d30800101d5065153353091013300550023305d30810101f50651333553034120013504b5055330063305d30810135308a0100722200150653370266e054010c238054008c23805400d4058424804424804424c044cd5ce248113526f79616c6974696573206e6f742070616964000920110920113370666e09400807120a09c0113370666e09400406520a09c01135308601003222002225335308e01333573466e20008230042400423c044240044ccd54c0c448004d41214148cc00c004009404c888d4c15c0048894cd4c24404cc14801800c54cd4c24404ccd5cd19b8700533303100204f04f093010920115335350645335350640012132353039001222222222253353507033355304012001503f2353550900100122533530a001333573466e3c00803c28804284044d41d400c541d000884d41ccd4d542400400488004541c540605419484c8ccd5cd19baf0020010950109401323535508501001223374a900019aba0375200466ae80dd48009bb108a01335508501501a304f008109201109201109201225335308c015335308c0133300e00200135308501002222001108e0113357389213e45786163746c79206f6e65206e657720746f6b656e206d757374206265206d696e74656420616e642065786163746c79206f6e65206f6c64206275726e740008d0115335308c013302d501235308501002222001108e0113357389211f4f776e6572206d757374207369676e20746865207472616e73616374696f6e0008d01108d0125335308b015335308b0153353505a53353505e30120022100113263530820133573892010b756e726561636861626c65000830108001108c012213535507f0022253353505e00315335308f01333573466e3c008c13001424404240044ccd5cd19b87001480082440424004424004884248044234044cd5ce2491e45786163746c79206f6e65204e4654206d757374206265206d696e7465640008c0115335308b0133355302e1200135045504f25335308c013304d35305500122200333058307b01b50601333573466e1cccc0b0d4c154004888008070d4c2140400888800d200208e0108d01108d0135303150112222222222009108d01133573892011d556e6465726c79696e67204e4654206d757374206265206c6f636b65640008c01108c0135302f500f222222222200723222325335350565335350563006353029500922222222220072135059001150572153353505300110850122135355078002225335350570031089012213535507c0022253353505b00315335308c015335308c013304f006500d13304f002500a108d0115335308c01333573466e1c015200108e0108d011333573466e1c005200208e0108d01108d0115335308c015335308c013304f002500d13304f006500a108d0115335308c01333573466e1c005200108e0108d011333573466e1c015200208e0108d01108d01108d0122108f011084011303f35307b00422233307f0030050041303c00132001355080012253353504e001150532213535507300222533530830133046002500b135058001130060033200135507f2253353504d001150522213535507200222533530820133045002500a13505700113006003135302150012222222222009135301e003220023200135507c2253353504a0011504f2213535506f002225335307f33042002500713505400113006003135301c0012233335302a0012326353072335738921024c6800073070200123263530723357389201024c680007307023263530723357389201024c6800073070375c01e6eb8038dd700698358061bae00b306b00a3333573466e1d40112000230273065500623333573466e1d401520062302b3066500723333573466e1d4019200223302a30675008306e500923333573466e1d401d200423302c30685009375ca014464c6a60d666ae701a81b01a41a019c198194cccd5cd19b8735573aa004900011980b19191919191919191919191999ab9a3370e6aae754029200023333333333024335044232323333573466e1cd55cea8012400046605460ae6ae854008c124d5d09aba2500223263530783357380ee0f20ec0ea26aae7940044dd50009aba1500a33504404535742a012666aa096eb94128d5d0a804199aa825bae504a35742a00e66a0880ba6ae854018cd4110cd541b8199d69aba150053232323333573466e1cd55cea80124000466a0586464646666ae68cdc39aab9d5002480008cd40d0cd417dd69aba150023064357426ae8940088c98d4c1f0cd5ce03d83e83d03c89aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa0049000119a81919a82fbad35742a00460c86ae84d5d1280111931a983e19ab9c07b07d07a079135573ca00226ea8004d5d09aba2500223263530783357380ee0f20ec0ea26aae7940044dd50009aba1500433504475c6ae85400ccd4110cd541b9d710009aba150023056357426ae8940088c98d4c1d0cd5ce03983a83903889aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aab9e5001137540026ae854008c8c8c8cccd5cd19b875001480188c0a4c154d5d09aab9e500323333573466e1d4009200423028305f357426aae7940108cccd5cd19b875003480088c0a0c134d5d09aab9e500523333573466e1d401120002302b375c6ae84d55cf280311931a983799ab9c06e07006d06c06b06a069135573aa00226ea8004d5d09aba2500223263530683357380ce0d20cc0ca26aae7940044dd500089aab9d5004135742a00426ae84d5d1280089aab9e5001137540024446464600200a640026aa0ce4466a6a06a0029000111a9aa82d00111299a9835199ab9a3371e0040120d80d62600e0022600c006640026aa0cc4466a6a0680029000111a9aa82c80111299a9834999ab9a3371e00400e0d60d420022600c006446a600e0044444444444a66a6a07c666aa601c24002a01a4a66a60d8666ae68cdc780600083703689a8208008a820001908370836099a80d11299a9a819801108018800a819190009aa8301108911299a9a81880089a9a80e80191000910999a9a80f802910011802001199aa9803890008028020009109198008018011000911111111109199999999980080580500480400380300280200180110009109198008018011000891091980080180109000891091980080180109000891091980080180109000909111180200290911118018029091111801002909111180080290009091111802002910911119801803002910911119801003002909111180080290008919a80191199a9a807001910010010009a9a8060009100089109198008018010900091b9433355300312001714004664466004646e50cc118004014d4c0fc00c888008cc008dca1a981f801911000998011b9435303f00322200300150145015489003200135504422112225335350150011002221330050023335530071200100500400132001355043221222533535014002153353501400110472210482215335350160031048221533530493300700400213335300912001007003001104a2235300c0022235300e0032232335303400523353035004253353048333573466e3c0080041281245400c412481248cd4c0d4010812494cd4c120ccd5cd19b8f00200104a04915003104915335350180032153353501900221335303100223353032002233530370022335303800223300e002001204c23353038002204c23300e00200122204c2223353034004204c2225335304d333573466e1c01800c13c13854cd4c134ccd5cd19b8700500204f04e13300f004001104e104e1047153353501800121047104722333573466e1c00800410810488ccd5cd19b8f0020010410401335002225335303e0021040100103d1221233001003002120011232230023758002640026aa07a446666aae7c004940388cd4034c010d5d080118019aba200203423232323333573466e1cd55cea801a4000466600e6464646666ae68cdc39aab9d5002480008cc034c0b8d5d0a80119a8098151aba135744a004464c6a607066ae700dc0e40d80d44d55cf280089baa00135742a006666aa016eb94028d5d0a80119a807bae357426ae8940088c98d4c0d0cd5ce01981a81901889aba25001135573ca00226ea800488848ccc00401000c00880048848cc00400c00880044cd54005d73ad112232230023756002640026aa06e44646666aae7c008940248cd4020cd540acc018d55cea80118029aab9e500230043574400605e26ae840044488008488488cc00401000c48004488c8c8cccd5cd19b875001480008d4020c014d5d09aab9e500323333573466e1d4009200225008232635302b33573805405805205004e26aae7540044dd5000890911801001889100089000919191999ab9a3370e6aae7540092000233006300735742a0046eb4d5d09aba25002232635302533573804804c04604426aae7940044dd500091091980080180110009191999ab9a3370e6aae75400520002375c6ae84d55cf280111931a981099ab9c02002201f01e1375400224464646666ae68cdc3a800a40084a00e46666ae68cdc3a8012400446a014600c6ae84d55cf280211999ab9a3370ea00690001280511931a981219ab9c02302502202102001f135573aa00226ea8004484888c00c0104488800844888004480048c8cccd5cd19b8750014800880988cccd5cd19b8750024800080988c98d4c070cd5ce00d80e80d00c80c09aab9d3754002464646464646666ae68cdc3a800a4018401646666ae68cdc3a80124014401a46666ae68cdc3a801a40104660166eb8d5d0a8029bad357426ae8940148cccd5cd19b875004480188cc034dd71aba15007375c6ae84d5d1280391999ab9a3370ea00a9002119809180a1aba15009375c6ae84d5d1280491999ab9a3370ea00c90011180a180a9aba135573ca01646666ae68cdc3a803a400046026602c6ae84d55cf280611931a981219ab9c02302502202102001f01e01d01c01b135573aa00826aae79400c4d55cf280109aab9e500113754002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024646464646666ae68cdc3a800a400446660106eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d400920002300a300b357426aae7940188c98d4c054cd5ce00a00b00980900889aab9d5003135744a00226aae7940044dd5000909118010019110911998008028020019000919191999ab9a3370ea0029001118031bae357426aae79400c8cccd5cd19b875002480008c020dd71aba135573ca008464c6a601e66ae7003804003403002c4d55cea80089baa001212230020032122300100320011122232323333573466e1cd55cea80124000466aa010600c6ae854008c014d5d09aba25002232635300c33573801601a01401226aae7940044dd50008891091980080180108900091919191999ab9a3370e6aae75400d2000233300b375c6ae85400cc030d5d0a8011bae357426ae8940088c98d4c020cd5ce00380480300289aba25001135573ca00226ea8005264901035054310012001200122212333001004003002200123253353007333573466e21400400c02402058540044dd6800a40004a66a6008666ae68cdc40008010030028a400020029040497a00990009aa802111299a9802199ab9a33710004904002003002899b8b0020011330033370600490400219b8b3370c00490400200089100109100090008891918008009119801980100100081", + }, }; + diff --git a/src/Seabug/Seabug.purs b/src/Seabug/Seabug.purs index c91c040..2a16e10 100644 --- a/src/Seabug/Seabug.purs +++ b/src/Seabug/Seabug.purs @@ -1,16 +1,19 @@ module Seabug ( module Seabug.CallContract + , getWalletBalance ) where --- import Prelude +import Prelude --- import Control.Promise (Promise, fromAff) --- import Data.Maybe (Maybe) --- import Effect (Effect) --- import QueryM (callNami) +import Control.Promise (Promise, fromAff) +import Data.Maybe (Maybe) +import Effect (Effect) +import QueryM (callNami) import Seabug.CallContract --- import Serialization.Types (Value) --- import Wallet (Wallet(..), mkNamiWalletAff) +import Serialization.Types (Value) +import Wallet (Wallet(..), mkNamiWalletAff) --- connectWallet :: Effect (Promise Wallet) --- connectWallet = fromAff mkNamiWalletAff +getWalletBalance :: Effect (Promise (Maybe Value)) +getWalletBalance = fromAff $ do + (Nami nami) <- mkNamiWalletAff + callNami nami _.getBalance \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index f168b3e..1055157 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -51,7 +51,7 @@ module.exports = { resolve: { modules: [process.env.NODE_PATH], - extensions: [".js"], + extensions: [".js", ".ts"], fallback: { buffer: require.resolve("buffer/"), http: false, From af82a87bcb4c0e7d3a50a4017d305ba3e53c3437 Mon Sep 17 00:00:00 2001 From: Neil Rutledge Date: Thu, 2 Jun 2022 18:34:54 -0400 Subject: [PATCH 10/29] Bump CTL version --- flake.lock | 8 ++++---- flake.nix | 2 +- packages.dhall | 2 +- src/Seabug/CallContract.purs | 2 -- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/flake.lock b/flake.lock index 8374a41..4776a6b 100644 --- a/flake.lock +++ b/flake.lock @@ -549,17 +549,17 @@ "servant-purescript": "servant-purescript" }, "locked": { - "lastModified": 1654120390, - "narHash": "sha256-Lixco/Jj3kITVmLBPYTfjSGuQmihP8WB39585OkE/oc=", + "lastModified": 1654207766, + "narHash": "sha256-HeN/bCFrR/Epc6NTx5GO6UmEXACdtrLHt6p4VCFI2xE=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "fba82e19da417abb7bbe89815b081a76aea2e5c0", + "rev": "5c7e3dd0d6c001df1d7c8e7b675e1d79530dbdff", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "fba82e19da417abb7bbe89815b081a76aea2e5c0", + "rev": "5c7e3dd0d6c001df1d7c8e7b675e1d79530dbdff", "type": "github" } }, diff --git a/flake.nix b/flake.nix index 404c10a..fe8c3f8 100644 --- a/flake.nix +++ b/flake.nix @@ -10,7 +10,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "fba82e19da417abb7bbe89815b081a76aea2e5c0"; + rev = "5c7e3dd0d6c001df1d7c8e7b675e1d79530dbdff"; }; nixpkgs.follows = "cardano-transaction-lib/nixpkgs"; }; diff --git a/packages.dhall b/packages.dhall index 040755c..76fd612 100644 --- a/packages.dhall +++ b/packages.dhall @@ -295,7 +295,7 @@ let additions = , "variant" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "fba82e19da417abb7bbe89815b081a76aea2e5c0" + , version = "5c7e3dd0d6c001df1d7c8e7b675e1d79530dbdff" } } in upstream // additions diff --git a/src/Seabug/CallContract.purs b/src/Seabug/CallContract.purs index b4ae930..1e0f4e8 100644 --- a/src/Seabug/CallContract.purs +++ b/src/Seabug/CallContract.purs @@ -12,7 +12,6 @@ import Contract.Monad ( ConfigParams(ConfigParams) , ContractConfig , LogLevel - , defaultSlotConfig , mkContractConfig , runContract , runContract_ @@ -179,7 +178,6 @@ buildContractConfig cfg = do , secure: cfg.serverSecureConn } , networkId: networkId - , slotConfig: defaultSlotConfig , logLevel: cfg.logLevel , extraConfig: { projectId: cfg.projectId } , wallet From a77f69cfcb7b0ccf4b12571679516c3cf0a800ce Mon Sep 17 00:00:00 2001 From: Neil Rutledge Date: Thu, 2 Jun 2022 18:35:16 -0400 Subject: [PATCH 11/29] Add jssha dependency --- package-lock.json | 5 +++++ package.json | 1 + 2 files changed, 6 insertions(+) diff --git a/package-lock.json b/package-lock.json index a3af14e..eacbb85 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2269,6 +2269,11 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "jssha": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jssha/-/jssha-3.2.0.tgz", + "integrity": "sha512-QuruyBENDWdN4tZwJbQq7/eAK85FqrI4oDbXjy5IBhYD+2pTJyBUWZe8ctWaCkrV0gy6AaelgOZZBMeswEa/6Q==" + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", diff --git a/package.json b/package.json index 31143e0..aaaa6f7 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "big-integer": "1.6.51", "blakejs": "1.2.1", "bufferutil": "4.0.5", + "jssha": "3.2.0", "node-polyfill-webpack-plugin": "1.1.4", "uniqid": "5.4.0", "reconnecting-websocket": "4.4.0", From af4ebe45d80608d4c8a0c976fdbdda3a248e1abd Mon Sep 17 00:00:00 2001 From: Neil Rutledge Date: Thu, 2 Jun 2022 22:54:09 -0400 Subject: [PATCH 12/29] Switch to client side hashing for Hashable ByteArray --- src/Seabug/Types.purs | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/src/Seabug/Types.purs b/src/Seabug/Types.purs index aa36dc1..3ed85a0 100644 --- a/src/Seabug/Types.purs +++ b/src/Seabug/Types.purs @@ -44,22 +44,10 @@ import Control.Monad.Reader.Trans (asks) import Data.Argonaut as Json import Data.Argonaut.Encode.Encoders (encodeString) import Data.BigInt (BigInt, fromInt, toInt) +import Hashing (blake2b256Hash) import Partial.Unsafe (unsafePartial) import Serialization.Hash (ed25519KeyHashToBytes, scriptHashToBytes) -blake2bHash :: forall (r :: Row Type). ByteArray -> Contract r (Maybe ByteArray) -blake2bHash bytes = Contract $ do - url <- asks $ (_ <> "/" <> "blake2b") <<< mkHttpUrl <<< _.serverConfig - let - reqBody :: Maybe Affjax.RequestBody.RequestBody - reqBody = Just - $ Affjax.RequestBody.Json - $ encodeString - $ byteArrayToHex bytes - liftAff (Affjax.post Affjax.ResponseFormat.json url reqBody) - <#> either (const Nothing) - (hush <<< Aeson.decodeAeson <<< Aeson.jsonToAeson <<< _.body) - -- Field names have been simplified due to row polymorphism. Please let me know -- if the field names must be exact. -- | Parameters that need to be submitted when minting a new NFT. @@ -350,7 +338,7 @@ class Hashable (a :: Type) where -> Contract r (Maybe ByteArray) -- Plutus BuiltinByteString instance Hashable ByteArray where - hash = blake2bHash + hash = pure <<< Just <<< blake2b256Hash instance Hashable Natural where hash = hash <<< toBin <<< toBigInt From fc70a5fa7ca4556ee11aa1057bcdaca74ab8416c Mon Sep 17 00:00:00 2001 From: Neil Rutledge Date: Tue, 7 Jun 2022 03:41:15 -0400 Subject: [PATCH 13/29] Fix wrong token name used for minting NFT --- src/Seabug/Contract/MarketPlaceBuy.purs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Seabug/Contract/MarketPlaceBuy.purs b/src/Seabug/Contract/MarketPlaceBuy.purs index 70405bc..19f4180 100644 --- a/src/Seabug/Contract/MarketPlaceBuy.purs +++ b/src/Seabug/Contract/MarketPlaceBuy.purs @@ -36,7 +36,7 @@ import Contract.ProtocolParameters.Alonzo (minAdaTxOut) import Contract.Scripts (applyArgs, typedValidatorEnterpriseAddress) import Contract.Transaction ( BalancedSignedTransaction(BalancedSignedTransaction) - , TransactionOutput + , TransactionOutput(TransactionOutput) , balanceAndSignTx , submit ) @@ -130,16 +130,19 @@ mkMarketplaceTx (NftData nftData) = do oldName <- liftedM "marketplaceBuy: Cannot hash old token" $ mkTokenName nft newName <- liftedM "marketplaceBuy: Cannot hash new token" $ mkTokenName newNft + log $ "curr: " <> show curr + log $ "oldName: " <> show oldName + log $ "newName: " <> show newName let oldNftValue = Value.singleton curr oldName $ negate one - newNftValue = Value.singleton curr oldName one + newNftValue = Value.singleton curr newName one nftPrice = nft'.price valHash = marketplaceValidator'.validatorHash mintRedeemer = Redeemer $ toData $ ChangeOwner nft pkh containsNft :: forall (a :: Type). (a /\ TransactionOutput) -> Boolean - containsNft (_ /\ tx) = - Value.valueOf (unwrap tx).amount curr oldName == one + containsNft (_ /\ TransactionOutput out) = + Value.valueOf out.amount curr oldName == one getShare :: BigInt -> BigInt getShare share = (toBigInt nftPrice * share) `div` fromInt 10_000 @@ -171,6 +174,7 @@ mkMarketplaceTx (NftData nftData) = do scriptUtxos <- liftedM "marketplaceBuy: Cannot get script Utxos" $ utxosAt (unwrap scriptAddr).address + log $ "scriptUtxos: " <> show scriptUtxos utxo /\ utxoIndex <- liftContractM "marketplaceBuy: NFT not found on marketplace" $ Array.find containsNft From aca332c22d72f13bfb92a43be07f3c022ae1ee8f Mon Sep 17 00:00:00 2001 From: Neil Rutledge Date: Tue, 7 Jun 2022 03:41:54 -0400 Subject: [PATCH 14/29] Bump CTL version for fee fixes --- flake.nix | 2 +- packages.dhall | 2 +- spago-packages.nix | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/flake.nix b/flake.nix index fe8c3f8..6a68d70 100644 --- a/flake.nix +++ b/flake.nix @@ -10,7 +10,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "5c7e3dd0d6c001df1d7c8e7b675e1d79530dbdff"; + rev = "a8aabb842ecc1e287d4a60ea4f4c6cff6fbfeea7"; }; nixpkgs.follows = "cardano-transaction-lib/nixpkgs"; }; diff --git a/packages.dhall b/packages.dhall index 76fd612..ebc4e01 100644 --- a/packages.dhall +++ b/packages.dhall @@ -295,7 +295,7 @@ let additions = , "variant" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "5c7e3dd0d6c001df1d7c8e7b675e1d79530dbdff" + , version = "a8aabb842ecc1e287d4a60ea4f4c6cff6fbfeea7" } } in upstream // additions diff --git a/spago-packages.nix b/spago-packages.nix index 235781d..a3ddfc5 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -187,11 +187,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "2deb747008ea5de763145b611328cdc3203c7da9"; + version = "a8aabb842ecc1e287d4a60ea4f4c6cff6fbfeea7"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "2deb747008ea5de763145b611328cdc3203c7da9"; - sha256 = "0yfymf4mdcwq1644zibiwzfvqw3x4sn6qhkmlzdss39kjzcvdzmr"; + rev = "a8aabb842ecc1e287d4a60ea4f4c6cff6fbfeea7"; + sha256 = "189764f69c32556bbf2gkyy9hlv65i96yfb7pqw4fyn1r4nfmsbs"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From b760e46b8a2c167b5393ad2cbc0c83c99dec8e73 Mon Sep 17 00:00:00 2001 From: Aleksandr Penskoi Date: Thu, 23 Jun 2022 04:58:27 +0300 Subject: [PATCH 15/29] Add fd to nix develop (require for seabug build) --- flake.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/flake.nix b/flake.nix index 6a68d70..7244214 100644 --- a/flake.nix +++ b/flake.nix @@ -31,6 +31,9 @@ pkgs.purescriptProject { inherit pkgs src; projectName = "seabug-contracts"; + shell = { + packages = [ pkgs.fd ]; + }; }; in { From 027d871f40f037c7715bdd3df181219c307e81ab Mon Sep 17 00:00:00 2001 From: Aleksandr Penskoi Date: Tue, 28 Jun 2022 00:59:21 +0300 Subject: [PATCH 16/29] Fix warning --- src/Seabug/Seabug.purs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Seabug/Seabug.purs b/src/Seabug/Seabug.purs index 2a16e10..f10ce17 100644 --- a/src/Seabug/Seabug.purs +++ b/src/Seabug/Seabug.purs @@ -3,17 +3,17 @@ module Seabug , getWalletBalance ) where -import Prelude +import Prelude (bind, ($)) import Control.Promise (Promise, fromAff) import Data.Maybe (Maybe) import Effect (Effect) import QueryM (callNami) -import Seabug.CallContract +import Seabug.CallContract (callMarketPlaceBuy, callMarketPlaceBuyTest, callMarketPlaceListNft) import Serialization.Types (Value) import Wallet (Wallet(..), mkNamiWalletAff) getWalletBalance :: Effect (Promise (Maybe Value)) getWalletBalance = fromAff $ do (Nami nami) <- mkNamiWalletAff - callNami nami _.getBalance \ No newline at end of file + callNami nami _.getBalance From f6b18315502dec153870c4f95a6b3b07b41e81bd Mon Sep 17 00:00:00 2001 From: Aleksandr Penskoi Date: Tue, 28 Jun 2022 01:00:11 +0300 Subject: [PATCH 17/29] Fix logLevel configuration. --- spago.dhall | 1 + src/Seabug/CallContract.purs | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/spago.dhall b/spago.dhall index af4dd4e..93f9b10 100644 --- a/spago.dhall +++ b/spago.dhall @@ -11,6 +11,7 @@ You can edit this file as you like. , "argonaut" , "argonaut-codecs" , "arrays" + , "monad-logger" , "bifunctors" , "bigints" , "cardano-transaction-lib" diff --git a/src/Seabug/CallContract.purs b/src/Seabug/CallContract.purs index 1e0f4e8..89d1bd4 100644 --- a/src/Seabug/CallContract.purs +++ b/src/Seabug/CallContract.purs @@ -11,7 +11,6 @@ import Contract.Address (Slot(Slot)) import Contract.Monad ( ConfigParams(ConfigParams) , ContractConfig - , LogLevel , mkContractConfig , runContract , runContract_ @@ -45,6 +44,7 @@ import Data.UInt as UInt import Effect (Effect) import Effect.Aff (error) import Effect.Class (liftEffect) +import Data.Log.Level (LogLevel(..)) import Effect.Exception (Error) import Metadata.Seabug (SeabugMetadata(SeabugMetadata)) import Metadata.Seabug.Share (unShare) @@ -102,7 +102,7 @@ type ContractConfiguration = , datumCacheSecureConn :: Boolean , networkId :: Int , projectId :: String - , logLevel :: LogLevel + , logLevel :: String -- Trace | Debug | Info | Warn | Error } type BuyNftArgs = @@ -159,6 +159,8 @@ buildContractConfig cfg = do $ UInt.fromInt' cfg.datumCachePort networkId <- liftM (error "Invalid network id") $ intToNetworkId cfg.networkId + logLevel <- liftM (error "Invalid log level") + $ stringToLogLevel cfg.logLevel wallet <- Just <$> mkNamiWalletAff mkContractConfig $ ConfigParams @@ -178,11 +180,19 @@ buildContractConfig cfg = do , secure: cfg.serverSecureConn } , networkId: networkId - , logLevel: cfg.logLevel + , logLevel: logLevel , extraConfig: { projectId: cfg.projectId } , wallet } +stringToLogLevel :: String -> Maybe LogLevel +stringToLogLevel "Trace" = Just Trace +stringToLogLevel "Debug" = Just Debug +stringToLogLevel "Info" = Just Info +stringToLogLevel "Warn" = Just Warn +stringToLogLevel "Error" = Just Error +stringToLogLevel _ = Nothing + buildNftList :: NetworkId -> ListNftResult -> ListNftResultOut buildNftList network From 185659c3d5ab71682dae56ece0dca4fc8b89006d Mon Sep 17 00:00:00 2001 From: Calum Sieppert Date: Tue, 28 Jun 2022 10:49:06 -0600 Subject: [PATCH 18/29] Auto-formatting change --- src/Seabug/Contract/MarketPlaceBuy.purs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Seabug/Contract/MarketPlaceBuy.purs b/src/Seabug/Contract/MarketPlaceBuy.purs index 19f4180..69aebcb 100644 --- a/src/Seabug/Contract/MarketPlaceBuy.purs +++ b/src/Seabug/Contract/MarketPlaceBuy.purs @@ -131,8 +131,8 @@ mkMarketplaceTx (NftData nftData) = do newName <- liftedM "marketplaceBuy: Cannot hash new token" $ mkTokenName newNft log $ "curr: " <> show curr - log $ "oldName: " <> show oldName - log $ "newName: " <> show newName + log $ "oldName: " <> show oldName + log $ "newName: " <> show newName let oldNftValue = Value.singleton curr oldName $ negate one newNftValue = Value.singleton curr newName one From 3bc3a831d7aeeb91c4abea0a2205f3dec8490eee Mon Sep 17 00:00:00 2001 From: Calum Sieppert Date: Tue, 28 Jun 2022 10:50:11 -0600 Subject: [PATCH 19/29] Copy over seabug-specific metadata code from CTL --- spago.dhall | 1 + src/Seabug/CallContract.purs | 4 +- src/Seabug/Metadata.purs | 2 +- src/Seabug/Metadata/Share.purs | 49 ++++++ src/Seabug/Metadata/Types.purs | 291 +++++++++++++++++++++++++++++++++ 5 files changed, 344 insertions(+), 3 deletions(-) create mode 100644 src/Seabug/Metadata/Share.purs create mode 100644 src/Seabug/Metadata/Types.purs diff --git a/spago.dhall b/spago.dhall index af4dd4e..55dfbd4 100644 --- a/spago.dhall +++ b/spago.dhall @@ -17,6 +17,7 @@ You can edit this file as you like. , "control" , "debug" , "effect" + , "either" , "exceptions" , "http-methods" , "maybe" diff --git a/src/Seabug/CallContract.purs b/src/Seabug/CallContract.purs index 1e0f4e8..9623638 100644 --- a/src/Seabug/CallContract.purs +++ b/src/Seabug/CallContract.purs @@ -46,8 +46,8 @@ import Effect (Effect) import Effect.Aff (error) import Effect.Class (liftEffect) import Effect.Exception (Error) -import Metadata.Seabug (SeabugMetadata(SeabugMetadata)) -import Metadata.Seabug.Share (unShare) +import Seabug.Metadata.Types (SeabugMetadata(SeabugMetadata)) +import Seabug.Metadata.Share (unShare) import Partial.Unsafe (unsafePartial) import Plutus.FromPlutusType (fromPlutusType) import Seabug.Contract.MarketPlaceBuy (marketplaceBuy) diff --git a/src/Seabug/Metadata.purs b/src/Seabug/Metadata.purs index ccb0961..39cc600 100644 --- a/src/Seabug/Metadata.purs +++ b/src/Seabug/Metadata.purs @@ -32,7 +32,7 @@ import Data.Bifunctor (bimap, lmap) import Data.Function (on) import Data.HTTP.Method (Method(GET)) import Data.Newtype (unwrap) -import Metadata.Seabug (SeabugMetadata(SeabugMetadata)) +import Seabug.Metadata.Types (SeabugMetadata(SeabugMetadata)) import Partial.Unsafe (unsafePartial) import Types.CborBytes (cborBytesToByteArray) diff --git a/src/Seabug/Metadata/Share.purs b/src/Seabug/Metadata/Share.purs new file mode 100644 index 0000000..a0041ec --- /dev/null +++ b/src/Seabug/Metadata/Share.purs @@ -0,0 +1,49 @@ +module Seabug.Metadata.Share + ( Share + , mkShare + , unShare + ) where + +import Prelude + +import Data.BigInt (BigInt) +import Data.BigInt as BigInt +import Data.Maybe (Maybe(Just, Nothing)) +import FromData (class FromData) +import Metadata.FromMetadata (class FromMetadata) +import Metadata.ToMetadata (class ToMetadata, toMetadata) +import ToData (class ToData) +import Types.Int (toBigInt) as Int +import Types.PlutusData (PlutusData(Integer)) +import Types.TransactionMetadata (TransactionMetadatum(Int)) as Metadata + +-- | A number between 0 and 10000 (inclusive) representing percentage of the price. +newtype Share = Share BigInt + +derive newtype instance ToData Share + +instance FromData Share where + fromData (Integer n) = BigInt.toInt n >>= mkShare + fromData _ = Nothing + +instance ToMetadata Share where + -- Must be safe when `Share` is built using `mkShare` smart constructor. + toMetadata = toMetadata <<< unShare + +instance FromMetadata Share where + fromMetadata (Metadata.Int n) = + BigInt.toInt (Int.toBigInt n) >>= mkShare + fromMetadata _ = Nothing + +instance Show Share where + show (Share share) = "(mkShare (" <> show share <> "))" + +derive instance Eq Share + +mkShare :: Int -> Maybe Share +mkShare n + | n >= 0 && n <= 10000 = Just $ Share $ BigInt.fromInt n + | otherwise = Nothing + +unShare :: Share -> BigInt +unShare (Share n) = n diff --git a/src/Seabug/Metadata/Types.purs b/src/Seabug/Metadata/Types.purs new file mode 100644 index 0000000..13cc8a3 --- /dev/null +++ b/src/Seabug/Metadata/Types.purs @@ -0,0 +1,291 @@ +module Seabug.Metadata.Types + ( SeabugMetadata(SeabugMetadata) + , SeabugMetadataDelta(SeabugMetadataDelta) + ) where + +import Prelude + +import Aeson + ( class DecodeAeson + , JsonDecodeError + ( TypeMismatch + ) + , caseAesonObject + , decodeAeson + , getField + ) +import Data.BigInt (fromInt) as BigInt +import Data.Either (Either(Left), note) +import Data.Generic.Rep (class Generic) +import Data.Map (toUnfoldable) as Map +import Data.Maybe (Maybe(Nothing), fromJust) +import Data.Newtype (class Newtype, wrap) +import Data.Show.Generic (genericShow) +import Data.Tuple (Tuple(Tuple)) +import Data.Tuple.Nested ((/\)) +import FromData (class FromData, fromData) +import Metadata.Helpers (unsafeMkKey, lookupKey, lookupMetadata) +import Seabug.Metadata.Share (Share, mkShare) +import Metadata.FromMetadata (class FromMetadata, fromMetadata) +import Metadata.MetadataType (class MetadataType, metadataLabel) +import Metadata.ToMetadata (class ToMetadata, toMetadata) +import Partial.Unsafe (unsafePartial) +import Plutus.Types.AssocMap (Map(Map)) as AssocMap +import ToData (class ToData, toData) +import Serialization.Hash (ScriptHash, scriptHashFromBytes) +import Type.Proxy (Proxy(Proxy)) +import Types.ByteArray + ( ByteArray + , hexToByteArray + ) +import Types.RawBytes + ( hexToRawBytesUnsafe + ) +import Types.Natural (Natural) +import Types.PlutusData (PlutusData(Map)) +import Types.PubKeyHash (PubKeyHash) +import Types.Scripts (MintingPolicyHash, ValidatorHash) +import Cardano.Types.Value (CurrencySymbol, mkCurrencySymbol) +import Types.TokenName (TokenName, mkTokenName) +import Types.TransactionMetadata (TransactionMetadatum(MetadataMap)) + +newtype SeabugMetadata = SeabugMetadata + { policyId :: MintingPolicyHash + , mintPolicy :: ByteArray + , collectionNftCS :: CurrencySymbol + , collectionNftTN :: TokenName + , lockingScript :: ValidatorHash + , authorPkh :: PubKeyHash + , authorShare :: Share + , marketplaceScript :: ValidatorHash + , marketplaceShare :: Share + , ownerPkh :: PubKeyHash + , ownerPrice :: Natural + } + +derive instance Generic SeabugMetadata _ +derive instance Newtype SeabugMetadata _ +derive instance Eq SeabugMetadata + +instance Show SeabugMetadata where + show = genericShow + +instance MetadataType SeabugMetadata where + metadataLabel _ = wrap (BigInt.fromInt 727) + +instance ToMetadata SeabugMetadata where + toMetadata (SeabugMetadata meta) = toMetadata + [ meta.policyId /\ + [ "mintPolicy" /\ toMetadata meta.mintPolicy + , "collectionNftCS" /\ toMetadata meta.collectionNftCS + , "collectionNftTN" /\ toMetadata meta.collectionNftTN + , "lockingScript" /\ toMetadata meta.lockingScript + , "authorPkh" /\ toMetadata meta.authorPkh + , "authorShare" /\ toMetadata meta.authorShare + , "marketplaceScript" /\ toMetadata meta.marketplaceScript + , "marketplaceShare" /\ toMetadata meta.marketplaceShare + , "ownerPkh" /\ toMetadata meta.ownerPkh + , "ownerPrice" /\ toMetadata meta.ownerPrice + ] + ] + +instance FromMetadata SeabugMetadata where + fromMetadata (MetadataMap mp) = do + policyId /\ contents <- case Map.toUnfoldable mp of + [ policyId /\ contents ] -> + Tuple <$> fromMetadata policyId <*> pure contents + _ -> Nothing + mintPolicy <- + lookupMetadata "mintPolicy" contents >>= fromMetadata + collectionNftCS <- + lookupMetadata "collectionNftCS" contents >>= fromMetadata + collectionNftTN <- + lookupMetadata "collectionNftTN" contents >>= fromMetadata + lockingScript <- + lookupMetadata "lockingScript" contents >>= fromMetadata + authorPkh <- + lookupMetadata "authorPkh" contents >>= fromMetadata + authorShare <- + lookupMetadata "authorShare" contents >>= fromMetadata + marketplaceScript <- + lookupMetadata "marketplaceScript" contents >>= fromMetadata + marketplaceShare <- + lookupMetadata "marketplaceShare" contents >>= fromMetadata + ownerPkh <- + lookupMetadata "ownerPkh" contents >>= fromMetadata + ownerPrice <- + lookupMetadata "ownerPrice" contents >>= fromMetadata + pure $ SeabugMetadata + { policyId + , mintPolicy + , collectionNftCS + , collectionNftTN + , lockingScript + , authorPkh + , authorShare + , marketplaceScript + , marketplaceShare + , ownerPkh + , ownerPrice + } + fromMetadata _ = Nothing + +instance ToData SeabugMetadata where + toData (SeabugMetadata meta) = unsafePartial $ toData $ AssocMap.Map + [ unsafeMkKey "727" /\ AssocMap.Map + [ meta.policyId /\ AssocMap.Map + [ unsafeMkKey "mintPolicy" /\ toData meta.mintPolicy + , unsafeMkKey "collectionNftCS" /\ toData meta.collectionNftCS + , unsafeMkKey "collectionNftTN" /\ toData meta.collectionNftTN + , unsafeMkKey "lockingScript" /\ toData meta.lockingScript + , unsafeMkKey "authorPkh" /\ toData meta.authorPkh + , unsafeMkKey "authorShare" /\ toData meta.authorShare + , unsafeMkKey "marketplaceScript" /\ toData meta.marketplaceScript + , unsafeMkKey "marketplaceShare" /\ toData meta.marketplaceShare + , unsafeMkKey "ownerPkh" /\ toData meta.ownerPkh + , unsafeMkKey "ownerPrice" /\ toData meta.ownerPrice + ] + ] + ] + +instance FromData SeabugMetadata where + fromData sm = unsafePartial do + policyId /\ contents <- lookupKey "727" sm >>= case _ of + Map [ policyId /\ contents ] -> + Tuple <$> fromData policyId <*> fromData contents + _ -> Nothing + mintPolicy <- lookupKey "mintPolicy" contents >>= fromData + collectionNftCS <- lookupKey "collectionNftCS" contents >>= fromData + collectionNftTN <- lookupKey "collectionNftTN" contents >>= fromData + lockingScript <- lookupKey "lockingScript" contents >>= fromData + authorPkh <- lookupKey "authorPkh" contents >>= fromData + authorShare <- lookupKey "authorShare" contents >>= fromData + marketplaceScript <- lookupKey "marketplaceScript" contents >>= fromData + marketplaceShare <- lookupKey "marketplaceShare" contents >>= fromData + ownerPkh <- lookupKey "ownerPkh" contents >>= fromData + ownerPrice <- lookupKey "ownerPrice" contents >>= fromData + pure $ SeabugMetadata + { policyId + , mintPolicy + , collectionNftCS + , collectionNftTN + , lockingScript + , authorPkh + , authorShare + , marketplaceScript + , marketplaceShare + , ownerPkh + , ownerPrice + } + +instance DecodeAeson SeabugMetadata where + decodeAeson = + caseAesonObject + (Left (TypeMismatch "Expected object")) + $ \o -> do + collectionNftCS <- + note (TypeMismatch "Invalid ByteArray") + <<< (mkCurrencySymbol <=< hexToByteArray) + =<< getField o "collectionNftCS" + collectionNftTN <- + note (TypeMismatch "expected ASCII-encoded `TokenName`") + <<< (mkTokenName <=< hexToByteArray) + =<< getField o "collectionNftTN" + lockingScript <- + map wrap + <<< decodeScriptHash =<< getField o "lockingScript" + authorPkh <- + map wrap + <<< decodeAeson =<< getField o "authorPkh" + authorShare <- decodeShare =<< getField o "authorShare" + marketplaceScript <- map wrap <<< decodeScriptHash + =<< getField o "marketplaceScript" + marketplaceShare <- decodeShare =<< getField o "marketplaceShare" + ownerPkh <- map wrap <<< decodeAeson =<< getField o + "ownerPkh" + ownerPrice <- getField o "ownerPrice" + pure $ SeabugMetadata + { -- Not used in the endpoints where we parse the metadata, so we + -- can set a dummy value + policyId: wrap + $ unsafePartial + $ fromJust + $ scriptHashFromBytes + $ hexToRawBytesUnsafe + "00000000000000000000000000000000000000000000000000000000" + , mintPolicy: mempty + , collectionNftCS + , collectionNftTN + , lockingScript + , authorPkh + , authorShare + , marketplaceScript + , marketplaceShare + , ownerPkh + , ownerPrice + } + where + decodeShare :: Int -> Either JsonDecodeError Share + decodeShare = note (TypeMismatch "Expected int between 0 and 10000") + <<< mkShare + + decodeScriptHash :: String -> Either JsonDecodeError ScriptHash + decodeScriptHash = + note + (TypeMismatch "Expected hex-encoded script hash") + <<< (scriptHashFromBytes <<< wrap <=< hexToByteArray) + +newtype SeabugMetadataDelta = SeabugMetadataDelta + { policyId :: MintingPolicyHash + , ownerPkh :: PubKeyHash + , ownerPrice :: Natural + } + +derive instance Generic SeabugMetadataDelta _ +derive instance Newtype SeabugMetadataDelta _ +derive instance Eq SeabugMetadataDelta + +instance Show SeabugMetadataDelta where + show = genericShow + +instance MetadataType SeabugMetadataDelta where + metadataLabel _ = metadataLabel (Proxy :: Proxy SeabugMetadata) + +instance ToMetadata SeabugMetadataDelta where + toMetadata (SeabugMetadataDelta meta) = toMetadata + [ meta.policyId /\ + [ "ownerPkh" /\ toMetadata meta.ownerPkh + , "ownerPrice" /\ toMetadata meta.ownerPrice + ] + ] + +instance FromMetadata SeabugMetadataDelta where + fromMetadata (MetadataMap mp) = do + policyId /\ contents <- case Map.toUnfoldable mp of + [ policyId /\ contents ] -> + Tuple <$> fromMetadata policyId <*> pure contents + _ -> Nothing + ownerPkh <- lookupMetadata "ownerPkh" contents >>= fromMetadata + ownerPrice <- lookupMetadata "ownerPrice" contents >>= fromMetadata + pure $ SeabugMetadataDelta { policyId, ownerPkh, ownerPrice } + fromMetadata _ = Nothing + +instance ToData SeabugMetadataDelta where + toData (SeabugMetadataDelta meta) = unsafePartial $ toData $ AssocMap.Map + [ unsafeMkKey "727" /\ AssocMap.Map + [ meta.policyId /\ AssocMap.Map + [ unsafeMkKey "ownerPkh" /\ toData meta.ownerPkh + , unsafeMkKey "ownerPrice" /\ toData meta.ownerPrice + ] + ] + ] + +instance FromData SeabugMetadataDelta where + fromData sm = unsafePartial do + policyId /\ contents <- lookupKey "727" sm >>= case _ of + Map [ policyId /\ contents ] -> + Tuple <$> fromData policyId <*> fromData contents + _ -> Nothing + ownerPkh <- lookupKey "ownerPkh" contents >>= fromData + ownerPrice <- lookupKey "ownerPrice" contents >>= fromData + pure $ SeabugMetadataDelta { policyId, ownerPkh, ownerPrice } From 520446612b4621b3fd65232ae739ceb897b92e0b Mon Sep 17 00:00:00 2001 From: Calum Sieppert Date: Wed, 29 Jun 2022 10:24:24 -0600 Subject: [PATCH 20/29] Copy seabug metadata tests from CTL --- README.md | 4 ++ flake.lock | 8 ++-- spago.dhall | 4 ++ test/Fixtures.purs | 102 +++++++++++++++++++++++++++++++++++++++++++++ test/Main.purs | 13 +++++- test/Metadata.purs | 31 ++++++++++++++ test/TestM.purs | 10 +++++ test/Util.purs | 31 ++++++++++++++ 8 files changed, 198 insertions(+), 5 deletions(-) create mode 100644 test/Fixtures.purs create mode 100644 test/Metadata.purs create mode 100644 test/TestM.purs create mode 100644 test/Util.purs diff --git a/README.md b/README.md index 9cd296d..b0cc9fc 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ # seabug-contracts A library for interacting with Seabug smart contracts via the Cardano Transaction Lib (CTL). + +## Tests + +Use `spago test` to run the tests. Something like `nix build .#checks..seabug-contracts` can also be used, where `` is something like `x86_64-linux`. diff --git a/flake.lock b/flake.lock index 4776a6b..620c74b 100644 --- a/flake.lock +++ b/flake.lock @@ -549,17 +549,17 @@ "servant-purescript": "servant-purescript" }, "locked": { - "lastModified": 1654207766, - "narHash": "sha256-HeN/bCFrR/Epc6NTx5GO6UmEXACdtrLHt6p4VCFI2xE=", + "lastModified": 1654586193, + "narHash": "sha256-eunqLMnBekc4vmc5b1IsZlOYvJ9PuLVMKWKwZBwxJ6E=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "5c7e3dd0d6c001df1d7c8e7b675e1d79530dbdff", + "rev": "a8aabb842ecc1e287d4a60ea4f4c6cff6fbfeea7", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "5c7e3dd0d6c001df1d7c8e7b675e1d79530dbdff", + "rev": "a8aabb842ecc1e287d4a60ea4f4c6cff6fbfeea7", "type": "github" } }, diff --git a/spago.dhall b/spago.dhall index 55dfbd4..9ef77d6 100644 --- a/spago.dhall +++ b/spago.dhall @@ -14,17 +14,21 @@ You can edit this file as you like. , "bifunctors" , "bigints" , "cardano-transaction-lib" + , "const" , "control" , "debug" , "effect" , "either" , "exceptions" + , "foldable-traversable" , "http-methods" , "maybe" + , "mote" , "newtype" , "ordered-collections" , "partial" , "prelude" + , "spec" , "transformers" , "tuples" , "uint" diff --git a/test/Fixtures.purs b/test/Fixtures.purs new file mode 100644 index 0000000..a9a76b8 --- /dev/null +++ b/test/Fixtures.purs @@ -0,0 +1,102 @@ +-- Feel free to update binary fixtures if they do not match the results you are +-- getting in tests. However, make sure you understand the reason why they +-- don't match. +-- To update the fixture, simply copy the value from failing test output. +-- +-- Or construct a value using CSL and get the hex string: +-- +-- ``` +-- const byteArrayToHex = arr => Buffer.from(arr).toString('hex'); +-- console.log(byteArrayToHex(something.to_bytes())) +-- ``` +module Test.Fixtures + ( seabugMetadataDeltaFixture1 + , seabugMetadataFixture1 + ) where + +import Prelude + +import Contract.Address (Ed25519KeyHash, PubKeyHash(..)) +import Contract.Numeric.Natural as Natural +import Contract.Prelude (fromJust) +import Contract.Prim.ByteArray (hexToByteArrayUnsafe) +import Contract.Scripts (MintingPolicyHash(..), ScriptHash, ValidatorHash(..)) +import Contract.Value (TokenName, mkTokenName) +import Data.BigInt as BigInt +import Metadata.Seabug (SeabugMetadata(..), SeabugMetadataDelta(..)) +import Metadata.Seabug.Share (Share, mkShare) +import Partial.Unsafe (unsafePartial) +import Serialization.Hash (ed25519KeyHashFromBytes, scriptHashFromBytes) +import Types.RawBytes (hexToRawBytesUnsafe) +import Cardano.Types.Value (CurrencySymbol, mkCurrencySymbol) + +currencySymbol1 :: CurrencySymbol +currencySymbol1 = unsafePartial $ fromJust $ mkCurrencySymbol $ + hexToByteArrayUnsafe + "1d6445ddeda578117f393848e685128f1e78ad0c4e48129c5964dc2e" + +tokenName1 :: TokenName +tokenName1 = unsafePartial $ fromJust $ mkTokenName $ + hexToByteArrayUnsafe "4974657374546f6b656e" + +ed25519KeyHashFixture1 :: Ed25519KeyHash +ed25519KeyHashFixture1 = + -- $ Bech32 "hstk_1rsf0q0q77t5nttxrtmpwd7tvv58a80a686t92pgy65ekz0s8ncu" + unsafePartial $ fromJust + $ ed25519KeyHashFromBytes + $ hexToRawBytesUnsafe + "1c12f03c1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d53361" + +ed25519KeyHashFixture2 :: Ed25519KeyHash +ed25519KeyHashFixture2 = + -- "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" + unsafePartial $ fromJust + $ ed25519KeyHashFromBytes + $ hexToRawBytesUnsafe + "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" + +scriptHash1 :: ScriptHash +scriptHash1 = unsafePartial $ fromJust $ scriptHashFromBytes $ + hexToRawBytesUnsafe + "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" + +scriptHash2 :: ScriptHash +scriptHash2 = unsafePartial $ fromJust $ scriptHashFromBytes $ + hexToRawBytesUnsafe + "00000000005bb21ce6d8c7502aca70b9316d10e958611f3c6b758f60" + +policyId :: MintingPolicyHash +policyId = MintingPolicyHash scriptHash1 + +validatorHashFixture1 :: ValidatorHash +validatorHashFixture1 = ValidatorHash scriptHash1 + +validatorHashFixture2 :: ValidatorHash +validatorHashFixture2 = ValidatorHash scriptHash2 + +shareFixture :: Share +shareFixture = unsafePartial $ fromJust $ mkShare 100 + +seabugMetadataFixture1 :: SeabugMetadata +seabugMetadataFixture1 = SeabugMetadata + { policyId: policyId + , mintPolicy: hexToByteArrayUnsafe "00000000" + , collectionNftCS: currencySymbol1 + , collectionNftTN: tokenName1 + , lockingScript: validatorHashFixture1 + , authorPkh: PubKeyHash ed25519KeyHashFixture1 + , authorShare: shareFixture + , marketplaceScript: validatorHashFixture2 + , marketplaceShare: shareFixture + , ownerPkh: PubKeyHash ed25519KeyHashFixture2 + , ownerPrice: unsafePartial $ fromJust $ Natural.fromBigInt $ BigInt.fromInt + 10 + } + +seabugMetadataDeltaFixture1 :: SeabugMetadataDelta +seabugMetadataDeltaFixture1 = SeabugMetadataDelta + { policyId: policyId + , ownerPkh: PubKeyHash ed25519KeyHashFixture2 + , ownerPrice: unsafePartial $ fromJust $ Natural.fromBigInt $ BigInt.fromInt + 10 + } diff --git a/test/Main.purs b/test/Main.purs index 7c1d23f..da40d02 100644 --- a/test/Main.purs +++ b/test/Main.purs @@ -2,5 +2,16 @@ module Test.Main (main) where import Contract.Prelude +import Contract.Monad (launchAff_) +import Test.Metadata as Metadata +import Test.Util (interpret) +import TestM (TestPlanM) + main :: Effect Unit -main = log "Hello Purescript!" +main = launchAff_ do + interpret do + unitTestPlan + +unitTestPlan :: TestPlanM Unit +unitTestPlan = do + Metadata.suite diff --git a/test/Metadata.purs b/test/Metadata.purs new file mode 100644 index 0000000..ae54101 --- /dev/null +++ b/test/Metadata.purs @@ -0,0 +1,31 @@ +module Test.Metadata + ( suite + ) where + +import Prelude + +import Data.Maybe (Maybe(Just)) +import FromData (fromData) +import Metadata.MetadataType (fromGeneralTxMetadata, toGeneralTxMetadata) +import Mote (group, test) +import Test.Fixtures (seabugMetadataFixture1, seabugMetadataDeltaFixture1) +import Test.Spec.Assertions (shouldEqual) +import TestM (TestPlanM) +import ToData (toData) + +suite :: TestPlanM Unit +suite = do + group "Seabug Metadata" $ do + test "MetadataType instance" do + fromGeneralTxMetadata (toGeneralTxMetadata seabugMetadataFixture1) + `shouldEqual` Just seabugMetadataFixture1 + test "FromData / ToData instances" do + fromData (toData seabugMetadataFixture1) `shouldEqual` Just + seabugMetadataFixture1 + group "Seabug Metadata delta" $ do + test "MetadataType instance" do + fromGeneralTxMetadata (toGeneralTxMetadata seabugMetadataDeltaFixture1) + `shouldEqual` Just seabugMetadataDeltaFixture1 + test "FromData / ToData instances" do + fromData (toData seabugMetadataDeltaFixture1) `shouldEqual` Just + seabugMetadataDeltaFixture1 diff --git a/test/TestM.purs b/test/TestM.purs new file mode 100644 index 0000000..c481b35 --- /dev/null +++ b/test/TestM.purs @@ -0,0 +1,10 @@ +module TestM + ( TestPlanM + ) where + +import Prelude +import Data.Const (Const) +import Effect.Aff (Aff) +import Mote (MoteT) + +type TestPlanM a = MoteT (Const Void) (Aff Unit) Aff a diff --git a/test/Util.purs b/test/Util.purs new file mode 100644 index 0000000..3493748 --- /dev/null +++ b/test/Util.purs @@ -0,0 +1,31 @@ +module Test.Util + ( interpret + ) where + +import Prelude + +import Data.Const (Const) +import Data.Foldable (sequence_) +import Data.Maybe (Maybe(Just)) +import Data.Newtype (wrap) +import Effect.Aff (Aff) +import Effect.Aff.Class (liftAff) +import Mote (Plan, foldPlan, planT) +import Test.Spec (Spec, describe, it, pending) +import Test.Spec.Reporter (consoleReporter) +import Test.Spec.Runner (defaultConfig, runSpec') +import TestM (TestPlanM) + +interpret :: TestPlanM Unit -> Aff Unit +interpret spif = do + plan <- planT spif + runSpec' defaultConfig { timeout = Just (wrap 10000.0) } [ consoleReporter ] $ + go plan + where + go :: Plan (Const Void) (Aff Unit) -> Spec Unit + go = + foldPlan + (\x -> it x.label $ liftAff x.value) + pending + (\x -> describe x.label $ go x.value) + sequence_ From 3431f7cdb3062e9eac1a5311afb8987e16ac3119 Mon Sep 17 00:00:00 2001 From: Aleksandr Penskoi Date: Thu, 30 Jun 2022 02:25:31 +0300 Subject: [PATCH 21/29] Add logging for policy, unapllied policy and policy args. --- spago.dhall | 3 ++- src/Seabug/Contract/MarketPlaceBuy.purs | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/spago.dhall b/spago.dhall index 93f9b10..f87e94d 100644 --- a/spago.dhall +++ b/spago.dhall @@ -11,7 +11,6 @@ You can edit this file as you like. , "argonaut" , "argonaut-codecs" , "arrays" - , "monad-logger" , "bifunctors" , "bigints" , "cardano-transaction-lib" @@ -21,10 +20,12 @@ You can edit this file as you like. , "exceptions" , "http-methods" , "maybe" + , "monad-logger" , "newtype" , "ordered-collections" , "partial" , "prelude" + , "strings" , "transformers" , "tuples" , "uint" diff --git a/src/Seabug/Contract/MarketPlaceBuy.purs b/src/Seabug/Contract/MarketPlaceBuy.purs index 19f4180..5f668a8 100644 --- a/src/Seabug/Contract/MarketPlaceBuy.purs +++ b/src/Seabug/Contract/MarketPlaceBuy.purs @@ -53,6 +53,7 @@ import Contract.Wallet (getWalletAddress) import Data.Array (find) as Array import Data.BigInt (BigInt, fromInt) import Data.Map (insert, toUnfoldable) +import Data.String.Common (joinWith) import Seabug.MarketPlace (marketplaceValidator) import Seabug.MintingPolicy (mintingPolicy) import Seabug.Token (mkTokenName) @@ -98,6 +99,16 @@ mkMarketplaceTx (NftData nftData) = do pkh <- liftedM "marketplaceBuy: Cannot get PaymentPubKeyHash" ownPaymentPubKeyHash policy' <- liftedE $ pure mintingPolicy + log $ "unapplied-policy: " <> show policy' + + log $ "policy args: " <> joinWith "; " + [ "collectionNftCs: " <> show nftCollection.collectionNftCs + , "lockingScript: " <> show nftCollection.lockingScript + , "author: " <> show nftCollection.author + , "authorShare: " <> show nftCollection.authorShare + , "daoScript: " <> show nftCollection.daoScript + , "daoShare: " <> show nftCollection.daoShare + ] policy <- liftedE $ applyArgs policy' [ toData nftCollection.collectionNftCs , toData nftCollection.lockingScript @@ -106,6 +117,7 @@ mkMarketplaceTx (NftData nftData) = do , toData nftCollection.daoScript , toData nftCollection.daoShare ] + log $ "policy: " <> show policy curr <- liftedM "marketplaceBuy: Cannot get CurrencySymbol" $ pure From 3771b249113cc3439f6dc1e70cb51e27f35da94e Mon Sep 17 00:00:00 2001 From: Aleksandr Penskoi Date: Fri, 1 Jul 2022 13:18:37 +0300 Subject: [PATCH 22/29] Update hardcoded minting policy and bump CTL version --- flake.lock | 8 ++++---- src/Seabug/MintingPolicy.js | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/flake.lock b/flake.lock index 4776a6b..620c74b 100644 --- a/flake.lock +++ b/flake.lock @@ -549,17 +549,17 @@ "servant-purescript": "servant-purescript" }, "locked": { - "lastModified": 1654207766, - "narHash": "sha256-HeN/bCFrR/Epc6NTx5GO6UmEXACdtrLHt6p4VCFI2xE=", + "lastModified": 1654586193, + "narHash": "sha256-eunqLMnBekc4vmc5b1IsZlOYvJ9PuLVMKWKwZBwxJ6E=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "5c7e3dd0d6c001df1d7c8e7b675e1d79530dbdff", + "rev": "a8aabb842ecc1e287d4a60ea4f4c6cff6fbfeea7", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "5c7e3dd0d6c001df1d7c8e7b675e1d79530dbdff", + "rev": "a8aabb842ecc1e287d4a60ea4f4c6cff6fbfeea7", "type": "github" } }, diff --git a/src/Seabug/MintingPolicy.js b/src/Seabug/MintingPolicy.js index 6b7154c..8d2b9f9 100644 --- a/src/Seabug/MintingPolicy.js +++ b/src/Seabug/MintingPolicy.js @@ -1,7 +1,7 @@ exports._mintingPolicy = { mintingPolicy: { getMintingPolicy: - "5912ef0100003233322232323232323322332232323233223233322232333222323333333322222222323233332222323233223233322232333222323233223322323233223232323232323232332232333332222233333222223322332233223322332233223232323222222223232323232232323333333322222222323232323232323530253530230082200222222222223233335303f01425335308b015335308b013335304b12001223535507f0022235355081010032253353091013305400400213305300300110920133505b335507e30480013370210e029001282e299a9a82f18078011080089931a98410099ab9c49010b756e726561636861626c65000830108001108d011335738921124e4654206d757374206265206275726e65640008c0115335308b015335308b013302c501135308401001222001108d0113357389211f4f776e6572206d757374207369676e20746865207472616e73616374696f6e0008c0115335308b0133355302e1200135045504f25335308c015335308c013304d35305500122200333058307b01b5060108d01108e011333573466e1cccc0b0d4c154004888008070d4c2140400888800d200208e0108d01108d0135303150112222222222009108d01133573892011f556e6465726c79696e67204e4654206d75737420626520756e6c6f636b65640008c01108c01108c012323232323225335309101533530910133301300735308a0100722200200110930113357389213e45786163746c79206f6e65206e657720746f6b656e206d757374206265206d696e74656420616e642065786163746c79206f6e65206f6c64206275726e7400092011533530910153353091013300550033305d30800101d5065153353091013300550023305d30810101f50651333553034120013504b5055330063305d30810135308a0100722200150653370266e054010c238054008c23805400d4058424804424804424c044cd5ce248113526f79616c6974696573206e6f742070616964000920110920113370666e09400807120a09c0113370666e09400406520a09c01135308601003222002225335308e01333573466e20008230042400423c044240044ccd54c0c448004d41214148cc00c004009404c888d4c15c0048894cd4c24404cc14801800c54cd4c24404ccd5cd19b8700533303100204f04f093010920115335350645335350640012132353039001222222222253353507033355304012001503f2353550900100122533530a001333573466e3c00803c28804284044d41d400c541d000884d41ccd4d542400400488004541c540605419484c8ccd5cd19baf0020010950109401323535508501001223374a900019aba0375200466ae80dd48009bb108a01335508501501a304f008109201109201109201225335308c015335308c0133300e00200135308501002222001108e0113357389213e45786163746c79206f6e65206e657720746f6b656e206d757374206265206d696e74656420616e642065786163746c79206f6e65206f6c64206275726e740008d0115335308c013302d501235308501002222001108e0113357389211f4f776e6572206d757374207369676e20746865207472616e73616374696f6e0008d01108d0125335308b015335308b0153353505a53353505e30120022100113263530820133573892010b756e726561636861626c65000830108001108c012213535507f0022253353505e00315335308f01333573466e3c008c13001424404240044ccd5cd19b87001480082440424004424004884248044234044cd5ce2491e45786163746c79206f6e65204e4654206d757374206265206d696e7465640008c0115335308b0133355302e1200135045504f25335308c013304d35305500122200333058307b01b50601333573466e1cccc0b0d4c154004888008070d4c2140400888800d200208e0108d01108d0135303150112222222222009108d01133573892011d556e6465726c79696e67204e4654206d757374206265206c6f636b65640008c01108c0135302f500f222222222200723222325335350565335350563006353029500922222222220072135059001150572153353505300110850122135355078002225335350570031089012213535507c0022253353505b00315335308c015335308c013304f006500d13304f002500a108d0115335308c01333573466e1c015200108e0108d011333573466e1c005200208e0108d01108d0115335308c015335308c013304f002500d13304f006500a108d0115335308c01333573466e1c005200108e0108d011333573466e1c015200208e0108d01108d01108d0122108f011084011303f35307b00422233307f0030050041303c00132001355080012253353504e001150532213535507300222533530830133046002500b135058001130060033200135507f2253353504d001150522213535507200222533530820133045002500a13505700113006003135302150012222222222009135301e003220023200135507c2253353504a0011504f2213535506f002225335307f33042002500713505400113006003135301c0012233335302a0012326353072335738921024c6800073070200123263530723357389201024c680007307023263530723357389201024c6800073070375c01e6eb8038dd700698358061bae00b306b00a3333573466e1d40112000230273065500623333573466e1d401520062302b3066500723333573466e1d4019200223302a30675008306e500923333573466e1d401d200423302c30685009375ca014464c6a60d666ae701a81b01a41a019c198194cccd5cd19b8735573aa004900011980b19191919191919191919191999ab9a3370e6aae754029200023333333333024335044232323333573466e1cd55cea8012400046605460ae6ae854008c124d5d09aba2500223263530783357380ee0f20ec0ea26aae7940044dd50009aba1500a33504404535742a012666aa096eb94128d5d0a804199aa825bae504a35742a00e66a0880ba6ae854018cd4110cd541b8199d69aba150053232323333573466e1cd55cea80124000466a0586464646666ae68cdc39aab9d5002480008cd40d0cd417dd69aba150023064357426ae8940088c98d4c1f0cd5ce03d83e83d03c89aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa0049000119a81919a82fbad35742a00460c86ae84d5d1280111931a983e19ab9c07b07d07a079135573ca00226ea8004d5d09aba2500223263530783357380ee0f20ec0ea26aae7940044dd50009aba1500433504475c6ae85400ccd4110cd541b9d710009aba150023056357426ae8940088c98d4c1d0cd5ce03983a83903889aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aab9e5001137540026ae854008c8c8c8cccd5cd19b875001480188c0a4c154d5d09aab9e500323333573466e1d4009200423028305f357426aae7940108cccd5cd19b875003480088c0a0c134d5d09aab9e500523333573466e1d401120002302b375c6ae84d55cf280311931a983799ab9c06e07006d06c06b06a069135573aa00226ea8004d5d09aba2500223263530683357380ce0d20cc0ca26aae7940044dd500089aab9d5004135742a00426ae84d5d1280089aab9e5001137540024446464600200a640026aa0ce4466a6a06a0029000111a9aa82d00111299a9835199ab9a3371e0040120d80d62600e0022600c006640026aa0cc4466a6a0680029000111a9aa82c80111299a9834999ab9a3371e00400e0d60d420022600c006446a600e0044444444444a66a6a07c666aa601c24002a01a4a66a60d8666ae68cdc780600083703689a8208008a820001908370836099a80d11299a9a819801108018800a819190009aa8301108911299a9a81880089a9a80e80191000910999a9a80f802910011802001199aa9803890008028020009109198008018011000911111111109199999999980080580500480400380300280200180110009109198008018011000891091980080180109000891091980080180109000891091980080180109000909111180200290911118018029091111801002909111180080290009091111802002910911119801803002910911119801003002909111180080290008919a80191199a9a807001910010010009a9a8060009100089109198008018010900091b9433355300312001714004664466004646e50cc118004014d4c0fc00c888008cc008dca1a981f801911000998011b9435303f00322200300150145015489003200135504422112225335350150011002221330050023335530071200100500400132001355043221222533535014002153353501400110472210482215335350160031048221533530493300700400213335300912001007003001104a2235300c0022235300e0032232335303400523353035004253353048333573466e3c0080041281245400c412481248cd4c0d4010812494cd4c120ccd5cd19b8f00200104a04915003104915335350180032153353501900221335303100223353032002233530370022335303800223300e002001204c23353038002204c23300e00200122204c2223353034004204c2225335304d333573466e1c01800c13c13854cd4c134ccd5cd19b8700500204f04e13300f004001104e104e1047153353501800121047104722333573466e1c00800410810488ccd5cd19b8f0020010410401335002225335303e0021040100103d1221233001003002120011232230023758002640026aa07a446666aae7c004940388cd4034c010d5d080118019aba200203423232323333573466e1cd55cea801a4000466600e6464646666ae68cdc39aab9d5002480008cc034c0b8d5d0a80119a8098151aba135744a004464c6a607066ae700dc0e40d80d44d55cf280089baa00135742a006666aa016eb94028d5d0a80119a807bae357426ae8940088c98d4c0d0cd5ce01981a81901889aba25001135573ca00226ea800488848ccc00401000c00880048848cc00400c00880044cd54005d73ad112232230023756002640026aa06e44646666aae7c008940248cd4020cd540acc018d55cea80118029aab9e500230043574400605e26ae840044488008488488cc00401000c48004488c8c8cccd5cd19b875001480008d4020c014d5d09aab9e500323333573466e1d4009200225008232635302b33573805405805205004e26aae7540044dd5000890911801001889100089000919191999ab9a3370e6aae7540092000233006300735742a0046eb4d5d09aba25002232635302533573804804c04604426aae7940044dd500091091980080180110009191999ab9a3370e6aae75400520002375c6ae84d55cf280111931a981099ab9c02002201f01e1375400224464646666ae68cdc3a800a40084a00e46666ae68cdc3a8012400446a014600c6ae84d55cf280211999ab9a3370ea00690001280511931a981219ab9c02302502202102001f135573aa00226ea8004484888c00c0104488800844888004480048c8cccd5cd19b8750014800880988cccd5cd19b8750024800080988c98d4c070cd5ce00d80e80d00c80c09aab9d3754002464646464646666ae68cdc3a800a4018401646666ae68cdc3a80124014401a46666ae68cdc3a801a40104660166eb8d5d0a8029bad357426ae8940148cccd5cd19b875004480188cc034dd71aba15007375c6ae84d5d1280391999ab9a3370ea00a9002119809180a1aba15009375c6ae84d5d1280491999ab9a3370ea00c90011180a180a9aba135573ca01646666ae68cdc3a803a400046026602c6ae84d55cf280611931a981219ab9c02302502202102001f01e01d01c01b135573aa00826aae79400c4d55cf280109aab9e500113754002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024646464646666ae68cdc3a800a400446660106eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d400920002300a300b357426aae7940188c98d4c054cd5ce00a00b00980900889aab9d5003135744a00226aae7940044dd5000909118010019110911998008028020019000919191999ab9a3370ea0029001118031bae357426aae79400c8cccd5cd19b875002480008c020dd71aba135573ca008464c6a601e66ae7003804003403002c4d55cea80089baa001212230020032122300100320011122232323333573466e1cd55cea80124000466aa010600c6ae854008c014d5d09aba25002232635300c33573801601a01401226aae7940044dd50008891091980080180108900091919191999ab9a3370e6aae75400d2000233300b375c6ae85400cc030d5d0a8011bae357426ae8940088c98d4c020cd5ce00380480300289aba25001135573ca00226ea8005264901035054310012001200122212333001004003002200123253353007333573466e21400400c02402058540044dd6800a40004a66a6008666ae68cdc40008010030028a400020029040497a00990009aa802111299a9802199ab9a33710004904002003002899b8b0020011330033370600490400219b8b3370c00490400200089100109100090008891918008009119801980100100081", + "5912eb01000032323332223232323233223233223232332232323233322233322233322233223233322232323232332232333332222232323333333322222222333322223322332233223322332233223322332232323232323232323232323232323233333222223322222222322323232323223232533530703300a3333573466e1d40112000230473066500623333573466e1d401520062304b3067500723333573466e1d4019200223304a30685008306f500923333573466e1d401d200423304c30695009375ca014464c6a60d666ae701b41b01a81a41a019c198cccd5cd19b8735573aa004900011980999191919191919191919191999ab9a3370e6aae754029200023333333333035335025232323333573466e1cd55cea80124000466076605c6ae854008c0a8d5d09aba2500223263530783357380f40f20ee0ec26aae7940044dd50009aba1500a33502502635742a012666aa050eb9409cd5d0a804199aa8143ae502735742a00e66a04a05c6ae854018cd4094cd540c40bdd69aba150053232323333573466e1cd55cea80124000466a0866464646666ae68cdc39aab9d5002480008cd412ccd40d1d69aba150023035357426ae8940088c98d4c1f0cd5ce03f03e83d83d09aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa0049000119a82499a81a3ad35742a004606a6ae84d5d1280111931a983e19ab9c07e07d07b07a135573ca00226ea8004d5d09aba2500223263530783357380f40f20ee0ec26aae7940044dd50009aba1500433502575c6ae85400ccd4094cd540c5d710009aba15002302b357426ae8940088c98d4c1d0cd5ce03b03a83983909aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aab9e5001137540026ae854008c8c8c8cccd5cd19b875001480188c070c098d5d09aab9e500323333573466e1d400920042301b3028357426aae7940108cccd5cd19b875003480088c06cc090d5d09aab9e500523333573466e1d401120002301e375c6ae84d55cf280311931a983799ab9c07107006e06d06c06b06a135573aa00226ea8004d5d09aba2500223263530683357380d40d20ce0cc20d0264c6a60ce66ae7124010350543500068066135573ca00226ea80044d55cea80209aba150021357426ae8940044d55cf280089baa001333333222222223232323232323235302c3530160082200222222222223233335305501425335308101533530810133353061120012235355040002223535504200322533530870133078004002133077003001108801335063335503f305e001337020fc90012832299a9a83418078011080089931a983c19ab9c49010b756e726561636861626c65000790771083011335738921124e4654206d757374206265206275726e6564000820115335308101533530810133037501135307b00122200110830113357389211f4f776e6572206d757374207369676e20746865207472616e73616374696f6e000820115335308101333553055120013505b50732533530820153353082013306635303d00122200333068307001b506a1083011084011333573466e1cccc0dcd4c0f4004888008070d4c1f000888800d2002084010830110830135303850112222222222009108301133573892011f556e6465726c79696e67204e4654206d75737420626520756e6c6f636b65640008201108201108201232323232322533530870153353087013330130073530810100722200200110890113357389213e45786163746c79206f6e65206e657720746f6b656e206d757374206265206d696e74656420616e642065786163746c79206f6e65206f6c64206275726e7400088011533530870153353087013300550033306d307501d506f153353087013300550023306d307601f506f133355305b12001350615079330063306d307635308101007222001506f3370266e054010c218054008c21805400d40584220044220044224044cd5ce248113526f79616c6974696573206e6f742070616964000880110880113370666e09400807120a09c0113370666e09400406520a09c01135307d003222002225335308401333573466e2000821c0421804214044218044ccd54c16048004d417941d8cc00c004009404c888d4c0fc0048894cd4c21c04cc1ac01800c54cd4c21c04ccd5cd19b8700533303c0020650650890108801153353506e53353506e0012132353040001222222222253353507a333553067120015066235355051001225335309601333573466e3c00803c2600425c044d41fc00c541f800884d41f4d4d5414400488004541ed4060541bc84c8ccd5cd19baf00200108b0108a013235355046001223374a900019aba0375200466ae80dd48009bb1081013355046501a3065008108801108801108801225335308201533530820133300e00200135307c00222200110840113357389213e45786163746c79206f6e65206e657720746f6b656e206d757374206265206d696e74656420616e642065786163746c79206f6e65206f6c64206275726e7400083011533530820133038501235307c00222200110840113357389211f4f776e6572206d757374207369676e20746865207472616e73616374696f6e0008301108301253353081015335308101533535062533535068301200221001132635307833573892010b756e726561636861626c6500079077108201221353550400022253353506600315335308501333573466e3c008c18801421c04218044ccd5cd19b870014800821c042180442180488422004420c044cd5ce2491e45786163746c79206f6e65204e4654206d757374206265206d696e746564000820115335308101333553055120013505b5073253353082013306635303d00122200333068307001b506a1333573466e1cccc0dcd4c0f4004888008070d4c1f000888800d2002084010830110830135303850112222222222009108301133573892011d556e6465726c79696e67204e4654206d757374206265206c6f636b65640008201108201353036500f222222222200723222325335350605335350603006353030500922222222220072135063001150612153353505b001107b221353550390022253353505f003107f2213535503d0022253353506300315335308201533530820133073006500d133073002500a10830115335308201333573466e1c015200108401083011333573466e1c0052002084010830110830115335308201533530820133073002500d133073006500a10830115335308201333573466e1c005200108401083011333573466e1c0152002084010830110830110830122108501107a130553530720042223330760030050041305200132001355077225335350560011505d2213535503400222533530793306a002500b1350620011300600332001355076225335350550011505c22135355033002225335307833069002500a1350610011300600313530285001222222222200913530110032200232001355073225335350520011505922135355030002225335307533066002500713505e00113006003135300f001223333530130012326353068335738921024c6800069067200123263530683357389201024c680006906723263530683357389201024c6800069067375c00c6eb8014dd700218310019bae00230620012212330010030022001212222300400521222230030052122223002005212222300100520011232230023758002640026aa0ba446666aae7c004940fc8cd40f8c010d5d080118019aba200205323232323333573466e1cd55cea801a400046660306464646666ae68cdc39aab9d5002480008cc118c04cd5d0a80119a8060091aba135744a004464c6a60ae66ae701641601581544d55cf280089baa00135742a006666aa00eeb94018d5d0a80119a8043ae357426ae8940088c98d4c14ccd5ce02a82a02902889aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa0b644646666aae7c008940f88cd40f4cd54064c018d55cea80118029aab9e50023004357440060a426ae84004488c8c8cccd5cd19b875001480008d4108c014d5d09aab9e500323333573466e1d400920022504223263530513357380a60a40a009e09c26aae7540044dd5000919191999ab9a3370e6aae7540092000233017300535742a0046eb4d5d09aba25002232635304e3357380a009e09a09826aae7940044dd50009191999ab9a3370e6aae75400520002375c6ae84d55cf280111931a982619ab9c04e04d04b04a1375400224464646666ae68cdc3a800a40084a03c46666ae68cdc3a8012400446a042600c6ae84d55cf280211999ab9a3370ea00690001281091931a982799ab9c05105004e04d04c04b135573aa00226ea80048c8cccd5cd19b8750014800881548cccd5cd19b8750024800081548c98d4c12ccd5ce02682602502482409aab9d3754002464646464646666ae68cdc3a800a4018404846666ae68cdc3a80124014404c46666ae68cdc3a801a40104660486eb8d5d0a8029bad357426ae8940148cccd5cd19b875004480188cc098dd71aba15007375c6ae84d5d1280391999ab9a3370ea00a900211981598061aba15009375c6ae84d5d1280491999ab9a3370ea00c90011181698069aba135573ca01646666ae68cdc3a803a400046058601c6ae84d55cf280611931a982999ab9c05505405205105004f04e04d04c04b135573aa00826aae79400c4d55cf280109aab9e5001137540024646464646666ae68cdc3a800a4004466607e6eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d40092000230413008357426aae7940188c98d4c130cd5ce02702682582502489aab9d5003135744a00226aae7940044dd5000919191999ab9a3370ea00290011181f9bae357426aae79400c8cccd5cd19b875002480008c104dd71aba135573ca008464c6a609266ae7012c12812011c1184d55cea80089baa0011122232323333573466e1cd55cea80124000466aa020600c6ae854008c014d5d09aba25002232635304933573809609409008e26aae7940044dd500091119191800802990009aa8299119a9a819000a4000446a6aa02000444a66a60aa666ae68cdc780100482b82b0980380089803001990009aa8291119a9a818800a4000446a6aa01e00444a66a60a8666ae68cdc780100382b02a880089803001911a98018011111111111299a9a81e999aa981509000a8149299a982b999ab9a3371e0180020b20b026a0800022a07e006420b220ae444444444424666666666600201601401201000e00c00a008006004400244246600200600440024442466600200800600440022244246600200600422400244246600200600440022442466002006004240022442466002006004240022442466002006004240022424446006008224440042244400224002424444444600e01044244444446600c012010424444444600a01024444444008244444440064424444444660040120104424444444660020120104002266a01244a66a6a02c004420062002a02a640026aa0604422444a66a6a02400226a6a01800644002442666a6a01c00a440046008004666aa600e2400200a008002424444600800a44244446600600c00a44244446600400c00a424444600200a40022466a00644666a6a038006440040040026a6a0340024400224424660020060042400246e50ccd54c00c48005c500119a803191b943302300100335301e00122200233500637286a603c00244400266a00c6e50d4c07800488800d401d2201003200135502522112225335350070011002221330050023335530071200100500400132001355024221222533535006002153353500600110272210282215335350080031028221533530293300700400213335300912001007003001102a1122002122122330010040031200122353003002223530050032232335301000523353011004253353025333573466e3c00800409c0985400c409880988cd4c044010809894cd4c094ccd5cd19b8f00200102702615003102615335350090032153353500a00221335300e0022335300f00223353013002233530140022330190020012029233530140022029233019002001222029222335301100420292225335302a333573466e1c01800c0b00ac54cd4c0a8ccd5cd19b8700500202c02b13301a004001102b102b1024153353500900121024102422123300100300220011212230020031122001120012122300200322212233300100500400320012122300200321223001003200122333573466e1c00800405004c88ccd5cd19b8f002001013012133500222533530100021012100100f12212330010030021200123232323333573466e1cd55cea801a400046660166eb8d5d0a80198061aba15002375c6ae84d5d1280111931a980399ab9c009008006005135744a00226aae7940044dd5000a4c2400240029201035054310022212333001004003002200123253353006333573466e21400400c02001c58540044dd6800a4000640026aa00c444a66a600a666ae68cdc4001241000800e00c266e2c0080044cc00ccdc1801241000866e2ccdc300124100080024a66a6004666ae68cdc40008028020018a4000200224400424400240029040497a00889191800800911980198010010009" }, }; From d5b0d1e4a38f3157572f19772a798290652d465a Mon Sep 17 00:00:00 2001 From: Aleksandr Penskoi Date: Sun, 3 Jul 2022 12:45:58 +0300 Subject: [PATCH 23/29] Update CTL version --- exe/Main.purs | 4 +-- package-lock.json | 35 +++++++++++++++----- package.json | 5 +-- packages.dhall | 36 +++++++++++++++++++-- spago.dhall | 4 ++- src/Seabug/CallContract.purs | 12 +++---- src/Seabug/Contract/MarketPlaceBuy.purs | 20 +++++------- src/Seabug/Contract/MarketPlaceListNft.purs | 2 +- src/Seabug/MarketPlace.js | 10 ++---- src/Seabug/Metadata.purs | 2 +- src/Seabug/Seabug.purs | 16 ++------- src/Seabug/Test.purs | 7 ++-- src/Seabug/Types.purs | 4 +-- test/Fixtures.purs | 4 +-- 14 files changed, 97 insertions(+), 64 deletions(-) diff --git a/exe/Main.purs b/exe/Main.purs index 4df387c..fe19108 100644 --- a/exe/Main.purs +++ b/exe/Main.purs @@ -3,12 +3,12 @@ module Main (main) where import Contract.Prelude import Contract.Address (ownPaymentPubKeyHash) -import Contract.Monad (defaultContractConfig, runContract_) +import Contract.Monad (defaultTestnetContractConfig, runContract_) import Effect.Aff (launchAff_) main :: Effect Unit main = launchAff_ $ do - cfg <- defaultContractConfig + cfg <- defaultTestnetContractConfig runContract_ cfg $ log <<< show diff --git a/package-lock.json b/package-lock.json index eacbb85..5d06735 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,15 +10,15 @@ "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", "dev": true }, - "@ngua/cardano-serialization-lib-browser": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@ngua/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-9.1.2.tgz", - "integrity": "sha512-0KkS3vCwrK8Yxs+yuoFJ05Ou5r0AZJNTWks9otP5h9ODsTUpkgJDb3lVmflJmSB0KnA9JvF3AmcN/swXj/yw+A==" + "@emurgo/cardano-serialization-lib-browser": { + "version": "11.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.0.0-beta.1.tgz", + "integrity": "sha512-y2jxCPQBZIG1WTcNxPT8AVb1KjCUQV5nq0em32m4l4siHCQjA4STVVds1r61sSCyviP6dzrAJo4n5i/rs+zeKQ==" }, - "@ngua/cardano-serialization-lib-nodejs": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@ngua/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-9.1.2.tgz", - "integrity": "sha512-6xpp5Xjcqm9eHIrKBUmmIeZV6n0OeK6t8vCyQzF8KcHEQiknAcIcoIq/wf7sEcLV3ohwn945QCKkM3rKsKF5FA==" + "@emurgo/cardano-serialization-lib-nodejs": { + "version": "11.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.0.0-beta.1.tgz", + "integrity": "sha512-YCsfZCXDDFGeX8dp0CFOksPEsTYbnJ8YbmwKc+Vm6e6Vv6yNpXRRhcwE0Zm29lGqLQ+gUbMmLZSclKiXAb52fA==" }, "@nodelib/fs.scandir": { "version": "2.1.5", @@ -550,6 +550,11 @@ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" }, + "b4a": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.5.3.tgz", + "integrity": "sha512-1aCQIzQJK7G0z1Una75tWMlwVAR8o+QHoAlnWc5XAxRVBESY9WsitfBgM5nPyDBP5HrhPU1Np4Pq2Y7CJQ+tVw==" + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -578,6 +583,15 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, + "blake2b-wasm": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/blake2b-wasm/-/blake2b-wasm-2.4.0.tgz", + "integrity": "sha512-S1kwmW2ZhZFFFOghcx73+ZajEfKBqhP82JMssxtLVMxlaPea1p9uoLiUZ5WYyHn0KddwbLc+0vh4wR0KBNoT5w==", + "requires": { + "b4a": "^1.0.1", + "nanoassert": "^2.0.0" + } + }, "blakejs": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", @@ -2468,6 +2482,11 @@ "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", "dev": true }, + "nanoassert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-2.0.0.tgz", + "integrity": "sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA==" + }, "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", diff --git a/package.json b/package.json index aaaa6f7..ce00467 100644 --- a/package.json +++ b/package.json @@ -14,10 +14,11 @@ "author": "", "license": "MIT", "dependencies": { - "@ngua/cardano-serialization-lib-browser": "9.1.2", - "@ngua/cardano-serialization-lib-nodejs": "9.1.2", + "@emurgo/cardano-serialization-lib-browser": "11.0.0-beta.1", + "@emurgo/cardano-serialization-lib-nodejs": "11.0.0-beta.1", "big-integer": "1.6.51", "blakejs": "1.2.1", + "blake2b-wasm": "2.4.0", "bufferutil": "4.0.5", "jssha": "3.2.0", "node-polyfill-webpack-plugin": "1.1.4", diff --git a/packages.dhall b/packages.dhall index ebc4e01..d3612ab 100644 --- a/packages.dhall +++ b/packages.dhall @@ -149,7 +149,39 @@ let additions = , "untagged-union" ] , repo = "https://github.com/mlabs-haskell/purescript-aeson.git" - , version = "5054e03ee14376768071c24d63889bfab8db2667" + , version = "69bd18c4a9cffdebc45c55d2448740721a91854c" + } + , aeson-helpers = + { dependencies = + [ "aff" + , "argonaut-codecs" + , "argonaut-core" + , "arrays" + , "bifunctors" + , "contravariant" + , "control" + , "effect" + , "either" + , "enums" + , "foldable-traversable" + , "foreign-object" + , "maybe" + , "newtype" + , "ordered-collections" + , "prelude" + , "profunctor" + , "psci-support" + , "quickcheck" + , "record" + , "spec" + , "spec-quickcheck" + , "transformers" + , "tuples" + , "typelevel-prelude" + ] + , repo = + "https://github.com/mlabs-haskell/purescript-bridge-aeson-helpers.git" + , version = "44d0dae060cf78babd4534320192b58c16a6f45b" } , sequences = { dependencies = @@ -295,7 +327,7 @@ let additions = , "variant" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "a8aabb842ecc1e287d4a60ea4f4c6cff6fbfeea7" + , version = "b7e9c30c9b3b1d588f4f2a43fbb3bdf7e394a5d5" } } in upstream // additions diff --git a/spago.dhall b/spago.dhall index 7b6f329..8a8ae20 100644 --- a/spago.dhall +++ b/spago.dhall @@ -5,6 +5,7 @@ You can edit this file as you like. { name = "my-project" , dependencies = [ "aeson" + , "aeson-helpers" , "aff" , "aff-promise" , "affjax" @@ -29,8 +30,9 @@ You can edit this file as you like. , "ordered-collections" , "partial" , "prelude" - , "strings" , "spec" + , "strings" + , "text-encoding" , "transformers" , "tuples" , "uint" diff --git a/src/Seabug/CallContract.purs b/src/Seabug/CallContract.purs index 6c6d3b0..adf9995 100644 --- a/src/Seabug/CallContract.purs +++ b/src/Seabug/CallContract.purs @@ -49,7 +49,7 @@ import Effect.Exception (Error) import Seabug.Metadata.Types (SeabugMetadata(SeabugMetadata)) import Seabug.Metadata.Share (unShare) import Partial.Unsafe (unsafePartial) -import Plutus.FromPlutusType (fromPlutusType) +import Plutus.Conversion (fromPlutusAddress) import Seabug.Contract.MarketPlaceBuy (marketplaceBuy) import Seabug.Contract.MarketPlaceListNft (ListNftResult, marketPlaceListNft) import Seabug.Types @@ -66,6 +66,7 @@ import Serialization.Hash ) import Types.Natural as Nat import Wallet (mkNamiWalletAff) +import Types.BigNum as BigNum -- | Exists temporarily for testing purposes callMarketPlaceBuyTest :: String -> Effect (Promise String) @@ -202,8 +203,7 @@ buildNftList inputIndex = UInt.toInt input.index -- TODO: What do we do if this fails? address = - addressBech32 $ unsafePartial $ fromJust $ fromPlutusType $ network /\ - output.address + addressBech32 $ unsafePartial $ fromPlutusAddress network output.address dataHash = fromMaybe mempty $ byteArrayToHex <<< unwrap <$> output.dataHash ipfsHash = metadata.ipfsHash seabugMetadata = convertSeabugMetaData metadata.seabugMetadata @@ -221,7 +221,7 @@ buildNftList -> { currencySymbol :: String, tokenName :: String, amount :: BigInt } mkValueRecord (currencySymbol /\ tokenName /\ amount) = { currencySymbol: byteArrayToHex $ getCurrencySymbol currencySymbol - , tokenName: byteArrayToHex $ unwrap $ getTokenName tokenName + , tokenName: byteArrayToHex $ getTokenName tokenName , amount } @@ -231,7 +231,7 @@ buildNftList , mintPolicy: byteArrayToHex m.mintPolicy , collectionNftCS: byteArrayToHex $ Cardano.Types.Value.getCurrencySymbol $ m.collectionNftCS - , collectionNftTN: byteArrayToHex $ unwrap $ getTokenName m.collectionNftTN + , collectionNftTN: byteArrayToHex $ getTokenName m.collectionNftTN , lockingScript: scriptHashToBech32Unsafe "script" $ unwrap m.lockingScript , authorPkh: byteArrayToHex $ unwrap $ ed25519KeyHashToBytes $ unwrap m.authorPkh @@ -273,7 +273,7 @@ buildNftData { nftCollectionArgs, nftIdArgs } = do lockLockupEnd <- note (error $ "Invalid nft lockLockupEnd: " <> show r.lockLockupEnd) $ Slot - <$> (UInt.fromString $ BigInt.toString r.lockLockupEnd) + <$> (BigNum.fromString $ BigInt.toString r.lockLockupEnd) lockingScript <- note (error $ "Invalid nft lockingScript: " <> r.lockingScript) $ wrap diff --git a/src/Seabug/Contract/MarketPlaceBuy.purs b/src/Seabug/Contract/MarketPlaceBuy.purs index eefb0b8..8f155f1 100644 --- a/src/Seabug/Contract/MarketPlaceBuy.purs +++ b/src/Seabug/Contract/MarketPlaceBuy.purs @@ -32,7 +32,7 @@ import Contract.PlutusData , toData , unitRedeemer ) -import Contract.ProtocolParameters.Alonzo (minAdaTxOut) +import Contract.ProtocolParameters.Alonzo (utxoEntrySizeWithoutVal) import Contract.Scripts (applyArgs, typedValidatorEnterpriseAddress) import Contract.Transaction ( BalancedSignedTransaction(BalancedSignedTransaction) @@ -73,12 +73,12 @@ marketplaceBuy nftData = do -- 2) Reindex `Spend` redeemers after finalising transaction inputs. -- 3) Attach datums and redeemers to transaction. -- 3) Sign tx, returning the Cbor-hex encoded `ByteArray`. - BalancedSignedTransaction { signedTxCbor } <- liftedM + signedTx <- liftedM "marketplaceBuy: Cannot balance, reindex redeemers, attach datums/redeemers\ \ and sign" (balanceAndSignTx unattachedBalancedTx) -- Submit transaction using Cbor-hex encoded `ByteArray` - transactionHash <- submit signedTxCbor + transactionHash <- submit signedTx log $ "marketplaceBuy: Transaction successfully submitted with hash: " <> show transactionHash log $ "marketplaceBuy: Buy successful: " <> show (curr /\ newName) @@ -120,9 +120,7 @@ mkMarketplaceTx (NftData nftData) = do log $ "policy: " <> show policy curr <- liftedM "marketplaceBuy: Cannot get CurrencySymbol" - $ pure - $ Value.scriptCurrencySymbol - $ policy + $ liftAff $ Value.scriptCurrencySymbol policy -- curr <- liftContractM "marketplaceBuy: Cannot get CurrencySymbol" -- $ mkCurrencySymbol -- $ Value.getCurrencySymbol currSym @@ -161,7 +159,7 @@ mkMarketplaceTx (NftData nftData) = do shareToSubtract :: BigInt -> BigInt shareToSubtract v - | v < unwrap minAdaTxOut = zero + | v < utxoEntrySizeWithoutVal = zero | otherwise = v filterLowValue @@ -169,7 +167,7 @@ mkMarketplaceTx (NftData nftData) = do -> (Value.Value -> TxConstraints Unit Unit) -> TxConstraints Unit Unit filterLowValue v t - | v < unwrap minAdaTxOut = mempty + | v < utxoEntrySizeWithoutVal = mempty | otherwise = t (Value.lovelaceValueOf v) authorShare = getShare $ toBigInt nftCollection.authorShare @@ -181,11 +179,9 @@ mkMarketplaceTx (NftData nftData) = do datum = Datum $ toData $ curr /\ oldName userAddr <- liftedM "marketplaceBuy: Cannot get user addr" getWalletAddress userUtxos <- - liftedM "marketplaceBuy: Cannot get user Utxos" $ utxosAt - (unwrap userAddr).address + liftedM "marketplaceBuy: Cannot get user Utxos" $ utxosAt userAddr scriptUtxos <- - liftedM "marketplaceBuy: Cannot get script Utxos" $ utxosAt - (unwrap scriptAddr).address + liftedM "marketplaceBuy: Cannot get script Utxos" $ utxosAt scriptAddr log $ "scriptUtxos: " <> show scriptUtxos utxo /\ utxoIndex <- liftContractM "marketplaceBuy: NFT not found on marketplace" diff --git a/src/Seabug/Contract/MarketPlaceListNft.purs b/src/Seabug/Contract/MarketPlaceListNft.purs index 9afafe0..3576531 100644 --- a/src/Seabug/Contract/MarketPlaceListNft.purs +++ b/src/Seabug/Contract/MarketPlaceListNft.purs @@ -45,7 +45,7 @@ marketPlaceListNft = do $ wrap marketplaceValidator' scriptUtxos <- Map.toUnfoldable <<< unwrap <$> liftedM "marketPlaceListNft: Cannot get script Utxos" - (utxosAt (unwrap scriptAddr).address) + (utxosAt scriptAddr) withMetadata <- for scriptUtxos $ \(input /\ output@(TransactionOutput out)) -> runMaybeT $ do diff --git a/src/Seabug/MarketPlace.js b/src/Seabug/MarketPlace.js index 3bc7abf..4677bc0 100644 --- a/src/Seabug/MarketPlace.js +++ b/src/Seabug/MarketPlace.js @@ -3,18 +3,12 @@ exports._marketplaceValidator = { validator: { getValidator: "5908f801000033232332233223232333222323332223233333333222222223233322232333322223232332232333222323332223232332233223232333332222233223322332233223322332233222222323253353033333006300800530070043333573466e1cd55cea8012400046601664646464646464646464646666ae68cdc39aab9d500a480008cccccccccc064cd409c8c8c8cccd5cd19b8735573aa004900011980f981d1aba15002302c357426ae8940088c98d4c168cd5ce02f02d82c82c09aab9e5001137540026ae854028cd409c0a0d5d0a804999aa8173ae502d35742a010666aa05ceb940b4d5d0a80399a8138219aba15006335027335505404c75a6ae854014c8c8c8cccd5cd19b8735573aa0049000119a8109919191999ab9a3370e6aae7540092000233502933504275a6ae854008c11cd5d09aba25002232635305e3357380c40be0ba0b826aae7940044dd50009aba150023232323333573466e1cd55cea80124000466a04e66a084eb4d5d0a80118239aba135744a004464c6a60bc66ae7018817c1741704d55cf280089baa001357426ae8940088c98d4c168cd5ce02f02d82c82c09aab9e5001137540026ae854010cd409dd71aba15003335027335505475c40026ae854008c0e4d5d09aba2500223263530563357380b40ae0aa0a826ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba150023232323333573466e1d400520062301e303b357426aae79400c8cccd5cd19b875002480108c074c114d5d09aab9e500423333573466e1d400d20022301d3030357426aae7940148cccd5cd19b875004480008c080dd71aba135573ca00c464c6a60a266ae7015414814013c1381341304d55cea80089baa001357426ae8940088c98d4c128cd5ce027025824824082509931a982499ab9c4901035054350004a048135573ca00226ea8004cd540fdd73ae20012212330010030022001222222222212333333333300100b00a00900800700600500400300220012212330010030022001122123300100300212001122123300100300212001122123300100300212001212222300400521222230030052122223002005212222300100520011232230023758002640026aa06a446666aae7c004940388cd4034c010d5d080118019aba200203323232323333573466e1cd55cea801a4000466600e6464646666ae68cdc39aab9d5002480008cc034c0c4d5d0a80119a8098169aba135744a004464c6a606e66ae700ec0e00d80d44d55cf280089baa00135742a006666aa016eb94028d5d0a80119a807bae357426ae8940088c98d4c0cccd5ce01b81a01901889aba25001135573ca00226ea800488848ccc00401000c00880048848cc00400c00880044cd54005d73ad112232230023756002640026aa05e44646666aae7c008940248cd4020cd540c4c018d55cea80118029aab9e500230043574400605c26ae840044488008488488cc00401000c48004488c8c8cccd5cd19b875001480008d4020c014d5d09aab9e500323333573466e1d4009200225008232635302a33573805c05605205004e26aae7540044dd5000890911801001889100089000919191999ab9a3370e6aae7540092000233006300735742a0046eb4d5d09aba25002232635302433573805004a04604426aae7940044dd500091091980080180110009191999ab9a3370e6aae75400520002375c6ae84d55cf280111931a981019ab9c02402101f01e1375400224464646666ae68cdc3a800a40084a00e46666ae68cdc3a8012400446a014600c6ae84d55cf280211999ab9a3370ea00690001280511931a981199ab9c02702402202102001f135573aa00226ea8004484888c00c0104488800844888004480048c8cccd5cd19b8750014800880188cccd5cd19b8750024800080188c98d4c06ccd5ce00f80e00d00c80c09aab9d37540022440042440024002464646464646666ae68cdc3a800a4018401646666ae68cdc3a80124014401a46666ae68cdc3a801a40104660166eb8d5d0a8029bad357426ae8940148cccd5cd19b875004480188cc034dd71aba15007375c6ae84d5d1280391999ab9a3370ea00a9002119809180a1aba15009375c6ae84d5d1280491999ab9a3370ea00c90011180a180a9aba135573ca01646666ae68cdc3a803a400046026602c6ae84d55cf280611931a981019ab9c02402101f01e01d01c01b01a019018135573aa00826aae79400c4d55cf280109aab9e500113754002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024646464646666ae68cdc3a800a400446660106eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d400920002300a300b357426aae7940188c98d4c044cd5ce00a80900800780709aab9d5003135744a00226aae7940044dd5000909118010019110911998008028020019000919191999ab9a3370ea0029001118031bae357426aae79400c8cccd5cd19b875002480008c020dd71aba135573ca008464c6a601666ae7003c0300280240204d55cea80089baa001212230020032122300100320011122232323333573466e1cd55cea80124000466aa016600c6ae854008c014d5d09aba25002232635300833573801801200e00c26aae7940044dd5000a4c2400240022244246600200600422400292010350543100112323001001223300330020020013233223332223322332233322222253353004333573466e1cd4d5403800c88ccc888c8c8c004014c8004d5405888cd4d404c005200022353550180022253353010333573466e3c0080240480444c01c0044c01800cc8004d5405488cd4d404800520002235355017002225335300f333573466e3c00801c04404040044c01800cd4c02cd4c02400c88008888888888801c008005200100600510061335738920121416c6c207370656e7420746f6b656e73206d7573742062652072656d696e7465640000512200212200120012212330010030022001222222222212333333333300100b00a009008007006005004003002200111220021221223300100400312001112212330010030021120011123230010012233003300200200101", }, - validatorHash: { - getValidatorHash: { - getScriptHash: "df4def976c66c24bb32f2bdf63da44bd4d77757811e670457b27690b", - }, - }, + validatorHash: "df4def976c66c24bb32f2bdf63da44bd4d77757811e670457b27690b", forwardingMPS: { getMintingPolicy: "5908c0010000332332233322232323322332232323332223233322232333333332222222232333222323333222232323322323332223232323322332232323333322222332233223322332233223322332222232325335302f332235300a0012235300e002222222222233335302200b203f2333553059120013233505f223335350180032200200200135350160012200133501622533530400021042100103f235302b35301c0012200122235303000322335305500220462333573466e3c00406c11c11802c80fc80fccccd5cd19b8735573a6ea801120002047232635304633573809408e08a0886666ae68cdc39aab9d5002480008cc028c8c8c8c8c8c8c8c8c8c8c8cccd5cd19b8735573aa01490001199999999980c19a813119191999ab9a3370e6aae754009200023301e303635742a00460566ae84d5d1280111931a982b19ab9c05a057055054135573ca00226ea8004d5d0a80519a8130139aba150093335502d75ca0586ae854020ccd540b5d728161aba1500733502603f35742a00c66a04c66aa0a0090eb4d5d0a8029919191999ab9a3370e6aae754009200023350203232323333573466e1cd55cea80124000466a05066a07ceb4d5d0a80118219aba135744a004464c6a60b466ae7017816c1641604d55cf280089baa00135742a0046464646666ae68cdc39aab9d5002480008cd4098cd40f9d69aba150023043357426ae8940088c98d4c168cd5ce02f02d82c82c09aab9e5001137540026ae84d5d1280111931a982b19ab9c05a057055054135573ca00226ea8004d5d0a80219a8133ae35742a00666a04c66aa0a0eb88004d5d0a801181a9aba135744a004464c6a60a466ae7015814c1441404d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a0046464646666ae68cdc3a800a400c4603a606e6ae84d55cf280191999ab9a3370ea00490021180e18209aba135573ca00846666ae68cdc3a801a40044603860586ae84d55cf280291999ab9a3370ea00890001180f9bae357426aae7940188c98d4c134cd5ce02882702602582502482409aab9d5001137540026ae84d5d1280111931a982319ab9c04a0470450441046132635304533573892010350543500046044135573ca00226ea800448848cc00400c008480048848cc00400c0088004888888888848cccccccccc00402c02802402001c01801401000c00880048848cc00400c008800448848cc00400c0084800448848cc00400c0084800448848cc00400c00848004848888c010014848888c00c014848888c008014848888c004014800448c88c008dd6000990009aa81c111999aab9f00125038233503730043574200460066ae880080c08c8c8c8cccd5cd19b8735573aa006900011998039919191999ab9a3370e6aae754009200023300d302e35742a00466a0200546ae84d5d1280111931a981a19ab9c038035033032135573ca00226ea8004d5d0a801999aa805bae500a35742a00466a018eb8d5d09aba25002232635303033573806806205e05c26ae8940044d55cf280089baa00122212333001004003002200122123300100300220011335500175ceb44488c88c008dd5800990009aa81911191999aab9f002250332335032335502e300635573aa004600a6aae794008c010d5d100181589aba100112232323333573466e1d400520002350083005357426aae79400c8cccd5cd19b87500248008940208c98d4c0a8cd5ce01701581481401389aab9d500113754002242446004006224400224002464646666ae68cdc39aab9d5002480008cc018c01cd5d0a8011bad357426ae8940088c98d4c090cd5ce01401281181109aab9e50011375400244246600200600440024646666ae68cdc39aab9d5001480008dd71aba135573ca004464c6a604066ae7009008407c0784dd500089119191999ab9a3370ea00290021280391999ab9a3370ea004900111a80518031aba135573ca00846666ae68cdc3a801a40004a014464c6a604666ae7009c09008808408007c4d55cea80089baa00112122230030041122200211222001120012323333573466e1d40052002200623333573466e1d400920002006232635301b33573803e03803403203026aae74dd50008910010910009000919191919191999ab9a3370ea0029006100591999ab9a3370ea0049005100691999ab9a3370ea00690041198059bae35742a00a6eb4d5d09aba2500523333573466e1d4011200623300d375c6ae85401cdd71aba135744a00e46666ae68cdc3a802a400846602460286ae854024dd71aba135744a01246666ae68cdc3a8032400446028602a6ae84d55cf280591999ab9a3370ea00e900011809980b1aba135573ca018464c6a604066ae7009008407c07807407006c0680640604d55cea80209aab9e5003135573ca00426aae7940044dd500090911111118038041109111111198030048041091111111802804091111110020911111100191091111111980100480411091111111980080480410009191919191999ab9a3370ea002900111998041bad35742a0086eb4d5d0a8019bad357426ae89400c8cccd5cd19b875002480008c028c02cd5d09aab9e5006232635301133573802a02402001e01c26aae75400c4d5d1280089aab9e5001137540024244600400644424466600200a0080064002464646666ae68cdc3a800a40044600c6eb8d5d09aab9e500323333573466e1d4009200023008375c6ae84d55cf280211931a980599ab9c00f00c00a009008135573aa00226ea80048488c00800c8488c00400c800444888c8c8cccd5cd19b8735573aa0049000119aa80598031aba150023005357426ae8940088c98d4c020cd5ce00600480380309aab9e5001137540029309000900088910919800801801089000a490350543100320013550062211222533535006001135350090032200122133353500b0052200230040023335530071200100500400111220021221223300100400312001122123300100300212001112323001001223300330020020014891cdf4def976c66c24bb32f2bdf63da44bd4d77757811e670457b27690b0001", }, forwardingMPSHash: { - getMintingPolicyHash: { - getScriptHash: "487bb18c7e68bbb8f32e1f4da4ca734f1c4303474bcdb2d2967c6dc4", - }, + getMintingPolicyHash: "487bb18c7e68bbb8f32e1f4da4ca734f1c4303474bcdb2d2967c6dc4", }, }, }; diff --git a/src/Seabug/Metadata.purs b/src/Seabug/Metadata.purs index 39cc600..cb193b5 100644 --- a/src/Seabug/Metadata.purs +++ b/src/Seabug/Metadata.purs @@ -106,7 +106,7 @@ getMintingTxHash a = mkAsset :: CurrencySymbol -> TokenName -> String mkAsset currSym tname = ((<>) `on` byteArrayToHex) (getCurrencySymbol currSym) - (cborBytesToByteArray $ getTokenName tname) + (getTokenName tname) decodeField :: forall (a :: Type) diff --git a/src/Seabug/Seabug.purs b/src/Seabug/Seabug.purs index f10ce17..8f50cb5 100644 --- a/src/Seabug/Seabug.purs +++ b/src/Seabug/Seabug.purs @@ -1,19 +1,7 @@ module Seabug ( module Seabug.CallContract - , getWalletBalance + , module QueryM.Utxos ) where -import Prelude (bind, ($)) - -import Control.Promise (Promise, fromAff) -import Data.Maybe (Maybe) -import Effect (Effect) -import QueryM (callNami) import Seabug.CallContract (callMarketPlaceBuy, callMarketPlaceBuyTest, callMarketPlaceListNft) -import Serialization.Types (Value) -import Wallet (Wallet(..), mkNamiWalletAff) - -getWalletBalance :: Effect (Promise (Maybe Value)) -getWalletBalance = fromAff $ do - (Nami nami) <- mkNamiWalletAff - callNami nami _.getBalance +import QueryM.Utxos (getWalletBalance) diff --git a/src/Seabug/Test.purs b/src/Seabug/Test.purs index 6e8d8e5..7da7673 100644 --- a/src/Seabug/Test.purs +++ b/src/Seabug/Test.purs @@ -4,7 +4,7 @@ import Contract.Prelude import Contract.Monad ( Contract - , defaultContractConfig + , defaultTestnetContractConfig , liftContractM , runContract_ ) @@ -25,10 +25,11 @@ import Seabug.Types , NftId(NftId) ) import Serialization.Hash (ed25519KeyHashFromBytes, scriptHashFromBytes) +import Types.BigNum as BigNum main :: Effect Unit main = launchAff_ $ do - cfg <- defaultContractConfig + cfg <- defaultTestnetContractConfig runContract_ cfg $ do marketplaceBuy =<< testNftData @@ -65,7 +66,7 @@ testNftData = do { nftCollection: NftCollection { collectionNftCs , lockLockup: BigInt.fromInt 5 - , lockLockupEnd: Slot $ UInt.fromInt 5 + , lockLockupEnd: Slot $ BigNum.fromInt 5 , lockingScript: wrap lockingScript , author: wrap $ wrap kh , authorShare: fromBigInt' $ BigInt.fromInt 1000 diff --git a/src/Seabug/Types.purs b/src/Seabug/Types.purs index 3ed85a0..12943fa 100644 --- a/src/Seabug/Types.purs +++ b/src/Seabug/Types.purs @@ -338,7 +338,7 @@ class Hashable (a :: Type) where -> Contract r (Maybe ByteArray) -- Plutus BuiltinByteString instance Hashable ByteArray where - hash = pure <<< Just <<< blake2b256Hash + hash = map Just <<< liftAff <<< blake2b256Hash instance Hashable Natural where hash = hash <<< toBin <<< toBigInt @@ -370,7 +370,7 @@ instance Hashable CurrencySymbol where hash = hash <<< getCurrencySymbol instance Hashable TokenName where - hash = hash <<< unwrap <<< getTokenName + hash = hash <<< getTokenName instance Hashable ValidatorHash where hash = hash <<< unwrap <<< scriptHashToBytes <<< unwrap diff --git a/test/Fixtures.purs b/test/Fixtures.purs index a9a76b8..c849110 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -23,8 +23,8 @@ import Contract.Prim.ByteArray (hexToByteArrayUnsafe) import Contract.Scripts (MintingPolicyHash(..), ScriptHash, ValidatorHash(..)) import Contract.Value (TokenName, mkTokenName) import Data.BigInt as BigInt -import Metadata.Seabug (SeabugMetadata(..), SeabugMetadataDelta(..)) -import Metadata.Seabug.Share (Share, mkShare) +import Seabug.Metadata.Types (SeabugMetadata(..), SeabugMetadataDelta(..)) +import Seabug.Metadata.Share (Share, mkShare) import Partial.Unsafe (unsafePartial) import Serialization.Hash (ed25519KeyHashFromBytes, scriptHashFromBytes) import Types.RawBytes (hexToRawBytesUnsafe) From ae4314848a90029e71a706783488a0d5399b9ab9 Mon Sep 17 00:00:00 2001 From: Aleksandr Penskoi Date: Mon, 4 Jul 2022 01:45:14 +0300 Subject: [PATCH 24/29] Add more trace code for debugging purpose. --- src/Seabug/Contract/MarketPlaceBuy.purs | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/Seabug/Contract/MarketPlaceBuy.purs b/src/Seabug/Contract/MarketPlaceBuy.purs index 8f155f1..4d21240 100644 --- a/src/Seabug/Contract/MarketPlaceBuy.purs +++ b/src/Seabug/Contract/MarketPlaceBuy.purs @@ -37,7 +37,7 @@ import Contract.Scripts (applyArgs, typedValidatorEnterpriseAddress) import Contract.Transaction ( BalancedSignedTransaction(BalancedSignedTransaction) , TransactionOutput(TransactionOutput) - , balanceAndSignTx + , balanceAndSignTx, balanceAndSignTxE , submit ) import Contract.TxConstraints @@ -51,6 +51,7 @@ import Contract.Utxos (utxosAt) import Contract.Value as Value import Contract.Wallet (getWalletAddress) import Data.Array (find) as Array +import Data.Bifunctor (lmap) import Data.BigInt (BigInt, fromInt) import Data.Map (insert, toUnfoldable) import Data.String.Common (joinWith) @@ -73,10 +74,14 @@ marketplaceBuy nftData = do -- 2) Reindex `Spend` redeemers after finalising transaction inputs. -- 3) Attach datums and redeemers to transaction. -- 3) Sign tx, returning the Cbor-hex encoded `ByteArray`. - signedTx <- liftedM - "marketplaceBuy: Cannot balance, reindex redeemers, attach datums/redeemers\ - \ and sign" - (balanceAndSignTx unattachedBalancedTx) + log $ "unattachedBalancedTx: " <> show unattachedBalancedTx + log $ "curr: " <> show curr <> " newName: " <> show newName + signedTx <- liftedE ( + lmap + (\e -> "marketplaceBuy: Cannot balance, reindex redeemers, attach datums/redeemers\ + \ and sign: " <> show e) + <$> balanceAndSignTxE unattachedBalancedTx) + log $ "signedTx: " <> show signedTx -- Submit transaction using Cbor-hex encoded `ByteArray` transactionHash <- submit signedTx log $ "marketplaceBuy: Transaction successfully submitted with hash: " @@ -189,11 +194,12 @@ mkMarketplaceTx (NftData nftData) = do $ toUnfoldable $ unwrap scriptUtxos let + utxosForTx = insert utxo utxoIndex $ unwrap userUtxos lookup = mconcat [ ScriptLookups.mintingPolicy policy , ScriptLookups.typedValidatorLookups $ wrap marketplaceValidator' , ScriptLookups.validator marketplaceValidator'.validator - , ScriptLookups.unspentOutputs $ insert utxo utxoIndex $ unwrap userUtxos + , ScriptLookups.unspentOutputs utxosForTx , ScriptLookups.ownPaymentPubKeyHash pkh ] @@ -218,6 +224,7 @@ mkMarketplaceTx (NftData nftData) = do ( newNftValue <> minAdaVal ) ] + log $ "utxosTx: " <> show utxosForTx -- Created unbalanced tx which stripped datums and redeemers with tx inputs, -- the datums and redeemers will be reattached using a server with redeemers -- reindexed also. From b09d3500a0df5ae11e103c3055e31d1f77051230 Mon Sep 17 00:00:00 2001 From: Calum Sieppert Date: Wed, 6 Jul 2022 09:37:06 -0600 Subject: [PATCH 25/29] Tidying up --- src/Seabug/Metadata/Types.purs | 9 ++------- test/Main.purs | 7 ++----- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/src/Seabug/Metadata/Types.purs b/src/Seabug/Metadata/Types.purs index 13cc8a3..6cc5f34 100644 --- a/src/Seabug/Metadata/Types.purs +++ b/src/Seabug/Metadata/Types.purs @@ -34,13 +34,8 @@ import Plutus.Types.AssocMap (Map(Map)) as AssocMap import ToData (class ToData, toData) import Serialization.Hash (ScriptHash, scriptHashFromBytes) import Type.Proxy (Proxy(Proxy)) -import Types.ByteArray - ( ByteArray - , hexToByteArray - ) -import Types.RawBytes - ( hexToRawBytesUnsafe - ) +import Types.ByteArray (ByteArray, hexToByteArray) +import Types.RawBytes (hexToRawBytesUnsafe) import Types.Natural (Natural) import Types.PlutusData (PlutusData(Map)) import Types.PubKeyHash (PubKeyHash) diff --git a/test/Main.purs b/test/Main.purs index da40d02..f859310 100644 --- a/test/Main.purs +++ b/test/Main.purs @@ -8,10 +8,7 @@ import Test.Util (interpret) import TestM (TestPlanM) main :: Effect Unit -main = launchAff_ do - interpret do - unitTestPlan +main = launchAff_ $ interpret unitTestPlan unitTestPlan :: TestPlanM Unit -unitTestPlan = do - Metadata.suite +unitTestPlan = Metadata.suite From 8b69d296d79acdda2c55d0520358842af4b4abbf Mon Sep 17 00:00:00 2001 From: Aleksandr Penskoi Date: Tue, 5 Jul 2022 17:50:53 +0300 Subject: [PATCH 26/29] Bump CTL version (2.0.0-alpha + patches). --- packages.dhall | 6 ++++-- src/Seabug/Contract/MarketPlaceBuy.purs | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages.dhall b/packages.dhall index d3612ab..f5c3fe0 100644 --- a/packages.dhall +++ b/packages.dhall @@ -327,7 +327,9 @@ let additions = , "variant" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "b7e9c30c9b3b1d588f4f2a43fbb3bdf7e394a5d5" + -- https://github.com/Plutonomicon/cardano-transaction-lib/pull/696 + -- PR: Return error if no utxo is specified for a tx input & Fix transaction inputs locking + , version = "b7614b4e11a57b5b366b65509b86eb4b086bb1ce" } } -in upstream // additions +in upstream // additions diff --git a/src/Seabug/Contract/MarketPlaceBuy.purs b/src/Seabug/Contract/MarketPlaceBuy.purs index 4d21240..56d1a4c 100644 --- a/src/Seabug/Contract/MarketPlaceBuy.purs +++ b/src/Seabug/Contract/MarketPlaceBuy.purs @@ -32,7 +32,7 @@ import Contract.PlutusData , toData , unitRedeemer ) -import Contract.ProtocolParameters.Alonzo (utxoEntrySizeWithoutVal) +import Constants.Babbage (utxoEntrySizeWithoutVal) import Contract.Scripts (applyArgs, typedValidatorEnterpriseAddress) import Contract.Transaction ( BalancedSignedTransaction(BalancedSignedTransaction) From 6efa09bb60cae23b76c2c5a25605ac8ebe9a3e69 Mon Sep 17 00:00:00 2001 From: Aleksandr Penskoi Date: Thu, 7 Jul 2022 19:53:41 +0300 Subject: [PATCH 27/29] Fix formatting. --- flake.nix | 5 ++++- src/Seabug/Contract/MarketPlaceBuy.purs | 19 ++++++++++++------- src/Seabug/Seabug.purs | 6 +++++- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/flake.nix b/flake.nix index 7244214..0c85b11 100644 --- a/flake.nix +++ b/flake.nix @@ -32,7 +32,10 @@ inherit pkgs src; projectName = "seabug-contracts"; shell = { - packages = [ pkgs.fd ]; + packages = [ + pkgs.fd + pkgs.easy-ps.purs-tidy + ]; }; }; in diff --git a/src/Seabug/Contract/MarketPlaceBuy.purs b/src/Seabug/Contract/MarketPlaceBuy.purs index 56d1a4c..1352fc3 100644 --- a/src/Seabug/Contract/MarketPlaceBuy.purs +++ b/src/Seabug/Contract/MarketPlaceBuy.purs @@ -37,7 +37,8 @@ import Contract.Scripts (applyArgs, typedValidatorEnterpriseAddress) import Contract.Transaction ( BalancedSignedTransaction(BalancedSignedTransaction) , TransactionOutput(TransactionOutput) - , balanceAndSignTx, balanceAndSignTxE + , balanceAndSignTx + , balanceAndSignTxE , submit ) import Contract.TxConstraints @@ -76,11 +77,14 @@ marketplaceBuy nftData = do -- 3) Sign tx, returning the Cbor-hex encoded `ByteArray`. log $ "unattachedBalancedTx: " <> show unattachedBalancedTx log $ "curr: " <> show curr <> " newName: " <> show newName - signedTx <- liftedE ( - lmap - (\e -> "marketplaceBuy: Cannot balance, reindex redeemers, attach datums/redeemers\ - \ and sign: " <> show e) - <$> balanceAndSignTxE unattachedBalancedTx) + signedTx <- liftedE + ( lmap + ( \e -> + "marketplaceBuy: Cannot balance, reindex redeemers, attach datums/redeemers\ + \ and sign: " <> show e + ) + <$> balanceAndSignTxE unattachedBalancedTx + ) log $ "signedTx: " <> show signedTx -- Submit transaction using Cbor-hex encoded `ByteArray` transactionHash <- submit signedTx @@ -125,7 +129,8 @@ mkMarketplaceTx (NftData nftData) = do log $ "policy: " <> show policy curr <- liftedM "marketplaceBuy: Cannot get CurrencySymbol" - $ liftAff $ Value.scriptCurrencySymbol policy + $ liftAff + $ Value.scriptCurrencySymbol policy -- curr <- liftContractM "marketplaceBuy: Cannot get CurrencySymbol" -- $ mkCurrencySymbol -- $ Value.getCurrencySymbol currSym diff --git a/src/Seabug/Seabug.purs b/src/Seabug/Seabug.purs index 8f50cb5..40d9546 100644 --- a/src/Seabug/Seabug.purs +++ b/src/Seabug/Seabug.purs @@ -3,5 +3,9 @@ module Seabug , module QueryM.Utxos ) where -import Seabug.CallContract (callMarketPlaceBuy, callMarketPlaceBuyTest, callMarketPlaceListNft) +import Seabug.CallContract + ( callMarketPlaceBuy + , callMarketPlaceBuyTest + , callMarketPlaceListNft + ) import QueryM.Utxos (getWalletBalance) From 96adb204e6293c969f09b0e229ba90d47213e72a Mon Sep 17 00:00:00 2001 From: Aleksandr Penskoi Date: Thu, 7 Jul 2022 21:25:08 +0300 Subject: [PATCH 28/29] Clean up. --- src/Seabug/Contract/MarketPlaceBuy.purs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/Seabug/Contract/MarketPlaceBuy.purs b/src/Seabug/Contract/MarketPlaceBuy.purs index 1352fc3..bcc33d9 100644 --- a/src/Seabug/Contract/MarketPlaceBuy.purs +++ b/src/Seabug/Contract/MarketPlaceBuy.purs @@ -75,8 +75,6 @@ marketplaceBuy nftData = do -- 2) Reindex `Spend` redeemers after finalising transaction inputs. -- 3) Attach datums and redeemers to transaction. -- 3) Sign tx, returning the Cbor-hex encoded `ByteArray`. - log $ "unattachedBalancedTx: " <> show unattachedBalancedTx - log $ "curr: " <> show curr <> " newName: " <> show newName signedTx <- liftedE ( lmap ( \e -> @@ -85,7 +83,6 @@ marketplaceBuy nftData = do ) <$> balanceAndSignTxE unattachedBalancedTx ) - log $ "signedTx: " <> show signedTx -- Submit transaction using Cbor-hex encoded `ByteArray` transactionHash <- submit signedTx log $ "marketplaceBuy: Transaction successfully submitted with hash: " @@ -108,8 +105,6 @@ mkMarketplaceTx (NftData nftData) = do pkh <- liftedM "marketplaceBuy: Cannot get PaymentPubKeyHash" ownPaymentPubKeyHash policy' <- liftedE $ pure mintingPolicy - log $ "unapplied-policy: " <> show policy' - log $ "policy args: " <> joinWith "; " [ "collectionNftCs: " <> show nftCollection.collectionNftCs , "lockingScript: " <> show nftCollection.lockingScript @@ -126,7 +121,6 @@ mkMarketplaceTx (NftData nftData) = do , toData nftCollection.daoScript , toData nftCollection.daoShare ] - log $ "policy: " <> show policy curr <- liftedM "marketplaceBuy: Cannot get CurrencySymbol" $ liftAff From 3dcb6c6de65918aca19ee01498318e52c1263da9 Mon Sep 17 00:00:00 2001 From: Aleksandr Penskoi Date: Thu, 7 Jul 2022 21:09:22 +0300 Subject: [PATCH 29/29] Fix CI building process (dependencies and warnings) --- flake.lock | 344 ++++++++++++++++++++---- flake.nix | 6 +- packages.dhall | 1 + spago-packages.nix | 48 +++- spago.dhall | 2 +- src/Seabug/CallContract.purs | 1 - src/Seabug/Contract/MarketPlaceBuy.purs | 4 +- src/Seabug/Metadata.purs | 1 - src/Seabug/Test.purs | 1 - src/Seabug/Types.purs | 8 +- 10 files changed, 339 insertions(+), 77 deletions(-) diff --git a/flake.lock b/flake.lock index 620c74b..326e96a 100644 --- a/flake.lock +++ b/flake.lock @@ -255,17 +255,17 @@ "cardano-base_2": { "flake": false, "locked": { - "lastModified": 1635841753, - "narHash": "sha256-OXKsJ1UTj5kJ9xaThM54ZmxFAiFINTPKd4JQa4dPmEU=", + "lastModified": 1654537609, + "narHash": "sha256-4b0keLjRaVSdEwfBXB1iT3QPlsutdxSltGfBufT4Clw=", "owner": "input-output-hk", "repo": "cardano-base", - "rev": "41545ba3ac6b3095966316a99883d678b5ab8da8", + "rev": "0f3a867493059e650cda69e20a5cbf1ace289a57", "type": "github" }, "original": { "owner": "input-output-hk", "repo": "cardano-base", - "rev": "41545ba3ac6b3095966316a99883d678b5ab8da8", + "rev": "0f3a867493059e650cda69e20a5cbf1ace289a57", "type": "github" } }, @@ -356,17 +356,17 @@ "cardano-ledger_2": { "flake": false, "locked": { - "lastModified": 1639498285, - "narHash": "sha256-lRNfkGMHnpPO0T19FZY5BnuRkr0zTRZIkxZVgHH0fys=", + "lastModified": 1655762257, + "narHash": "sha256-SaMhULHXgY0FiSKWc2dAYlgtbfPaFh/bUTgGqoNnMqY=", "owner": "input-output-hk", "repo": "cardano-ledger", - "rev": "1a9ec4ae9e0b09d54e49b2a40c4ead37edadcce5", + "rev": "ce3057e0863304ccb3f79d78c77136219dc786c6", "type": "github" }, "original": { "owner": "input-output-hk", "repo": "cardano-ledger", - "rev": "1a9ec4ae9e0b09d54e49b2a40c4ead37edadcce5", + "rev": "ce3057e0863304ccb3f79d78c77136219dc786c6", "type": "github" } }, @@ -418,17 +418,17 @@ "cardano-node_2": { "flake": false, "locked": { - "lastModified": 1640022647, - "narHash": "sha256-M+YnF7Zj/7QK2pu0T75xNVaX0eEeijtBH8yz+jEHIMM=", + "lastModified": 1656166930, + "narHash": "sha256-R7YGQ6UMG16ed9sGguDWq2cUgFnADeRdx8O2s2HqWRk=", "owner": "input-output-hk", "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", + "rev": "9f1d7dc163ee66410d912e48509d6a2300cfa68a", "type": "github" }, "original": { "owner": "input-output-hk", "repo": "cardano-node", - "rev": "814df2c146f5d56f8c35a681fe75e85b905aed5d", + "rev": "9f1d7dc163ee66410d912e48509d6a2300cfa68a", "type": "github" } }, @@ -542,24 +542,24 @@ ], "ogmios": "ogmios", "ogmios-datum-cache": "ogmios-datum-cache", - "optparse-applicative": "optparse-applicative", + "optparse-applicative": "optparse-applicative_2", "ouroboros-network": "ouroboros-network_2", "plutus": "plutus_2", "purescript-bridge": "purescript-bridge", "servant-purescript": "servant-purescript" }, "locked": { - "lastModified": 1654586193, - "narHash": "sha256-eunqLMnBekc4vmc5b1IsZlOYvJ9PuLVMKWKwZBwxJ6E=", + "lastModified": 1657205366, + "narHash": "sha256-keMr7lQDRINsR7miVMtgw/K5OCkiaU4HUGkCwEXm04U=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "a8aabb842ecc1e287d4a60ea4f4c6cff6fbfeea7", + "rev": "b7614b4e11a57b5b366b65509b86eb4b086bb1ce", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "a8aabb842ecc1e287d4a60ea4f4c6cff6fbfeea7", + "rev": "b7614b4e11a57b5b366b65509b86eb4b086bb1ce", "type": "github" } }, @@ -628,6 +628,23 @@ "type": "github" } }, + "ekg-json": { + "flake": false, + "locked": { + "lastModified": 1642583945, + "narHash": "sha256-VT8Ur585TCn03P2TVi6t92v2Z6tl8vKijICjse6ocv8=", + "owner": "vshabanov", + "repo": "ekg-json", + "rev": "00ebe7211c981686e65730b7144fbf5350462608", + "type": "github" + }, + "original": { + "owner": "vshabanov", + "repo": "ekg-json", + "rev": "00ebe7211c981686e65730b7144fbf5350462608", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -955,6 +972,7 @@ "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", "hackage": "hackage_3", "hpc-coveralls": "hpc-coveralls_3", + "hydra": "hydra_2", "nix-tools": "nix-tools_3", "nixpkgs": [ "cardano-transaction-lib", @@ -970,17 +988,17 @@ "stackage": "stackage_3" }, "locked": { - "lastModified": 1644944726, - "narHash": "sha256-jJWdP/3Ne1y1akC3m9rSO5ItRoBc4UTdVQZBCuPmmrM=", - "owner": "L-as", + "lastModified": 1650194184, + "narHash": "sha256-wwRdO075Gh+NbyTH4Gce/hxn7hKJjbNs4/YrKpOguAA=", + "owner": "mlabs-haskell", "repo": "haskell.nix", - "rev": "45c583b5580c130487eb5a342679f0bdbc2b23fc", + "rev": "cf1f0460b65efadac6dc96169ef1e497410fa4f4", "type": "github" }, "original": { - "owner": "L-as", - "ref": "master", + "owner": "mlabs-haskell", "repo": "haskell.nix", + "rev": "cf1f0460b65efadac6dc96169ef1e497410fa4f4", "type": "github" } }, @@ -1024,51 +1042,51 @@ "hedgehog-extras": { "flake": false, "locked": { - "lastModified": 1626138074, - "narHash": "sha256-KYLGLpDGHWlb/Gcx6Q/2HTnRMzZQmPKz0JbIw+bHh3E=", + "lastModified": 1647260073, + "narHash": "sha256-TR9i1J3HUYz3QnFQbfJPr/kGDahxZPojDsorYtRZeGU=", "owner": "input-output-hk", "repo": "hedgehog-extras", - "rev": "edf6945007177a638fbeb8802397f3a6f4e47c14", + "rev": "967d79533c21e33387d0227a5f6cc185203fe658", "type": "github" }, "original": { "owner": "input-output-hk", "repo": "hedgehog-extras", - "rev": "edf6945007177a638fbeb8802397f3a6f4e47c14", + "rev": "967d79533c21e33387d0227a5f6cc185203fe658", "type": "github" } }, "hjsonpointer": { "flake": false, "locked": { - "lastModified": 1538408336, - "narHash": "sha256-l2GZpN5SGalPalIa8xcHOdafSQqLK1Y66aYWOVElwlk=", + "lastModified": 1654184599, + "narHash": "sha256-y1UCtaVI5Zsb8MeOQA8XbSX3p4/JoroRTG9RGl0I7DY=", "owner": "KtorZ", "repo": "hjsonpointer", - "rev": "75ed0d049c33274a6cb4c36c8538d4bf2ef9c30e", + "rev": "879f0e74d55eef76ceaec8f60ed07657ab84bad7", "type": "github" }, "original": { "owner": "KtorZ", "repo": "hjsonpointer", - "rev": "75ed0d049c33274a6cb4c36c8538d4bf2ef9c30e", + "rev": "879f0e74d55eef76ceaec8f60ed07657ab84bad7", "type": "github" } }, "hjsonschema": { "flake": false, "locked": { - "lastModified": 1588363390, - "narHash": "sha256-lep5HGrtxp/XN72WXY1JVk5lJ5cE0XMhxKwjMpCoAxk=", + "lastModified": 1654186606, + "narHash": "sha256-1UG+rP7Z/kxiqj2qcx70688u1P23RzopAim+MClo6PA=", "owner": "KtorZ", "repo": "hjsonschema", - "rev": "fde6e676f79f3f3320a558f20492ad816a2543a7", + "rev": "35e0b05c3867463363e67f00a5092cd39fa33313", "type": "github" }, "original": { "owner": "KtorZ", "repo": "hjsonschema", - "rev": "fde6e676f79f3f3320a558f20492ad816a2543a7", + "rev": "35e0b05c3867463363e67f00a5092cd39fa33313", "type": "github" } }, @@ -1144,6 +1162,49 @@ "type": "indirect" } }, + "hydra_2": { + "inputs": { + "newNixpkgs": "newNixpkgs", + "nix": "nix_2", + "nixpkgs": [ + "cardano-transaction-lib", + "ogmios", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1657142040, + "narHash": "sha256-QetBWv3AB+mDGJH7CbbLp5LTMtKPG7TuOVyFpHmZXog=", + "owner": "NixOS", + "repo": "hydra", + "rev": "bf50ae0d36be9a7d7d65457cc19245f4da3d8e5d", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "io-sim": { + "flake": false, + "locked": { + "lastModified": 1653046584, + "narHash": "sha256-vFE67shdZScks67KezdKToLuk6k6wwyLFzshClO7Ym0=", + "owner": "input-output-hk", + "repo": "io-sim", + "rev": "f4183f274d88d0ad15817c7052df3a6a8b40e6dc", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "io-sim", + "rev": "f4183f274d88d0ad15817c7052df3a6a8b40e6dc", + "type": "github" + } + }, "iohk-monitoring-framework": { "flake": false, "locked": { @@ -1164,17 +1225,17 @@ "iohk-monitoring-framework_2": { "flake": false, "locked": { - "lastModified": 1624367860, - "narHash": "sha256-QE3QRpIHIABm+qCP/wP4epbUx0JmSJ9BMePqWEd3iMY=", + "lastModified": 1653619339, + "narHash": "sha256-0ia5UflYEmBYepj2gkJy9msknklI0UPtUavMEGwk3Wg=", "owner": "input-output-hk", "repo": "iohk-monitoring-framework", - "rev": "46f994e216a1f8b36fe4669b47b2a7011b0e153c", + "rev": "066f7002aac5a0efc20e49643fea45454f226caa", "type": "github" }, "original": { "owner": "input-output-hk", "repo": "iohk-monitoring-framework", - "rev": "46f994e216a1f8b36fe4669b47b2a7011b0e153c", + "rev": "066f7002aac5a0efc20e49643fea45454f226caa", "type": "github" } }, @@ -1196,6 +1257,25 @@ "type": "github" } }, + "iohk-nix_2": { + "inputs": { + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1649070135, + "narHash": "sha256-UFKqcOSdPWk3TYUCPHF22p1zf7aXQpCmmgf7UMg7fWA=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "cecab9c71d1064f05f1615eead56ac0b9196bc20", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "cecab9c71d1064f05f1615eead56ac0b9196bc20", + "type": "github" + } + }, "iohkNix": { "inputs": { "nixpkgs": [ @@ -1234,6 +1314,38 @@ "type": "github" } }, + "lowdown-src_2": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "newNixpkgs": { + "locked": { + "lastModified": 1647380550, + "narHash": "sha256-909TI9poX7CIUiFx203WL29YON6m/I6k0ExbZvR7bLM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6e3ee8957637a60f5072e33d78e05c0f65c54366", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable-small", + "repo": "nixpkgs", + "type": "github" + } + }, "nix": { "inputs": { "lowdown-src": "lowdown-src", @@ -1303,6 +1415,27 @@ "type": "github" } }, + "nix_2": { + "inputs": { + "lowdown-src": "lowdown-src_2", + "nixpkgs": "nixpkgs_3", + "nixpkgs-regression": "nixpkgs-regression_2" + }, + "locked": { + "lastModified": 1654014617, + "narHash": "sha256-qNL3lQPBsnStkru3j1ajN/H+knXI+X3dku8/dBfSw3g=", + "owner": "NixOS", + "repo": "nix", + "rev": "624e38aa43f304fbb78b4779172809add042b513", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.9.1", + "repo": "nix", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1632864508, @@ -1477,6 +1610,21 @@ "type": "indirect" } }, + "nixpkgs-regression_2": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, "nixpkgs-unstable": { "locked": { "lastModified": 1628785280, @@ -1539,6 +1687,35 @@ } }, "nixpkgs_3": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1657177452, + "narHash": "sha256-CojBqno3Zbw9/788+kCjRXXornpc4jJGC6RYvTYdVkg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5cbfadba693e0453f3a4090e83fbf845e18d184b", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_5": { "locked": { "lastModified": 1634172192, "narHash": "sha256-FBF4U/T+bMg4sEyT/zkgasvVquGzgdAf4y8uCosKMmo=", @@ -1562,6 +1739,7 @@ "cardano-ledger": "cardano-ledger_2", "cardano-node": "cardano-node_2", "cardano-prelude": "cardano-prelude_2", + "ekg-json": "ekg-json", "flake-compat": "flake-compat_2", "flat": "flat_2", "goblins": "goblins_2", @@ -1569,47 +1747,54 @@ "hedgehog-extras": "hedgehog-extras", "hjsonpointer": "hjsonpointer", "hjsonschema": "hjsonschema", + "io-sim": "io-sim", "iohk-monitoring-framework": "iohk-monitoring-framework_2", + "iohk-nix": "iohk-nix_2", "nixpkgs": [ "cardano-transaction-lib", "ogmios", "haskell-nix", - "nixpkgs-2105" + "nixpkgs-unstable" ], + "optparse-applicative": "optparse-applicative", "ouroboros-network": "ouroboros-network", "plutus": "plutus", + "typed-protocols": "typed-protocols", "wai-routes": "wai-routes" }, "locked": { - "lastModified": 1652775217, - "narHash": "sha256-Xt2OaeF45tCPyvKU11ZbcAT/4EkYXcwWWCGVXwPtW/w=", + "lastModified": 1656650330, + "narHash": "sha256-Rl5xNP3LVtuOzXXSsdAWNB3EXGRPsFPMvBO0TDUvSJE=", "owner": "mlabs-haskell", "repo": "ogmios", - "rev": "d187ba9581b9e1b4ed85fdf652b1e08fa6e09d7f", + "rev": "e406801eaeb32b28cd84357596ca1512bff27741", "type": "github" }, "original": { "owner": "mlabs-haskell", "repo": "ogmios", + "rev": "e406801eaeb32b28cd84357596ca1512bff27741", "type": "github" } }, "ogmios-datum-cache": { "inputs": { "flake-compat": "flake-compat_3", - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_5", + "unstable_nixpkgs": "unstable_nixpkgs" }, "locked": { - "lastModified": 1652673546, - "narHash": "sha256-fd3UST7vjed7KLOrLsFD8/nP7YXhCAQ3ODFs5SjZ6SQ=", + "lastModified": 1656090737, + "narHash": "sha256-zan1OMF5/O7lfYAA9y4JgveEVKK2Pw9tWBVYbMcPUto=", "owner": "mlabs-haskell", "repo": "ogmios-datum-cache", - "rev": "dbff887d14122249352c1a853be05023f64a2664", + "rev": "98b1c4f2badc7ab1efe4be188ee9f9f5e4e54bb0", "type": "github" }, "original": { "owner": "mlabs-haskell", "repo": "ogmios-datum-cache", + "rev": "98b1c4f2badc7ab1efe4be188ee9f9f5e4e54bb0", "type": "github" } }, @@ -1681,20 +1866,37 @@ "type": "github" } }, + "optparse-applicative_2": { + "flake": false, + "locked": { + "lastModified": 1628901899, + "narHash": "sha256-uQx+SEYsCH7JcG3xAT0eJck9yq3y0cvx49bvItLLer8=", + "owner": "input-output-hk", + "repo": "optparse-applicative", + "rev": "7497a29cb998721a9068d5725d49461f2bba0e7a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "optparse-applicative", + "rev": "7497a29cb998721a9068d5725d49461f2bba0e7a", + "type": "github" + } + }, "ouroboros-network": { "flake": false, "locked": { - "lastModified": 1639767242, - "narHash": "sha256-n/4it/p3OxqtzVHESgZIZVdgFBsSNlvjYdTvxC0gc3I=", + "lastModified": 1654820431, + "narHash": "sha256-bmLD5sFsiny/eRv6MHrqGvo6I4QG9pO0psiHWGFZqro=", "owner": "input-output-hk", "repo": "ouroboros-network", - "rev": "32af91686b86dac7454eee8b8a8d6e97a80638da", + "rev": "a65c29b6a85e90d430c7f58d362b7eb097fd4949", "type": "github" }, "original": { "owner": "input-output-hk", "repo": "ouroboros-network", - "rev": "32af91686b86dac7454eee8b8a8d6e97a80638da", + "rev": "a65c29b6a85e90d430c7f58d362b7eb097fd4949", "type": "github" } }, @@ -1718,17 +1920,17 @@ "plutus": { "flake": false, "locked": { - "lastModified": 1632818067, - "narHash": "sha256-jiqrzS519eoHg9NqTr4UZOVme3uIACL17OCiDMn0LMo=", + "lastModified": 1655404007, + "narHash": "sha256-8ZCD/f321fFs8k+FBfxnpYlm1+C+rKM8Io9K0CDCEqA=", "owner": "input-output-hk", "repo": "plutus", - "rev": "1efbb276ef1a10ca6961d0fd32e6141e9798bd11", + "rev": "f680ac6979e069fcc013e4389ee607ff5fa6672f", "type": "github" }, "original": { "owner": "input-output-hk", "repo": "plutus", - "rev": "1efbb276ef1a10ca6961d0fd32e6141e9798bd11", + "rev": "f680ac6979e069fcc013e4389ee607ff5fa6672f", "type": "github" } }, @@ -1841,6 +2043,38 @@ "type": "github" } }, + "typed-protocols": { + "flake": false, + "locked": { + "lastModified": 1653046676, + "narHash": "sha256-5Wof5yTKb12EPY6B8LfapX18xNZZpF+rvhnQ88U6KdM=", + "owner": "input-output-hk", + "repo": "typed-protocols", + "rev": "181601bc3d9e9d21a671ce01e0b481348b3ca104", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "typed-protocols", + "rev": "181601bc3d9e9d21a671ce01e0b481348b3ca104", + "type": "github" + } + }, + "unstable_nixpkgs": { + "locked": { + "lastModified": 1657211021, + "narHash": "sha256-rTQX2TgrFYjl3leui/jPkUptzjy8nIW3rNenO4PhfLk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "98472c0467e56d143b2f97a669eddefb7cf99b19", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, "utils": { "locked": { "lastModified": 1623875721, diff --git a/flake.nix b/flake.nix index 0c85b11..eaf894f 100644 --- a/flake.nix +++ b/flake.nix @@ -10,7 +10,9 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "a8aabb842ecc1e287d4a60ea4f4c6cff6fbfeea7"; + # should be same rev as in packages.dhall + # Oh update, do `spago2nix generate` + rev = "b7614b4e11a57b5b366b65509b86eb4b086bb1ce"; }; nixpkgs.follows = "cardano-transaction-lib/nixpkgs"; }; @@ -33,8 +35,8 @@ projectName = "seabug-contracts"; shell = { packages = [ - pkgs.fd pkgs.easy-ps.purs-tidy + pkgs.fd ]; }; }; diff --git a/packages.dhall b/packages.dhall index f5c3fe0..5864755 100644 --- a/packages.dhall +++ b/packages.dhall @@ -327,6 +327,7 @@ let additions = , "variant" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" + -- should be same rev as in flake.nix -- https://github.com/Plutonomicon/cardano-transaction-lib/pull/696 -- PR: Return error if no utxo is specified for a tx input & Fix transaction inputs locking , version = "b7614b4e11a57b5b366b65509b86eb4b086bb1ce" diff --git a/spago-packages.nix b/spago-packages.nix index a3ddfc5..1173ff5 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -7,11 +7,23 @@ let "aeson" = pkgs.stdenv.mkDerivation { name = "aeson"; - version = "5054e03ee14376768071c24d63889bfab8db2667"; + version = "69bd18c4a9cffdebc45c55d2448740721a91854c"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-aeson.git"; - rev = "5054e03ee14376768071c24d63889bfab8db2667"; - sha256 = "0rwghhh3a2mxgpnirfbdx4hlh4ah0fxsijlvm4a42dllprfwcfgh"; + rev = "69bd18c4a9cffdebc45c55d2448740721a91854c"; + sha256 = "1khn834wsqgf80p8xjyw6z06dhj8vknj7lhpm5dj44nqlaj8qhqb"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + + "aeson-helpers" = pkgs.stdenv.mkDerivation { + name = "aeson-helpers"; + version = "44d0dae060cf78babd4534320192b58c16a6f45b"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-bridge-aeson-helpers.git"; + rev = "44d0dae060cf78babd4534320192b58c16a6f45b"; + sha256 = "1fgvaqvd9145zz5xw3fsa5vm75kp6bxcwa2nzq1dx2367h3a0zl0"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -187,11 +199,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "a8aabb842ecc1e287d4a60ea4f4c6cff6fbfeea7"; + version = "b7614b4e11a57b5b366b65509b86eb4b086bb1ce"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "a8aabb842ecc1e287d4a60ea4f4c6cff6fbfeea7"; - sha256 = "189764f69c32556bbf2gkyy9hlv65i96yfb7pqw4fyn1r4nfmsbs"; + rev = "b7614b4e11a57b5b366b65509b86eb4b086bb1ce"; + sha256 = "11fkwr2w00k9a03lws9254wbkwn3c35m98mr8xn86i03akp2pqwi"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1109,6 +1121,18 @@ let installPhase = "ln -s $src $out"; }; + "spec-quickcheck" = pkgs.stdenv.mkDerivation { + name = "spec-quickcheck"; + version = "v4.0.0"; + src = pkgs.fetchgit { + url = "https://github.com/purescript-spec/purescript-spec-quickcheck.git"; + rev = "c2991f475b8fa11de8b68bcb5895b36be04d1e82"; + sha256 = "01xcbfyqzax9c5najbfy12q0nvfklfm37llj2vkmi3wgkskg4prz"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "st" = pkgs.stdenv.mkDerivation { name = "st"; version = "v5.0.1"; @@ -1145,6 +1169,18 @@ let installPhase = "ln -s $src $out"; }; + "text-encoding" = pkgs.stdenv.mkDerivation { + name = "text-encoding"; + version = "v1.0.0"; + src = pkgs.fetchgit { + url = "https://github.com/AlexaDeWit/purescript-text-encoding.git"; + rev = "609ea0916f6817971d4a6c11b991b59715aaa096"; + sha256 = "1r6ihj6m6ahp1cjf4i25pq9a00r2mvgrd8794xiapzsaigljz42c"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "these" = pkgs.stdenv.mkDerivation { name = "these"; version = "v5.0.0"; diff --git a/spago.dhall b/spago.dhall index 8a8ae20..1eaff4b 100644 --- a/spago.dhall +++ b/spago.dhall @@ -2,7 +2,7 @@ Welcome to a Spago project! You can edit this file as you like. -} -{ name = "my-project" +{ name = "seabug-contract" , dependencies = [ "aeson" , "aeson-helpers" diff --git a/src/Seabug/CallContract.purs b/src/Seabug/CallContract.purs index adf9995..880b20a 100644 --- a/src/Seabug/CallContract.purs +++ b/src/Seabug/CallContract.purs @@ -38,7 +38,6 @@ import Control.Promise (Promise) import Control.Promise as Promise import Data.BigInt (BigInt) import Data.BigInt as BigInt -import Data.Maybe (fromJust) import Data.Tuple.Nested ((/\)) import Data.UInt as UInt import Effect (Effect) diff --git a/src/Seabug/Contract/MarketPlaceBuy.purs b/src/Seabug/Contract/MarketPlaceBuy.purs index bcc33d9..bfc0c44 100644 --- a/src/Seabug/Contract/MarketPlaceBuy.purs +++ b/src/Seabug/Contract/MarketPlaceBuy.purs @@ -35,9 +35,7 @@ import Contract.PlutusData import Constants.Babbage (utxoEntrySizeWithoutVal) import Contract.Scripts (applyArgs, typedValidatorEnterpriseAddress) import Contract.Transaction - ( BalancedSignedTransaction(BalancedSignedTransaction) - , TransactionOutput(TransactionOutput) - , balanceAndSignTx + ( TransactionOutput(TransactionOutput) , balanceAndSignTxE , submit ) diff --git a/src/Seabug/Metadata.purs b/src/Seabug/Metadata.purs index cb193b5..c9bcaa6 100644 --- a/src/Seabug/Metadata.purs +++ b/src/Seabug/Metadata.purs @@ -34,7 +34,6 @@ import Data.HTTP.Method (Method(GET)) import Data.Newtype (unwrap) import Seabug.Metadata.Types (SeabugMetadata(SeabugMetadata)) import Partial.Unsafe (unsafePartial) -import Types.CborBytes (cborBytesToByteArray) import Debug (traceM) diff --git a/src/Seabug/Test.purs b/src/Seabug/Test.purs index 7da7673..ee43be2 100644 --- a/src/Seabug/Test.purs +++ b/src/Seabug/Test.purs @@ -16,7 +16,6 @@ import Contract.Prim.ByteArray import Contract.Time (Slot(Slot)) import Contract.Value (mkCurrencySymbol, mkTokenName) import Data.BigInt as BigInt -import Data.UInt as UInt import Effect.Aff (launchAff_) import Seabug.Contract.MarketPlaceBuy (marketplaceBuy) import Seabug.Types diff --git a/src/Seabug/Types.purs b/src/Seabug/Types.purs index 12943fa..bf2d02e 100644 --- a/src/Seabug/Types.purs +++ b/src/Seabug/Types.purs @@ -11,9 +11,6 @@ module Seabug.Types import Contract.Prelude -import Affjax as Affjax -import Affjax.RequestBody as Affjax.RequestBody -import Affjax.ResponseFormat as Affjax.ResponseFormat import Cardano.Types.Value as Cardano.Types.Value import Contract.Value ( CurrencySymbol @@ -22,7 +19,7 @@ import Contract.Value , getTokenName , mkCurrencySymbol ) -import Contract.Monad (Contract(Contract), mkHttpUrl) +import Contract.Monad (Contract) import Contract.Address (PaymentPubKeyHash, PubKeyHash) import Contract.Aeson as Aeson import Contract.PlutusData @@ -35,14 +32,11 @@ import Contract.PlutusData import Contract.Prim.ByteArray ( ByteArray , byteArrayFromIntArrayUnsafe - , byteArrayToHex ) import Contract.Numeric.Natural (Natural, toBigInt) import Contract.Scripts (ValidatorHash) import Contract.Time (Slot) -import Control.Monad.Reader.Trans (asks) import Data.Argonaut as Json -import Data.Argonaut.Encode.Encoders (encodeString) import Data.BigInt (BigInt, fromInt, toInt) import Hashing (blake2b256Hash) import Partial.Unsafe (unsafePartial)

FVmX|H2ug|gz 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