diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 4755880..598be3b 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -13,10 +13,14 @@ module.exports = { project: './tsconfig.json' }, rules: { + '@typescript-eslint/no-unsafe-argument': 0, // 0 = off, 1 = warn, 2 = error '@typescript-eslint/return-await': 0, // 0 = off, 1 = warn, 2 = error 'multiline-ternary': 0, // 0 = off, 1 = warn, 2 = error 'no-extra-boolean-cast': 0, // 0 = off, 1 = warn, 2 = error 'no-return-await': 0, // 0 = off, 1 = warn, 2 = error + '@typescript-eslint/no-invalid-void-type': ['error', { + allowAsThisParameter: true, + }], 'comma-dangle': ['error', { arrays: 'always-multiline', objects: 'always-multiline', diff --git a/.npmignore b/.npmignore index 54e075a..213c999 100644 --- a/.npmignore +++ b/.npmignore @@ -136,6 +136,7 @@ out .nojekyll *.config.js *.config.mjs +*.d.ts *.html *.svg *.test.ts diff --git a/https.ts b/https.ts index 183969e..0174b0b 100644 --- a/https.ts +++ b/https.ts @@ -1,6 +1,7 @@ import { getPort, getSiteurl } from './pug/dotenv' import _ from 'lodash' +import { fileURLToPath } from 'url' import { promises as fsPromises } from 'fs' import finalhandler from 'finalhandler' import https from 'https' @@ -9,7 +10,9 @@ import path from 'path' import serveStatic from 'serve-static' import watch from 'node-watch' -async function readMkcert (): Promise { +const __dirname = path.dirname(fileURLToPath(import.meta.url)) // eslint-disable-line @typescript-eslint/naming-convention + +async function readMkcert (): Promise<{ cert: Buffer, key: Buffer }> { try { const [cert, key] = await Promise.all([ fsPromises.readFile(path.resolve(__dirname, './mkcert/cert.pem')), @@ -35,8 +38,8 @@ async function main (): Promise { server: httpsServer, }) as LiveReloadServer1 - livereloadServer._filterRefresh = livereloadServer.filterRefresh - livereloadServer.filterRefresh = _.debounce((filepath) => { livereloadServer._filterRefresh?.(filepath) }, 1000) + livereloadServer._filterRefresh = (livereloadServer as any).filterRefresh + livereloadServer.filterRefresh = _.debounce((filepath: string) => { livereloadServer._filterRefresh?.(filepath) }, 1000) livereloadServer.watch(publicDir) console.log(`build finish. Visit: ${getSiteurl('/test.html')}`) diff --git a/jest.config.js b/jest.config.cjs similarity index 100% rename from jest.config.js rename to jest.config.cjs diff --git a/package.json b/package.json index 7f139bb..783dcb8 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,9 @@ "main": "index.js", "name": "chameleon-ultra.js", "repository": "git@github.com:taichunmin/chameleon-ultra.js.git", + "type": "module", "unpkg": "dist/iife/index.min.js", - "version": "0.2.17", + "version": "0.2.18", "bugs": { "url": "https://github.com/taichunmin/chameleon-ultra.js/issues" }, @@ -24,7 +25,7 @@ "debug": "^4.3.4", "lodash": "^4.17.21", "serialport": "^12.0.0", - "web-serial-polyfill": "^1.0.14", + "web-serial-polyfill": "^1.0.15", "webbluetooth": "^3.1.0" }, "devDependencies": { @@ -32,27 +33,27 @@ "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-typescript": "^11.1.5", - "@tsconfig/node-lts": "^18.12.5", - "@types/debug": "^4.1.10", - "@types/finalhandler": "^1.2.2", - "@types/html-minifier": "^4.0.4", - "@types/jest": "^29.5.7", - "@types/livereload": "^0.9.4", - "@types/lodash": "^4.14.200", - "@types/node": "^20.8.10", - "@types/pug": "^2.0.8", - "@types/serve-static": "^1.15.4", - "@types/uglify-js": "^3.17.3", - "@types/web-bluetooth": "^0.0.19", - "@typescript-eslint/eslint-plugin": "^6.10.0", + "@tsconfig/node-lts": "^20.1.0", + "@types/debug": "^4.1.12", + "@types/finalhandler": "^1.2.3", + "@types/html-minifier": "^4.0.5", + "@types/jest": "^29.5.11", + "@types/livereload": "^0.9.5", + "@types/lodash": "^4.14.202", + "@types/node": "^20.10.5", + "@types/pug": "^2.0.10", + "@types/serve-static": "^1.15.5", + "@types/uglify-js": "^3.17.4", + "@types/web-bluetooth": "^0.0.20", + "@typescript-eslint/eslint-plugin": "^6.15.0", "chokidar": "^3.5.3", "concurrently": "^8.2.2", "dayjs": "^1.11.10", "dotenv": "^16.3.1", - "eslint": "^8.53.0", - "eslint-config-standard-with-typescript": "^39.1.1", - "eslint-plugin-import": "^2.29.0", - "eslint-plugin-n": "^16.2.0", + "eslint": "^8.56.0", + "eslint-config-standard-with-typescript": "^43.0.0", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-n": "^16.5.0", "eslint-plugin-promise": "^6.1.1", "eslint-plugin-pug": "^1.2.5", "finalhandler": "^1.2.0", @@ -61,22 +62,23 @@ "jstransformer-sass": "^1.0.0", "livereload": "^0.9.3", "node-watch": "^0.7.4", - "nodemon": "^3.0.1", + "nodemon": "^3.0.2", "pug": "^3.0.2", "rimraf": "^5.0.5", - "rollup": "^3.29.4", - "rollup-plugin-polyfill-node": "^0.12.0", + "rollup": "^4.9.1", + "rollup-plugin-dts": "^6.1.0", + "rollup-plugin-polyfill-node": "^0.13.0", "rollup-plugin-version-injector": "^1.3.3", "serve-static": "^1.15.0", "supports-color": "^9.4.0", "ts-jest": "^29.1.1", - "ts-node": "^10.9.1", "tslib": "^2.6.2", - "typedoc": "^0.25.3", - "typedoc-plugin-mdn-links": "^3.1.0", + "tsx": "^4.7.0", + "typedoc": "^0.25.4", + "typedoc-plugin-mdn-links": "^3.1.8", "typedoc-plugin-missing-exports": "^2.1.0", "typedoc-plugin-rename-defaults": "^0.7.0", - "typescript": "^5.2.2", + "typescript": "^5.3.3", "uglify-js": "^3.17.4", "utility-types": "^3.10.0" }, @@ -84,38 +86,68 @@ "./package.json": "./package.json", ".": { "browser": "./dist/iife/index.min.js", - "import": "./dist/es/index.mjs", - "require": "./dist/cjs/index.cjs", - "types": "./dist/types/index.d.ts" + "import": { + "default": "./dist/es/index.mjs", + "types": "./dist/es/index.d.mts" + }, + "require": { + "default": "./dist/cjs/index.cjs", + "types": "./dist/cjs/index.d.cts" + } }, "./Crypto1": { "browser": "./dist/iife/Crypto1.min.js", - "import": "./dist/es/Crypto1.mjs", - "require": "./dist/cjs/Crypto1.cjs", - "types": "./dist/types/Crypto1.d.ts" + "import": { + "default": "./dist/es/Crypto1.mjs", + "types": "./dist/es/Crypto1.d.mts" + }, + "require": { + "default": "./dist/cjs/Crypto1.cjs", + "types": "./dist/cjs/Crypto1.d.cts" + } }, "./buffer": { "browser": "./dist/iife/buffer.min.js", - "import": "./dist/es/buffer.mjs", - "require": "./dist/cjs/buffer.cjs", - "types": "./dist/types/buffer.d.ts" + "import": { + "default": "./dist/es/buffer.mjs", + "types": "./dist/es/buffer.d.mts" + }, + "require": { + "default": "./dist/cjs/buffer.cjs", + "types": "./dist/cjs/buffer.d.cts" + } }, "./plugin/SerialPortAdapter": { - "import": "./dist/es/plugin/SerialPortAdapter.mjs", - "require": "./dist/cjs/plugin/SerialPortAdapter.cjs", - "types": "./dist/types/plugin/SerialPortAdapter.d.ts" + "import": { + "default": "./dist/es/plugin/SerialPortAdapter.mjs", + "types": "./dist/es/plugin/SerialPortAdapter.d.mts" + }, + "require": { + "default": "./dist/cjs/plugin/SerialPortAdapter.cjs", + "types": "./dist/cjs/plugin/SerialPortAdapter.d.cts" + } }, "./plugin/WebbleAdapter": { "browser": "./dist/iife/plugin/WebbleAdapter.min.js", - "import": "./dist/es/plugin/WebbleAdapter.mjs", - "require": "./dist/cjs/plugin/WebbleAdapter.cjs", - "types": "./dist/types/plugin/WebbleAdapter.d.ts" + "import": { + "default": "./dist/es/plugin/WebbleAdapter.mjs", + "types": "./dist/es/plugin/WebbleAdapter.d.mts" + }, + "require": { + "default": "./dist/cjs/plugin/WebbleAdapter.cjs", + "types": "./dist/cjs/plugin/WebbleAdapter.d.cts" + } }, "./plugin/WebserialAdapter": { "browser": "./dist/iife/plugin/WebserialAdapter.min.js", - "import": "./dist/es/plugin/WebserialAdapter.mjs", - "require": "./dist/cjs/plugin/WebserialAdapter.cjs", - "types": "./dist/types/plugin/WebserialAdapter.d.ts" + "import": { + "default": "./dist/es/plugin/WebserialAdapter.mjs", + "types": "./dist/es/plugin/WebserialAdapter.d.mts" + }, + "require": { + "default": "./dist/cjs/plugin/WebserialAdapter.cjs", + "types": "./dist/cjs/plugin/WebserialAdapter.d.cts" + } } }, "keywords": [ @@ -139,15 +171,15 @@ "**/jstransformer-scss": "^2.0.0" }, "scripts": { - "build": "set -ex && rimraf ./dist && mkdir -p dist && cp -r public/* dist && yarn build:dts && ts-node ./pug/build.ts && rollup --config rollup.config.mjs && yarn docs && ts-node ./sitemap.ts && touch ./dist/.nojekyll", + "build": "set -ex && rimraf ./dist && mkdir -p dist && cp -r public/* dist && yarn build:dts && tsx ./pug/build.ts && rollup --config rollup.config.mjs && yarn docs && tsx ./sitemap.ts && touch ./dist/.nojekyll", "build:dts": "tsc -p tsconfig.types.json --emitDeclarationOnly", "dev": "DEBUG_COLORS=1 concurrently --names \"DOC,HTTPS,PUBLIC,PUG,TS\" -c \"bgGray,bgGreen,bgGray,bgBlue,bgYellow\" \"yarn dev:docs\" \"yarn dev:https\" \"yarn dev:public\" \"yarn dev:pug\" \"yarn dev:ts\"", "dev:docs": "nodemon --watch src --watch pages --ext ts,md --exec \"yarn docs\"", - "dev:https": "ts-node ./https.ts", + "dev:https": "tsx ./https.ts", "dev:public": "nodemon --watch public --ext svg,png,jpg,jpeg --exec \"cp -r public/* dist\"", - "dev:pug": "nodemon --watch pug --ext pug ./pug/build.ts", + "dev:pug": "nodemon --watch pug --ext pug --exec \"tsx ./pug/build.ts\"", "dev:ts": "nodemon --watch src --ext ts,json --exec \"rollup --config rollup.config.mjs\"", - "docs": "typedoc --readme pages/typedoc.md && ts-node ./typedoc.ts", + "docs": "typedoc && tsx ./typedoc.ts", "lint": "yarn lint:ci --fix", "lint:ci": "eslint --ext .mjs,.cjs,.js,.ts,.pug .", "mkcert": "mkdir ./mkcert && mkcert -key-file ./mkcert/key.pem -cert-file ./mkcert/cert.pem -ecdsa localhost", diff --git a/pug/build.ts b/pug/build.ts index 7c1f1d1..b740ca4 100644 --- a/pug/build.ts +++ b/pug/build.ts @@ -2,14 +2,17 @@ import { getenv, getSiteurl } from './dotenv' import _ from 'lodash' import { errToJson } from './utils' +import { fileURLToPath } from 'url' import { inspect } from 'util' import { minify as htmlMinifier } from 'html-minifier' import { promises as fsPromises } from 'fs' import fg from 'fast-glob' import path from 'path' +import process from 'process' import pug from 'pug' import UglifyJS from 'uglify-js' +const __dirname = path.dirname(fileURLToPath(import.meta.url)) const srcDir = path.resolve(__dirname, './src/') const distDir = path.resolve(__dirname, '../dist/') @@ -64,7 +67,7 @@ export async function build (): Promise { if (pugErrors > 0) throw new Error(`Failed to render ${pugErrors} pug files.`) } -if (require.main === module) { +if (process.argv[1] === fileURLToPath(import.meta.url)) { build().catch(err => { console.error(err) process.exit(1) diff --git a/rollup.config.mjs b/rollup.config.mjs index 62d1834..9643f8a 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -1,4 +1,5 @@ import _ from 'lodash' +import { dts } from 'rollup-plugin-dts' import { nodeResolve } from '@rollup/plugin-node-resolve' import commonjs from '@rollup/plugin-commonjs' import nodePolyfills from 'rollup-plugin-polyfill-node' @@ -28,14 +29,14 @@ const versionInjectorPlugin = versionInjector({ }) const tsconfig = { - "lib": ["es2023"], - "module": "ESNext", - "target": "ESNext", - "strict": true, - "esModuleInterop": true, - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, - "moduleResolution": "bundler" + esModuleInterop: true, + forceConsistentCasingInFileNames: true, + lib: ['es2023'], + module: 'ESNext', + moduleResolution: 'bundler', + skipLibCheck: true, + strict: true, + target: 'ESNext', } const terserConfig = { @@ -120,4 +121,22 @@ export default [ { file: 'dist/iife/plugin/WebserialAdapter.min.js', format: 'iife', globals, name: 'ChameleonUltraJS.WebserialAdapter', plugins: [terser(terserConfig)] }, ] }, + + // dts + ..._.map([ + 'buffer', + 'Crypto1', + 'index', + 'plugin/SerialPortAdapter', + 'plugin/WebbleAdapter', + 'plugin/WebserialAdapter', + ], dtsFile => ({ + external: ['node:stream/web'], + input: `dist/types/${dtsFile}.d.ts`, + plugins: [dts()], + output: [ + { file: `dist/es/${dtsFile}.d.mts`, format: 'es' }, + { file: `dist/cjs/${dtsFile}.d.cts`, format: 'cjs' }, + ], + })) ] diff --git a/sitemap.ts b/sitemap.ts index a07f764..9a1abc5 100644 --- a/sitemap.ts +++ b/sitemap.ts @@ -1,11 +1,14 @@ import { getSiteurl } from './pug/dotenv' import _ from 'lodash' +import { fileURLToPath } from 'url' import { promises as fsPromises } from 'fs' import dayjs from 'dayjs' import fg from 'fast-glob' import path from 'path' +const __dirname = path.dirname(fileURLToPath(import.meta.url)) // eslint-disable-line @typescript-eslint/naming-convention + function toUrl (url: string): string { return `${url}daily` } diff --git a/src/ChameleonUltra.test.ts b/src/ChameleonUltra.test.ts index c197456..4f6b241 100644 --- a/src/ChameleonUltra.test.ts +++ b/src/ChameleonUltra.test.ts @@ -141,6 +141,18 @@ describe('ChameleonUltra with BufferMockAdapter', () => { expect(adapter.recv).toEqual([Buffer.fromHexString('11ef 03e8 0000 0000 15 00')]) }) + test('#isSupportedAppVersion()', async () => { + // arrange + adapter.send.push(Buffer.fromHexString('11ef 03e8 0068 0002 ab 0200 fe')) + + // act + const actual = await ultra.isSupportedAppVersion() + + // assert + expect(actual).toEqual(true) + expect(adapter.recv).toEqual([Buffer.fromHexString('11ef 03e8 0000 0000 15 00')]) + }) + test('#cmdGetBatteryInfo()', async () => { // arrange adapter.send.push(Buffer.fromHexString('11ef 0401 0068 0003 90 105461 3b')) @@ -986,4 +998,234 @@ describe('ChameleonUltra with BufferMockAdapter', () => { // assert expect(adapter.recv).toEqual([Buffer.fromHexString('11ef 07d9 0000 0018 08 6004ffffffffffff00000000000000000000000000000000 a2')]) }) + + test('#hf14aInfo()', async () => { + // arrange + adapter.send.push(Buffer.fromHexString('11ef 07d0 0000 0009 20 0494194a3d04000800 bc')) // cmdHf14aScan + adapter.send.push(Buffer.fromHexString('11ef 07d1 0000 0000 28 00')) // cmdMf1IsSupport + adapter.send.push(Buffer.fromHexString('11ef 07d2 0000 0001 26 01 ff')) // cmdMf1TestPrngType + + // act + const actual = await ultra.hf14aInfo() + + // assert + expect(actual).toMatchObject([{ + antiColl: { + atqa: Buffer.fromHexString('0400'), + ats: Buffer.fromHexString(''), + sak: Buffer.fromHexString('08'), + uid: Buffer.fromHexString('94194a3d'), + }, + nxpTypeBySak: 'MIFARE Classic 1K | Plus SE 1K | Plug S 2K | Plus X 2K', + prngType: Mf1PrngType.WEAK, + }]) + }) + + test('#mf1VblockGetValue()', async () => { + // arrange + adapter.send.push(Buffer.fromHexString('11ef 07d8 0000 0010 11 01000000feffffff0100000001fe01fe 05')) + + // act + const actual = await ultra.mf1VblockGetValue({ + block: 1, + key: Buffer.fromHexString('FFFFFFFFFFFF'), + keyType: Mf1KeyType.KEY_A, + }) + + // assert + expect(actual).toMatchObject({ adr: 1, value: 1 }) + expect(adapter.recv).toEqual([Buffer.fromHexString('11ef 07d8 0000 0008 19 6001ffffffffffff a5')]) + }) + + test('#mf1VblockSetValue()', async () => { + // arrange + adapter.send.push(Buffer.fromHexString('11ef 07d9 0000 0000 20 00')) + + // act + await ultra.mf1VblockSetValue({ + block: 4, + keyType: Mf1KeyType.KEY_A, + key: Buffer.fromHexString('FFFFFFFFFFFF'), + }, { adr: 1, value: 1 }) + + // assert + expect(adapter.recv).toEqual([Buffer.fromHexString('11ef 07d9 0000 0018 08 6004ffffffffffff01000000feffffff0100000001fe01fe a7')]) + }) + + test('#mfuReadPages()', async () => { + // arrange + adapter.send.push(Buffer.fromHexString('11ef 07da 0000 0010 0f 040dc445420d2981e7480000e1100600 c7')) + + // act + const actual = await ultra.mfuReadPages({ pageOffset: 0 }) + + // assert + expect(actual).toEqual(Buffer.fromHexString('040dc445420d2981e7480000e1100600')) + expect(adapter.recv).toEqual([Buffer.fromHexString('11ef 07da 0000 0007 18 7403e800103000 61')]) + }) + + test('#mfuReadPages()', async () => { + // arrange + adapter.send.push(Buffer.fromHexString('11ef 07da 0000 0000 1f 00')) + + // act + await ultra.mfuWritePage({ pageOffset: 9, data: Buffer.fromHexString('00000000') }) + + // assert + expect(adapter.recv).toEqual([Buffer.fromHexString('11ef 07da 0000 000b 14 7403e80030a20900000000 c6')]) + }) + + test('#mf1Halt()', async () => { + // arrange + adapter.send.push(Buffer.fromHexString('11ef 07da 0000 0000 1f 00')) + + // act + await ultra.mf1Halt() + + // assert + expect(adapter.recv).toEqual([Buffer.fromHexString('11ef 07da 0000 0007 18 2003e800105000 95')]) + }) + + test('#mf1Gen1aReadBlocks()', async () => { + // arrange + adapter.send.push(Buffer.fromHexString('11ef 07da 0000 0000 1f 00')) + adapter.send.push(Buffer.fromHexString('11ef 07da 0000 0001 1e 0a f6')) + adapter.send.push(Buffer.fromHexString('11ef 07da 0000 0001 1e 0a f6')) + adapter.send.push(Buffer.fromHexString('11ef 07da 0000 0010 0f 877209e11d0804000392abdef258ec90 10')) + adapter.send.push(Buffer.fromHexString('11ef 07da 0000 0000 1f 00')) + + // act + const actual = await ultra.mf1Gen1aReadBlocks(0, 1) + + // assert + expect(actual).toEqual(Buffer.fromHexString('877209e11d0804000392abdef258ec90')) + expect(adapter.recv).toEqual([ + Buffer.fromHexString('11ef 07da 0000 0007 18 2003e800105000 95'), + Buffer.fromHexString('11ef 07da 0000 0006 19 4803e8000740 86'), + Buffer.fromHexString('11ef 07da 0000 0006 19 4803e8000843 82'), + Buffer.fromHexString('11ef 07da 0000 0007 18 6c03e800103000 69'), + Buffer.fromHexString('11ef 07da 0000 0007 18 2003e800105000 95'), + ]) + }) + + test('#mf1Gen1aWriteBlocks()', async () => { + // arrange + adapter.send.push(Buffer.fromHexString('11ef 07da 0000 0000 1f 00')) + adapter.send.push(Buffer.fromHexString('11ef 07da 0000 0001 1e 0a f6')) + adapter.send.push(Buffer.fromHexString('11ef 07da 0000 0001 1e 0a f6')) + adapter.send.push(Buffer.fromHexString('11ef 07da 0000 0001 1e 0a f6')) + adapter.send.push(Buffer.fromHexString('11ef 07da 0000 0001 1e 0a f6')) + adapter.send.push(Buffer.fromHexString('11ef 07da 0000 0000 1f 00')) + + // act + await ultra.mf1Gen1aWriteBlocks(1, new Buffer(16)) + + // assert + expect(adapter.recv).toEqual([ + Buffer.fromHexString('11ef 07da 0000 0007 18 2003e800105000 95'), + Buffer.fromHexString('11ef 07da 0000 0006 19 4803e8000740 86'), + Buffer.fromHexString('11ef 07da 0000 0006 19 4803e8000843 82'), + Buffer.fromHexString('11ef 07da 0000 0007 18 6803e80010a001 fc'), + Buffer.fromHexString('11ef 07da 0000 0015 0a 6803e8008000000000000000000000000000000000 2d'), + Buffer.fromHexString('11ef 07da 0000 0007 18 2003e800105000 95'), + ]) + }) + + test('#mf1CheckSectorKeys()', async () => { + // arrange + adapter.send.push(Buffer.fromHexString('11ef 07d7 0000 0000 22 00')) + adapter.send.push(Buffer.fromHexString('11ef 07d7 0000 0000 22 00')) + + // act + const keys = Buffer.from('FFFFFFFFFFFF\n000000000000\nA0A1A2A3A4A5\nD3F7D3F7D3F7', 'hex').chunk(6) + const actual = await ultra.mf1CheckSectorKeys(0, keys) + + // assert + expect(actual).toMatchObject({ + [Mf1KeyType.KEY_A]: Buffer.fromHexString('FFFFFFFFFFFF'), + [Mf1KeyType.KEY_B]: Buffer.fromHexString('FFFFFFFFFFFF'), + }) + expect(adapter.recv).toEqual([ + Buffer.fromHexString('11ef 07d7 0000 0008 1a 6103ffffffffffff a2'), + Buffer.fromHexString('11ef 07d7 0000 0008 1a 6003ffffffffffff a3'), + ]) + }) + + test('#mf1ReadSectorByKeys()', async () => { + // arrange + adapter.send.push(Buffer.fromHexString('11ef 07d7 0000 0000 22 00')) + adapter.send.push(Buffer.fromHexString('11ef 07d7 0000 0000 22 00')) + adapter.send.push(Buffer.fromHexString('11ef 07d8 0000 0010 11 877209e11d0804000392abdef258ec90 10')) + adapter.send.push(Buffer.fromHexString('11ef 07d8 0000 0010 11 00000000000000000000000000000000 00')) + adapter.send.push(Buffer.fromHexString('11ef 07d8 0000 0010 11 00000000000000000000000000000000 00')) + adapter.send.push(Buffer.fromHexString('11ef 07d8 0000 0010 11 000000000000ff078069ffffffffffff 17')) + + // act + const keys = Buffer.from('FFFFFFFFFFFF\n000000000000\nA0A1A2A3A4A5\nD3F7D3F7D3F7', 'hex').chunk(6) + const actual = await ultra.mf1ReadSectorByKeys(0, keys) + + // assert + expect(actual).toEqual({ + data: Buffer.concat([ + Buffer.fromHexString('877209e11d0804000392abdef258ec90'), + Buffer.fromHexString('00000000000000000000000000000000'), + Buffer.fromHexString('00000000000000000000000000000000'), + Buffer.fromHexString('ffffffffffffff078069ffffffffffff'), + ]), + success: [true, true, true, true], + }) + expect(adapter.recv).toEqual([ + Buffer.fromHexString('11ef 07d7 0000 0008 1a 6103ffffffffffff a2'), + Buffer.fromHexString('11ef 07d7 0000 0008 1a 6003ffffffffffff a3'), + Buffer.fromHexString('11ef 07d8 0000 0008 19 6100ffffffffffff a5'), + Buffer.fromHexString('11ef 07d8 0000 0008 19 6101ffffffffffff a4'), + Buffer.fromHexString('11ef 07d8 0000 0008 19 6102ffffffffffff a3'), + Buffer.fromHexString('11ef 07d8 0000 0008 19 6103ffffffffffff a2'), + ]) + }) + + test('#mf1WriteSectorByKeys()', async () => { + // arrange + adapter.send.push(Buffer.fromHexString('11ef 07d7 0000 0000 22 00')) + adapter.send.push(Buffer.fromHexString('11ef 07d7 0000 0000 22 00')) + adapter.send.push(Buffer.fromHexString('11ef 07d9 0000 0000 20 00')) + adapter.send.push(Buffer.fromHexString('11ef 07d9 0000 0000 20 00')) + adapter.send.push(Buffer.fromHexString('11ef 07d9 0000 0000 20 00')) + adapter.send.push(Buffer.fromHexString('11ef 07d9 0000 0000 20 00')) + + // act + const keys = Buffer.from('FFFFFFFFFFFF\n000000000000\nA0A1A2A3A4A5\nD3F7D3F7D3F7', 'hex').chunk(6) + const data = Buffer.concat([ + Buffer.from('00000000000000000000000000000000', 'hex'), + Buffer.from('00000000000000000000000000000000', 'hex'), + Buffer.from('00000000000000000000000000000000', 'hex'), + Buffer.from('ffffffffffffff078069ffffffffffff', 'hex'), + ]) + const actual = await ultra.mf1WriteSectorByKeys(1, keys, data) + + // assert + expect(actual).toEqual({ success: [true, true, true, true] }) + expect(adapter.recv).toEqual([ + Buffer.fromHexString('11ef 07d7 0000 0008 1a 6107ffffffffffff 9e'), + Buffer.fromHexString('11ef 07d7 0000 0008 1a 6007ffffffffffff 9f'), + Buffer.fromHexString('11ef 07d9 0000 0018 08 6104ffffffffffff00000000000000000000000000000000 a1'), + Buffer.fromHexString('11ef 07d9 0000 0018 08 6105ffffffffffff00000000000000000000000000000000 a0'), + Buffer.fromHexString('11ef 07d9 0000 0018 08 6106ffffffffffff00000000000000000000000000000000 9f'), + Buffer.fromHexString('11ef 07d9 0000 0018 08 6107ffffffffffffffffffffffffff078069ffffffffffff bb'), + ]) + }) + + test.each([ + { acl: 'ff078069', expected: true }, + { acl: 'ffffff69', expected: false }, + { acl: '78778869', expected: true }, + { acl: 'BBF8D48E031978778869C19085AF2635', expected: true }, + { acl: '45687B3167880400C810002000000016 0E140001070208030904081000000000 00000000000000000000000000000000 BBF8D48E031978778869C19085AF2635', expected: true }, + ])('#mf1IsValidAcl($acl) = $expected', async ({ acl, expected }) => { + // act + const actual = ultra.mf1IsValidAcl(Buffer.fromHexString(acl)) + + // assert + expect(actual).toBe(expected) + }) }) diff --git a/src/ChameleonUltra.ts b/src/ChameleonUltra.ts index 1a8baac..f9b93de 100644 --- a/src/ChameleonUltra.ts +++ b/src/ChameleonUltra.ts @@ -184,7 +184,7 @@ export class ChameleonUltra { * @returns The return value depent on the middlewares * @group Plugin Related */ - async invokeHook (hook: string, ctx: any = {}, next: MiddlewareComposeFn): Promise { + async invokeHook (hook: string, ctx: any = {}, next?: MiddlewareComposeFn): Promise { ctx.me = this return await middlewareCompose(this.hooks[hook] ?? [])(ctx, next) } diff --git a/src/Crypto1.ts b/src/Crypto1.ts index 5adc75a..aeb480a 100644 --- a/src/Crypto1.ts +++ b/src/Crypto1.ts @@ -266,7 +266,7 @@ export default class Crypto1 { * console.log(Crypto1.beBit(0x01000000, 0)) // 1 * ``` */ - static beBit (x: number, n: number): number { return Crypto1.bit(x, n ^ 24) } + static beBit (this: void, x: number, n: number): number { return Crypto1.bit(x, n ^ 24) } /** * Get bit of the unsigned 32-bit integer `x` at position `n`. @@ -282,7 +282,7 @@ export default class Crypto1 { * console.log(Crypto1.bit(0x1, 0)) // 1 * ``` */ - static bit (x: number, n: number): number { return Crypto1.toBit(x >>> n) } + static bit (this: void, x: number, n: number): number { return Crypto1.toBit(x >>> n) } /** * Cast the number `x` to bit. @@ -298,7 +298,7 @@ export default class Crypto1 { * console.log(Crypto1.toBit(2)) // 0 * ``` */ - static toBit (x: number): number { return x & 1 } + static toBit (this: void, x: number): number { return x & 1 } /** * Indicates whether the number is truly or not. @@ -314,7 +314,7 @@ export default class Crypto1 { * console.log(Crypto1.toBool(2)) // 1 * ``` */ - static toBool (x: number): number { return x !== 0 ? 1 : 0 } + static toBool (this: void, x: number): number { return x !== 0 ? 1 : 0 } /** * Cast the number `x` to unsigned 24-bit integer. @@ -329,7 +329,7 @@ export default class Crypto1 { * console.log(Crypto1.toUint24(-1).toString(16)) // 'ffffff' * ``` */ - static toUint24 (x: number): number { return x & 0xFFFFFF } + static toUint24 (this: void, x: number): number { return x & 0xFFFFFF } /** * Cast the number `x` to unsigned 32-bit integer. @@ -344,7 +344,7 @@ export default class Crypto1 { * console.log(Crypto1.toUint32(-1).toString(16)) // 'ffffffff' * ``` */ - static toUint32 (x: number): number { return x >>> 0 } + static toUint32 (this: void, x: number): number { return x >>> 0 } /** * Cast Buffer, hex string or number to UInt32 @@ -353,7 +353,7 @@ export default class Crypto1 { * @internal * @group Internal */ - static castToUint32 (x: UInt32Like): number { + static castToUint32 (this: void, x: UInt32Like): number { const { toUint32 } = Crypto1 if (_.isSafeInteger(x)) return toUint32(x as number) if (_.isString(x)) return Buffer.from(x, 'hex').readUInt32BE(0) @@ -382,7 +382,7 @@ export default class Crypto1 { * @internal * @group Internal */ - static filter (x: number): number { + static filter (this: void, x: number): number { let f = 0 f |= 0xF22C0 >>> (x & 0xF) & 16 f |= 0x6C9C0 >>> (x >>> 4 & 0xF) & 8 @@ -399,7 +399,7 @@ export default class Crypto1 { * @internal * @group Internal */ - static evenParity8 (x: number): number { + static evenParity8 (this: void, x: number): number { const { evenParityCache, toBit } = Crypto1 if (evenParityCache.length !== 256) { for (let i = 0; i < 256; i++) { @@ -430,7 +430,7 @@ export default class Crypto1 { * @internal * @group Internal */ - static evenParity32 (x: number): number { + static evenParity32 (this: void, x: number): number { x ^= x >>> 16 return Crypto1.evenParity8(x ^ (x >>> 8)) } @@ -448,7 +448,7 @@ export default class Crypto1 { * console.log(Crypto1.swapEndian(0x12345678).toString(16)) // '78563412' * ``` */ - static swapEndian (x: number): number { + static swapEndian (this: void, x: number): number { return Crypto1.lfsrBuf.writeUInt32BE(x, 0).readUInt32LE(0) } @@ -458,7 +458,7 @@ export default class Crypto1 { * @param n The number of times to generate the new prng state. * @returns The new prng state. */ - static prngSuccessor (x: number, n: number): number { + static prngSuccessor (this: void, x: number, n: number): number { const { swapEndian } = Crypto1 x = swapEndian(x) while ((n--) !== 0) x = x >>> 1 | (x >>> 16 ^ x >>> 18 ^ x >>> 19 ^ x >>> 21) << 31 @@ -473,7 +473,7 @@ export default class Crypto1 { * @internal * @group Internal */ - static updateContribution (item: number, mask1: number, mask2: number): number { + static updateContribution (this: void, item: number, mask1: number, mask2: number): number { const { evenParity32, toUint32 } = Crypto1 let p = item >>> 25 p = p << 2 | (evenParity32(item & mask1) > 0 ? 2 : 0) | evenParity32(item & mask2) @@ -492,7 +492,7 @@ export default class Crypto1 { * @internal * @group Internal */ - static extendTable (tbl: Uint32Array, size: number, bit: number, m1: number, m2: number, input: number): number { + static extendTable (this: void, tbl: Uint32Array, size: number, bit: number, m1: number, m2: number, input: number): number { const { filter, toUint32, updateContribution } = Crypto1 input = toUint32(input << 24) for (let i = 0; i < size; i++) { @@ -517,7 +517,7 @@ export default class Crypto1 { * @internal * @group Internal */ - static extendTableSimple (tbl: Uint32Array, size: number, bit: number): number { + static extendTableSimple (this: void, tbl: Uint32Array, size: number, bit: number): number { const { filter } = Crypto1 for (let i = 0; i < size; i++) { const iFilter = filter(tbl[i] *= 2) @@ -540,7 +540,7 @@ export default class Crypto1 { * @internal * @group Internal */ - static mfkeyRecoverState (ctx: MfkeyRecoverContext): void { + static mfkeyRecoverState (this: void, ctx: MfkeyRecoverContext): void { const { evenParity32, extendTable, mfkeyRecoverState, toBit, toBool, toUint32 } = Crypto1 const { evens, odds, states } = ctx if (ctx.rem < 0) { @@ -596,7 +596,7 @@ export default class Crypto1 { * @internal * @group Internal */ - static lfsrRecovery32 (ks2: number, input: number): Crypto1[] { + static lfsrRecovery32 (this: void, ks2: number, input: number): Crypto1[] { const { beBit, extendTableSimple, filter, mfkeyRecoverState, toBit, toUint32 } = Crypto1 const evens = { s: 0, d: new Uint32Array(1 << 21) } // possible evens for ks2 const odds = { s: 0, d: new Uint32Array(1 << 21) } // possible odds for ks2 @@ -633,7 +633,7 @@ export default class Crypto1 { * @internal * @group Internal */ - static lfsrRecovery64 (ks2: number, ks3: number): Crypto1 { + static lfsrRecovery64 (this: void, ks2: number, ks3: number): Crypto1 { const { beBit, evenParity32, extendTableSimple, filter } = Crypto1 const oks = new Uint8Array(32) const eks = new Uint8Array(32) @@ -810,7 +810,7 @@ export default class Crypto1 { * @internal * @group Internal */ - static nestedRecoverState (args: NestedRecoverStateArgs): Buffer[] { + static nestedRecoverState (this: void, args: NestedRecoverStateArgs): Buffer[] { const { lfsrRecovery32, toUint32 } = Crypto1 const keyCnt = new Map() for (const { ntp, ks1 } of args.atks) { @@ -913,7 +913,7 @@ export default class Crypto1 { * @internal * @group Internal */ - static nestedIsValidNonce (nt1: number, nt2: number, ks1: number, par: number): boolean { + static nestedIsValidNonce (this: void, nt1: number, nt2: number, ks1: number, par: number): boolean { const { evenParity8, bit } = Crypto1 if (evenParity8((nt1 >>> 24) & 0xFF) !== (bit(par, 0) ^ evenParity8((nt2 >>> 24) & 0xFF) ^ bit(ks1, 16))) return false if (evenParity8((nt1 >>> 16) & 0xFF) !== (bit(par, 1) ^ evenParity8((nt2 >>> 16) & 0xFF) ^ bit(ks1, 8))) return false @@ -925,7 +925,7 @@ export default class Crypto1 { * @internal * @group Internal */ - static lfsrPrefixKs (ks: Buffer, isOdd: boolean): number[] { + static lfsrPrefixKs (this: void, ks: Buffer, isOdd: boolean): number[] { const { bit, filter, toUint32 } = Crypto1 const candidates: number[] = [] for (let i = 0; i < 2097152; i++) { // 2**21 = 2097152 @@ -944,7 +944,7 @@ export default class Crypto1 { * @internal * @group Internal */ - static checkPfxParity (pfx: number, ar: number, par: number[][], odd: number, even: number, isZeroPar: boolean): Crypto1 | undefined { + static checkPfxParity (this: void, pfx: number, ar: number, par: number[][], odd: number, even: number, isZeroPar: boolean): Crypto1 | undefined { const { evenParity32, bit, toUint32 } = Crypto1 const state = new Crypto1() for (let i = 0; i < 8; i++) { @@ -972,7 +972,7 @@ export default class Crypto1 { * @internal * @group Internal */ - static lfsrCommonPrefix (pfx: number, ar: number, ks: Buffer, par: number[][], isZeroPar: boolean): Crypto1[] { + static lfsrCommonPrefix (this: void, pfx: number, ar: number, ks: Buffer, par: number[][], isZeroPar: boolean): Crypto1[] { const { lfsrPrefixKs, checkPfxParity } = Crypto1 const odds = lfsrPrefixKs(ks, true) const evens = lfsrPrefixKs(ks, false) diff --git a/src/ResponseDecoder.ts b/src/ResponseDecoder.ts index a25afbc..20e7528 100644 --- a/src/ResponseDecoder.ts +++ b/src/ResponseDecoder.ts @@ -17,7 +17,7 @@ export class SlotInfo { } static fromCmd1019 (buf: Buffer): SlotInfo[] { - if (!Buffer.isBuffer(buf) || buf.length < 16) throw new TypeError('buf should be a Buffer with length 16') + if (!Buffer.isBuffer(buf) || buf.length !== 32) throw new TypeError('buf should be a Buffer with length 32') return _.times(8, i => bufUnpackToClass(buf.subarray(i * 4), '!HH', SlotInfo)) } } @@ -31,7 +31,7 @@ export class SlotFreqIsEnable { } static fromCmd1023 (buf: Buffer): SlotFreqIsEnable[] { - if (!Buffer.isBuffer(buf) || buf.length < 16) throw new TypeError('buf should be a Buffer with length 16') + if (!Buffer.isBuffer(buf) || buf.length !== 16) throw new TypeError('buf should be a Buffer with length 16') return _.times(8, i => bufUnpackToClass(buf.subarray(i * 2), '!??', SlotFreqIsEnable)) } } @@ -231,8 +231,8 @@ export class Mf1DetectionLog { this.ar = ar } - static fromBuffer (buf: Buffer): Mf1DetectionLog { - if (!Buffer.isBuffer(buf) || buf.length < 18) throw new TypeError('buf should be a Buffer with length 18') + static fromBuffer (this: void, buf: Buffer): Mf1DetectionLog { + if (!Buffer.isBuffer(buf) || buf.length !== 18) throw new TypeError('buf should be a Buffer with length 18') return bufUnpackToClass(buf, '!Bs4s4s4s4s', Mf1DetectionLog) } diff --git a/src/buffer.ts b/src/buffer.ts index 5aa6b3b..88c4005 100644 --- a/src/buffer.ts +++ b/src/buffer.ts @@ -259,23 +259,23 @@ export class Buffer extends Uint8Array { return fromStringFns[encoding](str) } - static fromUcs2String (ucs2: string): Buffer { + static fromUcs2String (this: void, ucs2: string): Buffer { const buf = new Buffer(ucs2.length * 2) for (let i = 0; i < ucs2.length; i++) buf.writeUInt16LE(ucs2.charCodeAt(i), i * 2) return buf } - static fromUtf8String (utf8: string): Buffer { + static fromUtf8String (this: void, utf8: string): Buffer { return Buffer.fromView(new TextEncoder().encode(utf8)) } - static fromAsciiString (ascii: string): Buffer { + static fromAsciiString (this: void, ascii: string): Buffer { const buf = new Buffer(ascii.length) for (let i = 0; i < ascii.length; i++) buf[i] = ascii.charCodeAt(i) & 0xFF return buf } - static fromBase64String (base64: string): Buffer { + static fromBase64String (this: void, base64: string): Buffer { base64 = base64.replace(/[^A-Za-z0-9/_+-]/g, '') const tmp1 = base64.length const tmp2 = base64.length + 3 @@ -294,7 +294,7 @@ export class Buffer extends Uint8Array { return tmp1 < base64.length ? buf.subarray(0, tmp1 - base64.length) : buf } - static fromBase64urlString (base64: string): Buffer { + static fromBase64urlString (this: void, base64: string): Buffer { base64 = base64.replace(/[^A-Za-z0-9/_+-]/g, '') const tmp1 = base64.length const tmp2 = base64.length + 3 @@ -313,7 +313,7 @@ export class Buffer extends Uint8Array { return tmp1 < base64.length ? buf.subarray(0, tmp1 - base64.length) : buf } - static fromHexString (hex: string): Buffer { + static fromHexString (this: void, hex: string): Buffer { hex = hex.replace(/[^0-9A-Fa-f]/g, '') const buf = new Buffer(hex.length >>> 1) for (let i = 0; i < buf.length; i++) buf[i] = HEX_CHAR.get(hex[i * 2]) << 4 | HEX_CHAR.get(hex[i * 2 + 1]) @@ -673,11 +673,12 @@ export class Buffer extends Uint8Array { } subarray (start: number = 0, end: number = this.length): Buffer { - return Buffer.fromView(super.subarray(start, end)) + const buf = super.subarray(start, end) + return new Buffer(buf.buffer, buf.byteOffset, buf.byteLength) } slice (start: number = 0, end: number = this.length): Buffer { - return new Buffer(super.subarray(start, end)) + return new Buffer(super.slice(start, end).buffer) } reverse (): Buffer { @@ -728,23 +729,23 @@ export class Buffer extends Uint8Array { return toStringFns[encoding](this.subarray(start, end)) } - static toUcs2String (buf: Buffer): string { + static toUcs2String (this: void, buf: Buffer): string { const arr = [] for (let i = 0; i < buf.length; i += 2) arr.push(String.fromCharCode(buf.readUInt16LE(i))) return arr.join('') } - static toUtf8String (buf: Buffer): string { + static toUtf8String (this: void, buf: Buffer): string { return new TextDecoder().decode(buf) } - static toAsciiString (buf: Buffer): string { + static toAsciiString (this: void, buf: Buffer): string { const arr = [] for (let i = 0; i < buf.length; i++) arr.push(String.fromCharCode(buf[i])) return arr.join('') } - static toBase64String (buf: Buffer): string { + static toBase64String (this: void, buf: Buffer): string { const arr = [] for (let i = 0; i < buf.length; i += 3) { const u24 = (buf[i] << 16) + @@ -762,7 +763,7 @@ export class Buffer extends Uint8Array { return arr.join('') } - static toBase64urlString (buf: Buffer): string { + static toBase64urlString (this: void, buf: Buffer): string { const arr = [] for (let i = 0; i < buf.length; i += 3) { const u24 = (buf[i] << 16) + @@ -779,7 +780,7 @@ export class Buffer extends Uint8Array { return (tmp !== 0 ? arr.slice(0, tmp) : arr).join('') } - static toHexString (buf: Buffer): string { + static toHexString (this: void, buf: Buffer): string { const arr = [] for (let i = 0; i < buf.length; i++) arr.push(HEX_CHAR.get(buf[i] >>> 4), HEX_CHAR.get(buf[i] & 0xF)) return arr.join('') diff --git a/src/plugin/WebbleAdapter.ts b/src/plugin/WebbleAdapter.ts index 701a6c8..408d8e5 100644 --- a/src/plugin/WebbleAdapter.ts +++ b/src/plugin/WebbleAdapter.ts @@ -145,8 +145,8 @@ class ChameleonWebbleAdapterRxSource implements UnderlyingSource { start (controller: ReadableStreamDefaultController): void { this.controller = controller } onNotify (event: any): void { - const buf = this.adapter.Buffer?.from(event?.target?.value) as Buffer - this.adapter.logger.webble(`onNotify = ${buf.toString('hex')}`) + const buf = this.adapter.Buffer?.from((event?.target?.value as Uint8Array)) + this.adapter.logger.webble(`onNotify = ${buf?.toString('hex')}`) this.controller?.enqueue(buf) } } diff --git a/tsconfig.json b/tsconfig.json index a6b8d05..71f3bb0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,15 +3,13 @@ "extends": "@tsconfig/node-lts/tsconfig.json", "include": ["./**/*.js", "./**/*.cjs", "./**/*.mjs", "./**/*.ts"], "compilerOptions": { + "module": "ESNext", + "moduleResolution": "bundler", "useUnknownInCatchVariables": false }, - "ts-node": { - "compilerOptions": { - "module": "CommonJS" - } - }, "typedocOptions": { - "exclude": ["**/*.spec.ts", "**/*.test.ts"], + "readme": "pages/typedoc.md", + "exclude": ["**/*.spec.ts", "**/*.test.ts", "**/node_modules/**"], "includeVersion": true, "out": "dist/docs", "plugin": ["typedoc-plugin-mdn-links", "typedoc-plugin-missing-exports", "typedoc-plugin-rename-defaults"], diff --git a/tsconfig.types.json b/tsconfig.types.json index 279c8ae..376f6cf 100644 --- a/tsconfig.types.json +++ b/tsconfig.types.json @@ -4,6 +4,8 @@ "include": ["./src/**/*.js", "./src/**/*.cjs", "./src/**/*.mjs", "./src/**/*.ts"], "compilerOptions": { "declaration": true, + "module": "ESNext", + "moduleResolution": "bundler", "outDir": "./dist/types", "rootDir": "./src", "useUnknownInCatchVariables": false diff --git a/typedoc.ts b/typedoc.ts index 2d2c44b..94c8b71 100644 --- a/typedoc.ts +++ b/typedoc.ts @@ -1,10 +1,13 @@ +import { fileURLToPath } from 'url' import fsPromises from 'fs/promises' import JSON5 from 'json5' import path from 'path' +const __dirname = path.dirname(fileURLToPath(import.meta.url)) // eslint-disable-line @typescript-eslint/naming-convention + async function main (): Promise { // version in package.json - const pkg = JSON5.parse(await fsPromises.readFile(path.resolve(__dirname, './package.json'), 'utf8')) + const pkg = JSON5.parse<{ version: string }>(await fsPromises.readFile(path.resolve(__dirname, './package.json'), 'utf8')) const verFiles = [ './dist/docs/variables/index.version.html', ] diff --git a/yarn.lock b/yarn.lock index f61bf6b..83c531d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -309,12 +309,120 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" +"@esbuild/aix-ppc64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.10.tgz#fb3922a0183d27446de00cf60d4f7baaadf98d84" + integrity sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q== + +"@esbuild/android-arm64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.10.tgz#ef31015416dd79398082409b77aaaa2ade4d531a" + integrity sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q== + +"@esbuild/android-arm@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.10.tgz#1c23c7e75473aae9fb323be5d9db225142f47f52" + integrity sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w== + +"@esbuild/android-x64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.10.tgz#df6a4e6d6eb8da5595cfce16d4e3f6bc24464707" + integrity sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw== + +"@esbuild/darwin-arm64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.10.tgz#8462a55db07c1b2fad61c8244ce04469ef1043be" + integrity sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA== + +"@esbuild/darwin-x64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.10.tgz#d1de20bfd41bb75b955ba86a6b1004539e8218c1" + integrity sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA== + +"@esbuild/freebsd-arm64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.10.tgz#16904879e34c53a2e039d1284695d2db3e664d57" + integrity sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg== + +"@esbuild/freebsd-x64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.10.tgz#8ad9e5ca9786ca3f1ef1411bfd10b08dcd9d4cef" + integrity sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag== + +"@esbuild/linux-arm64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.10.tgz#d82cf2c590faece82d28bbf1cfbe36f22ae25bd2" + integrity sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ== + +"@esbuild/linux-arm@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.10.tgz#477b8e7c7bcd34369717b04dd9ee6972c84f4029" + integrity sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg== + +"@esbuild/linux-ia32@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.10.tgz#d55ff822cf5b0252a57112f86857ff23be6cab0e" + integrity sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg== + +"@esbuild/linux-loong64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.10.tgz#a9ad057d7e48d6c9f62ff50f6f208e331c4543c7" + integrity sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA== + +"@esbuild/linux-mips64el@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.10.tgz#b011a96924773d60ebab396fbd7a08de66668179" + integrity sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A== + +"@esbuild/linux-ppc64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.10.tgz#5d8b59929c029811e473f2544790ea11d588d4dd" + integrity sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ== + +"@esbuild/linux-riscv64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.10.tgz#292b06978375b271bd8bc0a554e0822957508d22" + integrity sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA== + +"@esbuild/linux-s390x@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.10.tgz#d30af63530f8d4fa96930374c9dd0d62bf59e069" + integrity sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA== + +"@esbuild/linux-x64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.10.tgz#898c72eeb74d9f2fb43acf316125b475548b75ce" + integrity sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA== + +"@esbuild/netbsd-x64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.10.tgz#fd473a5ae261b43eab6dad4dbd5a3155906e6c91" + integrity sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q== + +"@esbuild/openbsd-x64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.10.tgz#96eb8992e526717b5272321eaad3e21f3a608e46" + integrity sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg== + +"@esbuild/sunos-x64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.10.tgz#c16ee1c167f903eaaa6acf7372bee42d5a89c9bc" + integrity sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA== + +"@esbuild/win32-arm64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.10.tgz#7e417d1971dbc7e469b4eceb6a5d1d667b5e3dcc" + integrity sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw== + +"@esbuild/win32-ia32@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.10.tgz#2b52dfec6cd061ecb36171c13bae554888b439e5" + integrity sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ== + +"@esbuild/win32-x64@0.19.10": + version "0.19.10" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.10.tgz#bd123a74f243d2f3a1f046447bb9b363ee25d072" + integrity sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA== "@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" @@ -328,10 +436,10 @@ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.8.1.tgz#8c4bb756cc2aa7eaf13cfa5e69c83afb3260c20c" integrity sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ== -"@eslint/eslintrc@^2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.3.tgz#797470a75fe0fbd5a53350ee715e85e87baff22d" - integrity sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA== +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -343,10 +451,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.53.0": - version "8.53.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.53.0.tgz#bea56f2ed2b5baea164348ff4d5a879f6f81f20d" - integrity sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w== +"@eslint/js@8.56.0": + version "8.56.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b" + integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== "@humanwhocodes/config-array@^0.11.13": version "0.11.13" @@ -596,7 +704,7 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": +"@jridgewell/resolve-uri@^3.1.0": version "3.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== @@ -614,19 +722,11 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": version "0.3.19" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" @@ -673,14 +773,14 @@ is-reference "1.2.1" magic-string "^0.30.3" -"@rollup/plugin-inject@^5.0.1": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-5.0.3.tgz#0783711efd93a9547d52971db73b2fb6140a67b1" - integrity sha512-411QlbL+z2yXpRWFXSmw/teQRMkXcAAC8aYTemc15gwJRpvEVDQwoe+N/HTFD8RFG8+88Bme9DK2V9CVm7hJdA== +"@rollup/plugin-inject@^5.0.4": + version "5.0.5" + resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz#616f3a73fe075765f91c5bec90176608bed277a3" + integrity sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg== dependencies: "@rollup/pluginutils" "^5.0.1" estree-walker "^2.0.2" - magic-string "^0.27.0" + magic-string "^0.30.3" "@rollup/plugin-node-resolve@^15.2.3": version "15.2.3" @@ -720,6 +820,71 @@ estree-walker "^2.0.2" picomatch "^2.3.1" +"@rollup/rollup-android-arm-eabi@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.1.tgz#beaf518ee45a196448e294ad3f823d2d4576cf35" + integrity sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig== + +"@rollup/rollup-android-arm64@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.1.tgz#6f76cfa759c2d0fdb92122ffe28217181a1664eb" + integrity sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ== + +"@rollup/rollup-darwin-arm64@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.1.tgz#9aaefe33a5481d66322d1c62f368171c03eabe2b" + integrity sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA== + +"@rollup/rollup-darwin-x64@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.1.tgz#707dcaadcdc6bd3fd6c69f55d9456cd4446306a3" + integrity sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og== + +"@rollup/rollup-linux-arm-gnueabihf@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.1.tgz#7a4dbbd1dd98731d88a55aefcef0ec4c578fa9c7" + integrity sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q== + +"@rollup/rollup-linux-arm64-gnu@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.1.tgz#967ba8e6f68a5f21bd00cd97773dcdd6107e94ed" + integrity sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q== + +"@rollup/rollup-linux-arm64-musl@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.1.tgz#d3a4e1c9f21eef3b9f4e4989f334a519a1341462" + integrity sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw== + +"@rollup/rollup-linux-riscv64-gnu@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.1.tgz#415c0533bb752164effd05f5613858e8f6779bc9" + integrity sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw== + +"@rollup/rollup-linux-x64-gnu@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.1.tgz#0983385dd753a2e0ecaddea7a81dd37fea5114f5" + integrity sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg== + +"@rollup/rollup-linux-x64-musl@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.1.tgz#eb7494ebc5199cbd2e5c38c2b8acbe2603f35e03" + integrity sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw== + +"@rollup/rollup-win32-arm64-msvc@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.1.tgz#5bebc66e3a7f82d4b9aa9ff448e7fc13a69656e9" + integrity sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g== + +"@rollup/rollup-win32-ia32-msvc@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.1.tgz#34156ebf8b4de3b20e6497260fe519a30263f8cf" + integrity sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg== + +"@rollup/rollup-win32-x64-msvc@4.9.1": + version "4.9.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.1.tgz#d146db7a5949e10837b323ce933ed882ac878262" + integrity sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA== + "@serialport/binding-mock@10.2.2": version "10.2.2" resolved "https://registry.yarnpkg.com/@serialport/binding-mock/-/binding-mock-10.2.2.tgz#d322a8116a97806addda13c62f50e73d16125874" @@ -835,30 +1000,10 @@ dependencies: "@sinonjs/commons" "^3.0.0" -"@tsconfig/node-lts@^18.12.5": - version "18.12.5" - resolved "https://registry.yarnpkg.com/@tsconfig/node-lts/-/node-lts-18.12.5.tgz#345465cc150543f5f80ed3d6696e03fe0127aaa7" - integrity sha512-KJZX0kQ5FBv77WDVzmQ9y1dUjaJCNXAAz3LSsg5cMwH0AUijVdDQtII+IVprEXdb13U9GjVOBxBzyRvr/ozPxw== - -"@tsconfig/node10@^1.0.7": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" - integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== +"@tsconfig/node-lts@^20.1.0": + version "20.1.0" + resolved "https://registry.yarnpkg.com/@tsconfig/node-lts/-/node-lts-20.1.0.tgz#b7b1c6cc1706f386aa4efa77db04e772c14c8157" + integrity sha512-3w2D9MfGdqBL51pHB5nGFmGtXBn1gbO+n9xzwcGSvZPArtCn4tElk+6EeelLXispAeqv13GAgbzkgLNHtoxOCQ== "@types/babel__core@^7.1.14": version "7.20.2" @@ -901,10 +1046,10 @@ "@types/node" "*" source-map "^0.6.0" -"@types/debug@^4.1.10": - version "4.1.10" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.10.tgz#f23148a6eb771a34c466a4fc28379d8101e84494" - integrity sha512-tOSCru6s732pofZ+sMv9o4o3Zc+Sa8l3bxd/tweTQudFn06vAzb13ZX46Zi6m6EJ+RUbRTHvgQJ1gBtSgkaUYA== +"@types/debug@^4.1.12": + version "4.1.12" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" + integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== dependencies: "@types/ms" "*" @@ -913,10 +1058,10 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/finalhandler@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@types/finalhandler/-/finalhandler-1.2.2.tgz#40203348f870a526d1d5d390162f410944474776" - integrity sha512-6xrlIlsCvJF6DRIgWVhj9507GG5bY/ditl4UdB2azkh0sITM3CyvqmmqdoFpSpMGZZ5aDNoKUQjcBGLnAvKZlA== +"@types/finalhandler@^1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@types/finalhandler/-/finalhandler-1.2.3.tgz#9423432a13605355084b2322e156019f55c743aa" + integrity sha512-I+Ba0JZEiuSr8LLjVmBhvLBEN8KG9GSITNXWwPCLeAvZj/k5pXEdOBEvnEEIgA038eeaauJ3BPxbuxeFBsqqUw== dependencies: "@types/node" "*" @@ -927,10 +1072,10 @@ dependencies: "@types/node" "*" -"@types/html-minifier@^4.0.4": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@types/html-minifier/-/html-minifier-4.0.4.tgz#4d8501885918af2f74d9fbfb86acabca44af7306" - integrity sha512-kvzPbhN6CM+zFdOmLaGKF1DUnn9oYZteTiltHRFhsnj3vcnCZj1qVA0x1E7FTZvLT8e4WsHTSXk/0YV2NgOWOw== +"@types/html-minifier@^4.0.5": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@types/html-minifier/-/html-minifier-4.0.5.tgz#d6f64ffcf884f6c53ceb2f6ddbd8188f9badb6e9" + integrity sha512-LfE7f7MFd+YUfZnlBz8W43P4NgSObWiqyKapANsWCj63Aqeqli8/9gVsGP4CwC8jPpTTYlTopKCk9rJSuht/ew== dependencies: "@types/clean-css" "*" "@types/relateurl" "*" @@ -960,10 +1105,10 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^29.5.7": - version "29.5.7" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.7.tgz#2c0dafe2715dd958a455bc10e2ec3e1ec47b5036" - integrity sha512-HLyetab6KVPSiF+7pFcUyMeLsx25LDNDemw9mGsJBkai/oouwrjTycocSDYopMEwFhN2Y4s9oPyOCZNofgSt2g== +"@types/jest@^29.5.11": + version "29.5.11" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.11.tgz#0c13aa0da7d0929f078ab080ae5d4ced80fa2f2c" + integrity sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ== dependencies: expect "^29.0.0" pretty-format "^29.0.0" @@ -978,17 +1123,17 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/livereload@^0.9.4": - version "0.9.4" - resolved "https://registry.yarnpkg.com/@types/livereload/-/livereload-0.9.4.tgz#d37236184a0a1672a4474322652afc6fb3eeb489" - integrity sha512-Czdnj/Rmhh5I6pA1GyNoTgXVjAsl4vU4lfjMoAFFFiaSeMIPf08cCx/bu9M7b+8rZb4+ytIohkBHAMwUJj0O7w== +"@types/livereload@^0.9.5": + version "0.9.5" + resolved "https://registry.yarnpkg.com/@types/livereload/-/livereload-0.9.5.tgz#54551e0a780ce60923d30f5b3bb4fa578e04b042" + integrity sha512-2RXcRKdivPmn67pwjytvHoRv46AeXaLYVUWA0zkel1XSAOH5i71G0KfUdE5u3g80T155gR3Fo3ilVaqparLsVA== dependencies: "@types/ws" "*" -"@types/lodash@^4.14.200": - version "4.14.200" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.200.tgz#435b6035c7eba9cdf1e039af8212c9e9281e7149" - integrity sha512-YI/M/4HRImtNf3pJgbF+W6FrXovqj+T+/HpENLTooK9PnkacBsDpeP3IpHab40CClUfhNmdM2WTNP2sa2dni5Q== +"@types/lodash@^4.14.202": + version "4.14.202" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.202.tgz#f09dbd2fb082d507178b2f2a5c7e74bd72ff98f8" + integrity sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ== "@types/mime@*": version "3.0.1" @@ -1005,17 +1150,17 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.3.tgz#5b763b321cd3b80f6b8dde7a37e1a77ff9358dd9" integrity sha512-HksnYH4Ljr4VQgEy2lTStbCKv/P590tmPe5HqOnv9Gprffgv5WXAY+Y5Gqniu0GGqeTCUdBnzC3QSrzPkBkAMA== -"@types/node@^20.8.10": - version "20.8.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.10.tgz#a5448b895c753ae929c26ce85cab557c6d4a365e" - integrity sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w== +"@types/node@^20.10.5": + version "20.10.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.5.tgz#47ad460b514096b7ed63a1dae26fad0914ed3ab2" + integrity sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw== dependencies: undici-types "~5.26.4" -"@types/pug@^2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@types/pug/-/pug-2.0.8.tgz#1a85ecb760f7472d9ec3bab19bfe17454c69499d" - integrity sha512-QzhsZ1dMGyJbn/D9V80zp4GIA4J4rfAjCCxc3MP+new0E8dyVdSkR735Lx+n3LIaHNFcjHL5+TbziccuT+fdoQ== +"@types/pug@^2.0.10": + version "2.0.10" + resolved "https://registry.yarnpkg.com/@types/pug/-/pug-2.0.10.tgz#52f8dbd6113517aef901db20b4f3fca543b88c1f" + integrity sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA== "@types/relateurl@*": version "0.2.29" @@ -1032,10 +1177,10 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.2.tgz#31f6eec1ed7ec23f4f05608d3a2d381df041f564" integrity sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw== -"@types/serve-static@^1.15.4": - version "1.15.4" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.4.tgz#44b5895a68ca637f06c229119e1c774ca88f81b2" - integrity sha512-aqqNfs1XTF0HDrFdlY//+SGUxmdSUbjeRXb5iaZc3x0/vMbYmdw9qvOgHWOyyLFxSSRnUuP5+724zBgfw8/WAw== +"@types/serve-static@^1.15.5": + version "1.15.5" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.5.tgz#15e67500ec40789a1e8c9defc2d32a896f05b033" + integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ== dependencies: "@types/http-errors" "*" "@types/mime" "*" @@ -1053,17 +1198,17 @@ dependencies: source-map "^0.6.1" -"@types/uglify-js@^3.17.3": - version "3.17.3" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.17.3.tgz#784efb40320d248588e1748dd12e1f43733f1416" - integrity sha512-ToldSfJ6wxO21cakcz63oFD1GjqQbKzhZCD57eH7zWuYT5UEZvfUoqvrjX5d+jB9g4a/sFO0n6QSVzzn5sMsjg== +"@types/uglify-js@^3.17.4": + version "3.17.4" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.17.4.tgz#3c70021f08023e5a760ce133d22966f200e1d31c" + integrity sha512-Hm/T0kV3ywpJyMGNbsItdivRhYNCQQf1IIsYsXnoVPES4t+FMLyDe0/K+Ea7ahWtMtSNb22ZdY7MIyoD9rqARg== dependencies: source-map "^0.6.1" -"@types/web-bluetooth@^0.0.19": - version "0.0.19" - resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.19.tgz#9babaa5ae90487522bbdd9b3d9225e785d4dbf56" - integrity sha512-0Eoq1m8n3qXnV8tUJpL+Dgk09jJOp7IN1kXuwn65+i1VgxzNRW6sArEDrD9uPe5+wgBp3ZNYMAAtrminQf5RjA== +"@types/web-bluetooth@^0.0.20": + version "0.0.20" + resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz#f066abfcd1cbe66267cdbbf0de010d8a41b41597" + integrity sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow== "@types/ws@*": version "8.5.5" @@ -1084,16 +1229,16 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^6.10.0": - version "6.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.10.0.tgz#cfe2bd34e26d2289212946b96ab19dcad64b661a" - integrity sha512-uoLj4g2OTL8rfUQVx2AFO1hp/zja1wABJq77P6IclQs6I/m9GLrm7jCdgzZkvWdDCQf1uEvoa8s8CupsgWQgVg== +"@typescript-eslint/eslint-plugin@^6.15.0": + version "6.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.15.0.tgz#b0b3e15fa8c3e67ed4386b765cc0ba98ad3a303b" + integrity sha512-j5qoikQqPccq9QoBAupOP+CBu8BaJ8BLjaXSioDISeTZkVO3ig7oSIKh3H+rEpee7xCXtWwSB4KIL5l6hWZzpg== dependencies: "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.10.0" - "@typescript-eslint/type-utils" "6.10.0" - "@typescript-eslint/utils" "6.10.0" - "@typescript-eslint/visitor-keys" "6.10.0" + "@typescript-eslint/scope-manager" "6.15.0" + "@typescript-eslint/type-utils" "6.15.0" + "@typescript-eslint/utils" "6.15.0" + "@typescript-eslint/visitor-keys" "6.15.0" debug "^4.3.4" graphemer "^1.4.0" ignore "^5.2.4" @@ -1112,13 +1257,13 @@ "@typescript-eslint/visitor-keys" "6.7.2" debug "^4.3.4" -"@typescript-eslint/scope-manager@6.10.0": - version "6.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.10.0.tgz#b0276118b13d16f72809e3cecc86a72c93708540" - integrity sha512-TN/plV7dzqqC2iPNf1KrxozDgZs53Gfgg5ZHyw8erd6jd5Ta/JIEcdCheXFt9b1NYb93a1wmIIVW/2gLkombDg== +"@typescript-eslint/scope-manager@6.15.0": + version "6.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.15.0.tgz#40e5214a3e9e048aca55ce33381bc61b6b51c32a" + integrity sha512-+BdvxYBltqrmgCNu4Li+fGDIkW9n//NrruzG9X1vBzaNK+ExVXPoGB71kneaVw/Jp+4rH/vaMAGC6JfMbHstVg== dependencies: - "@typescript-eslint/types" "6.10.0" - "@typescript-eslint/visitor-keys" "6.10.0" + "@typescript-eslint/types" "6.15.0" + "@typescript-eslint/visitor-keys" "6.15.0" "@typescript-eslint/scope-manager@6.7.2": version "6.7.2" @@ -1128,33 +1273,33 @@ "@typescript-eslint/types" "6.7.2" "@typescript-eslint/visitor-keys" "6.7.2" -"@typescript-eslint/type-utils@6.10.0": - version "6.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.10.0.tgz#1007faede067c78bdbcef2e8abb31437e163e2e1" - integrity sha512-wYpPs3hgTFblMYwbYWPT3eZtaDOjbLyIYuqpwuLBBqhLiuvJ+9sEp2gNRJEtR5N/c9G1uTtQQL5AhV0fEPJYcg== +"@typescript-eslint/type-utils@6.15.0": + version "6.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.15.0.tgz#c22261bd00566821a300d08f4632533a8f9bed01" + integrity sha512-CnmHKTfX6450Bo49hPg2OkIm/D/TVYV7jO1MCfPYGwf6x3GO0VU8YMO5AYMn+u3X05lRRxA4fWCz87GFQV6yVQ== dependencies: - "@typescript-eslint/typescript-estree" "6.10.0" - "@typescript-eslint/utils" "6.10.0" + "@typescript-eslint/typescript-estree" "6.15.0" + "@typescript-eslint/utils" "6.15.0" debug "^4.3.4" ts-api-utils "^1.0.1" -"@typescript-eslint/types@6.10.0": - version "6.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.10.0.tgz#f4f0a84aeb2ac546f21a66c6e0da92420e921367" - integrity sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg== +"@typescript-eslint/types@6.15.0": + version "6.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.15.0.tgz#a9f7b006aee52b0948be6e03f521814bf435ddd5" + integrity sha512-yXjbt//E4T/ee8Ia1b5mGlbNj9fB9lJP4jqLbZualwpP2BCQ5is6BcWwxpIsY4XKAhmdv3hrW92GdtJbatC6dQ== "@typescript-eslint/types@6.7.2": version "6.7.2" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.7.2.tgz#75a615a6dbeca09cafd102fe7f465da1d8a3c066" integrity sha512-flJYwMYgnUNDAN9/GAI3l8+wTmvTYdv64fcH8aoJK76Y+1FCZ08RtI5zDerM/FYT5DMkAc+19E4aLmd5KqdFyg== -"@typescript-eslint/typescript-estree@6.10.0": - version "6.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.10.0.tgz#667381eed6f723a1a8ad7590a31f312e31e07697" - integrity sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg== +"@typescript-eslint/typescript-estree@6.15.0": + version "6.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.15.0.tgz#2f8a513df1ce5e6e1ba8e5c6aa52f392ae023fc5" + integrity sha512-7mVZJN7Hd15OmGuWrp2T9UvqR2Ecg+1j/Bp1jXUEY2GZKV6FXlOIoqVDmLpBiEiq3katvj/2n2mR0SDwtloCew== dependencies: - "@typescript-eslint/types" "6.10.0" - "@typescript-eslint/visitor-keys" "6.10.0" + "@typescript-eslint/types" "6.15.0" + "@typescript-eslint/visitor-keys" "6.15.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -1174,25 +1319,25 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/utils@6.10.0": - version "6.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.10.0.tgz#4d76062d94413c30e402c9b0df8c14aef8d77336" - integrity sha512-v+pJ1/RcVyRc0o4wAGux9x42RHmAjIGzPRo538Z8M1tVx6HOnoQBCX/NoadHQlZeC+QO2yr4nNSFWOoraZCAyg== +"@typescript-eslint/utils@6.15.0": + version "6.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.15.0.tgz#f80dbb79f3b0f569077a8711dd44186a8933fa4c" + integrity sha512-eF82p0Wrrlt8fQSRL0bGXzK5nWPRV2dYQZdajcfzOD9+cQz9O7ugifrJxclB+xVOvWvagXfqS4Es7vpLP4augw== dependencies: "@eslint-community/eslint-utils" "^4.4.0" "@types/json-schema" "^7.0.12" "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.10.0" - "@typescript-eslint/types" "6.10.0" - "@typescript-eslint/typescript-estree" "6.10.0" + "@typescript-eslint/scope-manager" "6.15.0" + "@typescript-eslint/types" "6.15.0" + "@typescript-eslint/typescript-estree" "6.15.0" semver "^7.5.4" -"@typescript-eslint/visitor-keys@6.10.0": - version "6.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.10.0.tgz#b9eaf855a1ac7e95633ae1073af43d451e8f84e3" - integrity sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg== +"@typescript-eslint/visitor-keys@6.15.0": + version "6.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.15.0.tgz#5baf97a7bfeec6f4894d400437055155a46b2330" + integrity sha512-1zvtdC1a9h5Tb5jU9x3ADNXO9yjP8rXlaoChu0DQX40vf5ACVpYIVIZhIMZ6d5sDXH7vq4dsZBT1fEGj8D2n2w== dependencies: - "@typescript-eslint/types" "6.10.0" + "@typescript-eslint/types" "6.15.0" eslint-visitor-keys "^3.4.1" "@typescript-eslint/visitor-keys@6.7.2": @@ -1218,17 +1363,12 @@ acorn-jsx@^5.3.2: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - acorn@^7.1.1: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.4.1, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.8.2, acorn@^8.9.0: version "8.10.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== @@ -1310,11 +1450,6 @@ are-we-there-yet@^3.0.0: delegates "^1.0.0" readable-stream "^3.6.0" -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -1850,11 +1985,6 @@ create-jest@^29.7.0: jest-util "^29.7.0" prompts "^2.0.1" -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -1982,11 +2112,6 @@ diff-sequences@^29.6.3: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -2137,6 +2262,35 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +esbuild@~0.19.10: + version "0.19.10" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.10.tgz#55e83e4a6b702e3498b9f872d84bfb4ebcb6d16e" + integrity sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA== + optionalDependencies: + "@esbuild/aix-ppc64" "0.19.10" + "@esbuild/android-arm" "0.19.10" + "@esbuild/android-arm64" "0.19.10" + "@esbuild/android-x64" "0.19.10" + "@esbuild/darwin-arm64" "0.19.10" + "@esbuild/darwin-x64" "0.19.10" + "@esbuild/freebsd-arm64" "0.19.10" + "@esbuild/freebsd-x64" "0.19.10" + "@esbuild/linux-arm" "0.19.10" + "@esbuild/linux-arm64" "0.19.10" + "@esbuild/linux-ia32" "0.19.10" + "@esbuild/linux-loong64" "0.19.10" + "@esbuild/linux-mips64el" "0.19.10" + "@esbuild/linux-ppc64" "0.19.10" + "@esbuild/linux-riscv64" "0.19.10" + "@esbuild/linux-s390x" "0.19.10" + "@esbuild/linux-x64" "0.19.10" + "@esbuild/netbsd-x64" "0.19.10" + "@esbuild/openbsd-x64" "0.19.10" + "@esbuild/sunos-x64" "0.19.10" + "@esbuild/win32-arm64" "0.19.10" + "@esbuild/win32-ia32" "0.19.10" + "@esbuild/win32-x64" "0.19.10" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -2162,10 +2316,15 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-config-standard-with-typescript@^39.1.1: - version "39.1.1" - resolved "https://registry.yarnpkg.com/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-39.1.1.tgz#d682bd1fc8f1ee996940f85c9b0a833d7cfa5fee" - integrity sha512-t6B5Ep8E4I18uuoYeYxINyqcXb2UbC0SOOTxRtBSt2JUs+EzeXbfe2oaiPs71AIdnoWhXDO2fYOHz8df3kV84A== +eslint-compat-utils@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz#f45e3b5ced4c746c127cf724fb074cd4e730d653" + integrity sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg== + +eslint-config-standard-with-typescript@^43.0.0: + version "43.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-43.0.0.tgz#e3d336b949e621a79b9150585777cdc9808e37d7" + integrity sha512-AT0qK01M5bmsWiE3UZvaQO5da1y1n6uQckAKqGNe6zPW5IOzgMLXZxw77nnFm+C11nxAZXsCPrbsgJhSrGfX6Q== dependencies: "@typescript-eslint/parser" "^6.4.0" eslint-config-standard "17.1.0" @@ -2191,18 +2350,19 @@ eslint-module-utils@^2.8.0: dependencies: debug "^3.2.7" -eslint-plugin-es-x@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-es-x/-/eslint-plugin-es-x-7.2.0.tgz#5779d742ad31f8fd780b9481331481e142b72311" - integrity sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA== +eslint-plugin-es-x@^7.5.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-es-x/-/eslint-plugin-es-x-7.5.0.tgz#d08d9cd155383e35156c48f736eb06561d07ba92" + integrity sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ== dependencies: "@eslint-community/eslint-utils" "^4.1.2" "@eslint-community/regexpp" "^4.6.0" + eslint-compat-utils "^0.1.2" -eslint-plugin-import@^2.29.0: - version "2.29.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz#8133232e4329ee344f2f612885ac3073b0b7e155" - integrity sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg== +eslint-plugin-import@^2.29.1: + version "2.29.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" + integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== dependencies: array-includes "^3.1.7" array.prototype.findlastindex "^1.2.3" @@ -2220,18 +2380,19 @@ eslint-plugin-import@^2.29.0: object.groupby "^1.0.1" object.values "^1.1.7" semver "^6.3.1" - tsconfig-paths "^3.14.2" + tsconfig-paths "^3.15.0" -eslint-plugin-n@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-16.2.0.tgz#3f98ca9fadd9f7bdaaf60068533118ecb685bfb5" - integrity sha512-AQER2jEyQOt1LG6JkGJCCIFotzmlcCZFur2wdKrp1JX2cNotC7Ae0BcD/4lLv3lUAArM9uNS8z/fsvXTd0L71g== +eslint-plugin-n@^16.5.0: + version "16.5.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-16.5.0.tgz#4dbd7459f95bc2556ec318480767e8837af168fc" + integrity sha512-Hw02Bj1QrZIlKyj471Tb1jSReTl4ghIMHGuBGiMVmw+s0jOPbI4CBuYpGbZr+tdQ+VAvSK6FDSta3J4ib/SKHQ== dependencies: "@eslint-community/eslint-utils" "^4.4.0" builtins "^5.0.1" - eslint-plugin-es-x "^7.1.0" + eslint-plugin-es-x "^7.5.0" get-tsconfig "^4.7.0" ignore "^5.2.4" + is-builtin-module "^3.2.1" is-core-module "^2.12.1" minimatch "^3.1.2" resolve "^1.22.2" @@ -2265,15 +2426,15 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@^8.53.0: - version "8.53.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.53.0.tgz#14f2c8244298fcae1f46945459577413ba2697ce" - integrity sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag== +eslint@^8.56.0: + version "8.56.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.56.0.tgz#4957ce8da409dc0809f99ab07a1b94832ab74b15" + integrity sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.3" - "@eslint/js" "8.53.0" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.56.0" "@humanwhocodes/config-array" "^0.11.13" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" @@ -2563,7 +2724,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^2.3.2, fsevents@~2.3.2: +fsevents@^2.3.2, fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== @@ -2645,7 +2806,7 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" -get-tsconfig@^4.7.0: +get-tsconfig@^4.7.0, get-tsconfig@^4.7.2: version "4.7.2" resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.2.tgz#0dcd6fb330391d46332f4c6c1bf89a6514c2ddce" integrity sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A== @@ -3760,14 +3921,7 @@ lunr@^2.3.9: resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== -magic-string@^0.27.0: - version "0.27.0" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" - integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== - dependencies: - "@jridgewell/sourcemap-codec" "^1.4.13" - -magic-string@^0.30.3: +magic-string@^0.30.3, magic-string@^0.30.4: version "0.30.5" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== @@ -3781,7 +3935,7 @@ make-dir@^4.0.0: dependencies: semver "^7.5.3" -make-error@1.x, make-error@^1.1.1: +make-error@1.x: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== @@ -3980,13 +4134,13 @@ node-watch@^0.7.4: resolved "https://registry.yarnpkg.com/node-watch/-/node-watch-0.7.4.tgz#34557106948cd4b8ddff9aa3d284774004548824" integrity sha512-RinNxoz4W1cep1b928fuFhvAQ5ag/+1UlMDV7rbyGthBIgsiEouS4kvRayvvboxii4m8eolKOIBo3OjDqbc+uQ== -nodemon@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.0.1.tgz#affe822a2c5f21354466b2fc8ae83277d27dadc7" - integrity sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw== +nodemon@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.0.2.tgz#222dd0de79fc7b7b3eedba422d2b9e5fc678621e" + integrity sha512-9qIN2LNTrEzpOPBaWHTm4Asy1LxXLSickZStAQ4IZe7zsoIpD/A7LWxhZV3t4Zu352uBcqVnRsDXSMR2Sc3lTA== dependencies: chokidar "^3.5.2" - debug "^3.2.7" + debug "^4" ignore-by-default "^1.0.1" minimatch "^3.1.2" pstree.remy "^1.1.8" @@ -4538,12 +4692,21 @@ rimraf@^5.0.5: dependencies: glob "^10.3.7" -rollup-plugin-polyfill-node@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-polyfill-node/-/rollup-plugin-polyfill-node-0.12.0.tgz#33d421ddb7fcb69c234461e508ca6d2db6193f1d" - integrity sha512-PWEVfDxLEKt8JX1nZ0NkUAgXpkZMTb85rO/Ru9AQ69wYW8VUCfDgP4CGRXXWYni5wDF0vIeR1UoF3Jmw/Lt3Ug== +rollup-plugin-dts@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-dts/-/rollup-plugin-dts-6.1.0.tgz#56e9c5548dac717213c6a4aa9df523faf04f75ae" + integrity sha512-ijSCPICkRMDKDLBK9torss07+8dl9UpY9z1N/zTeA1cIqdzMlpkV3MOOC7zukyvQfDyxa1s3Dl2+DeiP/G6DOw== dependencies: - "@rollup/plugin-inject" "^5.0.1" + magic-string "^0.30.4" + optionalDependencies: + "@babel/code-frame" "^7.22.13" + +rollup-plugin-polyfill-node@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-polyfill-node/-/rollup-plugin-polyfill-node-0.13.0.tgz#28e5705b59438da894e55133a0fe7a86b57d9b0a" + integrity sha512-FYEvpCaD5jGtyBuBFcQImEGmTxDTPbiHjJdrYIp+mFIwgXiXabxvKUK7ZT9P31ozu2Tqm9llYQMRWsfvTMTAOw== + dependencies: + "@rollup/plugin-inject" "^5.0.4" rollup-plugin-version-injector@^1.3.3: version "1.3.3" @@ -4554,11 +4717,24 @@ rollup-plugin-version-injector@^1.3.3: dateformat "^4.2.1" lodash "^4.17.20" -rollup@^3.29.4: - version "3.29.4" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" - integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== +rollup@^4.9.1: + version "4.9.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.9.1.tgz#351d6c03e4e6bcd7a0339df3618d2aeeb108b507" + integrity sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw== optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.9.1" + "@rollup/rollup-android-arm64" "4.9.1" + "@rollup/rollup-darwin-arm64" "4.9.1" + "@rollup/rollup-darwin-x64" "4.9.1" + "@rollup/rollup-linux-arm-gnueabihf" "4.9.1" + "@rollup/rollup-linux-arm64-gnu" "4.9.1" + "@rollup/rollup-linux-arm64-musl" "4.9.1" + "@rollup/rollup-linux-riscv64-gnu" "4.9.1" + "@rollup/rollup-linux-x64-gnu" "4.9.1" + "@rollup/rollup-linux-x64-musl" "4.9.1" + "@rollup/rollup-win32-arm64-msvc" "4.9.1" + "@rollup/rollup-win32-ia32-msvc" "4.9.1" + "@rollup/rollup-win32-x64-msvc" "4.9.1" fsevents "~2.3.2" run-parallel@^1.1.9: @@ -5070,29 +5246,10 @@ ts-jest@^29.1.1: semver "^7.5.3" yargs-parser "^21.0.1" -ts-node@^10.9.1: - version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" - integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -tsconfig-paths@^3.14.2: - version "3.14.2" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" - integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== +tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== dependencies: "@types/json5" "^0.0.29" json5 "^1.0.2" @@ -5104,6 +5261,16 @@ tslib@^2.1.0, tslib@^2.6.2: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +tsx@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.7.0.tgz#1689cfe7dda495ca1f9a66d4cad79cb57b9f6f4a" + integrity sha512-I+t79RYPlEYlHn9a+KzwrvEwhJg35h/1zHsLC2JXvhC2mdynMv6Zxzvhv5EMV6VF5qJlLlkSnMVvdZV3PSIGcg== + dependencies: + esbuild "~0.19.10" + get-tsconfig "^4.7.2" + optionalDependencies: + fsevents "~2.3.3" + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -5172,10 +5339,10 @@ typed-array-length@^1.0.4: for-each "^0.3.3" is-typed-array "^1.1.9" -typedoc-plugin-mdn-links@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/typedoc-plugin-mdn-links/-/typedoc-plugin-mdn-links-3.1.0.tgz#45ac9c84ed074d9c2e36703fb8d0d28ce71efffc" - integrity sha512-4uwnkvywPFV3UVx7WXpIWTHJdXH1rlE2e4a1WsSwCFYKqJxgTmyapv3ZxJtbSl1dvnb6jmuMNSqKEPz77Gs2OA== +typedoc-plugin-mdn-links@^3.1.8: + version "3.1.8" + resolved "https://registry.yarnpkg.com/typedoc-plugin-mdn-links/-/typedoc-plugin-mdn-links-3.1.8.tgz#46d7221153cb937ee085c5a153bb6862552924b7" + integrity sha512-m2bcjsMghULmf0GBG+P6QwkWYF/7CTvlCefpYGTsIne5eL6wehVzE/RRlw+6qRjTR03FxBwgf/+UsasMRKEbPw== typedoc-plugin-missing-exports@^2.1.0: version "2.1.0" @@ -5189,20 +5356,20 @@ typedoc-plugin-rename-defaults@^0.7.0: dependencies: camelcase "^8.0.0" -typedoc@^0.25.3: - version "0.25.3" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.25.3.tgz#53c6d668e1001b3d488e9a750fcdfb05433554c0" - integrity sha512-Ow8Bo7uY1Lwy7GTmphRIMEo6IOZ+yYUyrc8n5KXIZg1svpqhZSWgni2ZrDhe+wLosFS8yswowUzljTAV/3jmWw== +typedoc@^0.25.4: + version "0.25.4" + resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.25.4.tgz#5c2c0677881f504e41985f29d9aef0dbdb6f1e6f" + integrity sha512-Du9ImmpBCw54bX275yJrxPVnjdIyJO/84co0/L9mwe0R3G4FSR6rQ09AlXVRvZEGMUg09+z/usc8mgygQ1aidA== dependencies: lunr "^2.3.9" marked "^4.3.0" minimatch "^9.0.3" shiki "^0.14.1" -typescript@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" - integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== +typescript@^5.3.0: + version "5.3.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" + integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== uglify-js@^3.17.4, uglify-js@^3.5.1: version "3.17.4" @@ -5274,11 +5441,6 @@ utility-types@^3.10.0: resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - v8-to-istanbul@^9.0.1: version "9.1.0" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" @@ -5310,10 +5472,10 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" -web-serial-polyfill@^1.0.14: - version "1.0.14" - resolved "https://registry.yarnpkg.com/web-serial-polyfill/-/web-serial-polyfill-1.0.14.tgz#fd58e1bc42469dd8a62f7ef37250e21f94ca8d07" - integrity sha512-DCgs3SNtmB/liKcNyFnp/kdwShOITwmv+UXQOLffQkNKQMHohK1b9pIz70Eo9Bf+0bKM41hf4uQaN3WH7snKTQ== +web-serial-polyfill@^1.0.15: + version "1.0.15" + resolved "https://registry.yarnpkg.com/web-serial-polyfill/-/web-serial-polyfill-1.0.15.tgz#0c0b4cd5f32b8c07243d2ffeea484892f46986b1" + integrity sha512-usZN7kGRkEWr8DzRWxW+og55L1fHo4hNIwxCSCfWKpM+i0L+2AwzupMvkDFxnJNqUFOhLaD3PlgAOJxUOUrAoA== webbluetooth@^3.1.0: version "3.1.0" @@ -5440,11 +5602,6 @@ yargs@^17.3.1, yargs@^17.6.0, yargs@^17.7.2: y18n "^5.0.5" yargs-parser "^21.1.1" -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"