From 274b97d0fd48430a89711a998cccc641ea867bb9 Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 17 Nov 2023 14:04:08 +0900 Subject: [PATCH] Feature/biome (#456) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * biome 追加 * biome 化 * eslint サヨナラ * lint 対応していく * 直せる範囲をなおす * pnpm run lint は通るようになった * pnpm up -L -r * tslib を入れてみる * 変更履歴を更新する --- .vscode/extensions.json | 3 + .vscode/settings.json | 20 + CHANGES.md | 2 + biome.json | 45 ++ package.json | 11 +- packages/e2ee/.eslintrc.json | 76 --- packages/e2ee/.prettierrc.json | 7 - packages/e2ee/package.json | 7 +- packages/e2ee/src/sora_e2ee.ts | 2 +- packages/e2ee/src/worker/e2ee.ts | 24 +- packages/e2ee/src/worker/sframe.ts | 2 +- packages/sdk/.eslintrc.json | 82 --- packages/sdk/.prettierrc.json | 7 - packages/sdk/package.json | 4 +- packages/sdk/src/base.ts | 90 +-- packages/sdk/src/lyra.ts | 14 +- packages/sdk/src/lyra_worker.ts | 9 +- packages/sdk/src/publisher.ts | 4 +- packages/sdk/src/subscriber.ts | 1 + packages/sdk/src/types.ts | 4 +- packages/sdk/src/utils.ts | 42 +- pnpm-lock.yaml | 888 +++-------------------------- 22 files changed, 266 insertions(+), 1078 deletions(-) create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 biome.json delete mode 100644 packages/e2ee/.eslintrc.json delete mode 100644 packages/e2ee/.prettierrc.json delete mode 100644 packages/sdk/.eslintrc.json delete mode 100644 packages/sdk/.prettierrc.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..699ed733 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["biomejs.biome"] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..2c24faf6 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,20 @@ +{ + "editor.formatOnSave": true, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "[javascript]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[javascriptreact]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[typescript]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "editor.codeActionsOnSave": { + "quickfix.biome": true, + "source.organizeImports.biome": true + } +} diff --git a/CHANGES.md b/CHANGES.md index 8db12da7..ba49d48e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,8 @@ ## develop +- [CHANGE] fmt / lint を biome へ移行する + - @voluntas - [CHANGE] Node.js 16 系を落とす - @voluntas - [FIX] stopVideoTrack で例外を握りつぶしていたのを修正する diff --git a/biome.json b/biome.json new file mode 100644 index 00000000..5442c712 --- /dev/null +++ b/biome.json @@ -0,0 +1,45 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.3.3/schema.json", + "organizeImports": { + "enabled": true + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true + } + }, + "formatter": { + "enabled": true, + "formatWithErrors": false, + "ignore": [], + "indentStyle": "space", + "indentWidth": 2, + "lineWidth": 100 + }, + "json": { + "parser": { + "allowComments": true + }, + "formatter": { + "enabled": true, + "indentStyle": "space", + "indentWidth": 2, + "lineWidth": 100 + } + }, + "javascript": { + "formatter": { + "enabled": true, + "quoteStyle": "single", + "jsxQuoteStyle": "double", + "trailingComma": "all", + "semicolons": "asNeeded", + "arrowParentheses": "always", + "indentStyle": "space", + "indentWidth": 2, + "lineWidth": 100, + "quoteProperties": "asNeeded" + } + } +} diff --git a/package.json b/package.json index 17662e28..16b1caac 100644 --- a/package.json +++ b/package.json @@ -28,12 +28,7 @@ "dist" ], "devDependencies": { - "@typescript-eslint/eslint-plugin": "6.11.0", - "@typescript-eslint/parser": "6.11.0", - "eslint": "8.53.0", - "eslint-config-prettier": "9.0.0", - "eslint-plugin-prettier": "5.0.1", - "prettier": "3.1.0", + "@biomejs/biome": "1.3.3", "serve": "14.2.1", "typedoc": "0.25.3", "typescript": "5.2.2", @@ -42,8 +37,8 @@ "resolutions": { "get-pkg-repo": "5.0.0" }, - "packageManager": "pnpm@8.10.3", + "packageManager": "pnpm@8.10.5", "engines": { "node": ">=18.17.1" } -} +} \ No newline at end of file diff --git a/packages/e2ee/.eslintrc.json b/packages/e2ee/.eslintrc.json deleted file mode 100644 index f6789385..00000000 --- a/packages/e2ee/.eslintrc.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/SchemaStore/schemastore/master/src/schemas/json/eslintrc.json", - "env": { - "browser": true, - "commonjs": true, - "es6": true - }, - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:prettier/recommended", - "prettier" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "sourceType": "module" - }, - "plugins": ["@typescript-eslint", "prettier"], - "globals": { - "SORA_JS_SDK_VERSION": true - }, - "rules": { - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/no-empty-function": "off", - "@typescript-eslint/no-unused-vars": [ - "error", - { - "vars": "all", - "args": "all", - "argsIgnorePattern": "^_" - } - ], - "@typescript-eslint/naming-convention": [ - "error", - { - "selector": "import", - "format": ["camelCase", "UPPER_CASE", "PascalCase"] - }, - { - "selector": "default", - "format": ["camelCase"] - }, - { - "selector": "class", - "format": ["PascalCase"] - }, - { - "selector": "interface", - "format": ["PascalCase"] - }, - { - "selector": "typeAlias", - "format": ["PascalCase"] - }, - { - "selector": "objectLiteralProperty", - "format": ["camelCase", "snake_case"] - }, - { - "selector": "typeProperty", - "format": null - }, - { - "selector": "variable", - "format": ["camelCase", "UPPER_CASE", "PascalCase"] - }, - { - "selector": "parameter", - "format": ["camelCase"], - "leadingUnderscore": "allow" - } - ], - "curly": "error" - } -} diff --git a/packages/e2ee/.prettierrc.json b/packages/e2ee/.prettierrc.json deleted file mode 100644 index 08a60eef..00000000 --- a/packages/e2ee/.prettierrc.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "singleQuote": true, - "semi": false, - "trailingComma": "all", - "tabWidth": 2, - "printWidth": 100 -} \ No newline at end of file diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index c14f60a4..6b0b4b45 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -11,15 +11,16 @@ "build": "pnpm run build:worker && pnpm run build:development", "build:development": "NODE_ENV=development rollup -c rollup.config.mjs --bundleConfigAsCjs", "build:worker": "tsc --project tsconfig.worker.json", - "fmt": "prettier --write src", - "lint": "eslint --ext .ts ./src", + "lint": "biome lint ./src", + "fmt": "biome format --write ./src", "test": "echo \"no test\"" }, "devDependencies": { "@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-replace": "5.0.5", "@rollup/plugin-typescript": "11.1.5", - "rollup": "4.4.1" + "rollup": "4.4.1", + "tslib": "2.6.2" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/packages/e2ee/src/sora_e2ee.ts b/packages/e2ee/src/sora_e2ee.ts index c612abfb..818cf9ea 100644 --- a/packages/e2ee/src/sora_e2ee.ts +++ b/packages/e2ee/src/sora_e2ee.ts @@ -75,7 +75,7 @@ const WORKER_SCRIPT = '__WORKER_SCRIPT__' class SoraE2EE { worker: Worker | null - // eslint-disable-next-line @typescript-eslint/no-explicit-any + // biome-ignore lint/suspicious/noExplicitAny: onWorkerDisconnect: (() => any) | null constructor() { diff --git a/packages/e2ee/src/worker/e2ee.ts b/packages/e2ee/src/worker/e2ee.ts index 16d53136..1fe4115e 100644 --- a/packages/e2ee/src/worker/e2ee.ts +++ b/packages/e2ee/src/worker/e2ee.ts @@ -82,9 +82,11 @@ function setLatestRemoteKeyId(connectionId: string, keyId: number): void { } function removeOldRemoteDeriveKeys(): void { + // biome-ignore lint/complexity/noForEach: Array ではなく Map latestRemoteKeyIdMap.forEach((latestKeyId, connectionId) => { const deriveKeyMap = remoteDeriveKeyMap.get(connectionId) if (deriveKeyMap) { + // biome-ignore lint/complexity/noForEach: Array ではなく Map deriveKeyMap.forEach((_, keyId) => { if (latestKeyId !== keyId) { deriveKeyMap.delete(keyId) @@ -99,7 +101,11 @@ function removeDeriveKey(connectionId: string): void { remoteDeriveKeyMap.delete(connectionId) } -function getLatestSelfDeriveKey(): { connectionId: string; keyId: number; deriveKey: CryptoKey } { +function getLatestSelfDeriveKey(): { + connectionId: string + keyId: number + deriveKey: CryptoKey +} { const deriveKey = selfDeriveKeyMap.get('latest') if (!deriveKey) { throw new Error('LATEST-SELF-DERIVEKEY-NOT_FOUND') @@ -110,7 +116,7 @@ function getLatestSelfDeriveKey(): { connectionId: string; keyId: number; derive function setSelfDeriveKey(connectionId: string, keyId: number, deriveKey: CryptoKey): void { const currentSelfDeriveKey = selfDeriveKeyMap.get('latest') if (currentSelfDeriveKey) { - if (currentSelfDeriveKey['keyId'] < keyId) { + if (currentSelfDeriveKey.keyId < keyId) { const nextSelfDeriveKey = { connectionId, keyId, deriveKey } selfDeriveKeyMap.set('latest', nextSelfDeriveKey) } @@ -136,14 +142,12 @@ function silenceFrame(encodedFrame: Chunk): Chunk { const newData = new ArrayBuffer(60) const newUint8 = new Uint8Array(newData) - // prettier-ignore - newUint8.set([0xb0, 0x05, 0x00, 0x9d, 0x01, 0x2a, 0xa0, 0x00, 0x5a, 0x00, - 0x39, 0x03, 0x00, 0x00, 0x1c, 0x22, 0x16, 0x16, 0x22, 0x66, - 0x12, 0x20, 0x04, 0x90, 0x40, 0x00, 0xc5, 0x01, 0xe0, 0x7c, - 0x4d, 0x2f, 0xfa, 0xdd, 0x4d, 0xa5, 0x7f, 0x89, 0xa5, 0xff, - 0x5b, 0xa9, 0xb4, 0xaf, 0xf1, 0x34, 0xbf, 0xeb, 0x75, 0x36, - 0x95, 0xfe, 0x26, 0x96, 0x60, 0xfe, 0xff, 0xba, 0xff, 0x40, - ]); + newUint8.set([ + 0xb0, 0x05, 0x00, 0x9d, 0x01, 0x2a, 0xa0, 0x00, 0x5a, 0x00, 0x39, 0x03, 0x00, 0x00, 0x1c, + 0x22, 0x16, 0x16, 0x22, 0x66, 0x12, 0x20, 0x04, 0x90, 0x40, 0x00, 0xc5, 0x01, 0xe0, 0x7c, + 0x4d, 0x2f, 0xfa, 0xdd, 0x4d, 0xa5, 0x7f, 0x89, 0xa5, 0xff, 0x5b, 0xa9, 0xb4, 0xaf, 0xf1, + 0x34, 0xbf, 0xeb, 0x75, 0x36, 0x95, 0xfe, 0x26, 0x96, 0x60, 0xfe, 0xff, 0xba, 0xff, 0x40, + ]) encodedFrame.data = newData } return encodedFrame diff --git a/packages/e2ee/src/worker/sframe.ts b/packages/e2ee/src/worker/sframe.ts index bd085f0b..f9ef669d 100644 --- a/packages/e2ee/src/worker/sframe.ts +++ b/packages/e2ee/src/worker/sframe.ts @@ -2,7 +2,7 @@ const connectionIdLength = 26 function byteCount(n: number): number { - if (n == 0) { + if (n === 0) { return 1 } // log256(x) = log(x) / log(256) diff --git a/packages/sdk/.eslintrc.json b/packages/sdk/.eslintrc.json deleted file mode 100644 index 385329fb..00000000 --- a/packages/sdk/.eslintrc.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/SchemaStore/schemastore/master/src/schemas/json/eslintrc.json", - "env": { - "browser": true, - "commonjs": true, - "es6": true - }, - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking", - "plugin:prettier/recommended", - "prettier" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "sourceType": "module", - "project": ["./tsconfig.json"] - }, - "plugins": ["@typescript-eslint", "prettier"], - "globals": { - "SORA_JS_SDK_VERSION": true - }, - "rules": { - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/no-empty-function": "off", - "@typescript-eslint/no-unused-vars": [ - "error", - { - "vars": "all", - "args": "all", - "argsIgnorePattern": "^_" - } - ], - "@typescript-eslint/naming-convention": [ - "error", - { - "selector": "import", - "format": ["camelCase", "UPPER_CASE", "PascalCase"] - }, - { - "selector": "default", - "format": ["camelCase"] - }, - { - "selector": "class", - "format": ["PascalCase"] - }, - { - "selector": "interface", - "format": ["PascalCase"] - }, - { - "selector": "typeAlias", - "format": ["PascalCase"] - }, - { - "selector": "objectLiteralProperty", - "format": ["camelCase", "snake_case"] - }, - { - "selector": "typeProperty", - "format": null - }, - { - "selector": "parameter", - "format": ["camelCase"], - "leadingUnderscore": "allow" - }, - { - "selector": "typeParameter", - "format": ["PascalCase"] - }, - { - "selector": "variable", - "format": ["camelCase", "UPPER_CASE"] - } - ], - "curly": "error" - } -} diff --git a/packages/sdk/.prettierrc.json b/packages/sdk/.prettierrc.json deleted file mode 100644 index 08a60eef..00000000 --- a/packages/sdk/.prettierrc.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "singleQuote": true, - "semi": false, - "trailingComma": "all", - "tabWidth": 2, - "printWidth": 100 -} \ No newline at end of file diff --git a/packages/sdk/package.json b/packages/sdk/package.json index e5ba4f54..457dc9e5 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -3,8 +3,8 @@ "scripts": { "build": "rollup -c rollup.config.mjs --bundleConfigAsCjs", "watch": "rollup -c -w", - "lint": "eslint --ext .ts ./src", - "fmt": "prettier --write src", + "lint": "biome lint ./src", + "fmt": "biome format --write ./src", "test": "vitest run" }, "devDependencies": { diff --git a/packages/sdk/src/base.ts b/packages/sdk/src/base.ts index 6ed7652d..52373ce2 100644 --- a/packages/sdk/src/base.ts +++ b/packages/sdk/src/base.ts @@ -1,34 +1,19 @@ import { unzlibSync, zlibSync } from 'fflate' +import SoraE2EE from '@sora/e2ee' import { + LyraState, createLyraWorker, isLyraInitialized, - LyraState, - transformPcmToLyra, transformLyraToPcm, + transformPcmToLyra, } from './lyra' -import { - ConnectError, - createDataChannelData, - createDataChannelEvent, - createDataChannelMessageEvent, - createSignalingEvent, - createSignalingMessage, - createTimelineEvent, - getPreKeyBundle, - getSignalingNotifyAuthnMetadata, - getSignalingNotifyData, - isFirefox, - isSafari, - parseDataChannelEventData, - trace, -} from './utils' import { AudioCodecType, Callbacks, ConnectionOptions, - JSONType, DataChannelConfiguration, + JSONType, RTCEncodedAudioFrame, SignalingConnectMessage, SignalingMessage, @@ -48,7 +33,22 @@ import { SoraCloseEventType, TransportType, } from './types' -import SoraE2EE from '@sora/e2ee' +import { + ConnectError, + createDataChannelData, + createDataChannelEvent, + createDataChannelMessageEvent, + createSignalingEvent, + createSignalingMessage, + createTimelineEvent, + getPreKeyBundle, + getSignalingNotifyAuthnMetadata, + getSignalingNotifyData, + isFirefox, + isSafari, + parseDataChannelEventData, + trace, +} from './utils' declare global { interface Algorithm { @@ -90,7 +90,7 @@ export default class ConnectionBase { /** * PeerConnection に渡す configuration */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any + // biome-ignore lint/suspicious/noExplicitAny: constraints: any /** * デバッグフラグ @@ -181,6 +181,7 @@ export default class ConnectionBase { * シグナリング type offer に含まれる DataChannel レコード */ private signalingOfferMessageDataChannels: { + // biome-ignore lint/suspicious/noRedeclare: 後で対応する [key in string]?: SignalingOfferMessageDataChannel } /** @@ -987,7 +988,7 @@ export default class ConnectionBase { if (this.options.e2ee === true && this.e2ee) { if (!this.connectionId) { const error = new Error() - error.message = `E2EE failed. Self connectionId is null` + error.message = 'E2EE failed. Self connectionId is null' throw error } this.e2ee.clearWorker() @@ -1059,7 +1060,7 @@ export default class ConnectionBase { this.writeWebSocketSignalingLog('signaling-url-candidate', { type: 'close', url: ws.url, - message: `WebSocket closed`, + message: 'WebSocket closed', code: event.code, reason: event.reason, }) @@ -1073,7 +1074,7 @@ export default class ConnectionBase { this.writeWebSocketSignalingLog('signaling-url-candidate', { type: 'error', url: ws.url, - message: `Failed to connect WebSocket`, + message: 'Failed to connect WebSocket', }) if (ws) { ws.onclose = null @@ -1165,32 +1166,32 @@ export default class ConnectionBase { throw new Error('Received invalid signaling data') } const message = JSON.parse(event.data) as SignalingMessage - if (message.type == 'offer') { + if (message.type === 'offer') { this.writeWebSocketSignalingLog('onmessage-offer', message) this.signalingOnMessageTypeOffer(message) this.connectedSignalingUrl = ws.url resolve(message) - } else if (message.type == 'update') { + } else if (message.type === 'update') { this.writeWebSocketSignalingLog('onmessage-update', message) await this.signalingOnMessageTypeUpdate(message) - } else if (message.type == 're-offer') { + } else if (message.type === 're-offer') { this.writeWebSocketSignalingLog('onmessage-re-offer', message) await this.signalingOnMessageTypeReOffer(message) - } else if (message.type == 'ping') { + } else if (message.type === 'ping') { await this.signalingOnMessageTypePing(message) - } else if (message.type == 'push') { + } else if (message.type === 'push') { this.callbacks.push(message, 'websocket') - } else if (message.type == 'notify') { + } else if (message.type === 'notify') { if (message.event_type === 'connection.created') { this.writeWebSocketTimelineLog('notify-connection.created', message) } else if (message.event_type === 'connection.destroyed') { this.writeWebSocketTimelineLog('notify-connection.destroyed', message) } this.signalingOnMessageTypeNotify(message, 'websocket') - } else if (message.type == 'switched') { + } else if (message.type === 'switched') { this.writeWebSocketSignalingLog('onmessage-switched', message) this.signalingOnMessageTypeSwitched(message) - } else if (message.type == 'redirect') { + } else if (message.type === 'redirect') { this.writeWebSocketSignalingLog('onmessage-redirect', message) try { const redirectMessage = await this.signalingOnMessageTypeRedirect(message) @@ -1219,7 +1220,7 @@ export default class ConnectionBase { if (signalingMessage.e2ee && this.e2ee) { const initResult = await this.e2ee.init() // @ts-ignore signalingMessage の e2ee が true の場合は signalingNotifyMetadata が必ず object になる - signalingMessage['signaling_notify_metadata']['pre_key_bundle'] = initResult + signalingMessage.signaling_notify_metadata.pre_key_bundle = initResult } this.trace('SIGNALING CONNECT MESSAGE', signalingMessage) if (ws) { @@ -1383,7 +1384,9 @@ export default class ConnectionBase { * @param sdp offer SDP * @returns 処理後の SDP */ - private processOfferSdp(sdp: string): string { + private processOfferSdp(offerSdp: string): string { + // lint 対応で引数を変更したりしないようにしてる + let sdp = offerSdp if (isFirefox()) { // 同じ mid が採用される際にはもう使用されない transceiver を解放するために // port に 0 が指定された SDP が送られてくる。 @@ -1670,7 +1673,7 @@ export default class ConnectionBase { reject(error) } this.ws.onerror = (_) => { - const error = new ConnectError(`Signaling failed. WebSocket onerror was called`) + const error = new ConnectError('Signaling failed. WebSocket onerror was called') this.writeWebSocketSignalingLog('onerror', error) this.signalingTerminate() reject(error) @@ -1917,7 +1920,7 @@ export default class ConnectionBase { const message = new Uint8Array(data) const result = this.e2ee.receiveMessage(message) this.e2ee.postRemoteSecretKeyMaterials(result) - result.messages.forEach((message) => { + result.messages.filter((message) => { this.sendE2EEMessage(message.buffer) }) } @@ -1966,7 +1969,7 @@ export default class ConnectionBase { * シグナリングサーバーに type re-answer を投げるメソッド */ private sendReAnswer(): void { - if (this.pc && this.pc.localDescription) { + if (this.pc?.localDescription) { this.trace('RE ANSWER SDP', this.pc.localDescription.sdp) this.sendSignalingMessage({ type: 're-answer', sdp: this.pc.localDescription.sdp }) } @@ -2031,7 +2034,7 @@ export default class ConnectionBase { if (preKeyBundle && this.e2ee && connectionId) { const result = this.e2ee.startSession(connectionId, preKeyBundle) this.e2ee.postRemoteSecretKeyMaterials(result) - result.messages.forEach((message) => { + result.messages.filter((message) => { this.sendE2EEMessage(message.buffer) }) // messages を送信し終えてから、selfSecretKeyMaterial を更新する @@ -2043,7 +2046,7 @@ export default class ConnectionBase { } } const data = getSignalingNotifyData(message) - data.forEach((metadata) => { + data.filter((metadata) => { const authnMetadata = getSignalingNotifyAuthnMetadata(metadata) const preKeyBundle = getPreKeyBundle(authnMetadata) const connectionId = metadata.connection_id @@ -2063,7 +2066,7 @@ export default class ConnectionBase { result.selfSecretKeyMaterial, 5000, ) - result.messages.forEach((message) => { + result.messages.filter((message) => { this.sendE2EEMessage(message.buffer) }) this.e2ee.postRemoveRemoteDeriveKey(connectionId) @@ -2082,7 +2085,7 @@ export default class ConnectionBase { if (!this.ws) { return } - if (message['ignore_disconnect_websocket']) { + if (message.ignore_disconnect_websocket) { if (this.ws) { this.ws.onclose = null this.ws.close() @@ -2142,6 +2145,7 @@ export default class ConnectionBase { return stats } const reports = await this.pc.getStats() + // biome-ignore lint/complexity/noForEach: RTCStatsReport であって Array ではない reports.forEach((s) => { stats.push(s as RTCStatsReport) }) @@ -2469,7 +2473,7 @@ export default class ConnectionBase { if (this.options.e2ee && this.e2ee) { return this.e2ee.selfFingerprint() } - return + return undefined } /** @@ -2479,7 +2483,7 @@ export default class ConnectionBase { if (this.options.e2ee && this.e2ee) { return this.e2ee.remoteFingerprints() } - return + return undefined } /** diff --git a/packages/sdk/src/lyra.ts b/packages/sdk/src/lyra.ts index efdb6433..4798f2a8 100644 --- a/packages/sdk/src/lyra.ts +++ b/packages/sdk/src/lyra.ts @@ -2,11 +2,11 @@ import { type RTCEncodedAudioFrame } from './types' import { LYRA_VERSION, - LyraEncoder, LyraDecoder, - LyraModule, - LyraEncoderOptions, LyraDecoderOptions, + LyraEncoder, + LyraEncoderOptions, + LyraModule, } from '@shiguredo/lyra-wasm' /** @@ -269,7 +269,7 @@ export class LyraParams { throw new Error(`Lyra parameter 'usedtx' is not found in media description: ${media}`) } - return new LyraParams(version[1], Number(bitrate[1]), usedtx[1] == '1') + return new LyraParams(version[1], Number(bitrate[1]), usedtx[1] === '1') } /** @@ -336,7 +336,7 @@ export class LyraState { .replace(/109 lyra[/]16000[/]1/, '110 opus/48000/2') .replace(/a=fmtp:109 .*/, 'a=rtpmap:109 L16/16000\r\na=ptime:20') } - replacedSdp += 'm=' + media + replacedSdp += `m=${media}` } return replacedSdp } @@ -366,7 +366,7 @@ export class LyraState { .replace(/a=rtpmap:110 opus[/]48000[/]2/, 'a=rtpmap:109 L16/16000') .replace(/a=fmtp:110 .*/, 'a=ptime:20') } - replacedSdp += 'm=' + media + replacedSdp += `m=${media}` } return replacedSdp } @@ -402,7 +402,7 @@ export class LyraState { .replace(/a=rtpmap:109 L16[/]16000/, 'a=rtpmap:109 lyra/16000/1') .replace(/a=ptime:20/, params.toFmtpString()) } - replacedSdp += 'm=' + media + replacedSdp += `m=${media}` } return replacedSdp diff --git a/packages/sdk/src/lyra_worker.ts b/packages/sdk/src/lyra_worker.ts index 62302db3..55f2389c 100644 --- a/packages/sdk/src/lyra_worker.ts +++ b/packages/sdk/src/lyra_worker.ts @@ -1,7 +1,7 @@ -import { transformPcmToLyra, transformLyraToPcm } from './lyra' +import { transformLyraToPcm, transformPcmToLyra } from './lyra' import { type RTCEncodedAudioFrame } from './types' -import { LyraEncoder, LyraEncoderState, LyraDecoder, LyraDecoderState } from '@shiguredo/lyra-wasm' +import { LyraDecoder, LyraDecoderState, LyraEncoder, LyraEncoderState } from '@shiguredo/lyra-wasm' function createSenderTransform(encoderState: LyraEncoderState) { const encoder = LyraEncoder.fromState(encoderState) @@ -44,17 +44,18 @@ type OnTransformMessage = { } declare global { + // biome-ignore lint/style/useConst: 判断が現時点で難しいため let onrtctransform: (msg: OnTransformMessage) => void } onrtctransform = (msg: OnTransformMessage) => { - if (msg.transformer.options.name == 'senderTransform') { + if (msg.transformer.options.name === 'senderTransform') { const transform = createSenderTransform(msg.transformer.options.lyraEncoder) msg.transformer.readable .pipeThrough(transform) .pipeTo(msg.transformer.writable) .catch((e) => console.warn(e)) - } else if (msg.transformer.options.name == 'receiverTransform') { + } else if (msg.transformer.options.name === 'receiverTransform') { const transform = createReceiverTransform(msg.transformer.options.lyraDecoder) msg.transformer.readable .pipeThrough(transform) diff --git a/packages/sdk/src/publisher.ts b/packages/sdk/src/publisher.ts index 603cdbbf..a00881f9 100644 --- a/packages/sdk/src/publisher.ts +++ b/packages/sdk/src/publisher.ts @@ -56,7 +56,7 @@ export default class ConnectionPublisher extends ConnectionBase { this.startE2EE() await this.connectPeerConnection(signalingMessage) await this.setRemoteDescription(signalingMessage) - stream.getTracks().forEach((track) => { + stream.getTracks().filter((track) => { if (this.pc) { this.pc.addTrack(track, stream) } @@ -135,7 +135,7 @@ export default class ConnectionPublisher extends ConnectionBase { } } await this.setRemoteDescription(signalingMessage) - stream.getTracks().forEach((track) => { + stream.getTracks().filter((track) => { if (this.pc) { this.pc.addTrack(track, stream) } diff --git a/packages/sdk/src/subscriber.ts b/packages/sdk/src/subscriber.ts index e0f9ed99..ad006d89 100644 --- a/packages/sdk/src/subscriber.ts +++ b/packages/sdk/src/subscriber.ts @@ -15,6 +15,7 @@ export default class ConnectionSubscriber extends ConnectionBase { * * @public */ + // biome-ignore lint/suspicious/noConfusingVoidType: stream が なのでどうしようもない async connect(): Promise { if (this.options.multistream) { await Promise.race([ diff --git a/packages/sdk/src/types.ts b/packages/sdk/src/types.ts index 71e3be09..b8b28662 100644 --- a/packages/sdk/src/types.ts +++ b/packages/sdk/src/types.ts @@ -352,7 +352,7 @@ export type TimelineEventLogType = 'websocket' | 'datachannel' | 'peerconnection export interface SignalingEvent extends Event { transportType: TransportType - // eslint-disable-next-line @typescript-eslint/no-explicit-any + // biome-ignore lint/suspicious/noExplicitAny: data?: any } @@ -367,7 +367,7 @@ export interface DataChannelEvent extends Event { export interface TimelineEvent extends Event { logType: TimelineEventLogType - // eslint-disable-next-line @typescript-eslint/no-explicit-any + // biome-ignore lint/suspicious/noExplicitAny: data?: any dataChannelId?: number | null dataChannelLabel?: string diff --git a/packages/sdk/src/utils.ts b/packages/sdk/src/utils.ts index bf84937c..910f9ac7 100644 --- a/packages/sdk/src/utils.ts +++ b/packages/sdk/src/utils.ts @@ -1,19 +1,19 @@ import { unzlibSync } from 'fflate' import { - ConnectionOptions, Browser, - JSONType, + ConnectionOptions, DataChannelConfiguration, DataChannelEvent, DataChannelMessageEvent, + JSONType, PreKeyBundle, - SignalingConnectMessage, SignalingConnectDataChannel, + SignalingConnectMessage, SignalingEvent, - SignalingNotifyMetadata, SignalingNotifyConnectionCreated, SignalingNotifyConnectionDestroyed, + SignalingNotifyMetadata, TimelineEvent, TimelineEventLogType, TransportType, @@ -223,7 +223,7 @@ export function createSignalingMessage( 'videoAV1Params', ] const copyOptions = Object.assign({}, options) - ;(Object.keys(copyOptions) as (keyof ConnectionOptions)[]).forEach((key) => { + ;(Object.keys(copyOptions) as (keyof ConnectionOptions)[]).filter((key) => { if (key === 'audio' && typeof copyOptions[key] === 'boolean') { return } @@ -254,17 +254,17 @@ export function createSignalingMessage( if (message.audio && hasAudioProperty) { message.audio = {} if ('audioCodecType' in copyOptions) { - message.audio['codec_type'] = copyOptions.audioCodecType + message.audio.codec_type = copyOptions.audioCodecType } if ('audioBitRate' in copyOptions) { - message.audio['bit_rate'] = copyOptions.audioBitRate + message.audio.bit_rate = copyOptions.audioBitRate } } const hasAudioOpusParamsProperty = Object.keys(copyOptions).some((key) => { return 0 <= audioOpusParamsPropertyKeys.indexOf(key) }) if (message.audio && hasAudioOpusParamsProperty) { - if (typeof message.audio != 'object') { + if (typeof message.audio !== 'object') { message.audio = {} } message.audio.opus_params = {} @@ -294,8 +294,8 @@ export function createSignalingMessage( } } - if (message.audio && options.audioCodecType == 'LYRA') { - if (typeof message.audio != 'object') { + if (message.audio && options.audioCodecType === 'LYRA') { + if (typeof message.audio !== 'object') { message.audio = {} } @@ -317,19 +317,19 @@ export function createSignalingMessage( if (message.video && hasVideoProperty) { message.video = {} if ('videoCodecType' in copyOptions) { - message.video['codec_type'] = copyOptions.videoCodecType + message.video.codec_type = copyOptions.videoCodecType } if ('videoBitRate' in copyOptions) { - message.video['bit_rate'] = copyOptions.videoBitRate + message.video.bit_rate = copyOptions.videoBitRate } if ('videoVP9Params' in copyOptions) { - message.video['vp9_params'] = copyOptions.videoVP9Params + message.video.vp9_params = copyOptions.videoVP9Params } if ('videoH264Params' in copyOptions) { - message.video['h264_params'] = copyOptions.videoH264Params + message.video.h264_params = copyOptions.videoH264Params } if ('videoAV1Params' in copyOptions) { - message.video['av1_params'] = copyOptions.videoAV1Params + message.video.av1_params = copyOptions.videoAV1Params } } @@ -353,7 +353,7 @@ export function createSignalingMessage( message.video = {} } if (message.video) { - message.video['codec_type'] = 'VP8' + message.video.codec_type = 'VP8' } } @@ -411,7 +411,7 @@ export function trace(clientId: string | null, title: string, value: unknown): v // 何もしない } if (keys && Array.isArray(keys)) { - keys.forEach((key) => { + keys.filter((key) => { console.group(key) dump((record as Record)[key]) console.groupEnd() @@ -425,18 +425,18 @@ export function trace(clientId: string | null, title: string, value: unknown): v } let prefix = '' if (window.performance) { - prefix = '[' + (window.performance.now() / 1000).toFixed(3) + ']' + prefix = `[${(window.performance.now() / 1000).toFixed(3)}]` } if (clientId) { - prefix = prefix + '[' + clientId + ']' + prefix = `${prefix}[${clientId}]` } if (console.info !== undefined && console.group !== undefined) { - console.group(prefix + ' ' + title) + console.group(`${prefix} ${title}`) dump(value) console.groupEnd() } else { - console.log(prefix + ' ' + title + '\n', value) + console.log(`${prefix} ${title}\n`, value) } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0e5fd554..cb169c97 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,24 +11,9 @@ importers: .: devDependencies: - '@typescript-eslint/eslint-plugin': - specifier: 6.11.0 - version: 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2) - '@typescript-eslint/parser': - specifier: 6.11.0 - version: 6.11.0(eslint@8.53.0)(typescript@5.2.2) - eslint: - specifier: 8.53.0 - version: 8.53.0 - eslint-config-prettier: - specifier: 9.0.0 - version: 9.0.0(eslint@8.53.0) - eslint-plugin-prettier: - specifier: 5.0.1 - version: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.1.0) - prettier: - specifier: 3.1.0 - version: 3.1.0 + '@biomejs/biome': + specifier: 1.3.3 + version: 1.3.3 serve: specifier: 14.2.1 version: 14.2.1 @@ -56,10 +41,13 @@ importers: version: 5.0.5(rollup@4.4.1) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.4.1)(typescript@5.2.2) + version: 11.1.5(rollup@4.4.1)(tslib@2.6.2)(typescript@5.2.2) rollup: specifier: 4.4.1 version: 4.4.1 + tslib: + specifier: 2.6.2 + version: 2.6.2 packages/go-wasm: {} @@ -83,7 +71,7 @@ importers: version: 5.0.5(rollup@4.4.1) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.4.1)(typescript@5.2.2) + version: 11.1.5(rollup@4.4.1)(tslib@2.6.2)(typescript@5.2.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -99,10 +87,73 @@ importers: packages: - /@aashutoshrathi/word-wrap@1.2.6: - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} + /@biomejs/biome@1.3.3: + resolution: {integrity: sha512-vTJn7RBzLWIabUuUIoEopO860YyBrbPEu4Pztfd28jRU5QD074hKZ9IQs24pFO6A2R296gaeYmN62f4u7pUruQ==} + engines: {node: '>=14.*'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@biomejs/cli-darwin-arm64': 1.3.3 + '@biomejs/cli-darwin-x64': 1.3.3 + '@biomejs/cli-linux-arm64': 1.3.3 + '@biomejs/cli-linux-x64': 1.3.3 + '@biomejs/cli-win32-arm64': 1.3.3 + '@biomejs/cli-win32-x64': 1.3.3 + dev: true + + /@biomejs/cli-darwin-arm64@1.3.3: + resolution: {integrity: sha512-2X87ZfbmWwe4NGukrUvnoYdI//muSgjNUCAHJ2DO+kS1sB7kDy1s6PN/IYyTJuqRcJtDuOnSpaUDE7KxR1YhtA==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [darwin] + requiresBuild: true dev: true + optional: true + + /@biomejs/cli-darwin-x64@1.3.3: + resolution: {integrity: sha512-t+7DWTCbSgHOBcPsGKuwS1qh1z9zbXFK8i8ktE18yW7iF/W0zI62k44fYqYeFJKlb0Q08aqUvez3L+AQJFsn+w==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-arm64@1.3.3: + resolution: {integrity: sha512-D8CvXaB8lkXXBQ6B3n0MXSSZFiE60+aNHorBLimVTtKiMod8QvAP425oQFZFul5wMXZqPLGTKFjXbAi/rvnc1A==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-x64@1.3.3: + resolution: {integrity: sha512-bqB05fwJnRZwRlcm/BS/s4qPickqiXZkiU/nOYvHApfsPeqgSHgv5HWoBYuSUjgqBbX3XZJArsC5dCcVW7vAJw==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-win32-arm64@1.3.3: + resolution: {integrity: sha512-muFOjAv1ONMfaJDlo4Ds+Qb9lkdSLM2XaxOe3AJPejSq3Vi0aRr51ZnE02BofMnL2sVsOA9cO54wibsuTcopbw==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-win32-x64@1.3.3: + resolution: {integrity: sha512-PMkMhS4smmmTMflxuZUx3REFSazEL9xsGscvZO1dKWI4ET23la+KxEM4TlSpjOyO66UerqSkuUlZecn0QhD63A==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true /@esbuild/android-arm64@0.19.5: resolution: {integrity: sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ==} @@ -302,63 +353,6 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.53.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.53.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@eslint-community/regexpp@4.10.0: - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - - /@eslint/eslintrc@2.1.3: - resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.23.0 - ignore: 5.3.0 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@eslint/js@8.53.0: - resolution: {integrity: sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@humanwhocodes/config-array@0.11.13: - resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 2.0.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true - - /@humanwhocodes/object-schema@2.0.1: - resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} - dev: true - /@jest/schemas@29.6.3: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -391,18 +385,6 @@ packages: fastq: 1.15.0 dev: true - /@pkgr/utils@2.4.2: - resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dependencies: - cross-spawn: 7.0.3 - fast-glob: 3.3.2 - is-glob: 4.0.3 - open: 9.1.0 - picocolors: 1.0.0 - tslib: 2.6.2 - dev: true - /@rollup/plugin-commonjs@25.0.7(rollup@4.4.1): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} @@ -453,7 +435,7 @@ packages: rollup: 4.4.1 dev: true - /@rollup/plugin-typescript@11.1.5(rollup@4.4.1)(typescript@5.2.2): + /@rollup/plugin-typescript@11.1.5(rollup@4.4.1)(tslib@2.6.2)(typescript@5.2.2): resolution: {integrity: sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -469,6 +451,7 @@ packages: '@rollup/pluginutils': 5.0.5(rollup@4.4.1) resolve: 1.22.8 rollup: 4.4.1 + tslib: 2.6.2 typescript: 5.2.2 dev: true @@ -614,19 +597,15 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.9.0 - dev: true - - /@types/json-schema@7.0.15: - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/node': 20.9.1 dev: true /@types/minimatch@5.1.2: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/node@20.9.0: - resolution: {integrity: sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==} + /@types/node@20.9.1: + resolution: {integrity: sha512-HhmzZh5LSJNS5O8jQKpJ/3ZcrrlG6L70hpGqMIAoM9YVD0YBRNWYsfwcXq8VnSjlNpCpgLzMXdiPo+dxcvSmiA==} dependencies: undici-types: 5.26.5 dev: true @@ -635,145 +614,6 @@ packages: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true - /@types/semver@7.5.5: - resolution: {integrity: sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==} - dev: true - - /@typescript-eslint/eslint-plugin@6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-uXnpZDc4VRjY4iuypDBKzW1rz9T5YBBK0snMn8MaTSNd2kMlj50LnLBABELjJiOL5YHk7ZD8hbSpI9ubzqYI0w==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.11.0 - '@typescript-eslint/type-utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.11.0 - debug: 4.3.4 - eslint: 8.53.0 - graphemer: 1.4.0 - ignore: 5.3.0 - natural-compare: 1.4.0 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser@6.11.0(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-+whEdjk+d5do5nxfxx73oanLL9ghKO3EwM9kBCkUtWMRwWuPaFv9ScuqlYfQ6pAD6ZiJhky7TZ2ZYhrMsfMxVQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 6.11.0 - '@typescript-eslint/types': 6.11.0 - '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.11.0 - debug: 4.3.4 - eslint: 8.53.0 - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/scope-manager@6.11.0: - resolution: {integrity: sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.11.0 - '@typescript-eslint/visitor-keys': 6.11.0 - dev: true - - /@typescript-eslint/type-utils@6.11.0(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-nA4IOXwZtqBjIoYrJcYxLRO+F9ri+leVGoJcMW1uqr4r1Hq7vW5cyWrA43lFbpRvQ9XgNrnfLpIkO3i1emDBIA==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) - debug: 4.3.4 - eslint: 8.53.0 - ts-api-utils: 1.0.3(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/types@6.11.0: - resolution: {integrity: sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA==} - engines: {node: ^16.0.0 || >=18.0.0} - dev: true - - /@typescript-eslint/typescript-estree@6.11.0(typescript@5.2.2): - resolution: {integrity: sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 6.11.0 - '@typescript-eslint/visitor-keys': 6.11.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/utils@6.11.0(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.5 - '@typescript-eslint/scope-manager': 6.11.0 - '@typescript-eslint/types': 6.11.0 - '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) - eslint: 8.53.0 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/visitor-keys@6.11.0: - resolution: {integrity: sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.11.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - dev: true - /@vitest/expect@0.34.6: resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} dependencies: @@ -828,14 +668,6 @@ packages: negotiator: 0.6.3 dev: true - /acorn-jsx@5.3.2(acorn@8.11.2): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.11.2 - dev: true - /acorn-walk@8.3.0: resolution: {integrity: sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==} engines: {node: '>=0.4.0'} @@ -864,15 +696,6 @@ packages: indent-string: 4.0.0 dev: true - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: true - /ajv@8.11.0: resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} dependencies: @@ -927,10 +750,6 @@ packages: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} dev: true - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true - /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} @@ -948,11 +767,6 @@ packages: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true - /big-integer@1.6.51: - resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} - engines: {node: '>=0.6'} - dev: true - /boxen@7.0.0: resolution: {integrity: sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==} engines: {node: '>=14.16'} @@ -967,13 +781,6 @@ packages: wrap-ansi: 8.1.0 dev: true - /bplist-parser@0.2.0: - resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} - engines: {node: '>= 5.10.0'} - dependencies: - big-integer: 1.6.51 - dev: true - /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -999,13 +806,6 @@ packages: engines: {node: '>=6'} dev: true - /bundle-name@3.0.0: - resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} - engines: {node: '>=12'} - dependencies: - run-applescript: 5.0.0 - dev: true - /bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} @@ -1016,11 +816,6 @@ packages: engines: {node: '>=8'} dev: true - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true - /camelcase@7.0.1: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} @@ -1201,38 +996,11 @@ packages: engines: {node: '>=4.0.0'} dev: true - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true - /deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} dev: true - /default-browser-id@3.0.0: - resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} - engines: {node: '>=12'} - dependencies: - bplist-parser: 0.2.0 - untildify: 4.0.0 - dev: true - - /default-browser@4.0.0: - resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} - engines: {node: '>=14.16'} - dependencies: - bundle-name: 3.0.0 - default-browser-id: 3.0.0 - execa: 7.2.0 - titleize: 3.0.0 - dev: true - - /define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} - dev: true - /del@5.1.0: resolution: {integrity: sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==} engines: {node: '>=8'} @@ -1264,13 +1032,6 @@ packages: path-type: 4.0.0 dev: true - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - dev: true - /domexception@4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} @@ -1325,138 +1086,10 @@ packages: '@esbuild/win32-x64': 0.19.5 dev: true - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - dev: true - - /eslint-config-prettier@9.0.0(eslint@8.53.0): - resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - dependencies: - eslint: 8.53.0 - dev: true - - /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.1.0): - resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true - dependencies: - eslint: 8.53.0 - eslint-config-prettier: 9.0.0(eslint@8.53.0) - prettier: 3.1.0 - prettier-linter-helpers: 1.0.0 - synckit: 0.8.5 - dev: true - - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true - - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /eslint@8.53.0: - resolution: {integrity: sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.3 - '@eslint/js': 8.53.0 - '@humanwhocodes/config-array': 0.11.13 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.23.0 - graphemer: 1.4.0 - ignore: 5.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.11.2 - acorn-jsx: 5.3.2(acorn@8.11.2) - eslint-visitor-keys: 3.4.3 - dev: true - - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - dependencies: - estraverse: 5.3.0 - dev: true - - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - dependencies: - estraverse: 5.3.0 - dev: true - - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true - /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true - /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -1472,29 +1105,10 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 4.3.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - dev: true - /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true - /fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - dev: true - /fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} @@ -1506,14 +1120,6 @@ packages: micromatch: 4.0.5 dev: true - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true - - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true - /fast-url-parser@1.1.3: resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} dependencies: @@ -1530,13 +1136,6 @@ packages: resolution: {integrity: sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ==} dev: false - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flat-cache: 3.2.0 - dev: true - /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -1544,27 +1143,6 @@ packages: to-regex-range: 5.0.1 dev: true - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: true - - /flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flatted: 3.2.9 - keyv: 4.5.4 - rimraf: 3.0.2 - dev: true - - /flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} - dev: true - /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -1606,13 +1184,6 @@ packages: is-glob: 4.0.3 dev: true - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - dependencies: - is-glob: 4.0.3 - dev: true - /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -1635,13 +1206,6 @@ packages: once: 1.4.0 dev: true - /globals@13.23.0: - resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - /globby@10.0.2: resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} engines: {node: '>=8'} @@ -1656,26 +1220,10 @@ packages: slash: 3.0.0 dev: true - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.0 - merge2: 1.4.1 - slash: 3.0.0 - dev: true - /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true - /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -1721,11 +1269,6 @@ packages: engines: {node: '>=10.17.0'} dev: true - /human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} - dev: true - /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -1738,19 +1281,6 @@ packages: engines: {node: '>= 4'} dev: true - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: true - - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: true - /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} @@ -1790,12 +1320,6 @@ packages: hasBin: true dev: true - /is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - dev: true - /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -1813,14 +1337,6 @@ packages: is-extglob: 2.1.1 dev: true - /is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - dependencies: - is-docker: 3.0.0 - dev: true - /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true @@ -1860,11 +1376,6 @@ packages: engines: {node: '>=8'} dev: true - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -1876,13 +1387,6 @@ packages: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - dependencies: - argparse: 2.0.1 - dev: true - /jsdom@22.1.0: resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} engines: {node: '>=16'} @@ -1921,69 +1425,25 @@ packages: - utf-8-validate dev: true - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true - - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true - /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} dev: true - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true - /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true - /keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - dependencies: - json-buffer: 3.0.1 - dev: true - - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - /local-pkg@0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} dev: true - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - dev: true - - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true - /loupe@2.3.7: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} dependencies: get-func-name: 2.0.2 dev: true - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: true - /lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} dev: true @@ -2047,11 +1507,6 @@ packages: engines: {node: '>=6'} dev: true - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: true - /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -2099,10 +1554,6 @@ packages: hasBin: true dev: true - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true - /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -2115,13 +1566,6 @@ packages: path-key: 3.1.1 dev: true - /npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - path-key: 4.0.0 - dev: true - /nwsapi@2.2.7: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} dev: true @@ -2144,42 +1588,6 @@ packages: mimic-fn: 2.1.0 dev: true - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - dependencies: - mimic-fn: 4.0.0 - dev: true - - /open@9.1.0: - resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} - engines: {node: '>=14.16'} - dependencies: - default-browser: 4.0.0 - define-lazy-prop: 3.0.0 - is-inside-container: 1.0.0 - is-wsl: 2.2.0 - dev: true - - /optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} - dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - dev: true - /p-limit@4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2187,13 +1595,6 @@ packages: yocto-queue: 1.0.0 dev: true - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - dev: true - /p-map@3.0.0: resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} engines: {node: '>=8'} @@ -2201,24 +1602,12 @@ packages: aggregate-error: 3.1.0 dev: true - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - dev: true - /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.5.0 dev: true - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true - /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -2233,11 +1622,6 @@ packages: engines: {node: '>=8'} dev: true - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - dev: true - /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true @@ -2285,24 +1669,6 @@ packages: source-map-js: 1.0.2 dev: true - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true - - /prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - dependencies: - fast-diff: 1.3.0 - dev: true - - /prettier@3.1.0: - resolution: {integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==} - engines: {node: '>=14'} - hasBin: true - dev: true - /pretty-format@29.7.0: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2375,11 +1741,6 @@ packages: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true - /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -2432,13 +1793,6 @@ packages: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} dev: true - /run-applescript@5.0.0: - resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} - engines: {node: '>=12'} - dependencies: - execa: 5.1.1 - dev: true - /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -2464,14 +1818,6 @@ packages: xmlchars: 2.2.0 dev: true - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - /serve-handler@6.1.5: resolution: {integrity: sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==} dependencies: @@ -2589,21 +1935,11 @@ packages: engines: {node: '>=6'} dev: true - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - dev: true - /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} dev: true - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true - /strip-literal@1.3.0: resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} dependencies: @@ -2626,18 +1962,6 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /synckit@0.8.5: - resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} - engines: {node: ^14.18.0 || >=16.0.0} - dependencies: - '@pkgr/utils': 2.4.2 - tslib: 2.6.2 - dev: true - - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true - /tinybench@2.5.1: resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} dev: true @@ -2652,11 +1976,6 @@ packages: engines: {node: '>=14.0.0'} dev: true - /titleize@3.0.0: - resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} - engines: {node: '>=12'} - dev: true - /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -2681,36 +2000,15 @@ packages: punycode: 2.3.1 dev: true - /ts-api-utils@1.0.3(typescript@5.2.2): - resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} - engines: {node: '>=16.13.0'} - peerDependencies: - typescript: '>=4.2.0' - dependencies: - typescript: 5.2.2 - dev: true - /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - dev: true - /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} dev: true - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true - /type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} @@ -2749,11 +2047,6 @@ packages: engines: {node: '>= 4.0.0'} dev: true - /untildify@4.0.0: - resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} - engines: {node: '>=8'} - dev: true - /update-check@1.5.4: resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} dependencies: @@ -2779,7 +2072,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.6(@types/node@20.9.0): + /vite-node@0.34.6(@types/node@20.9.1): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -2789,7 +2082,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 5.0.0(@types/node@20.9.0) + vite: 5.0.0(@types/node@20.9.1) transitivePeerDependencies: - '@types/node' - less @@ -2801,7 +2094,7 @@ packages: - terser dev: true - /vite@5.0.0(@types/node@20.9.0): + /vite@5.0.0(@types/node@20.9.1): resolution: {integrity: sha512-ESJVM59mdyGpsiNAeHQOR/0fqNoOyWPYesFto8FFZugfmhdHx8Fzd8sF3Q/xkVhZsyOxHfdM7ieiVAorI9RjFw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -2829,7 +2122,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.9.0 + '@types/node': 20.9.1 esbuild: 0.19.5 postcss: 8.4.31 rollup: 4.4.1 @@ -2870,7 +2163,7 @@ packages: dependencies: '@types/chai': 4.3.10 '@types/chai-subset': 1.3.5 - '@types/node': 20.9.0 + '@types/node': 20.9.1 '@vitest/expect': 0.34.6 '@vitest/runner': 0.34.6 '@vitest/snapshot': 0.34.6 @@ -2889,8 +2182,8 @@ packages: strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.7.0 - vite: 5.0.0(@types/node@20.9.0) - vite-node: 0.34.6(@types/node@20.9.0) + vite: 5.0.0(@types/node@20.9.1) + vite-node: 0.34.6(@types/node@20.9.1) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -3001,15 +2294,6 @@ packages: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: true - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true - - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: true - /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'}