diff --git a/.vscode/settings.json b/.vscode/settings.json index fa3c066ad666..5e5138cf0856 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,5 +6,6 @@ "source.fixAll": true, "source.organizeImports": false }, - "unocss.root": "./packages/website" + "unocss.root": "./packages/website", + "typescript.tsdk": "node_modules/typescript/lib" } diff --git a/packages/actions/src/uploadCoverage/action.yml b/packages/actions/src/uploadCoverage/action.yml index 43044c758b25..7b0feb193a13 100644 --- a/packages/actions/src/uploadCoverage/action.yml +++ b/packages/actions/src/uploadCoverage/action.yml @@ -45,6 +45,12 @@ runs: files: ./packages/website/coverage/cobertura-coverage.xml flags: website + - name: Upload WS Coverage + uses: codecov/codecov-action@v3 + with: + files: ./packages/ws/coverage/cobertura-coverage.xml + flags: ws + - name: Upload Utilities Coverage uses: codecov/codecov-action@v3 with: diff --git a/packages/ws/.cliff-jumperrc.json b/packages/ws/.cliff-jumperrc.json new file mode 100644 index 000000000000..a9017bb623c5 --- /dev/null +++ b/packages/ws/.cliff-jumperrc.json @@ -0,0 +1,5 @@ +{ + "name": "ws", + "org": "discordjs", + "packagePath": "packages/ws" +} diff --git a/packages/ws/.eslintrc.json b/packages/ws/.eslintrc.json new file mode 100644 index 000000000000..99ef7cec8051 --- /dev/null +++ b/packages/ws/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "../../.eslintrc.json" +} diff --git a/packages/ws/.gitignore b/packages/ws/.gitignore new file mode 100644 index 000000000000..86b93e929ae6 --- /dev/null +++ b/packages/ws/.gitignore @@ -0,0 +1,27 @@ +# Packages +node_modules/ + +# Log files +logs/ +*.log +npm-debug.log* + +# Runtime data +pids +*.pid +*.seed + +# Env +.env + +# Dist +dist/ +typings/ +docs/**/* +!docs/index.json +!docs/README.md + +# Miscellaneous +.tmp/ +coverage/ +tsconfig.tsbuildinfo diff --git a/packages/ws/.prettierignore b/packages/ws/.prettierignore new file mode 100644 index 000000000000..a8f763a7cea5 --- /dev/null +++ b/packages/ws/.prettierignore @@ -0,0 +1,9 @@ +# Autogenerated +CHANGELOG.md +.turbo +dist/ +docs/**/* +!docs/index.yml +!docs/README.md +coverage/ +tsup.config.*.mjs diff --git a/packages/ws/.prettierrc.js b/packages/ws/.prettierrc.js new file mode 100644 index 000000000000..f004026c7647 --- /dev/null +++ b/packages/ws/.prettierrc.js @@ -0,0 +1 @@ +module.exports = require('../../.prettierrc.json'); diff --git a/packages/ws/LICENSE b/packages/ws/LICENSE new file mode 100644 index 000000000000..f9786ff8f379 --- /dev/null +++ b/packages/ws/LICENSE @@ -0,0 +1,191 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2022 Noel Buechler + Copyright 2022 Charlotte Cristea + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/packages/ws/README.md b/packages/ws/README.md new file mode 100644 index 000000000000..d86cd89bd81b --- /dev/null +++ b/packages/ws/README.md @@ -0,0 +1,124 @@ +
+
+

+ discord.js +

+
+

+ Discord server + npm version + npm downloads + Build status + Code coverage +

+
+ +## About + +`@discordjs/ws` is a powerful wrapper around Discord's gateway. + +## Installation + +**Node.js 16.9.0 or newer is required.** + +```sh-session +npm install @discordjs/ws +yarn add @discordjs/ws +pnpm add @discordjs/ws +``` + +## Example usage + +```ts +import { WebSocketManager, WebSocketShardEvents } from '@discordjs/ws'; +import { REST } from '@discordjs/rest'; + +const rest = new REST().setToken(process.env.DISCORD_TOKEN); +// This example will spawn Discord's recommended shard count, all under the current process. +const manager = new WebSocketManager({ + token: process.env.DISCORD_TOKEN, + intents: 0, // for no intents + rest, +}); + +await manager.connect(); +``` + +### Specify shards + +```ts +// Spawn 4 shards +const manager = new WebSocketManager({ + token: process.env.DISCORD_TOKEN, + intents: 0, + rest, + shardCount: 4, +}); + +// The manager also supports being responsible for only a subset of your shards: + +// Your bot will run 8 shards overall +// This manager will only take care of 0, 2, 4, and 6 +const manager = new WebSocketManager({ + token: process.env.DISCORD_TOKEN, + intents: 0, + rest, + shardCount: 8, + shardIds: [0, 2, 4, 6], +}); + +// Alternatively, if your shards are consecutive, you can pass in a range +const manager = new WebSocketManager({ + token: process.env.DISCORD_TOKEN, + intents: 0, + rest, + shardCount: 8, + shardIds: { + start: 0, + end: 4, + }, +}); +``` + +### Specify `worker_threads` + +You can also have the shards spawn in worker threads: + +```ts +import { WebSocketManager, WebSocketShardEvents, WorkerShardingStrategy } from '@discordjs/ws'; + +const manager = new WebSocketManager({ + token: process.env.DISCORD_TOKEN, + intents: 0, + rest, + shardCount: 6, +}); + +// This will cause 3 workers to spawn, 2 shards per each +manager.setStrategy(new WorkerShardingStrategy(manager, { shardsPerWorker: 2 })); +// Or maybe you want all your shards under a single worker +manager.setStrategy(new WorkerShardingStrategy(manager, { shardsPerWorker: 'all' })); +``` + +## Links + +- [Website](https://discord.js.org/) ([source](https://github.com/discordjs/discord.js/tree/main/packages/website)) +- [Documentation](https://discord.js.org/#/docs/ws) +- [Guide](https://discordjs.guide/) ([source](https://github.com/discordjs/guide)) + See also the [Update Guide](https://discordjs.guide/additional-info/changes-in-v13.html), including updated and removed items in the library. +- [discord.js Discord server](https://discord.gg/djs) +- [Discord API Discord server](https://discord.gg/discord-api) +- [GitHub](https://github.com/discordjs/discord.js/tree/main/packages/ws) +- [npm](https://www.npmjs.com/package/@discordjs/ws) +- [Related libraries](https://discord.com/developers/docs/topics/community-resources#libraries) + +## Contributing + +Before creating an issue, please ensure that it hasn't already been reported/suggested, and double-check the +[documentation](https://discord.js.org/#/docs/ws). +See [the contribution guide](https://github.com/discordjs/discord.js/blob/main/.github/CONTRIBUTING.md) if you'd like to submit a PR. + +## Help + +If you don't understand something in the documentation, you are experiencing problems, or you just need a gentle +nudge in the right direction, please don't hesitate to join our official [discord.js Server](https://discord.gg/djs). diff --git a/packages/ws/__tests__/strategy/WorkerContextFetchingStrategy.test.ts b/packages/ws/__tests__/strategy/WorkerContextFetchingStrategy.test.ts new file mode 100644 index 000000000000..b0294c3eeb04 --- /dev/null +++ b/packages/ws/__tests__/strategy/WorkerContextFetchingStrategy.test.ts @@ -0,0 +1,83 @@ +import { REST } from '@discordjs/rest'; +import { MockAgent, Interceptable } from 'undici'; +import { beforeEach, test, vi, expect } from 'vitest'; +import { + managerToFetchingStrategyOptions, + WorkerContextFetchingStrategy, + WorkerRecievePayload, + WorkerSendPayload, + WebSocketManager, + WorkerSendPayloadOp, + WorkerRecievePayloadOp, +} from '../../src'; + +let mockAgent: MockAgent; +let mockPool: Interceptable; + +beforeEach(() => { + mockAgent = new MockAgent(); + mockAgent.disableNetConnect(); + mockPool = mockAgent.get('https://discord.com'); +}); + +const session = { + shardId: 0, + shardCount: 1, + sequence: 123, + sessionId: 'abc', +}; + +vi.mock('node:worker_threads', async () => { + const { EventEmitter }: typeof import('node:events') = await vi.importActual('node:events'); + class MockParentPort extends EventEmitter { + public postMessage(message: WorkerRecievePayload) { + if (message.op === WorkerRecievePayloadOp.RetrieveSessionInfo) { + const response: WorkerSendPayload = { + op: WorkerSendPayloadOp.SessionInfoResponse, + nonce: message.nonce, + session, + }; + this.emit('message', response); + } + } + } + + return { + parentPort: new MockParentPort(), + isMainThread: false, + }; +}); + +test('session info', async () => { + const rest = new REST().setAgent(mockAgent).setToken('A-Very-Fake-Token'); + const manager = new WebSocketManager({ token: 'A-Very-Fake-Token', intents: 0, rest }); + + mockPool + .intercept({ + path: '/api/v10/gateway/bot', + method: 'GET', + }) + .reply(() => ({ + data: { + shards: 1, + session_start_limit: { + max_concurrency: 3, + reset_after: 60, + remaining: 3, + total: 3, + }, + url: 'wss://gateway.discord.gg', + }, + statusCode: 200, + responseOptions: { + headers: { + 'content-type': 'application/json', + }, + }, + })); + + const strategy = new WorkerContextFetchingStrategy(await managerToFetchingStrategyOptions(manager)); + + strategy.updateSessionInfo(0, session); + expect(await strategy.retrieveSessionInfo(0)).toEqual(session); +}); diff --git a/packages/ws/__tests__/strategy/WorkerShardingStrategy.test.ts b/packages/ws/__tests__/strategy/WorkerShardingStrategy.test.ts new file mode 100644 index 000000000000..b0c18fc286f1 --- /dev/null +++ b/packages/ws/__tests__/strategy/WorkerShardingStrategy.test.ts @@ -0,0 +1,195 @@ +import { REST } from '@discordjs/rest'; +import { + GatewayDispatchEvents, + GatewayDispatchPayload, + GatewayOpcodes, + GatewaySendPayload, +} from 'discord-api-types/v10'; +import { MockAgent, Interceptable } from 'undici'; +import { beforeEach, test, vi, expect, afterEach } from 'vitest'; +import { + WorkerRecievePayload, + WorkerSendPayload, + WebSocketManager, + WorkerSendPayloadOp, + WorkerRecievePayloadOp, + WorkerShardingStrategy, + WebSocketShardEvents, + SessionInfo, +} from '../../src'; + +let mockAgent: MockAgent; +let mockPool: Interceptable; + +const mockConstructor = vi.fn(); +const mockSend = vi.fn(); +const mockTerminate = vi.fn(); + +const memberChunkData: GatewayDispatchPayload = { + op: GatewayOpcodes.Dispatch, + s: 123, + t: GatewayDispatchEvents.GuildMembersChunk, + d: { + guild_id: '123', + members: [], + }, +}; + +const sessionInfo: SessionInfo = { + shardId: 0, + shardCount: 2, + sequence: 123, + sessionId: 'abc', +}; + +vi.mock('node:worker_threads', async () => { + const { EventEmitter }: typeof import('node:events') = await vi.importActual('node:events'); + class MockWorker extends EventEmitter { + public constructor(...args: any[]) { + super(); + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + mockConstructor(...args); + // need to delay this by an event loop cycle to allow the strategy to attach a listener + setImmediate(() => this.emit('online')); + } + + public postMessage(message: WorkerSendPayload) { + switch (message.op) { + case WorkerSendPayloadOp.Connect: { + const response: WorkerRecievePayload = { + op: WorkerRecievePayloadOp.Connected, + shardId: message.shardId, + }; + this.emit('message', response); + break; + } + + case WorkerSendPayloadOp.Destroy: { + const response: WorkerRecievePayload = { + op: WorkerRecievePayloadOp.Destroyed, + shardId: message.shardId, + }; + this.emit('message', response); + break; + } + + case WorkerSendPayloadOp.Send: { + if (message.payload.op === GatewayOpcodes.RequestGuildMembers) { + const response: WorkerRecievePayload = { + op: WorkerRecievePayloadOp.Event, + shardId: message.shardId, + event: WebSocketShardEvents.Dispatch, + data: memberChunkData, + }; + this.emit('message', response); + + // Fetch session info + const sessionFetch: WorkerRecievePayload = { + op: WorkerRecievePayloadOp.RetrieveSessionInfo, + shardId: message.shardId, + nonce: Math.random(), + }; + this.emit('message', sessionFetch); + } + + mockSend(message.shardId, message.payload); + break; + } + + case WorkerSendPayloadOp.SessionInfoResponse: { + message.session ??= sessionInfo; + + const session: WorkerRecievePayload = { + op: WorkerRecievePayloadOp.UpdateSessionInfo, + shardId: message.session.shardId, + session: { ...message.session, sequence: message.session.sequence + 1 }, + }; + this.emit('message', session); + break; + } + } + } + + public terminate = mockTerminate; + } + + return { + Worker: MockWorker, + }; +}); + +beforeEach(() => { + mockAgent = new MockAgent(); + mockAgent.disableNetConnect(); + mockPool = mockAgent.get('https://discord.com'); +}); + +afterEach(() => { + mockConstructor.mockRestore(); + mockSend.mockRestore(); + mockTerminate.mockRestore(); +}); + +test('spawn, connect, send a message, session info, and destroy', async () => { + const rest = new REST().setAgent(mockAgent).setToken('A-Very-Fake-Token'); + + const mockRetrieveSessionInfo = vi.fn(); + const mockUpdateSessionInfo = vi.fn(); + const manager = new WebSocketManager({ + token: 'A-Very-Fake-Token', + intents: 0, + rest, + shardIds: [0, 1], + retrieveSessionInfo: mockRetrieveSessionInfo, + updateSessionInfo: mockUpdateSessionInfo, + }); + + const managerEmitSpy = vi.spyOn(manager, 'emit'); + + mockPool + .intercept({ + path: '/api/v10/gateway/bot', + method: 'GET', + }) + .reply(() => ({ + data: { + shards: 1, + session_start_limit: { + max_concurrency: 3, + reset_after: 60, + remaining: 3, + total: 3, + }, + url: 'wss://gateway.discord.gg', + }, + statusCode: 200, + responseOptions: { + headers: { + 'content-type': 'application/json', + }, + }, + })); + + const strategy = new WorkerShardingStrategy(manager, { shardsPerWorker: 'all' }); + manager.setStrategy(strategy); + + await manager.connect(); + expect(mockConstructor).toHaveBeenCalledWith( + expect.stringContaining('worker.cjs'), + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + expect.objectContaining({ workerData: expect.objectContaining({ shardIds: [0, 1] }) }), + ); + + const payload: GatewaySendPayload = { op: GatewayOpcodes.RequestGuildMembers, d: { guild_id: '123', limit: 0 } }; + await manager.send(0, payload); + expect(mockSend).toHaveBeenCalledWith(0, payload); + expect(managerEmitSpy).toHaveBeenCalledWith(WebSocketShardEvents.Dispatch, { + ...memberChunkData, + shardId: 0, + }); + expect(mockRetrieveSessionInfo).toHaveBeenCalledWith(0); + expect(mockUpdateSessionInfo).toHaveBeenCalledWith(0, { ...sessionInfo, sequence: sessionInfo.sequence + 1 }); + + await manager.destroy({ reason: 'souji is a soft boi :3' }); + expect(mockTerminate).toHaveBeenCalled(); +}); diff --git a/packages/ws/__tests__/util/IdentifyThrottler.test.ts b/packages/ws/__tests__/util/IdentifyThrottler.test.ts new file mode 100644 index 000000000000..591263f5ad5e --- /dev/null +++ b/packages/ws/__tests__/util/IdentifyThrottler.test.ts @@ -0,0 +1,46 @@ +import { setTimeout as sleep } from 'node:timers/promises'; +import { expect, Mock, test, vi } from 'vitest'; +import { IdentifyThrottler, WebSocketManager } from '../../src'; + +vi.mock('node:timers/promises', () => ({ + setTimeout: vi.fn(), +})); + +const fetchGatewayInformation = vi.fn(); + +const manager = { + fetchGatewayInformation, +} as unknown as WebSocketManager; + +const throttler = new IdentifyThrottler(manager); + +vi.useFakeTimers(); + +const NOW = vi.fn().mockReturnValue(Date.now()); +global.Date.now = NOW; + +test('wait for identify', async () => { + fetchGatewayInformation.mockReturnValue({ + session_start_limit: { + max_concurrency: 2, + }, + }); + + // First call should never wait + await throttler.waitForIdentify(); + expect(sleep).not.toHaveBeenCalled(); + + // Second call still won't wait because max_concurrency is 2 + await throttler.waitForIdentify(); + expect(sleep).not.toHaveBeenCalled(); + + // Third call should wait + await throttler.waitForIdentify(); + expect(sleep).toHaveBeenCalled(); + + (sleep as Mock).mockRestore(); + + // Fourth call shouldn't wait, because our max_concurrency is 2 and we waited for a reset + await throttler.waitForIdentify(); + expect(sleep).not.toHaveBeenCalled(); +}); diff --git a/packages/ws/__tests__/ws/WebSocketManager.test.ts b/packages/ws/__tests__/ws/WebSocketManager.test.ts new file mode 100644 index 000000000000..bf652971d4a4 --- /dev/null +++ b/packages/ws/__tests__/ws/WebSocketManager.test.ts @@ -0,0 +1,197 @@ +import { REST } from '@discordjs/rest'; +import { APIGatewayBotInfo, GatewayOpcodes, GatewaySendPayload } from 'discord-api-types/v10'; +import { MockAgent, Interceptable } from 'undici'; +import { beforeEach, describe, expect, test, vi } from 'vitest'; +import { IShardingStrategy, WebSocketManager } from '../../src'; + +vi.useFakeTimers(); + +let mockAgent: MockAgent; +let mockPool: Interceptable; + +beforeEach(() => { + mockAgent = new MockAgent(); + mockAgent.disableNetConnect(); + mockPool = mockAgent.get('https://discord.com'); +}); + +const NOW = vi.fn().mockReturnValue(Date.now()); +global.Date.now = NOW; + +test('fetch gateway information', async () => { + const rest = new REST().setAgent(mockAgent).setToken('A-Very-Fake-Token'); + const manager = new WebSocketManager({ token: 'A-Very-Fake-Token', intents: 0, rest }); + + const data: APIGatewayBotInfo = { + shards: 1, + session_start_limit: { + max_concurrency: 3, + reset_after: 60, + remaining: 3, + total: 3, + }, + url: 'wss://gateway.discord.gg', + }; + + const fetch = vi.fn(() => ({ + data, + statusCode: 200, + responseOptions: { + headers: { + 'content-type': 'application/json', + }, + }, + })); + + mockPool + .intercept({ + path: '/api/v10/gateway/bot', + method: 'GET', + }) + .reply(fetch); + + const initial = await manager.fetchGatewayInformation(); + expect(initial).toEqual(data); + expect(fetch).toHaveBeenCalledOnce(); + + fetch.mockRestore(); + + const cached = await manager.fetchGatewayInformation(); + expect(cached).toEqual(data); + expect(fetch).not.toHaveBeenCalled(); + + fetch.mockRestore(); + mockPool + .intercept({ + path: '/api/v10/gateway/bot', + method: 'GET', + }) + .reply(fetch); + + const forced = await manager.fetchGatewayInformation(true); + expect(forced).toEqual(data); + expect(fetch).toHaveBeenCalledOnce(); + + fetch.mockRestore(); + mockPool + .intercept({ + path: '/api/v10/gateway/bot', + method: 'GET', + }) + .reply(fetch); + + NOW.mockReturnValue(Infinity); + const cacheExpired = await manager.fetchGatewayInformation(); + expect(cacheExpired).toEqual(data); + expect(fetch).toHaveBeenCalledOnce(); +}); + +describe('get shard count', () => { + test('with shard count', async () => { + const rest = new REST().setAgent(mockAgent).setToken('A-Very-Fake-Token'); + const manager = new WebSocketManager({ token: 'A-Very-Fake-Token', intents: 0, rest, shardCount: 2 }); + + expect(await manager.getShardCount()).toBe(2); + }); + + test('with shard ids array', async () => { + const rest = new REST().setAgent(mockAgent).setToken('A-Very-Fake-Token'); + const shardIds = [5, 9]; + const manager = new WebSocketManager({ token: 'A-Very-Fake-Token', intents: 0, rest, shardIds }); + + expect(await manager.getShardCount()).toBe(shardIds.at(-1)! + 1); + }); + + test('with shard id range', async () => { + const rest = new REST().setAgent(mockAgent).setToken('A-Very-Fake-Token'); + const shardIds = { start: 5, end: 9 }; + const manager = new WebSocketManager({ token: 'A-Very-Fake-Token', intents: 0, rest, shardIds }); + + expect(await manager.getShardCount()).toBe(shardIds.end + 1); + }); +}); + +test('update shard count', async () => { + const rest = new REST().setAgent(mockAgent).setToken('A-Very-Fake-Token'); + const manager = new WebSocketManager({ token: 'A-Very-Fake-Token', intents: 0, rest, shardCount: 2 }); + + const data: APIGatewayBotInfo = { + shards: 1, + session_start_limit: { + max_concurrency: 3, + reset_after: 60, + remaining: 3, + total: 3, + }, + url: 'wss://gateway.discord.gg', + }; + + const fetch = vi.fn(() => ({ + data, + statusCode: 200, + responseOptions: { + headers: { + 'content-type': 'application/json', + }, + }, + })); + + mockPool + .intercept({ + path: '/api/v10/gateway/bot', + method: 'GET', + }) + .reply(fetch); + + expect(await manager.getShardCount()).toBe(2); + expect(fetch).not.toHaveBeenCalled(); + + fetch.mockRestore(); + mockPool + .intercept({ + path: '/api/v10/gateway/bot', + method: 'GET', + }) + .reply(fetch); + + await manager.updateShardCount(3); + expect(await manager.getShardCount()).toBe(3); + expect(fetch).toHaveBeenCalled(); +}); + +test('it handles passing in both shardIds and shardCount', async () => { + const rest = new REST().setAgent(mockAgent).setToken('A-Very-Fake-Token'); + const shardIds = { start: 2, end: 3 }; + const manager = new WebSocketManager({ token: 'A-Very-Fake-Token', intents: 0, rest, shardIds, shardCount: 4 }); + + expect(await manager.getShardCount()).toBe(4); + expect(await manager.getShardIds()).toStrictEqual([2, 3]); +}); + +test('strategies', async () => { + class MockStrategy implements IShardingStrategy { + public spawn = vi.fn(); + public connect = vi.fn(); + public destroy = vi.fn(); + public send = vi.fn(); + } + + const rest = new REST().setAgent(mockAgent).setToken('A-Very-Fake-Token'); + const shardIds = [0, 1, 2]; + const manager = new WebSocketManager({ token: 'A-Very-Fake-Token', intents: 0, rest, shardIds }); + + const strategy = new MockStrategy(); + manager.setStrategy(strategy); + + await manager.connect(); + expect(strategy.spawn).toHaveBeenCalledWith(shardIds); + expect(strategy.connect).toHaveBeenCalled(); + + const destroyOptions = { reason: ':3' }; + await manager.destroy(destroyOptions); + expect(strategy.destroy).toHaveBeenCalledWith(destroyOptions); + + const send: GatewaySendPayload = { op: GatewayOpcodes.RequestGuildMembers, d: { guild_id: '1234', limit: 0 } }; + await manager.send(0, send); + expect(strategy.send).toHaveBeenCalledWith(0, send); +}); diff --git a/packages/ws/api-extractor.json b/packages/ws/api-extractor.json new file mode 100644 index 000000000000..3845fd481642 --- /dev/null +++ b/packages/ws/api-extractor.json @@ -0,0 +1,376 @@ +/** + * Config file for API Extractor. For more info, please visit: https://api-extractor.com + */ +{ + "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", + + /** + * Optionally specifies another JSON config file that this file extends from. This provides a way for + * standard settings to be shared across multiple projects. + * + * If the path starts with "./" or "../", the path is resolved relative to the folder of the file that contains + * the "extends" field. Otherwise, the first path segment is interpreted as an NPM package name, and will be + * resolved using NodeJS require(). + * + * SUPPORTED TOKENS: none + * DEFAULT VALUE: "" + */ + // "extends": "./shared/api-extractor-base.json" + // "extends": "my-package/include/api-extractor-base.json" + + /** + * Determines the "" token that can be used with other config file settings. The project folder + * typically contains the tsconfig.json and package.json config files, but the path is user-defined. + * + * The path is resolved relative to the folder of the config file that contains the setting. + * + * The default value for "projectFolder" is the token "", which means the folder is determined by traversing + * parent folders, starting from the folder containing api-extractor.json, and stopping at the first folder + * that contains a tsconfig.json file. If a tsconfig.json file cannot be found in this way, then an error + * will be reported. + * + * SUPPORTED TOKENS: + * DEFAULT VALUE: "" + */ + // "projectFolder": "..", + + /** + * (REQUIRED) Specifies the .d.ts file to be used as the starting point for analysis. API Extractor + * analyzes the symbols exported by this module. + * + * The file extension must be ".d.ts" and not ".ts". + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + */ + "mainEntryPointFilePath": "/dist/index.d.ts", + + /** + * A list of NPM package names whose exports should be treated as part of this package. + * + * For example, suppose that Webpack is used to generate a distributed bundle for the project "library1", + * and another NPM package "library2" is embedded in this bundle. Some types from library2 may become part + * of the exported API for library1, but by default API Extractor would generate a .d.ts rollup that explicitly + * imports library2. To avoid this, we can specify: + * + * "bundledPackages": [ "library2" ], + * + * This would direct API Extractor to embed those types directly in the .d.ts rollup, as if they had been + * local files for library1. + */ + "bundledPackages": [], + + /** + * Determines how the TypeScript compiler engine will be invoked by API Extractor. + */ + "compiler": { + /** + * Specifies the path to the tsconfig.json file to be used by API Extractor when analyzing the project. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * Note: This setting will be ignored if "overrideTsconfig" is used. + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/tsconfig.json" + */ + // "tsconfigFilePath": "/tsconfig.json", + /** + * Provides a compiler configuration that will be used instead of reading the tsconfig.json file from disk. + * The object must conform to the TypeScript tsconfig schema: + * + * http://json.schemastore.org/tsconfig + * + * If omitted, then the tsconfig.json file will be read from the "projectFolder". + * + * DEFAULT VALUE: no overrideTsconfig section + */ + // "overrideTsconfig": { + // . . . + // } + /** + * This option causes the compiler to be invoked with the --skipLibCheck option. This option is not recommended + * and may cause API Extractor to produce incomplete or incorrect declarations, but it may be required when + * dependencies contain declarations that are incompatible with the TypeScript engine that API Extractor uses + * for its analysis. Where possible, the underlying issue should be fixed rather than relying on skipLibCheck. + * + * DEFAULT VALUE: false + */ + // "skipLibCheck": true, + }, + + /** + * Configures how the API report file (*.api.md) will be generated. + */ + "apiReport": { + /** + * (REQUIRED) Whether to generate an API report. + */ + "enabled": false + + /** + * The filename for the API report files. It will be combined with "reportFolder" or "reportTempFolder" to produce + * a full file path. + * + * The file extension should be ".api.md", and the string should not contain a path separator such as "\" or "/". + * + * SUPPORTED TOKENS: , + * DEFAULT VALUE: ".api.md" + */ + // "reportFileName": ".api.md", + + /** + * Specifies the folder where the API report file is written. The file name portion is determined by + * the "reportFileName" setting. + * + * The API report file is normally tracked by Git. Changes to it can be used to trigger a branch policy, + * e.g. for an API review. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/temp/" + */ + // "reportFolder": "/temp/", + + /** + * Specifies the folder where the temporary report file is written. The file name portion is determined by + * the "reportFileName" setting. + * + * After the temporary file is written to disk, it is compared with the file in the "reportFolder". + * If they are different, a production build will fail. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/temp/" + */ + // "reportTempFolder": "/temp/" + }, + + /** + * Configures how the doc model file (*.api.json) will be generated. + */ + "docModel": { + /** + * (REQUIRED) Whether to generate a doc model file. + */ + "enabled": true, + + /** + * The output path for the doc model file. The file extension should be ".api.json". + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/temp/.api.json" + */ + "apiJsonFilePath": "/docs/docs.api.json" + }, + + /** + * Configures how the .d.ts rollup file will be generated. + */ + "dtsRollup": { + /** + * (REQUIRED) Whether to generate the .d.ts rollup file. + */ + "enabled": false + + /** + * Specifies the output path for a .d.ts rollup file to be generated without any trimming. + * This file will include all declarations that are exported by the main entry point. + * + * If the path is an empty string, then this file will not be written. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/dist/.d.ts" + */ + // "untrimmedFilePath": "/dist/.d.ts", + + /** + * Specifies the output path for a .d.ts rollup file to be generated with trimming for an "alpha" release. + * This file will include only declarations that are marked as "@public", "@beta", or "@alpha". + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "alphaTrimmedFilePath": "/dist/-alpha.d.ts", + + /** + * Specifies the output path for a .d.ts rollup file to be generated with trimming for a "beta" release. + * This file will include only declarations that are marked as "@public" or "@beta". + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "betaTrimmedFilePath": "/dist/-beta.d.ts", + + /** + * Specifies the output path for a .d.ts rollup file to be generated with trimming for a "public" release. + * This file will include only declarations that are marked as "@public". + * + * If the path is an empty string, then this file will not be written. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "publicTrimmedFilePath": "/dist/-public.d.ts", + + /** + * When a declaration is trimmed, by default it will be replaced by a code comment such as + * "Excluded from this release type: exampleMember". Set "omitTrimmingComments" to true to remove the + * declaration completely. + * + * DEFAULT VALUE: false + */ + // "omitTrimmingComments": true + }, + + /** + * Configures how the tsdoc-metadata.json file will be generated. + */ + "tsdocMetadata": { + /** + * Whether to generate the tsdoc-metadata.json file. + * + * DEFAULT VALUE: true + */ + // "enabled": true, + /** + * Specifies where the TSDoc metadata file should be written. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * The default value is "", which causes the path to be automatically inferred from the "tsdocMetadata", + * "typings" or "main" fields of the project's package.json. If none of these fields are set, the lookup + * falls back to "tsdoc-metadata.json" in the package folder. + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "tsdocMetadataFilePath": "/dist/tsdoc-metadata.json" + }, + + /** + * Specifies what type of newlines API Extractor should use when writing output files. By default, the output files + * will be written with Windows-style newlines. To use POSIX-style newlines, specify "lf" instead. + * To use the OS's default newline kind, specify "os". + * + * DEFAULT VALUE: "crlf" + */ + "newlineKind": "lf", + + /** + * Configures how API Extractor reports error and warning messages produced during analysis. + * + * There are three sources of messages: compiler messages, API Extractor messages, and TSDoc messages. + */ + "messages": { + /** + * Configures handling of diagnostic messages reported by the TypeScript compiler engine while analyzing + * the input .d.ts files. + * + * TypeScript message identifiers start with "TS" followed by an integer. For example: "TS2551" + * + * DEFAULT VALUE: A single "default" entry with logLevel=warning. + */ + "compilerMessageReporting": { + /** + * Configures the default routing for messages that don't match an explicit rule in this table. + */ + "default": { + /** + * Specifies whether the message should be written to the the tool's output log. Note that + * the "addToApiReportFile" property may supersede this option. + * + * Possible values: "error", "warning", "none" + * + * Errors cause the build to fail and return a nonzero exit code. Warnings cause a production build fail + * and return a nonzero exit code. For a non-production build (e.g. when "api-extractor run" includes + * the "--local" option), the warning is displayed but the build will not fail. + * + * DEFAULT VALUE: "warning" + */ + "logLevel": "warning" + + /** + * When addToApiReportFile is true: If API Extractor is configured to write an API report file (.api.md), + * then the message will be written inside that file; otherwise, the message is instead logged according to + * the "logLevel" option. + * + * DEFAULT VALUE: false + */ + // "addToApiReportFile": false + } + + // "TS2551": { + // "logLevel": "warning", + // "addToApiReportFile": true + // }, + // + // . . . + }, + + /** + * Configures handling of messages reported by API Extractor during its analysis. + * + * API Extractor message identifiers start with "ae-". For example: "ae-extra-release-tag" + * + * DEFAULT VALUE: See api-extractor-defaults.json for the complete table of extractorMessageReporting mappings + */ + "extractorMessageReporting": { + "default": { + "logLevel": "warning" + // "addToApiReportFile": false + } + + // "ae-extra-release-tag": { + // "logLevel": "warning", + // "addToApiReportFile": true + // }, + // + // . . . + }, + + /** + * Configures handling of messages reported by the TSDoc parser when analyzing code comments. + * + * TSDoc message identifiers start with "tsdoc-". For example: "tsdoc-link-tag-unescaped-text" + * + * DEFAULT VALUE: A single "default" entry with logLevel=warning. + */ + "tsdocMessageReporting": { + "default": { + "logLevel": "warning" + // "addToApiReportFile": false + } + + // "tsdoc-link-tag-unescaped-text": { + // "logLevel": "warning", + // "addToApiReportFile": true + // }, + // + // . . . + } + } +} diff --git a/packages/ws/build.config.ts b/packages/ws/build.config.ts new file mode 100644 index 000000000000..e3de92140fb4 --- /dev/null +++ b/packages/ws/build.config.ts @@ -0,0 +1,9 @@ +import { createUnbuildConfig } from '../../build.config'; + +export default createUnbuildConfig({ + entries: [ + { builder: 'rollup', input: 'src/index' }, + { builder: 'rollup', input: 'src/strategies/sharding/worker' }, + ], + externals: ['zlib-sync'], +}); diff --git a/packages/ws/cliff.toml b/packages/ws/cliff.toml new file mode 100644 index 000000000000..2145cb0e5862 --- /dev/null +++ b/packages/ws/cliff.toml @@ -0,0 +1,63 @@ +[changelog] +header = """ +# Changelog + +All notable changes to this project will be documented in this file.\n +""" +body = """ +{% if version %}\ + # [{{ version | trim_start_matches(pat="v") }}]\ + {% if previous %}\ + {% if previous.version %}\ + (https://github.com/discordjs/discord.js/compare/{{ previous.version }}...{{ version }})\ + {% else %}\ + (https://github.com/discordjs/discord.js/tree/{{ version }})\ + {% endif %}\ + {% endif %} \ + - ({{ timestamp | date(format="%Y-%m-%d") }}) +{% else %}\ + # [unreleased] +{% endif %}\ +{% for group, commits in commits | group_by(attribute="group") %} + ## {{ group | upper_first }} + {% for commit in commits %} + - {% if commit.scope %}\ + **{{commit.scope}}:** \ + {% endif %}\ + {{ commit.message | upper_first }} ([{{ commit.id | truncate(length=7, end="") }}](https://github.com/discordjs/discord.js/commit/{{ commit.id }}))\ + {% if commit.breaking %}\ + {% for breakingChange in commit.footers %}\ + \n{% raw %} {% endraw %}- **{{ breakingChange.token }}{{ breakingChange.separator }}** {{ breakingChange.value }}\ + {% endfor %}\ + {% endif %}\ + {% endfor %} +{% endfor %}\n +""" +trim = true +footer = "" + +[git] +conventional_commits = true +filter_unconventional = true +commit_parsers = [ + { message = "^feat", group = "Features"}, + { message = "^fix", group = "Bug Fixes"}, + { message = "^docs", group = "Documentation"}, + { message = "^perf", group = "Performance"}, + { message = "^refactor", group = "Refactor"}, + { message = "^typings", group = "Typings"}, + { message = "^types", group = "Typings"}, + { message = ".*deprecated", body = ".*deprecated", group = "Deprecation"}, + { message = "^revert", skip = true}, + { message = "^style", group = "Styling"}, + { message = "^test", group = "Testing"}, + { message = "^chore", skip = true}, + { message = "^ci", skip = true}, + { message = "^build", skip = true}, + { body = ".*security", group = "Security"}, +] +filter_commits = true +tag_pattern = "@discordjs/ws@[0-9]*" +ignore_tags = "" +topo_order = false +sort_commits = "newest" diff --git a/packages/ws/docs/README.md b/packages/ws/docs/README.md new file mode 100644 index 000000000000..d67329190bf0 --- /dev/null +++ b/packages/ws/docs/README.md @@ -0,0 +1 @@ +## [View the documentation here.](https://discord.js.org/#/docs/ws) diff --git a/packages/ws/docs/index.json b/packages/ws/docs/index.json new file mode 100644 index 000000000000..557341ae9dff --- /dev/null +++ b/packages/ws/docs/index.json @@ -0,0 +1 @@ +[{ "name": "General", "files": [{ "name": "Welcome", "id": "welcome", "path": "../../README.md" }] }] diff --git a/packages/ws/package.json b/packages/ws/package.json new file mode 100644 index 000000000000..8ac38532fb8a --- /dev/null +++ b/packages/ws/package.json @@ -0,0 +1,88 @@ +{ + "name": "@discordjs/ws", + "version": "0.1.0-dev", + "description": "Wrapper around Discord's gateway", + "scripts": { + "test": "vitest run", + "build": "unbuild", + "lint": "prettier --check . && eslint src __tests__ --ext mjs,js,ts", + "format": "prettier --write . && eslint src __tests__ --ext mjs,js,ts --fix", + "docs": "docgen -i src/index.ts -c docs/index.json -o docs/docs.json --typescript && api-extractor run --local", + "prepack": "yarn build && yarn lint", + "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/ws/*'", + "release": "cliff-jumper" + }, + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", + "typings": "./dist/index.d.ts", + "exports": { + "import": "./dist/index.mjs", + "require": "./dist/index.cjs", + "types": "./dist/index.d.ts" + }, + "directories": { + "lib": "src", + "test": "__tests__" + }, + "files": [ + "dist" + ], + "contributors": [ + "Crawl ", + "Amish Shah ", + "SpaceEEC ", + "Vlad Frangu ", + "Antonio Roman ", + "DD " + ], + "license": "Apache-2.0", + "keywords": [ + "discord", + "api", + "gateway", + "discordapp", + "discordjs" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/discordjs/discord.js.git" + }, + "bugs": { + "url": "https://github.com/discordjs/discord.js/issues" + }, + "homepage": "https://discord.js.org", + "dependencies": { + "@discordjs/collection": "workspace:^", + "@discordjs/rest": "workspace:^", + "@sapphire/async-queue": "^1.3.1", + "@vladfrangu/async_event_emitter": "^2.0.1", + "discord-api-types": "^0.36.1", + "tslib": "^2.4.0", + "ws": "^8.8.0" + }, + "devDependencies": { + "@discordjs/docgen": "workspace:^", + "@discordjs/scripts": "workspace:^", + "@favware/cliff-jumper": "^1.8.5", + "@microsoft/api-extractor": "^7.28.3", + "@types/node": "^18.0.3", + "@types/ws": "^8.5.3", + "c8": "^7.11.3", + "eslint": "^8.19.0", + "mock-socket": "^9.1.5", + "prettier": "^2.7.1", + "rollup-plugin-typescript2": "^0.32.1", + "tsup": "^6.1.3", + "typescript": "^4.7.4", + "unbuild": "^0.7.6", + "undici": "^5.8.0", + "vitest": "^0.17.0", + "zlib-sync": "^0.1.7" + }, + "engines": { + "node": ">=16.9.0" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/packages/ws/src/index.ts b/packages/ws/src/index.ts new file mode 100644 index 000000000000..947236e558b0 --- /dev/null +++ b/packages/ws/src/index.ts @@ -0,0 +1,14 @@ +export * from './strategies/context/IContextFetchingStrategy'; +export * from './strategies/context/SimpleContextFetchingStrategy'; +export * from './strategies/context/WorkerContextFetchingStrategy'; + +export * from './strategies/sharding/IShardingStrategy'; +export * from './strategies/sharding/SimpleShardingStrategy'; +export * from './strategies/sharding/WorkerShardingStrategy'; + +export * from './utils/constants'; +export * from './utils/IdentifyThrottler'; +export * from './utils/utils'; + +export * from './ws/WebSocketManager'; +export * from './ws/WebSocketShard'; diff --git a/packages/ws/src/strategies/context/IContextFetchingStrategy.ts b/packages/ws/src/strategies/context/IContextFetchingStrategy.ts new file mode 100644 index 000000000000..8fc201921b43 --- /dev/null +++ b/packages/ws/src/strategies/context/IContextFetchingStrategy.ts @@ -0,0 +1,31 @@ +import type { Awaitable } from '@vladfrangu/async_event_emitter'; +import type { APIGatewayBotInfo } from 'discord-api-types/v10'; +import type { SessionInfo, WebSocketManager, WebSocketManagerOptions } from '../../ws/WebSocketManager'; + +export interface FetchingStrategyOptions + extends Omit< + WebSocketManagerOptions, + 'retrieveSessionInfo' | 'updateSessionInfo' | 'shardCount' | 'shardIds' | 'rest' + > { + readonly gatewayInformation: APIGatewayBotInfo; + readonly shardCount: number; +} + +/** + * Strategies responsible solely for making manager information accessible + */ +export interface IContextFetchingStrategy { + readonly options: FetchingStrategyOptions; + retrieveSessionInfo: (shardId: number) => Awaitable; + updateSessionInfo: (shardId: number, sessionInfo: SessionInfo | null) => Awaitable; +} + +export async function managerToFetchingStrategyOptions(manager: WebSocketManager): Promise { + const { retrieveSessionInfo, updateSessionInfo, shardCount, shardIds, rest, ...managerOptions } = manager.options; + + return { + ...managerOptions, + gatewayInformation: await manager.fetchGatewayInformation(), + shardCount: await manager.getShardCount(), + }; +} diff --git a/packages/ws/src/strategies/context/SimpleContextFetchingStrategy.ts b/packages/ws/src/strategies/context/SimpleContextFetchingStrategy.ts new file mode 100644 index 000000000000..642ef6ce1b02 --- /dev/null +++ b/packages/ws/src/strategies/context/SimpleContextFetchingStrategy.ts @@ -0,0 +1,14 @@ +import type { FetchingStrategyOptions, IContextFetchingStrategy } from './IContextFetchingStrategy'; +import type { SessionInfo, WebSocketManager } from '../../ws/WebSocketManager'; + +export class SimpleContextFetchingStrategy implements IContextFetchingStrategy { + public constructor(private readonly manager: WebSocketManager, public readonly options: FetchingStrategyOptions) {} + + public async retrieveSessionInfo(shardId: number): Promise { + return this.manager.options.retrieveSessionInfo(shardId); + } + + public updateSessionInfo(shardId: number, sessionInfo: SessionInfo | null) { + return this.manager.options.updateSessionInfo(shardId, sessionInfo); + } +} diff --git a/packages/ws/src/strategies/context/WorkerContextFetchingStrategy.ts b/packages/ws/src/strategies/context/WorkerContextFetchingStrategy.ts new file mode 100644 index 000000000000..ed358a151242 --- /dev/null +++ b/packages/ws/src/strategies/context/WorkerContextFetchingStrategy.ts @@ -0,0 +1,49 @@ +import { isMainThread, parentPort } from 'node:worker_threads'; +import { Collection } from '@discordjs/collection'; +import type { FetchingStrategyOptions, IContextFetchingStrategy } from './IContextFetchingStrategy'; +import type { SessionInfo } from '../../ws/WebSocketManager'; +import { + WorkerRecievePayload, + WorkerRecievePayloadOp, + WorkerSendPayload, + WorkerSendPayloadOp, +} from '../sharding/WorkerShardingStrategy'; + +export class WorkerContextFetchingStrategy implements IContextFetchingStrategy { + private readonly sessionPromises = new Collection void>(); + + public constructor(public readonly options: FetchingStrategyOptions) { + if (isMainThread) { + throw new Error('Cannot instantiate WorkerContextFetchingStrategy on the main thread'); + } + + parentPort!.on('message', (payload: WorkerSendPayload) => { + if (payload.op === WorkerSendPayloadOp.SessionInfoResponse) { + const resolve = this.sessionPromises.get(payload.nonce); + resolve?.(payload.session); + this.sessionPromises.delete(payload.nonce); + } + }); + } + + public async retrieveSessionInfo(shardId: number): Promise { + const nonce = Math.random(); + const payload: WorkerRecievePayload = { + op: WorkerRecievePayloadOp.RetrieveSessionInfo, + shardId, + nonce, + }; + const promise = new Promise((resolve) => this.sessionPromises.set(nonce, resolve)); + parentPort!.postMessage(payload); + return promise; + } + + public updateSessionInfo(shardId: number, sessionInfo: SessionInfo | null) { + const payload: WorkerRecievePayload = { + op: WorkerRecievePayloadOp.UpdateSessionInfo, + shardId, + session: sessionInfo, + }; + parentPort!.postMessage(payload); + } +} diff --git a/packages/ws/src/strategies/sharding/IShardingStrategy.ts b/packages/ws/src/strategies/sharding/IShardingStrategy.ts new file mode 100644 index 000000000000..7fcf2667295c --- /dev/null +++ b/packages/ws/src/strategies/sharding/IShardingStrategy.ts @@ -0,0 +1,25 @@ +import type { GatewaySendPayload } from 'discord-api-types/v10'; +import type { Awaitable } from '../../utils/utils'; +import type { WebSocketShardDestroyOptions } from '../../ws/WebSocketShard'; + +/** + * Strategies responsible for spawning, initializing connections, destroying shards, and relaying events + */ +export interface IShardingStrategy { + /** + * Spawns all the shards + */ + spawn: (shardIds: number[]) => Awaitable; + /** + * Initializes all the shards + */ + connect: () => Awaitable; + /** + * Destroys all the shards + */ + destroy: (options?: Omit) => Awaitable; + /** + * Sends a payload to a shard + */ + send: (shardId: number, payload: GatewaySendPayload) => Awaitable; +} diff --git a/packages/ws/src/strategies/sharding/SimpleShardingStrategy.ts b/packages/ws/src/strategies/sharding/SimpleShardingStrategy.ts new file mode 100644 index 000000000000..1bffc43038b2 --- /dev/null +++ b/packages/ws/src/strategies/sharding/SimpleShardingStrategy.ts @@ -0,0 +1,64 @@ +import { Collection } from '@discordjs/collection'; +import type { GatewaySendPayload } from 'discord-api-types/v10'; +import type { IShardingStrategy } from './IShardingStrategy'; +import { IdentifyThrottler } from '../../utils/IdentifyThrottler'; +import type { WebSocketManager } from '../../ws/WebSocketManager'; +import { WebSocketShard, WebSocketShardDestroyOptions, WebSocketShardEvents } from '../../ws/WebSocketShard'; +import { managerToFetchingStrategyOptions } from '../context/IContextFetchingStrategy'; +import { SimpleContextFetchingStrategy } from '../context/SimpleContextFetchingStrategy'; + +/** + * Simple strategy that just spawns shards in the current process + */ +export class SimpleShardingStrategy implements IShardingStrategy { + private readonly manager: WebSocketManager; + private readonly shards = new Collection(); + + private readonly throttler: IdentifyThrottler; + + public constructor(manager: WebSocketManager) { + this.manager = manager; + this.throttler = new IdentifyThrottler(manager); + } + + public async spawn(shardIds: number[]) { + const strategyOptions = await managerToFetchingStrategyOptions(this.manager); + for (const shardId of shardIds) { + const strategy = new SimpleContextFetchingStrategy(this.manager, strategyOptions); + const shard = new WebSocketShard(strategy, shardId); + for (const event of Object.values(WebSocketShardEvents)) { + // @ts-expect-error + shard.on(event, (payload) => this.manager.emit(event, { ...payload, shardId })); + } + this.shards.set(shardId, shard); + } + } + + public async connect() { + const promises = []; + + for (const shard of this.shards.values()) { + await this.throttler.waitForIdentify(); + promises.push(shard.connect()); + } + + await Promise.all(promises); + } + + public async destroy(options?: Omit) { + const promises = []; + + for (const shard of this.shards.values()) { + promises.push(shard.destroy(options)); + } + + await Promise.all(promises); + this.shards.clear(); + } + + public send(shardId: number, payload: GatewaySendPayload) { + const shard = this.shards.get(shardId); + if (!shard) throw new Error(`Shard ${shardId} not found`); + return shard.send(payload); + } +} diff --git a/packages/ws/src/strategies/sharding/WorkerShardingStrategy.ts b/packages/ws/src/strategies/sharding/WorkerShardingStrategy.ts new file mode 100644 index 000000000000..5add1955cb9a --- /dev/null +++ b/packages/ws/src/strategies/sharding/WorkerShardingStrategy.ts @@ -0,0 +1,203 @@ +import { once } from 'node:events'; +import { join } from 'node:path'; +import { Worker } from 'node:worker_threads'; +import { Collection } from '@discordjs/collection'; +import type { GatewaySendPayload } from 'discord-api-types/v10'; +import type { IShardingStrategy } from './IShardingStrategy'; +import { IdentifyThrottler } from '../../utils/IdentifyThrottler'; +import type { SessionInfo, WebSocketManager } from '../../ws/WebSocketManager'; +import type { WebSocketShardDestroyOptions, WebSocketShardEvents } from '../../ws/WebSocketShard'; +import { FetchingStrategyOptions, managerToFetchingStrategyOptions } from '../context/IContextFetchingStrategy'; + +export interface WorkerData extends FetchingStrategyOptions { + shardIds: number[]; +} + +export enum WorkerSendPayloadOp { + Connect, + Destroy, + Send, + SessionInfoResponse, +} + +export type WorkerSendPayload = + | { op: WorkerSendPayloadOp.Connect; shardId: number } + | { op: WorkerSendPayloadOp.Destroy; shardId: number; options?: WebSocketShardDestroyOptions } + | { op: WorkerSendPayloadOp.Send; shardId: number; payload: GatewaySendPayload } + | { op: WorkerSendPayloadOp.SessionInfoResponse; nonce: number; session: SessionInfo | null }; + +export enum WorkerRecievePayloadOp { + Connected, + Destroyed, + Event, + RetrieveSessionInfo, + UpdateSessionInfo, +} + +export type WorkerRecievePayload = + | { op: WorkerRecievePayloadOp.Connected; shardId: number } + | { op: WorkerRecievePayloadOp.Destroyed; shardId: number } + // Can't seem to get a type-safe union based off of the event, so I'm sadly leaving data as any for now + | { op: WorkerRecievePayloadOp.Event; shardId: number; event: WebSocketShardEvents; data: any } + | { op: WorkerRecievePayloadOp.RetrieveSessionInfo; shardId: number; nonce: number } + | { op: WorkerRecievePayloadOp.UpdateSessionInfo; shardId: number; session: SessionInfo | null }; + +/** + * Options for a {@link WorkerShardingStrategy} + */ +export interface WorkerShardingStrategyOptions { + /** + * Dictates how many shards should be spawned per worker thread. + */ + shardsPerWorker: number | 'all'; +} + +/** + * Strategy used to spawn threads in worker_threads + */ +export class WorkerShardingStrategy implements IShardingStrategy { + private readonly manager: WebSocketManager; + private readonly options: WorkerShardingStrategyOptions; + + #workers: Worker[] = []; + readonly #workerByShardId = new Collection(); + + private readonly connectPromises = new Collection void>(); + private readonly destroyPromises = new Collection void>(); + + private readonly throttler: IdentifyThrottler; + + public constructor(manager: WebSocketManager, options: WorkerShardingStrategyOptions) { + this.manager = manager; + this.throttler = new IdentifyThrottler(manager); + this.options = options; + } + + public async spawn(shardIds: number[]) { + const shardsPerWorker = this.options.shardsPerWorker === 'all' ? shardIds.length : this.options.shardsPerWorker; + const strategyOptions = await managerToFetchingStrategyOptions(this.manager); + + let shards = 0; + while (shards !== shardIds.length) { + const slice = shardIds.slice(shards, shardsPerWorker + shards); + const workerData: WorkerData = { + ...strategyOptions, + shardIds: slice, + }; + + const worker = new Worker(join(__dirname, 'worker.cjs'), { workerData }); + await once(worker, 'online'); + worker + .on('error', (err) => { + throw err; + }) + .on('messageerror', (err) => { + throw err; + }) + // eslint-disable-next-line @typescript-eslint/no-misused-promises + .on('message', (payload: WorkerRecievePayload) => this.onMessage(worker, payload)); + + this.#workers.push(worker); + for (const shardId of slice) { + this.#workerByShardId.set(shardId, worker); + } + + shards += slice.length; + } + } + + public async connect() { + const promises = []; + + for (const [shardId, worker] of this.#workerByShardId.entries()) { + await this.throttler.waitForIdentify(); + + const payload: WorkerSendPayload = { + op: WorkerSendPayloadOp.Connect, + shardId, + }; + + const promise = new Promise((resolve) => this.connectPromises.set(shardId, resolve)); + worker.postMessage(payload); + promises.push(promise); + } + + await Promise.all(promises); + } + + public async destroy(options: Omit = {}) { + const promises = []; + + for (const [shardId, worker] of this.#workerByShardId.entries()) { + const payload: WorkerSendPayload = { + op: WorkerSendPayloadOp.Destroy, + shardId, + options, + }; + + promises.push( + new Promise((resolve) => this.destroyPromises.set(shardId, resolve)).then(() => worker.terminate()), + ); + worker.postMessage(payload); + } + + this.#workers = []; + this.#workerByShardId.clear(); + + await Promise.all(promises); + } + + public send(shardId: number, data: GatewaySendPayload) { + const worker = this.#workerByShardId.get(shardId); + if (!worker) { + throw new Error(`No worker found for shard ${shardId}`); + } + + const payload: WorkerSendPayload = { + op: WorkerSendPayloadOp.Send, + shardId, + payload: data, + }; + worker.postMessage(payload); + } + + private async onMessage(worker: Worker, payload: WorkerRecievePayload) { + switch (payload.op) { + case WorkerRecievePayloadOp.Connected: { + const resolve = this.connectPromises.get(payload.shardId)!; + resolve(); + this.connectPromises.delete(payload.shardId); + break; + } + + case WorkerRecievePayloadOp.Destroyed: { + const resolve = this.destroyPromises.get(payload.shardId)!; + resolve(); + this.destroyPromises.delete(payload.shardId); + break; + } + + case WorkerRecievePayloadOp.Event: { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + this.manager.emit(payload.event, { ...payload.data, shardId: payload.shardId }); + break; + } + + case WorkerRecievePayloadOp.RetrieveSessionInfo: { + const session = await this.manager.options.retrieveSessionInfo(payload.shardId); + const response: WorkerSendPayload = { + op: WorkerSendPayloadOp.SessionInfoResponse, + nonce: payload.nonce, + session, + }; + worker.postMessage(response); + break; + } + + case WorkerRecievePayloadOp.UpdateSessionInfo: { + await this.manager.options.updateSessionInfo(payload.shardId, payload.session); + break; + } + } + } +} diff --git a/packages/ws/src/strategies/sharding/worker.ts b/packages/ws/src/strategies/sharding/worker.ts new file mode 100644 index 000000000000..8a4c0bce3cd0 --- /dev/null +++ b/packages/ws/src/strategies/sharding/worker.ts @@ -0,0 +1,93 @@ +import { isMainThread, workerData, parentPort } from 'node:worker_threads'; +import { Collection } from '@discordjs/collection'; +import { + WorkerData, + WorkerRecievePayload, + WorkerRecievePayloadOp, + WorkerSendPayload, + WorkerSendPayloadOp, +} from './WorkerShardingStrategy'; +import { WebSocketShard, WebSocketShardDestroyOptions, WebSocketShardEvents } from '../../ws/WebSocketShard'; +import { WorkerContextFetchingStrategy } from '../context/WorkerContextFetchingStrategy'; + +if (isMainThread) { + throw new Error('Expected worker script to not be ran within the main thread'); +} + +const data = workerData as WorkerData; +const shards = new Collection(); + +async function connect(shardId: number) { + const shard = shards.get(shardId); + if (!shard) { + throw new Error(`Shard ${shardId} does not exist`); + } + await shard.connect(); +} + +async function destroy(shardId: number, options?: WebSocketShardDestroyOptions) { + const shard = shards.get(shardId); + if (!shard) { + throw new Error(`Shard ${shardId} does not exist`); + } + await shard.destroy(options); +} + +for (const shardId of data.shardIds) { + const shard = new WebSocketShard(new WorkerContextFetchingStrategy(data), shardId); + for (const event of Object.values(WebSocketShardEvents)) { + // @ts-expect-error + shard.on(event, (data) => { + const payload: WorkerRecievePayload = { + op: WorkerRecievePayloadOp.Event, + event, + data, + shardId, + }; + parentPort!.postMessage(payload); + }); + } + shards.set(shardId, shard); +} + +parentPort! + .on('messageerror', (err) => { + throw err; + }) + // eslint-disable-next-line @typescript-eslint/no-misused-promises + .on('message', async (payload: WorkerSendPayload) => { + switch (payload.op) { + case WorkerSendPayloadOp.Connect: { + await connect(payload.shardId); + const response: WorkerRecievePayload = { + op: WorkerRecievePayloadOp.Connected, + shardId: payload.shardId, + }; + parentPort!.postMessage(response); + break; + } + + case WorkerSendPayloadOp.Destroy: { + await destroy(payload.shardId, payload.options); + const response: WorkerRecievePayload = { + op: WorkerRecievePayloadOp.Destroyed, + shardId: payload.shardId, + }; + parentPort!.postMessage(response); + break; + } + + case WorkerSendPayloadOp.Send: { + const shard = shards.get(payload.shardId); + if (!shard) { + throw new Error(`Shard ${payload.shardId} does not exist`); + } + await shard.send(payload.payload); + break; + } + + case WorkerSendPayloadOp.SessionInfoResponse: { + break; + } + } + }); diff --git a/packages/ws/src/utils/IdentifyThrottler.ts b/packages/ws/src/utils/IdentifyThrottler.ts new file mode 100644 index 000000000000..22a51e9368b1 --- /dev/null +++ b/packages/ws/src/utils/IdentifyThrottler.ts @@ -0,0 +1,29 @@ +import { setTimeout as sleep } from 'node:timers/promises'; +import type { WebSocketManager } from '../ws/WebSocketManager'; + +export class IdentifyThrottler { + private identifyState = { + remaining: 0, + resetsAt: Infinity, + }; + + public constructor(private readonly manager: WebSocketManager) {} + + public async waitForIdentify(): Promise { + if (this.identifyState.remaining <= 0) { + const diff = this.identifyState.resetsAt - Date.now(); + if (diff <= 5_000) { + const time = diff + Math.random() * 1_500; + await sleep(time); + } + + const info = await this.manager.fetchGatewayInformation(); + this.identifyState = { + remaining: info.session_start_limit.max_concurrency, + resetsAt: Date.now() + 5_000, + }; + } + + this.identifyState.remaining--; + } +} diff --git a/packages/ws/src/utils/constants.ts b/packages/ws/src/utils/constants.ts new file mode 100644 index 000000000000..1b9919a11fc6 --- /dev/null +++ b/packages/ws/src/utils/constants.ts @@ -0,0 +1,68 @@ +import { readFileSync } from 'node:fs'; +import { join } from 'node:path'; +import { Collection } from '@discordjs/collection'; +import { APIVersion, GatewayOpcodes } from 'discord-api-types/v10'; +import { lazy } from './utils'; +import type { OptionalWebSocketManagerOptions, SessionInfo } from '../ws/WebSocketManager'; + +/** + * Valid encoding types + */ +export enum Encoding { + JSON = 'json', +} + +/** + * Valid compression methods + */ +export enum CompressionMethod { + ZlibStream = 'zlib-stream', +} + +const packageJson = readFileSync(join(__dirname, '..', '..', 'package.json'), 'utf8'); +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment +const Package = JSON.parse(packageJson); + +// eslint-disable-next-line @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-unsafe-member-access +export const DefaultDeviceProperty = `@discordjs/ws ${Package.version}`; + +const getDefaultSessionStore = lazy(() => new Collection()); + +/** + * Default options used by the manager + */ +export const DefaultWebSocketManagerOptions: OptionalWebSocketManagerOptions = { + shardCount: null, + shardIds: null, + largeThreshold: null, + initialPresence: null, + identifyProperties: { + browser: DefaultDeviceProperty, + device: DefaultDeviceProperty, + os: process.platform, + }, + version: APIVersion, + encoding: Encoding.JSON, + compression: null, + retrieveSessionInfo(shardId) { + const store = getDefaultSessionStore(); + return store.get(shardId) ?? null; + }, + updateSessionInfo(shardId: number, info: SessionInfo | null) { + const store = getDefaultSessionStore(); + if (info) { + store.set(shardId, info); + } else { + store.delete(shardId); + } + }, + handshakeTimeout: 30_000, + helloTimeout: 60_000, + readyTimeout: 15_000, +}; + +export const ImportantGatewayOpcodes = new Set([ + GatewayOpcodes.Heartbeat, + GatewayOpcodes.Identify, + GatewayOpcodes.Resume, +]); diff --git a/packages/ws/src/utils/utils.ts b/packages/ws/src/utils/utils.ts new file mode 100644 index 000000000000..70c845d98df2 --- /dev/null +++ b/packages/ws/src/utils/utils.ts @@ -0,0 +1,20 @@ +import type { ShardRange } from '../ws/WebSocketManager'; + +export type Awaitable = T | Promise; + +/** + * Yields the numbers in the given range as an array + * @example + * range({ start: 3, end: 5 }); // [3, 4, 5] + */ +export function range({ start, end }: ShardRange): number[] { + return Array.from({ length: end - start + 1 }, (_, i) => i + start); +} + +/** + * Lazily evaluate a callback, storing its result + */ +export function lazy(cb: () => T): () => T { + let defaultValue: T; + return () => (defaultValue ??= cb()); +} diff --git a/packages/ws/src/ws/WebSocketManager.ts b/packages/ws/src/ws/WebSocketManager.ts new file mode 100644 index 000000000000..c381985b8118 --- /dev/null +++ b/packages/ws/src/ws/WebSocketManager.ts @@ -0,0 +1,274 @@ +import type { REST } from '@discordjs/rest'; +import { AsyncEventEmitter } from '@vladfrangu/async_event_emitter'; +import { + APIGatewayBotInfo, + GatewayIdentifyProperties, + GatewayPresenceUpdateData, + RESTGetAPIGatewayBotResult, + GatewayIntentBits, + Routes, + GatewaySendPayload, +} from 'discord-api-types/v10'; +import type { WebSocketShardDestroyOptions, WebSocketShardEventsMap } from './WebSocketShard'; +import type { IShardingStrategy } from '../strategies/sharding/IShardingStrategy'; +import { SimpleShardingStrategy } from '../strategies/sharding/SimpleShardingStrategy'; +import { CompressionMethod, DefaultWebSocketManagerOptions, Encoding } from '../utils/constants'; +import { Awaitable, range } from '../utils/utils'; + +/** + * Represents a range of shard ids + */ +export interface ShardRange { + start: number; + end: number; +} + +/** + * Session information for a given shard, used to resume a session + */ +export interface SessionInfo { + /** + * Session id for this shard + */ + sessionId: string; + /** + * The sequence number of the last message sent by the shard + */ + sequence: number; + /** + * The id of the shard + */ + shardId: number; + /** + * The total number of shards at the time of this shard identifying + */ + shardCount: number; +} + +/** + * Required options for the WebSocketManager + */ +export interface RequiredWebSocketManagerOptions { + /** + * The token to use for identifying with the gateway + */ + token: string; + /** + * The intents to request + */ + intents: GatewayIntentBits; + /** + * The REST instance to use for fetching gateway information + */ + rest: REST; +} + +/** + * Optional additional configuration for the WebSocketManager + */ +export interface OptionalWebSocketManagerOptions { + /** + * The total number of shards across all WebsocketManagers you intend to instantiate. + * Use `null` to use Discord's recommended shard count + */ + shardCount: number | null; + /** + * The ids of the shards this WebSocketManager should manage. + * Use `null` to simply spawn 0 through `shardCount - 1` + * @example + * const manager = new WebSocketManager({ + * shardIds: [1, 3, 7], // spawns shard 1, 3, and 7, nothing else + * }); + * @example + * const manager = new WebSocketManager({ + * shardIds: { + * start: 3, + * end: 6, + * }, // spawns shards 3, 4, 5, and 6 + * }); + */ + shardIds: number[] | ShardRange | null; + /** + * Value between 50 and 250, total number of members where the gateway will stop sending offline members in the guild member list + */ + largeThreshold: number | null; + /** + * Initial presence data to send to the gateway when identifying + */ + initialPresence: GatewayPresenceUpdateData | null; + /** + * Properties to send to the gateway when identifying + */ + identifyProperties: GatewayIdentifyProperties; + /** + * The gateway version to use + * @default '10' + */ + version: string; + /** + * The encoding to use + * @default 'json' + */ + encoding: Encoding; + /** + * The compression method to use + * @default null (no compression) + */ + compression: CompressionMethod | null; + /** + * Function used to retrieve session information (and attempt to resume) for a given shard + * @example + * const manager = new WebSocketManager({ + * async retrieveSessionInfo(shardId): Awaitable { + * // Fetch this info from redis or similar + * return { sessionId: string, sequence: number }; + * // Return null if no information is found + * }, + * }); + */ + retrieveSessionInfo: (shardId: number) => Awaitable; + /** + * Function used to store session information for a given shard + */ + updateSessionInfo: (shardId: number, sessionInfo: SessionInfo | null) => Awaitable; + /** + * How long to wait for a shard to connect before giving up + */ + handshakeTimeout: number | null; + /** + * How long to wait for a shard's HELLO packet before giving up + */ + helloTimeout: number | null; + /** + * How long to wait for a shard's READY packet before giving up + */ + readyTimeout: number | null; +} + +export type WebSocketManagerOptions = RequiredWebSocketManagerOptions & OptionalWebSocketManagerOptions; + +export type ManagerShardEventsMap = { + [K in keyof WebSocketShardEventsMap]: [ + WebSocketShardEventsMap[K] extends [] ? { shardId: number } : WebSocketShardEventsMap[K][0] & { shardId: number }, + ]; +}; + +export class WebSocketManager extends AsyncEventEmitter { + /** + * The options being used by this manager + */ + public readonly options: WebSocketManagerOptions; + + /** + * Internal cache for a GET /gateway/bot result + */ + private gatewayInformation: { + data: APIGatewayBotInfo; + expiresAt: number; + } | null = null; + + /** + * Internal cache for the shard ids + */ + private shardIds: number[] | null = null; + + /** + * Strategy used to manage shards + * @default SimpleManagerToShardStrategy + */ + private strategy: IShardingStrategy = new SimpleShardingStrategy(this); + + public constructor(options: RequiredWebSocketManagerOptions & Partial) { + super(); + this.options = { ...DefaultWebSocketManagerOptions, ...options }; + } + + public setStrategy(strategy: IShardingStrategy) { + this.strategy = strategy; + return this; + } + + /** + * Fetches the gateway information from Discord - or returns it from cache if available + * @param force Whether to ignore the cache and force a fresh fetch + */ + public async fetchGatewayInformation(force = false) { + if (this.gatewayInformation) { + if (this.gatewayInformation.expiresAt <= Date.now()) { + this.gatewayInformation = null; + } else if (!force) { + return this.gatewayInformation.data; + } + } + + const data = (await this.options.rest.get(Routes.gatewayBot())) as RESTGetAPIGatewayBotResult; + + this.gatewayInformation = { data, expiresAt: Date.now() + data.session_start_limit.reset_after }; + return this.gatewayInformation.data; + } + + /** + * Updates your total shard count on-the-fly, spawning shards as needed + * @param shardCount The new shard count to use + */ + public async updateShardCount(shardCount: number | null) { + await this.strategy.destroy({ reason: 'User is adjusting their shards' }); + this.options.shardCount = shardCount; + + const shardIds = await this.getShardIds(true); + await this.strategy.spawn(shardIds); + + return this; + } + + /** + * Yields the total number of shards across for your bot, accounting for Discord recommendations + */ + public async getShardCount(): Promise { + if (this.options.shardCount) { + return this.options.shardCount; + } + + const shardIds = await this.getShardIds(); + return Math.max(...shardIds) + 1; + } + + /** + * Yields the ids of the shards this manager should manage + */ + public async getShardIds(force = false): Promise { + if (this.shardIds && !force) { + return this.shardIds; + } + + let shardIds: number[]; + if (this.options.shardIds) { + if (Array.isArray(this.options.shardIds)) { + shardIds = this.options.shardIds; + } else { + shardIds = range(this.options.shardIds); + } + } else { + const data = await this.fetchGatewayInformation(); + shardIds = range({ start: 0, end: (this.options.shardCount ?? data.shards) - 1 }); + } + + this.shardIds = shardIds; + return shardIds; + } + + public async connect() { + const shardCount = await this.getShardCount(); + // First, make sure all our shards are spawned + await this.updateShardCount(shardCount); + await this.strategy.connect(); + } + + public destroy(options?: Omit) { + return this.strategy.destroy(options); + } + + public send(shardId: number, payload: GatewaySendPayload) { + return this.strategy.send(shardId, payload); + } +} diff --git a/packages/ws/src/ws/WebSocketShard.ts b/packages/ws/src/ws/WebSocketShard.ts new file mode 100644 index 000000000000..8b884efb1501 --- /dev/null +++ b/packages/ws/src/ws/WebSocketShard.ts @@ -0,0 +1,549 @@ +import { once } from 'node:events'; +import { setTimeout } from 'node:timers'; +import { setTimeout as sleep } from 'node:timers/promises'; +import { TextDecoder } from 'node:util'; +import { inflate } from 'node:zlib'; +import { Collection } from '@discordjs/collection'; +import { AsyncQueue } from '@sapphire/async-queue'; +import { AsyncEventEmitter } from '@vladfrangu/async_event_emitter'; +import { + GatewayCloseCodes, + GatewayDispatchEvents, + GatewayDispatchPayload, + GatewayIdentifyData, + GatewayOpcodes, + GatewayReceivePayload, + GatewaySendPayload, +} from 'discord-api-types/v10'; +import { CONNECTING, OPEN, RawData, WebSocket } from 'ws'; +import type { Inflate } from 'zlib-sync'; +import type { SessionInfo } from './WebSocketManager'; +import type { IContextFetchingStrategy } from '../strategies/context/IContextFetchingStrategy'; +import { ImportantGatewayOpcodes } from '../utils/constants'; +import { lazy } from '../utils/utils'; + +const getZlibSync = lazy(() => import('zlib-sync').then((mod) => mod.default).catch(() => null)); + +export enum WebSocketShardEvents { + Debug = 'debug', + Hello = 'hello', + Ready = 'ready', + Resumed = 'resumed', + Dispatch = 'dispatch', +} + +export enum WebSocketShardStatus { + Idle, + Connecting, + Resuming, + Ready, +} + +export enum WebSocketShardDestroyRecovery { + Reconnect, + Resume, +} + +// eslint-disable-next-line @typescript-eslint/consistent-type-definitions +export type WebSocketShardEventsMap = { + [WebSocketShardEvents.Debug]: [payload: { message: string }]; + [WebSocketShardEvents.Hello]: []; + [WebSocketShardEvents.Ready]: []; + [WebSocketShardEvents.Resumed]: []; + [WebSocketShardEvents.Dispatch]: [payload: { data: GatewayDispatchPayload }]; +}; + +export interface WebSocketShardDestroyOptions { + reason?: string; + code?: number; + recover?: WebSocketShardDestroyRecovery; +} + +export enum CloseCodes { + Normal = 1000, + Resuming = 4200, +} + +export class WebSocketShard extends AsyncEventEmitter { + private connection: WebSocket | null = null; + + private readonly id: number; + + private useIdentifyCompress = false; + + private inflate: Inflate | null = null; + private readonly textDecoder = new TextDecoder(); + + private status: WebSocketShardStatus = WebSocketShardStatus.Idle; + + private replayedEvents = 0; + + private isAck = true; + + private sendRateLimitState = { + remaining: 120, + resetAt: Date.now(), + }; + + private heartbeatInterval: NodeJS.Timer | null = null; + private lastHeartbeatAt = -1; + + private session: SessionInfo | null = null; + + private readonly sendQueue = new AsyncQueue(); + + private readonly timeouts = new Collection(); + + public readonly strategy: IContextFetchingStrategy; + + public constructor(strategy: IContextFetchingStrategy, id: number) { + super(); + this.strategy = strategy; + this.id = id; + } + + public async connect() { + if (this.status !== WebSocketShardStatus.Idle) { + throw new Error("Tried to connect a shard that wasn't idle"); + } + + const data = this.strategy.options.gatewayInformation; + + const { version, encoding, compression } = this.strategy.options; + const params = new URLSearchParams({ v: version, encoding }); + if (compression) { + const zlib = await getZlibSync(); + if (zlib) { + params.append('compress', compression); + this.inflate = new zlib.Inflate({ + chunkSize: 65535, + to: 'string', + }); + } else if (!this.useIdentifyCompress) { + this.useIdentifyCompress = true; + console.warn( + 'WebSocketShard: Compression is enabled but zlib-sync is not installed, falling back to identify compress', + ); + } + } + + const url = `${data.url}?${params.toString()}`; + this.debug([`Connecting to ${url}`]); + const connection = new WebSocket(url, { handshakeTimeout: this.strategy.options.handshakeTimeout ?? undefined }) + /* eslint-disable @typescript-eslint/no-misused-promises */ + .on('message', this.onMessage.bind(this)) + .on('error', this.onError.bind(this)) + .on('close', this.onClose.bind(this)); + /* eslint-enable @typescript-eslint/no-misused-promises */ + + connection.binaryType = 'arraybuffer'; + this.connection = connection; + + this.status = WebSocketShardStatus.Connecting; + + await this.waitForEvent(WebSocketShardEvents.Hello, this.strategy.options.helloTimeout); + + const session = this.session ?? (await this.strategy.retrieveSessionInfo(this.id)); + if (session?.shardCount === this.strategy.options.shardCount) { + this.session = session; + await this.resume(session); + } else { + await this.identify(); + } + } + + public async destroy(options: WebSocketShardDestroyOptions = {}) { + if (this.status === WebSocketShardStatus.Idle) { + this.debug(['Tried to destroy a shard that was idle']); + return; + } + + if (!options.code) { + options.code = options.recover === WebSocketShardDestroyRecovery.Resume ? CloseCodes.Resuming : CloseCodes.Normal; + } + + this.debug([ + 'Destroying shard', + `Reason: ${options.reason ?? 'none'}`, + `Code: ${options.code}`, + `Recover: ${options.recover === undefined ? 'none' : WebSocketShardDestroyRecovery[options.recover]!}`, + ]); + + // Reset state + this.isAck = true; + if (this.heartbeatInterval) { + clearInterval(this.heartbeatInterval); + } + this.lastHeartbeatAt = -1; + + // Clear session state if applicable + if (options.recover !== WebSocketShardDestroyRecovery.Resume && this.session) { + this.session = null; + await this.strategy.updateSessionInfo(this.id, null); + } + + if (this.connection && (this.connection.readyState === OPEN || this.connection.readyState === CONNECTING)) { + this.connection.close(options.code, options.reason); + } + + this.status = WebSocketShardStatus.Idle; + + if (options.recover !== undefined) { + return this.connect(); + } + } + + private async waitForEvent(event: WebSocketShardEvents, timeoutDuration?: number | null) { + this.debug([`Waiting for event ${event} for ${timeoutDuration ? `${timeoutDuration}ms` : 'indefinitely'}`]); + const controller = new AbortController(); + const timeout = timeoutDuration ? setTimeout(() => controller.abort(), timeoutDuration).unref() : null; + if (timeout) { + this.timeouts.set(event, timeout); + } + await once(this, event, { signal: controller.signal }); + if (timeout) { + clearTimeout(timeout); + this.timeouts.delete(event); + } + } + + public async send(payload: GatewaySendPayload) { + if (!this.connection) { + throw new Error("WebSocketShard wasn't connected"); + } + + if (this.status !== WebSocketShardStatus.Ready && !ImportantGatewayOpcodes.has(payload.op)) { + await once(this, WebSocketShardEvents.Ready); + } + + await this.sendQueue.wait(); + + if (--this.sendRateLimitState.remaining <= 0) { + if (this.sendRateLimitState.resetAt < Date.now()) { + await sleep(Date.now() - this.sendRateLimitState.resetAt); + } + + this.sendRateLimitState = { + remaining: 119, + resetAt: Date.now() + 60_000, + }; + } + + this.sendQueue.shift(); + this.connection.send(JSON.stringify(payload)); + } + + private async identify() { + this.debug([ + 'Identifying', + `shard id: ${this.id.toString()}`, + `shard count: ${this.strategy.options.shardCount}`, + `intents: ${this.strategy.options.intents}`, + `compression: ${this.inflate ? 'zlib-stream' : this.useIdentifyCompress ? 'identify' : 'none'}`, + ]); + const d: GatewayIdentifyData = { + token: this.strategy.options.token, + properties: this.strategy.options.identifyProperties, + intents: this.strategy.options.intents, + compress: this.useIdentifyCompress, + shard: [this.id, this.strategy.options.shardCount], + }; + + if (this.strategy.options.largeThreshold) { + d.large_threshold = this.strategy.options.largeThreshold; + } + + if (this.strategy.options.initialPresence) { + d.presence = this.strategy.options.initialPresence; + } + + await this.send({ + op: GatewayOpcodes.Identify, + d, + }); + + await this.waitForEvent(WebSocketShardEvents.Ready, this.strategy.options.readyTimeout); + this.status = WebSocketShardStatus.Ready; + } + + private resume(session: SessionInfo) { + this.debug(['Resuming session']); + this.status = WebSocketShardStatus.Resuming; + this.replayedEvents = 0; + return this.send({ + op: GatewayOpcodes.Resume, + d: { + token: this.strategy.options.token, + seq: session.sequence, + session_id: session.sessionId, + }, + }); + } + + private async heartbeat(requested = false) { + if (!this.isAck && !requested) { + return this.destroy({ reason: 'Zombie connection', recover: WebSocketShardDestroyRecovery.Resume }); + } + + await this.send({ + op: GatewayOpcodes.Heartbeat, + d: this.session?.sequence ?? null, + }); + + this.lastHeartbeatAt = Date.now(); + this.isAck = false; + } + + private async unpackMessage(data: Buffer | ArrayBuffer, isBinary: boolean): Promise { + const decompressable = new Uint8Array(data); + + // Deal with no compression + if (!isBinary) { + return JSON.parse(this.textDecoder.decode(decompressable)) as GatewayReceivePayload; + } + + // Deal with identify compress + if (this.useIdentifyCompress) { + return new Promise((resolve, reject) => { + inflate(decompressable, { chunkSize: 65535 }, (err, result) => { + if (err) { + return reject(err); + } + + resolve(JSON.parse(this.textDecoder.decode(result)) as GatewayReceivePayload); + }); + }); + } + + // Deal with gw wide zlib-stream compression + if (this.inflate) { + const l = decompressable.length; + const flush = + l >= 4 && + decompressable[l - 4] === 0x00 && + decompressable[l - 3] === 0x00 && + decompressable[l - 2] === 0xff && + decompressable[l - 1] === 0xff; + + const zlib = (await getZlibSync())!; + this.inflate.push(Buffer.from(decompressable), flush ? zlib.Z_SYNC_FLUSH : zlib.Z_NO_FLUSH); + + if (this.inflate.err) { + this.emit('error', `${this.inflate.err}${this.inflate.msg ? `: ${this.inflate.msg}` : ''}`); + } + + if (!flush) { + return null; + } + + const { result } = this.inflate; + if (!result) { + return null; + } + + return JSON.parse(typeof result === 'string' ? result : this.textDecoder.decode(result)) as GatewayReceivePayload; + } + + this.debug([ + 'Received a message we were unable to decompress', + `isBinary: ${isBinary.toString()}`, + `useIdentifyCompress: ${this.useIdentifyCompress.toString()}`, + `inflate: ${Boolean(this.inflate).toString()}`, + ]); + + return null; + } + + private async onMessage(data: RawData, isBinary: boolean) { + const payload = await this.unpackMessage(data as Buffer | ArrayBuffer, isBinary); + if (!payload) { + return; + } + + switch (payload.op) { + case GatewayOpcodes.Dispatch: { + if (this.status === WebSocketShardStatus.Ready || this.status === WebSocketShardStatus.Resuming) { + this.emit(WebSocketShardEvents.Dispatch, { data: payload }); + } + + if (this.status === WebSocketShardStatus.Resuming) { + this.replayedEvents++; + } + + switch (payload.t) { + case GatewayDispatchEvents.Ready: { + this.emit(WebSocketShardEvents.Ready); + + this.session ??= { + sequence: payload.s, + sessionId: payload.d.session_id, + shardId: this.id, + shardCount: this.strategy.options.shardCount, + }; + + await this.strategy.updateSessionInfo(this.id, this.session); + break; + } + + case GatewayDispatchEvents.Resumed: { + this.status = WebSocketShardStatus.Ready; + this.debug([`Resumed and replayed ${this.replayedEvents} events`]); + this.emit(WebSocketShardEvents.Resumed); + break; + } + + default: { + break; + } + } + + if (this.session) { + if (payload.s > this.session.sequence) { + this.session.sequence = payload.s; + await this.strategy.updateSessionInfo(this.id, this.session); + } + } + + break; + } + + case GatewayOpcodes.Heartbeat: { + await this.heartbeat(true); + break; + } + + case GatewayOpcodes.Reconnect: { + await this.destroy({ + reason: 'Told to reconnect by Discord', + recover: WebSocketShardDestroyRecovery.Resume, + }); + break; + } + + case GatewayOpcodes.InvalidSession: { + const readyTimeout = this.timeouts.get(WebSocketShardEvents.Ready); + readyTimeout?.refresh(); + this.debug([`Invalid session; will attempt to resume: ${payload.d.toString()}`]); + const session = this.session ?? (await this.strategy.retrieveSessionInfo(this.id)); + if (payload.d && session) { + await this.resume(session); + } else { + await this.destroy({ + reason: 'Invalid session', + recover: WebSocketShardDestroyRecovery.Reconnect, + }); + } + break; + } + + case GatewayOpcodes.Hello: { + this.emit(WebSocketShardEvents.Hello); + this.debug([`Starting to heartbeat every ${payload.d.heartbeat_interval}ms`]); + this.heartbeatInterval = setInterval(() => void this.heartbeat(), payload.d.heartbeat_interval); + break; + } + + case GatewayOpcodes.HeartbeatAck: { + this.isAck = true; + this.debug([`Got heartbeat ack after ${Date.now() - this.lastHeartbeatAt}ms`]); + break; + } + } + } + + private onError(err: Error) { + this.emit('error', { err }); + } + + private async onClose(code: number) { + switch (code) { + case 1000: + case 4200: { + this.debug([`Disconnected normally from code ${code}`]); + break; + } + + case GatewayCloseCodes.UnknownError: { + this.debug([`An unknown error occured: ${code}`]); + return this.destroy({ code, recover: WebSocketShardDestroyRecovery.Resume }); + } + + case GatewayCloseCodes.UnknownOpcode: { + this.debug(['An invalid opcode was sent to Discord.']); + return this.destroy({ code, recover: WebSocketShardDestroyRecovery.Resume }); + } + + case GatewayCloseCodes.DecodeError: { + this.debug(['An invalid payload was sent to Discord.']); + return this.destroy({ code, recover: WebSocketShardDestroyRecovery.Resume }); + } + + case GatewayCloseCodes.NotAuthenticated: { + this.debug(['A request was somehow sent before the identify/resume payload.']); + return this.destroy({ code, recover: WebSocketShardDestroyRecovery.Reconnect }); + } + + case GatewayCloseCodes.AuthenticationFailed: { + throw new Error('Authentication failed'); + } + + case GatewayCloseCodes.AlreadyAuthenticated: { + this.debug(['More than one auth payload was sent.']); + return this.destroy({ code, recover: WebSocketShardDestroyRecovery.Reconnect }); + } + + case GatewayCloseCodes.InvalidSeq: { + this.debug(['An invalid sequence was sent.']); + return this.destroy({ code, recover: WebSocketShardDestroyRecovery.Reconnect }); + } + + case GatewayCloseCodes.RateLimited: { + this.debug(['The WebSocket rate limit has been hit, this should never happen']); + return this.destroy({ code, recover: WebSocketShardDestroyRecovery.Reconnect }); + } + + case GatewayCloseCodes.SessionTimedOut: { + this.debug(['Session timed out.']); + return this.destroy({ code, recover: WebSocketShardDestroyRecovery.Resume }); + } + + case GatewayCloseCodes.InvalidShard: { + throw new Error('Invalid shard'); + } + + case GatewayCloseCodes.ShardingRequired: { + throw new Error('Sharding is required'); + } + + case GatewayCloseCodes.InvalidAPIVersion: { + throw new Error('Used an invalid API version'); + } + + case GatewayCloseCodes.InvalidIntents: { + throw new Error('Used invalid intents'); + } + + case GatewayCloseCodes.DisallowedIntents: { + throw new Error('Used disallowed intents'); + } + + default: { + this.debug([`The gateway closed with an unexpected code ${code}, attempting to resume.`]); + return this.destroy({ code, recover: WebSocketShardDestroyRecovery.Resume }); + } + } + } + + private debug(messages: [string, ...string[]]) { + const message = `${messages[0]}${ + messages.length > 1 + ? `\n${messages + .slice(1) + .map((m) => ` ${m}`) + .join('\n')}` + : '' + }`; + + this.emit(WebSocketShardEvents.Debug, { message }); + } +} diff --git a/packages/ws/tsconfig.eslint.json b/packages/ws/tsconfig.eslint.json new file mode 100644 index 000000000000..d04d4be3aedc --- /dev/null +++ b/packages/ws/tsconfig.eslint.json @@ -0,0 +1,20 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "allowJs": true + }, + "include": [ + "**/*.ts", + "**/*.tsx", + "**/*.js", + "**/*.mjs", + "**/*.jsx", + "**/*.test.ts", + "**/*.test.js", + "**/*.test.mjs", + "**/*.spec.ts", + "**/*.spec.js", + "**/*.spec.mjs" + ], + "exclude": [] +} diff --git a/packages/ws/tsconfig.json b/packages/ws/tsconfig.json new file mode 100644 index 000000000000..fd8b5e417b9f --- /dev/null +++ b/packages/ws/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig.json", + "include": ["src/**/*.ts"] +} diff --git a/packages/ws/tsup.config.ts b/packages/ws/tsup.config.ts new file mode 100644 index 000000000000..463feada3ae6 --- /dev/null +++ b/packages/ws/tsup.config.ts @@ -0,0 +1,3 @@ +import { createTsupConfig } from '../../tsup.config'; + +export default createTsupConfig({ entry: ['./src/**/*.ts'], bundle: false }); diff --git a/tsup.config.ts b/tsup.config.ts index 0237faab3e2a..d6b84e1322b9 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -13,6 +13,7 @@ type ConfigOptions = Pick< | 'noExternal' | 'esbuildOptions' | 'dts' + | 'bundle' >; export const createTsupConfig = ({ @@ -32,6 +33,7 @@ export const createTsupConfig = ({ }; } }, + bundle, }: ConfigOptions = {}) => defineConfig({ clean: true, @@ -47,4 +49,6 @@ export const createTsupConfig = ({ globalName, noExternal, esbuildOptions, + bundle, + shims: true, }); diff --git a/yarn.lock b/yarn.lock index 84c61bd9f89a..d05ca3323255 100644 --- a/yarn.lock +++ b/yarn.lock @@ -43,23 +43,14 @@ __metadata: languageName: node linkType: hard -"@antfu/utils@npm:^0.5.0, @antfu/utils@npm:^0.5.1": +"@antfu/utils@npm:^0.5.0, @antfu/utils@npm:^0.5.2": version: 0.5.2 resolution: "@antfu/utils@npm:0.5.2" checksum: 9b91446b2dbb823abeeba1cc33d6ebf701a462923408ad4751fbe162da46ae0669c774c2b5435fc77691dc207ce5de5945e693d5163e07d6ef42e376b04c7af4 languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/code-frame@npm:7.16.7" - dependencies: - "@babel/highlight": ^7.16.7 - checksum: db2f7faa31bc2c9cf63197b481b30ea57147a5fc1a6fab60e5d6c02cdfbf6de8e17b5121f99917b3dabb5eeb572da078312e70697415940383efc140d4e0808b - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.18.6": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.18.6": version: 7.18.6 resolution: "@babel/code-frame@npm:7.18.6" dependencies: @@ -68,51 +59,14 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.13.11, @babel/compat-data@npm:^7.17.10": - version: 7.17.10 - resolution: "@babel/compat-data@npm:7.17.10" - checksum: e85051087cd4690de5061909a2dd2d7f8b6434a3c2e30be6c119758db2027ae1845bcd75a81127423dd568b706ac6994a1a3d7d701069a23bf5cfe900728290b - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/compat-data@npm:7.18.6" - checksum: fd73a1bd7bc29be5528d2ef78248929ed3ee72e0edb69cef6051e0aad0bf8087594db6cd9e981f0d7f5bfc274fdbb77306d8abea8ceb71e95c18afc3ebd81828 - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.18.8": +"@babel/compat-data@npm:^7.13.11, @babel/compat-data@npm:^7.18.8": version: 7.18.8 resolution: "@babel/compat-data@npm:7.18.8" checksum: 3096aafad74936477ebdd039bcf342fba84eb3100e608f3360850fb63e1efa1c66037c4824f814d62f439ab47d25164439343a6e92e9b4357024fdf571505eb9 languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16": - version: 7.18.2 - resolution: "@babel/core@npm:7.18.2" - dependencies: - "@ampproject/remapping": ^2.1.0 - "@babel/code-frame": ^7.16.7 - "@babel/generator": ^7.18.2 - "@babel/helper-compilation-targets": ^7.18.2 - "@babel/helper-module-transforms": ^7.18.0 - "@babel/helpers": ^7.18.2 - "@babel/parser": ^7.18.0 - "@babel/template": ^7.16.7 - "@babel/traverse": ^7.18.2 - "@babel/types": ^7.18.2 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.1 - semver: ^6.3.0 - checksum: 14a4142c12e004cd2477b7610408d5788ee5dd821ee9e4de204cbb72d9c399d858d9deabc3d49914d5d7c2927548160c19bdc7524b1a9f6acc1ec96a8d9848dd - languageName: node - linkType: hard - -"@babel/core@npm:^7.17.7, @babel/core@npm:^7.18.9": +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.17.7, @babel/core@npm:^7.18.6, @babel/core@npm:^7.18.9": version: 7.18.9 resolution: "@babel/core@npm:7.18.9" dependencies: @@ -135,52 +89,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/core@npm:7.18.6" - dependencies: - "@ampproject/remapping": ^2.1.0 - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.18.6 - "@babel/helper-compilation-targets": ^7.18.6 - "@babel/helper-module-transforms": ^7.18.6 - "@babel/helpers": ^7.18.6 - "@babel/parser": ^7.18.6 - "@babel/template": ^7.18.6 - "@babel/traverse": ^7.18.6 - "@babel/types": ^7.18.6 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.1 - semver: ^6.3.0 - checksum: 711459ebf7afab7b8eff88b7155c3f4a62690545f1c8c2eb6ba5ebaed01abeecb984cf9657847a2151ad24a5645efce765832aa343ce0f0386f311b67b59589a - languageName: node - linkType: hard - -"@babel/generator@npm:^7.18.2, @babel/generator@npm:^7.7.2": - version: 7.18.2 - resolution: "@babel/generator@npm:7.18.2" - dependencies: - "@babel/types": ^7.18.2 - "@jridgewell/gen-mapping": ^0.3.0 - jsesc: ^2.5.1 - checksum: d0661e95532ddd97566d41fec26355a7b28d1cbc4df95fe80cc084c413342935911b48db20910708db39714844ddd614f61c2ec4cca3fb10181418bdcaa2e7a3 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.18.6": - version: 7.18.7 - resolution: "@babel/generator@npm:7.18.7" - dependencies: - "@babel/types": ^7.18.7 - "@jridgewell/gen-mapping": ^0.3.2 - jsesc: ^2.5.1 - checksum: aad4b6873130165e9483af2888bce5a3a5ad9cca0757fc90ae11a0396757d0b295a3bff49282c8df8ab01b31972cc855ae88fd9ddc9ab00d9427dc0e01caeea9 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.18.9": +"@babel/generator@npm:^7.18.9, @babel/generator@npm:^7.7.2": version: 7.18.9 resolution: "@babel/generator@npm:7.18.9" dependencies: @@ -191,15 +100,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-annotate-as-pure@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-annotate-as-pure@npm:7.16.7" - dependencies: - "@babel/types": ^7.16.7 - checksum: d235be963fed5d48a8a4cfabc41c3f03fad6a947810dbcab9cebed7f819811457e10d99b4b2e942ad71baa7ee8e3cd3f5f38a4e4685639ddfddb7528d9a07179 - languageName: node - linkType: hard - "@babel/helper-annotate-as-pure@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-annotate-as-pure@npm:7.18.6" @@ -210,44 +110,16 @@ __metadata: linkType: hard "@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.18.6" + version: 7.18.9 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.18.9" dependencies: "@babel/helper-explode-assignable-expression": ^7.18.6 - "@babel/types": ^7.18.6 - checksum: c4d71356e0adbc20ce9fe7c1e1181ff65a78603f8bba7615745f0417fed86bad7dc0a54a840bc83667c66709b3cb3721edcb9be0d393a298ce4e9eb6d085f3c1 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.18.2": - version: 7.18.2 - resolution: "@babel/helper-compilation-targets@npm:7.18.2" - dependencies: - "@babel/compat-data": ^7.17.10 - "@babel/helper-validator-option": ^7.16.7 - browserslist: ^4.20.2 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 4f02e79f20c0b3f8db5049ba8c35027c41ccb3fc7884835d04e49886538e0f55702959db1bb75213c94a5708fec2dc81a443047559a4f184abb884c72c0059b4 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-compilation-targets@npm:7.18.6" - dependencies: - "@babel/compat-data": ^7.18.6 - "@babel/helper-validator-option": ^7.18.6 - browserslist: ^4.20.2 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: f09ddaddc83c241cb7a040025e2ba558daa1c950ce878604d91230aed8d8a90f10dfd5bb0b67bc5b3db8af1576a0d0dac1d65959a06a17259243dbb5730d0ed1 + "@babel/types": ^7.18.9 + checksum: b4bc214cb56329daff6cc18a7f7a26aeafb55a1242e5362f3d47fe3808421f8c7cd91fff95d6b9b7ccb67e14e5a67d944e49dbe026942bfcbfda19b1c72a8e72 languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.18.9": +"@babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.18.9": version: 7.18.9 resolution: "@babel/helper-compilation-targets@npm:7.18.9" dependencies: @@ -261,49 +133,20 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.17.12, @babel/helper-create-class-features-plugin@npm:^7.18.0": - version: 7.18.0 - resolution: "@babel/helper-create-class-features-plugin@npm:7.18.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.16.7 - "@babel/helper-environment-visitor": ^7.16.7 - "@babel/helper-function-name": ^7.17.9 - "@babel/helper-member-expression-to-functions": ^7.17.7 - "@babel/helper-optimise-call-expression": ^7.16.7 - "@babel/helper-replace-supers": ^7.16.7 - "@babel/helper-split-export-declaration": ^7.16.7 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 9a6ef175350f1cf87abe7a738e8c9b603da7fcdb153c74e49af509183f8705278020baddb62a12c7f9ca059487fef97d75a4adea6a1446598ad9901d010e4296 - languageName: node - linkType: hard - "@babel/helper-create-class-features-plugin@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-create-class-features-plugin@npm:7.18.6" + version: 7.18.9 + resolution: "@babel/helper-create-class-features-plugin@npm:7.18.9" dependencies: "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.6 - "@babel/helper-function-name": ^7.18.6 - "@babel/helper-member-expression-to-functions": ^7.18.6 + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-function-name": ^7.18.9 + "@babel/helper-member-expression-to-functions": ^7.18.9 "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-replace-supers": ^7.18.6 + "@babel/helper-replace-supers": ^7.18.9 "@babel/helper-split-export-declaration": ^7.18.6 peerDependencies: "@babel/core": ^7.0.0 - checksum: 4d6da441ce329867338825c044c143f0b273cbfc6a20b9099e824a46f916584f44eabab073f78f02047d86719913e8f1a8bd72f42099ebe52691c29fabb992e4 - languageName: node - linkType: hard - -"@babel/helper-create-regexp-features-plugin@npm:^7.16.7, @babel/helper-create-regexp-features-plugin@npm:^7.17.12": - version: 7.17.12 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.17.12" - dependencies: - "@babel/helper-annotate-as-pure": ^7.16.7 - regexpu-core: ^5.0.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: fe49d26b0f6c58d4c1748a4d0e98b343882b428e6db43c4ba5e0aa7ff2296b3a557f0a88de9f000599bb95640a6c47c0b0c9a952b58c11f61aabb06bcc304329 + checksum: 020dba79b92ee9a98520dad81dddb47d75b34b7b4392672cbefc59db6f5e89a96c5eb95bb1cc46b2fddf913ef63dfe6d17168f56b059af5c6965bb37b6ce1d82 languageName: node linkType: hard @@ -337,21 +180,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-environment-visitor@npm:^7.16.7, @babel/helper-environment-visitor@npm:^7.18.2": - version: 7.18.2 - resolution: "@babel/helper-environment-visitor@npm:7.18.2" - checksum: 1a9c8726fad454a082d077952a90f17188e92eabb3de236cb4782c49b39e3f69c327e272b965e9a20ff8abf37d30d03ffa6fd7974625a6c23946f70f7527f5e9 - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-environment-visitor@npm:7.18.6" - checksum: 64fce65a26efb50d2496061ab2de669dc4c42175a8e05c82279497127e5c542538ed22b38194f6f5a4e86bed6ef5a4890aed23408480db0555728b4ca660fc9c - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.18.9": +"@babel/helper-environment-visitor@npm:^7.18.6, @babel/helper-environment-visitor@npm:^7.18.9": version: 7.18.9 resolution: "@babel/helper-environment-visitor@npm:7.18.9" checksum: b25101f6162ddca2d12da73942c08ad203d7668e06663df685634a8fde54a98bc015f6f62938e8554457a592a024108d45b8f3e651fd6dcdb877275b73cc4420 @@ -367,26 +196,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-function-name@npm:^7.17.9": - version: 7.17.9 - resolution: "@babel/helper-function-name@npm:7.17.9" - dependencies: - "@babel/template": ^7.16.7 - "@babel/types": ^7.17.0 - checksum: a59b2e5af56d8f43b9b0019939a43774754beb7cb01a211809ca8031c71890999d07739e955343135ec566c4d8ff725435f1f60fb0af3bb546837c1f9f84f496 - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-function-name@npm:7.18.6" - dependencies: - "@babel/template": ^7.18.6 - "@babel/types": ^7.18.6 - checksum: bf84c2e0699aa07c3559d4262d199d4a9d0320037c2932efe3246866c3e01ce042c9c2131b5db32ba2409a9af01fb468171052819af759babc8ca93bdc6c9aeb - languageName: node - linkType: hard - "@babel/helper-function-name@npm:^7.18.9": version: 7.18.9 resolution: "@babel/helper-function-name@npm:7.18.9" @@ -397,15 +206,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-hoist-variables@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-hoist-variables@npm:7.16.7" - dependencies: - "@babel/types": ^7.16.7 - checksum: 6ae1641f4a751cd9045346e3f61c3d9ec1312fd779ab6d6fecfe2a96e59a481ad5d7e40d2a840894c13b3fd6114345b157f9e3062fc5f1580f284636e722de60 - languageName: node - linkType: hard - "@babel/helper-hoist-variables@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-hoist-variables@npm:7.18.6" @@ -415,24 +215,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.17.7": - version: 7.17.7 - resolution: "@babel/helper-member-expression-to-functions@npm:7.17.7" - dependencies: - "@babel/types": ^7.17.0 - checksum: 70f361bab627396c714c3938e94a569cb0da522179328477cdbc4318e4003c2666387ad4931d6bd5de103338c667c9e4bbe3e917fc8c527b3f3eb6175b888b7d - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-member-expression-to-functions@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: 20c8e82d2375534dfe4d4adeb01d94906e5e616143bb2775e9f1d858039d87a0f79220e0a5c2ed410c54ccdeda47a4c09609b396db1f98fe8ce9e420894ac2f3 - languageName: node - linkType: hard - "@babel/helper-member-expression-to-functions@npm:^7.18.9": version: 7.18.9 resolution: "@babel/helper-member-expression-to-functions@npm:7.18.9" @@ -442,16 +224,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.12.13, @babel/helper-module-imports@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-module-imports@npm:7.16.7" - dependencies: - "@babel/types": ^7.16.7 - checksum: ddd2c4a600a2e9a4fee192ab92bf35a627c5461dbab4af31b903d9ba4d6b6e59e0ff3499fde4e2e9a0eebe24906f00b636f8b4d9bd72ff24d50e6618215c3212 - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.18.6": +"@babel/helper-module-imports@npm:^7.12.13, @babel/helper-module-imports@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-module-imports@npm:7.18.6" dependencies: @@ -460,39 +233,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.18.0": - version: 7.18.0 - resolution: "@babel/helper-module-transforms@npm:7.18.0" - dependencies: - "@babel/helper-environment-visitor": ^7.16.7 - "@babel/helper-module-imports": ^7.16.7 - "@babel/helper-simple-access": ^7.17.7 - "@babel/helper-split-export-declaration": ^7.16.7 - "@babel/helper-validator-identifier": ^7.16.7 - "@babel/template": ^7.16.7 - "@babel/traverse": ^7.18.0 - "@babel/types": ^7.18.0 - checksum: 824c3967c08d75bb36adc18c31dcafebcd495b75b723e2e17c6185e88daf5c6db62a6a75d9f791b5f38618a349e7cb32503e715a1b9a4e8bad4d0f43e3e6b523 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-module-transforms@npm:7.18.6" - dependencies: - "@babel/helper-environment-visitor": ^7.18.6 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-simple-access": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/helper-validator-identifier": ^7.18.6 - "@babel/template": ^7.18.6 - "@babel/traverse": ^7.18.6 - "@babel/types": ^7.18.6 - checksum: 75d90be9ecd314fe2f1b668ce065d7e8b3dff82eddea88480259c5d4bd54f73a909d0998909ffe734a44ba8be85ba233359033071cc800db209d37173bd26db2 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.18.9": +"@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.18.9": version: 7.18.9 resolution: "@babel/helper-module-transforms@npm:7.18.9" dependencies: @@ -508,15 +249,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-optimise-call-expression@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-optimise-call-expression@npm:7.16.7" - dependencies: - "@babel/types": ^7.16.7 - checksum: 925feb877d5a30a71db56e2be498b3abbd513831311c0188850896c4c1ada865eea795dce5251a1539b0f883ef82493f057f84286dd01abccc4736acfafe15ea - languageName: node - linkType: hard - "@babel/helper-optimise-call-expression@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-optimise-call-expression@npm:7.18.6" @@ -526,21 +258,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.13.0, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.17.12, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.17.12 - resolution: "@babel/helper-plugin-utils@npm:7.17.12" - checksum: 4813cf0ddb0f143de032cb88d4207024a2334951db330f8216d6fa253ea320c02c9b2667429ef1a34b5e95d4cfbd085f6cb72d418999751c31d0baf2422cc61d - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-plugin-utils@npm:7.18.6" - checksum: 3dbfceb6c10fdf6c78a0e57f24e991ff8967b8a0bd45fe0314fb4a8ccf7c8ad4c3778c319a32286e7b1f63d507173df56b4e69fb31b71e1b447a73efa1ca723e - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.18.9": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.13.0, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": version: 7.18.9 resolution: "@babel/helper-plugin-utils@npm:7.18.9" checksum: ebae876cd60f1fe238c7210986093845fa5c4cad5feeda843ea4d780bf068256717650376d3af2a5e760f2ed6a35c065ae144f99c47da3e54aa6cba99d8804e0 @@ -548,46 +266,20 @@ __metadata: linkType: hard "@babel/helper-remap-async-to-generator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-remap-async-to-generator@npm:7.18.6" + version: 7.18.9 + resolution: "@babel/helper-remap-async-to-generator@npm:7.18.9" dependencies: "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.6 - "@babel/helper-wrap-function": ^7.18.6 - "@babel/types": ^7.18.6 + "@babel/helper-environment-visitor": ^7.18.9 + "@babel/helper-wrap-function": ^7.18.9 + "@babel/types": ^7.18.9 peerDependencies: "@babel/core": ^7.0.0 - checksum: 83e890624da9413c74a8084f6b5f7bfe93abad8a6e1a33464f3086e2a1336751672e6ac6d74dddd35b641d19584cc0f93d02c52a4f33385b3be5b40942fe30da - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.16.7": - version: 7.18.2 - resolution: "@babel/helper-replace-supers@npm:7.18.2" - dependencies: - "@babel/helper-environment-visitor": ^7.18.2 - "@babel/helper-member-expression-to-functions": ^7.17.7 - "@babel/helper-optimise-call-expression": ^7.16.7 - "@babel/traverse": ^7.18.2 - "@babel/types": ^7.18.2 - checksum: c0083b7933672dd2aed50b79021c46401c83f41bc2132def19c5414cf8f944251f6d91dd959b2bedada9a7436a80fab629adb486e008566290c82293e89fec05 - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-replace-supers@npm:7.18.6" - dependencies: - "@babel/helper-environment-visitor": ^7.18.6 - "@babel/helper-member-expression-to-functions": ^7.18.6 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/traverse": ^7.18.6 - "@babel/types": ^7.18.6 - checksum: 48e869dc8d3569136d239cd6354687e49c3225b114cb2141ed3a5f31cff5278f463eb25913df3345489061f377ad5d6e49778bddedd098fa8ee3adcec07cc1d3 + checksum: 4be6076192308671b046245899b703ba090dbe7ad03e0bea897bb2944ae5b88e5e85853c9d1f83f643474b54c578d8ac0800b80341a86e8538264a725fbbefec languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.18.9": +"@babel/helper-replace-supers@npm:^7.18.6, @babel/helper-replace-supers@npm:^7.18.9": version: 7.18.9 resolution: "@babel/helper-replace-supers@npm:7.18.9" dependencies: @@ -600,15 +292,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.17.7, @babel/helper-simple-access@npm:^7.18.2": - version: 7.18.2 - resolution: "@babel/helper-simple-access@npm:7.18.2" - dependencies: - "@babel/types": ^7.18.2 - checksum: c0862b56db7e120754d89273a039b128c27517389f6a4425ff24e49779791e8fe10061579171fb986be81fa076778acb847c709f6f5e396278d9c5e01360c375 - languageName: node - linkType: hard - "@babel/helper-simple-access@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-simple-access@npm:7.18.6" @@ -618,24 +301,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.16.0" - dependencies: - "@babel/types": ^7.16.0 - checksum: b9ed2896eb253e6a85f472b0d4098ed80403758ad1a4e34b02b11e8276e3083297526758b1a3e6886e292987266f10622d7dbced3508cc22b296a74903b41cfb - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: 069750f9690b2995617c42be4b7848a4490cd30f1edc72401d9d2ae362bc186d395b7d8c1e171c1b6c09751642ab1bba578cccf8c0dfc82b4541f8627965aea7 - languageName: node - linkType: hard - "@babel/helper-skip-transparent-expression-wrappers@npm:^7.18.9": version: 7.18.9 resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.18.9" @@ -645,15 +310,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-split-export-declaration@npm:7.16.7" - dependencies: - "@babel/types": ^7.16.7 - checksum: e10aaf135465c55114627951b79115f24bc7af72ecbb58d541d66daf1edaee5dde7cae3ec8c3639afaf74526c03ae3ce723444e3b5b3dc77140c456cd84bcaa1 - languageName: node - linkType: hard - "@babel/helper-split-export-declaration@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-split-export-declaration@npm:7.18.6" @@ -663,13 +319,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-validator-identifier@npm:7.16.7" - checksum: dbb3db9d184343152520a209b5684f5e0ed416109cde82b428ca9c759c29b10c7450657785a8b5c5256aa74acc6da491c1f0cf6b784939f7931ef82982051b69 - languageName: node - linkType: hard - "@babel/helper-validator-identifier@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-validator-identifier@npm:7.18.6" @@ -677,13 +326,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-validator-option@npm:7.16.7" - checksum: c5ccc451911883cc9f12125d47be69434f28094475c1b9d2ada7c3452e6ac98a1ee8ddd364ca9e3f9855fcdee96cdeafa32543ebd9d17fee7a1062c202e80570 - languageName: node - linkType: hard - "@babel/helper-validator-option@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-validator-option@npm:7.18.6" @@ -691,37 +333,15 @@ __metadata: languageName: node linkType: hard -"@babel/helper-wrap-function@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-wrap-function@npm:7.18.6" - dependencies: - "@babel/helper-function-name": ^7.18.6 - "@babel/template": ^7.18.6 - "@babel/traverse": ^7.18.6 - "@babel/types": ^7.18.6 - checksum: b7a4f59b302ed77407e5c2005d8677ebdeabbfa69230e15f80b5e06cc532369c1e48399ec3e67dd3341e7ab9b3f84f17a255e2c1ec4e0d42bb571a4dac5472d6 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.18.2": - version: 7.18.2 - resolution: "@babel/helpers@npm:7.18.2" - dependencies: - "@babel/template": ^7.16.7 - "@babel/traverse": ^7.18.2 - "@babel/types": ^7.18.2 - checksum: 94620242f23f6d5f9b83a02b1aa1632ffb05b0815e1bb53d3b46d64aa8e771066bba1db8bd267d9091fb00134cfaeda6a8d69d1d4cc2c89658631adfa077ae70 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helpers@npm:7.18.6" +"@babel/helper-wrap-function@npm:^7.18.9": + version: 7.18.9 + resolution: "@babel/helper-wrap-function@npm:7.18.9" dependencies: + "@babel/helper-function-name": ^7.18.9 "@babel/template": ^7.18.6 - "@babel/traverse": ^7.18.6 - "@babel/types": ^7.18.6 - checksum: 5dea4fa53776703ae4190cacd3f81464e6e00cf0b6908ea9b0af2b3d9992153f3746dd8c33d22ec198f77a8eaf13a273d83cd8847f7aef983801e7bfafa856ec + "@babel/traverse": ^7.18.9 + "@babel/types": ^7.18.9 + checksum: da818e519b48bbaa748a4fa87b0ba681bc627c9eb9557008d5307d42d3f536fe435b775163088dd9639b0120c8ea1ae1021777f48806f9f83397f4df622b88d3 languageName: node linkType: hard @@ -736,17 +356,6 @@ __metadata: languageName: node linkType: hard -"@babel/highlight@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/highlight@npm:7.16.7" - dependencies: - "@babel/helper-validator-identifier": ^7.16.7 - chalk: ^2.0.0 - js-tokens: ^4.0.0 - checksum: f7e04e7e03b83c2cca984f4d3e180c9b018784f45d03367e94daf983861229ddc47264045f3b58dfeb0007f9c67bc2a76c4de1693bad90e5394876ef55ece5bb - languageName: node - linkType: hard - "@babel/highlight@npm:^7.18.6": version: 7.18.6 resolution: "@babel/highlight@npm:7.18.6" @@ -758,25 +367,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.16.7, @babel/parser@npm:^7.18.0": - version: 7.18.4 - resolution: "@babel/parser@npm:7.18.4" - bin: - parser: ./bin/babel-parser.js - checksum: e05b2dc720c4b200e088258f3c2a2de5041c140444edc38181d1217b10074e881a7133162c5b62356061f26279f08df5a06ec14c5842996ee8601ad03c57a44f - languageName: node - linkType: hard - -"@babel/parser@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/parser@npm:7.18.6" - bin: - parser: ./bin/babel-parser.js - checksum: 533ffc26667b7e2e0d87ae11368d90b6a3a468734d6dfe9c4697c24f48373cf9cc35ee08e416728f087fc56531b68022f752097941feddc60e0223d69a4d4cad - languageName: node - linkType: hard - -"@babel/parser@npm:^7.18.9": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.18.6, @babel/parser@npm:^7.18.9, @babel/parser@npm:^7.9.4": version: 7.18.9 resolution: "@babel/parser@npm:7.18.9" bin: @@ -785,15 +376,6 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.9.4": - version: 7.16.7 - resolution: "@babel/parser@npm:7.16.7" - bin: - parser: ./bin/babel-parser.js - checksum: e664ff1edda164ab3f3c97fc1dd1a8930b0fba9981cbf873d3f25a22d16d50e2efcfaf81daeefa978bff2c4f268d34832f6817c8bc4e03594c3f43beba92fb68 - languageName: node - linkType: hard - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.18.6" @@ -805,19 +387,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-skip-transparent-expression-wrappers": ^7.18.6 - "@babel/plugin-proposal-optional-chaining": ^7.18.6 - peerDependencies: - "@babel/core": ^7.13.0 - checksum: 0f0057cd12e98e297fd952c9cfdbffe5e34813f1b302e941fc212ca2a7b183ec2a227a1c49e104bbda528a4da6be03dbfb6e0d275d9572fb16b6ac5cda09fcd7 - languageName: node - linkType: hard - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.18.9": version: 7.18.9 resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.18.9" @@ -845,19 +414,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-class-properties@npm:^7.13.0": - version: 7.17.12 - resolution: "@babel/plugin-proposal-class-properties@npm:7.17.12" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.17.12 - "@babel/helper-plugin-utils": ^7.17.12 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 884df6a4617a18cdc2a630096b2a10954bcc94757c893bb01abd6702fdc73343ca5c611f4884c4634e0608f5e86c3093ea6b973ce00bf21b248ba54de92c837d - languageName: node - linkType: hard - -"@babel/plugin-proposal-class-properties@npm:^7.18.6": +"@babel/plugin-proposal-class-properties@npm:^7.13.0, @babel/plugin-proposal-class-properties@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6" dependencies: @@ -894,18 +451,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-export-namespace-from@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3227307e1155e8434825c02fb2e4e91e590aeb629ce6ce23e4fe869d0018a144c4674bf98863e1bb6d4e4a6f831e686ae43f46a87894e4286e31e6492a5571eb - languageName: node - linkType: hard - "@babel/plugin-proposal-export-namespace-from@npm:^7.18.9": version: 7.18.9 resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.18.9" @@ -930,18 +475,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-logical-assignment-operators@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4fe0a0d6739da6b1929f5015846e1de3b72d7dd07c665975ca795850ad7d048f8a0756c057a4cd1d71080384ad6283c30fcc239393da6848eabc38e38d3206c5 - languageName: node - linkType: hard - "@babel/plugin-proposal-logical-assignment-operators@npm:^7.18.9": version: 7.18.9 resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.18.9" @@ -954,19 +487,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8": - version: 7.17.12 - resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.17.12" - dependencies: - "@babel/helper-plugin-utils": ^7.17.12 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7881d8005d0d4e17a94f3bfbfa4a0d8af016d2f62ed90912fabb8c5f8f0cc0a15fd412f09c230984c40b5c893086987d403c73198ef388ffcb3726ff72efc009 - languageName: node - linkType: hard - -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.18.6": +"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" dependencies: @@ -990,21 +511,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-object-rest-spread@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.18.6" - dependencies: - "@babel/compat-data": ^7.18.6 - "@babel/helper-compilation-targets": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-transform-parameters": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9b7516bad285a8706beb5e619cf505364bfbe79e219ae86d2139b32010d238d146301c1424488926a57f6d729556e21cfccab29f28c26ecd0dda05e53d7160b1 - languageName: node - linkType: hard - "@babel/plugin-proposal-object-rest-spread@npm:^7.18.9": version: 7.18.9 resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.18.9" @@ -1032,33 +538,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-optional-chaining@npm:^7.13.12": - version: 7.17.12 - resolution: "@babel/plugin-proposal-optional-chaining@npm:7.17.12" - dependencies: - "@babel/helper-plugin-utils": ^7.17.12 - "@babel/helper-skip-transparent-expression-wrappers": ^7.16.0 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a27b220573441a0ad3eecf8ddcb249556a64de45add236791d76cfa164a8fd34181857528fa7d21d03d6b004e7c043bd929cce068e611ee1ac72aaf4d397aa12 - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-chaining@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-optional-chaining@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-skip-transparent-expression-wrappers": ^7.18.6 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9c3bf80cfb41ee53a2a5d0f316ef5d125bb0d400ede1ee1a68a9b7dfc998036cca20c3901cb5c9e24fdd9f08c0056030e042f4637bc9bbc36b682384b38e2d96 - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-chaining@npm:^7.18.9": +"@babel/plugin-proposal-optional-chaining@npm:^7.13.12, @babel/plugin-proposal-optional-chaining@npm:^7.18.9": version: 7.18.9 resolution: "@babel/plugin-proposal-optional-chaining@npm:7.18.9" dependencies: @@ -1097,7 +577,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-unicode-property-regex@npm:^7.18.6": +"@babel/plugin-proposal-unicode-property-regex@npm:^7.18.6, @babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": version: 7.18.6 resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.18.6" dependencies: @@ -1109,18 +589,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": - version: 7.17.12 - resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.17.12" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.17.12 - "@babel/helper-plugin-utils": ^7.17.12 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0e4194510415ed11849f1617fcb32d996df746ba93cd05ebbabecb63cfc02c0e97b585c97da3dcf68acdd3c8b71cfae964abe5d5baba6bd3977a475d9225ad9e - languageName: node - linkType: hard - "@babel/plugin-syntax-async-generators@npm:^7.8.4": version: 7.8.4 resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" @@ -1187,14 +655,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-flow@npm:^7.17.12": - version: 7.17.12 - resolution: "@babel/plugin-syntax-flow@npm:7.17.12" +"@babel/plugin-syntax-flow@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-syntax-flow@npm:7.18.6" dependencies: - "@babel/helper-plugin-utils": ^7.17.12 + "@babel/helper-plugin-utils": ^7.18.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f92f18c9414478a3f408866c8a3d3f6b83f5369c8b76880245ba05d7ab9166d47c7d4ab1e0ac8b7a69d1d1b448bea836d1b340f823b1e548fec62a563cc9d0ec + checksum: abe82062b3eef14de7d2b3c0e4fecf80a3e796ca497e9df616d12dd250968abf71495ee85a955b43a6c827137203f0c409450cf792732ed0d6907c806580ea71 languageName: node linkType: hard @@ -1330,18 +798,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.17.12, @babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.17.12 - resolution: "@babel/plugin-syntax-typescript@npm:7.17.12" - dependencies: - "@babel/helper-plugin-utils": ^7.17.12 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 50ab09f1953a2b0586cff9e29bf7cea3d886b48c1361a861687c2aef46356c6d73778c3341b0c051dc82a34417f19e9d759ae918353c5a98d25e85f2f6d24181 - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.18.6": +"@babel/plugin-syntax-typescript@npm:^7.18.6, @babel/plugin-syntax-typescript@npm:^7.7.2": version: 7.18.6 resolution: "@babel/plugin-syntax-typescript@npm:7.18.6" dependencies: @@ -1386,44 +843,15 @@ __metadata: checksum: 0a0df61f94601e3666bf39f2cc26f5f7b22a94450fb93081edbed967bd752ce3f81d1227fefd3799f5ee2722171b5e28db61379234d1bb85b6ec689589f99d7e languageName: node linkType: hard - -"@babel/plugin-transform-block-scoping@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-block-scoping@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b117a005a9d5aedacc4a899a4d504b7f46e4c1e852b62d34a7f1cb06caecb1f69507b6a07d0ba6c6241ddd8f470bc6f483513d87637e49f6c508aadf23cf391a - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoping@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-block-scoping@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f8064ea431eb7aa349dc5b6be87a650f912b48cd65afde917e8644f6f840d7f9d2ce4795f2aa3955aa5b23a73d4ad38abd03386ae109b4b8702b746c6d35bda3 - languageName: node - linkType: hard - -"@babel/plugin-transform-classes@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-classes@npm:7.18.6" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.6 - "@babel/helper-function-name": ^7.18.6 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-replace-supers": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - globals: ^11.1.0 + +"@babel/plugin-transform-block-scoping@npm:^7.18.9": + version: 7.18.9 + resolution: "@babel/plugin-transform-block-scoping@npm:7.18.9" + dependencies: + "@babel/helper-plugin-utils": ^7.18.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 661e37037912a25a77fe8bef7e9d480c24ff4ba4000a3137243b098c86cf5ddc970af66c5c245f828c7dcfafc24e80d260f31274e2f2d6dce49a0964a7648a0c + checksum: f8064ea431eb7aa349dc5b6be87a650f912b48cd65afde917e8644f6f840d7f9d2ce4795f2aa3955aa5b23a73d4ad38abd03386ae109b4b8702b746c6d35bda3 languageName: node linkType: hard @@ -1445,17 +873,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-computed-properties@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 686d7b9d03192959684de11ddf9c616ecfb314b199e9191f2ebbbfe0e0c9d6a3a5245668cde620e949e5891ca9a9d90a224fbf605dfb94d05b81aff127c5ae60 - languageName: node - linkType: hard - "@babel/plugin-transform-computed-properties@npm:^7.18.9": version: 7.18.9 resolution: "@babel/plugin-transform-computed-properties@npm:7.18.9" @@ -1467,17 +884,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-destructuring@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 256573bd2712e292784befb82fcb88b070c16b4d129469ea886885d8fbafdbb072c9fcf7f82039d2c61b05f2005db34e5068b2a6e813941c41ce709249f357c1 - languageName: node - linkType: hard - "@babel/plugin-transform-destructuring@npm:^7.18.9": version: 7.18.9 resolution: "@babel/plugin-transform-destructuring@npm:7.18.9" @@ -1489,7 +895,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.18.6": +"@babel/plugin-transform-dotall-regex@npm:^7.18.6, @babel/plugin-transform-dotall-regex@npm:^7.4.4": version: 7.18.6 resolution: "@babel/plugin-transform-dotall-regex@npm:7.18.6" dependencies: @@ -1501,29 +907,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.4.4": - version: 7.16.7 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.16.7" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.16.7 - "@babel/helper-plugin-utils": ^7.16.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 554570dddfd5bfd87ab307be520f69a3d4ed2d2db677c165971b400d4c96656d0c165b318e69f1735612dcd12e04c0ee257697dc26800e8a572ca73bc05fa0f4 - languageName: node - linkType: hard - -"@babel/plugin-transform-duplicate-keys@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c21797ae06e84e3d1502b1214279215e4dcb2e181198bfb9b1644e65ca0288441d3d70a9ea745f687095e9226b9a4a62b9e53fb944c8924b9591ce4e0039b042 - languageName: node - linkType: hard - "@babel/plugin-transform-duplicate-keys@npm:^7.18.9": version: 7.18.9 resolution: "@babel/plugin-transform-duplicate-keys@npm:7.18.9" @@ -1547,26 +930,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-flow-strip-types@npm:^7.17.12": - version: 7.17.12 - resolution: "@babel/plugin-transform-flow-strip-types@npm:7.17.12" - dependencies: - "@babel/helper-plugin-utils": ^7.17.12 - "@babel/plugin-syntax-flow": ^7.17.12 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c37d3cc00aaec2036d1046f5376820f5c6098df493bd9a4d9013c47e0f5ef9c213eb4567ba1ce466269d9771f5cdc76613309c310b696a0489a20e593c8967e2 - languageName: node - linkType: hard - -"@babel/plugin-transform-for-of@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-for-of@npm:7.18.6" +"@babel/plugin-transform-flow-strip-types@npm:^7.18.6": + version: 7.18.9 + resolution: "@babel/plugin-transform-flow-strip-types@npm:7.18.9" dependencies: - "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-plugin-utils": ^7.18.9 + "@babel/plugin-syntax-flow": ^7.18.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: fd92e18d6cd90063c4d5c7562d8b6ed1c7bd6c13a9451966ebfcc5f0f5645f306de615207322eafd06e297ea2339e28ba664e3ed276759dde8e14fbdce4cf108 + checksum: f25fe67b4986a5361539191ccfbf6a84fb6729db6f04c897799e2081c6b96b475cf4e05ab207bd63d7112d5d9465b5efbcc1def7940cba3ba69776a09f7db88d languageName: node linkType: hard @@ -1581,19 +953,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-function-name@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-function-name@npm:7.18.6" - dependencies: - "@babel/helper-compilation-targets": ^7.18.6 - "@babel/helper-function-name": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d15d36f52d11a1b6dde3cfc0975eb9c030d66207875a722860bc0637f7515f94107b35320306967faaaa896523097e8f5c3dd6982d926f52016525ceaa9e3e42 - languageName: node - linkType: hard - "@babel/plugin-transform-function-name@npm:^7.18.9": version: 7.18.9 resolution: "@babel/plugin-transform-function-name@npm:7.18.9" @@ -1607,17 +966,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-literals@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 859e2405d51931c8c0ea39890c0bcf6c7c01793fe99409844fe122e4c342528f87cd13b8210dd2873ecf5c643149b310c4bc5eb9a4c45928de142063ab04b2b8 - languageName: node - linkType: hard - "@babel/plugin-transform-literals@npm:^7.18.9": version: 7.18.9 resolution: "@babel/plugin-transform-literals@npm:7.18.9" @@ -1653,21 +1001,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.13.8": - version: 7.18.2 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.18.2" - dependencies: - "@babel/helper-module-transforms": ^7.18.0 - "@babel/helper-plugin-utils": ^7.17.12 - "@babel/helper-simple-access": ^7.18.2 - babel-plugin-dynamic-import-node: ^2.3.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 99c1c5ce9c353e29eb680ebb5bdf27c076c6403e133a066999298de642423cc7f38cfbac02372d33ed73278da13be23c4be7d60169c3e27bd900a373e61a599a - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-commonjs@npm:^7.18.6": +"@babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-transform-modules-commonjs@npm:7.18.6" dependencies: @@ -1681,21 +1015,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.18.6" - dependencies: - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-module-transforms": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-validator-identifier": ^7.18.6 - babel-plugin-dynamic-import-node: ^2.3.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 69e476477fe4c18a5975aa683684b2db76c76013d2387110ffc7b221071ec611cd3961b68631bdae7a57cb5cc0decdbb07119ef168e9dcdae9ba803a7b352ab0 - languageName: node - linkType: hard - "@babel/plugin-transform-modules-systemjs@npm:^7.18.9": version: 7.18.9 resolution: "@babel/plugin-transform-modules-systemjs@npm:7.18.9" @@ -1758,17 +1077,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-parameters@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 35bfdf5b2e7f4c10b68aff317b6d47cc5b2261b85158f427696e1ce17f3da466a098ad4e57dc3deb4e7b349994313cfe459d42ecd5f4028989bcc710e62ed709 - languageName: node - linkType: hard - "@babel/plugin-transform-parameters@npm:^7.18.8": version: 7.18.8 resolution: "@babel/plugin-transform-parameters@npm:7.18.8" @@ -1873,18 +1181,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-spread@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-skip-transparent-expression-wrappers": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 996b139ed68503700184f709dc996f285be285282d1780227185b622d9642f5bd60996fcfe910ed0495834f1935df805e7abb36b4b587222264c61020ba4485b - languageName: node - linkType: hard - "@babel/plugin-transform-spread@npm:^7.18.9": version: 7.18.9 resolution: "@babel/plugin-transform-spread@npm:7.18.9" @@ -1908,17 +1204,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-template-literals@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6ec354415f92850c927dd3ad90e337df8ee1aeb4cdb2c643208bc8652be91f647c137846586b14bc2b2d7ec408c2b74af2d154ba0972a4fe8b559f8c3e07a3aa - languageName: node - linkType: hard - "@babel/plugin-transform-template-literals@npm:^7.18.9": version: 7.18.9 resolution: "@babel/plugin-transform-template-literals@npm:7.18.9" @@ -1930,17 +1215,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-typeof-symbol@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b018ac3275958ed74caa2fdb900873bc61907e0cb8b70197ecd2f0e98611119d7a5831761bd14710882c94903e220e6338dd2e7346eca678c788b30457080a7e - languageName: node - linkType: hard - "@babel/plugin-transform-typeof-symbol@npm:^7.18.9": version: 7.18.9 resolution: "@babel/plugin-transform-typeof-symbol@npm:7.18.9" @@ -1952,29 +1226,16 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.17.12": - version: 7.18.4 - resolution: "@babel/plugin-transform-typescript@npm:7.18.4" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.0 - "@babel/helper-plugin-utils": ^7.17.12 - "@babel/plugin-syntax-typescript": ^7.17.12 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d4575d473af634f77070f847478dfd8de7662f9a531dbaedf1f99c49b6e9b7c76d7f562a9595a82a02867a55e1f3f0a4f48c6f8756712414065a232ed856b7ae - languageName: node - linkType: hard - "@babel/plugin-transform-typescript@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-typescript@npm:7.18.6" + version: 7.18.8 + resolution: "@babel/plugin-transform-typescript@npm:7.18.8" dependencies: "@babel/helper-create-class-features-plugin": ^7.18.6 "@babel/helper-plugin-utils": ^7.18.6 "@babel/plugin-syntax-typescript": ^7.18.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 9dc070304688dd183b2abb6bdac6f4b1939df7cc8caf32c57327bf90de26abce2130c5d807e82e25287d3a3e23f7532c9f7afd44a2e7bb815cae92015d352925 + checksum: 627211f1658870274fcabf38a71bb08ae219e3ac672423083574fabe2c857f28d39243cb7279adada8468c912a7beebc0622770ed66885a1e33b84ccc8bfd7df languageName: node linkType: hard @@ -2001,92 +1262,7 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/preset-env@npm:7.18.6" - dependencies: - "@babel/compat-data": ^7.18.6 - "@babel/helper-compilation-targets": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-validator-option": ^7.18.6 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.18.6 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.18.6 - "@babel/plugin-proposal-async-generator-functions": ^7.18.6 - "@babel/plugin-proposal-class-properties": ^7.18.6 - "@babel/plugin-proposal-class-static-block": ^7.18.6 - "@babel/plugin-proposal-dynamic-import": ^7.18.6 - "@babel/plugin-proposal-export-namespace-from": ^7.18.6 - "@babel/plugin-proposal-json-strings": ^7.18.6 - "@babel/plugin-proposal-logical-assignment-operators": ^7.18.6 - "@babel/plugin-proposal-nullish-coalescing-operator": ^7.18.6 - "@babel/plugin-proposal-numeric-separator": ^7.18.6 - "@babel/plugin-proposal-object-rest-spread": ^7.18.6 - "@babel/plugin-proposal-optional-catch-binding": ^7.18.6 - "@babel/plugin-proposal-optional-chaining": ^7.18.6 - "@babel/plugin-proposal-private-methods": ^7.18.6 - "@babel/plugin-proposal-private-property-in-object": ^7.18.6 - "@babel/plugin-proposal-unicode-property-regex": ^7.18.6 - "@babel/plugin-syntax-async-generators": ^7.8.4 - "@babel/plugin-syntax-class-properties": ^7.12.13 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - "@babel/plugin-syntax-import-assertions": ^7.18.6 - "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - "@babel/plugin-syntax-top-level-await": ^7.14.5 - "@babel/plugin-transform-arrow-functions": ^7.18.6 - "@babel/plugin-transform-async-to-generator": ^7.18.6 - "@babel/plugin-transform-block-scoped-functions": ^7.18.6 - "@babel/plugin-transform-block-scoping": ^7.18.6 - "@babel/plugin-transform-classes": ^7.18.6 - "@babel/plugin-transform-computed-properties": ^7.18.6 - "@babel/plugin-transform-destructuring": ^7.18.6 - "@babel/plugin-transform-dotall-regex": ^7.18.6 - "@babel/plugin-transform-duplicate-keys": ^7.18.6 - "@babel/plugin-transform-exponentiation-operator": ^7.18.6 - "@babel/plugin-transform-for-of": ^7.18.6 - "@babel/plugin-transform-function-name": ^7.18.6 - "@babel/plugin-transform-literals": ^7.18.6 - "@babel/plugin-transform-member-expression-literals": ^7.18.6 - "@babel/plugin-transform-modules-amd": ^7.18.6 - "@babel/plugin-transform-modules-commonjs": ^7.18.6 - "@babel/plugin-transform-modules-systemjs": ^7.18.6 - "@babel/plugin-transform-modules-umd": ^7.18.6 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.18.6 - "@babel/plugin-transform-new-target": ^7.18.6 - "@babel/plugin-transform-object-super": ^7.18.6 - "@babel/plugin-transform-parameters": ^7.18.6 - "@babel/plugin-transform-property-literals": ^7.18.6 - "@babel/plugin-transform-regenerator": ^7.18.6 - "@babel/plugin-transform-reserved-words": ^7.18.6 - "@babel/plugin-transform-shorthand-properties": ^7.18.6 - "@babel/plugin-transform-spread": ^7.18.6 - "@babel/plugin-transform-sticky-regex": ^7.18.6 - "@babel/plugin-transform-template-literals": ^7.18.6 - "@babel/plugin-transform-typeof-symbol": ^7.18.6 - "@babel/plugin-transform-unicode-escapes": ^7.18.6 - "@babel/plugin-transform-unicode-regex": ^7.18.6 - "@babel/preset-modules": ^0.1.5 - "@babel/types": ^7.18.6 - babel-plugin-polyfill-corejs2: ^0.3.1 - babel-plugin-polyfill-corejs3: ^0.5.2 - babel-plugin-polyfill-regenerator: ^0.3.1 - core-js-compat: ^3.22.1 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0598ff98b69116e289174d89d976f27eff54d9d7f9f95a1feadf743c18021cd9785ddf2439de9af360f5625450816e4bc3b76ddd0c20ecc64e8802f943f07302 - languageName: node - linkType: hard - -"@babel/preset-env@npm:^7.18.9": +"@babel/preset-env@npm:^7.18.6, @babel/preset-env@npm:^7.18.9": version: 7.18.9 resolution: "@babel/preset-env@npm:7.18.9" dependencies: @@ -2172,15 +1348,15 @@ __metadata: linkType: hard "@babel/preset-flow@npm:^7.13.13": - version: 7.17.12 - resolution: "@babel/preset-flow@npm:7.17.12" + version: 7.18.6 + resolution: "@babel/preset-flow@npm:7.18.6" dependencies: - "@babel/helper-plugin-utils": ^7.17.12 - "@babel/helper-validator-option": ^7.16.7 - "@babel/plugin-transform-flow-strip-types": ^7.17.12 + "@babel/helper-plugin-utils": ^7.18.6 + "@babel/helper-validator-option": ^7.18.6 + "@babel/plugin-transform-flow-strip-types": ^7.18.6 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 21b123c21133eb0998f7b847176da392d49e894671c96785c2471d34845bb50cf4d376e1b4ea3edeafb8b258cc884cd3bed5882fe7ba8d7b0522f3829dea39c5 + checksum: 9100d4eab3402e6601e361a5b235e46d90cfd389c12db19e2a071e1082ca2a00c04bd47eb185ce68d8979e7c8f3e548cd5d61b86dcd701135468fb929c3aecb6 languageName: node linkType: hard @@ -2199,20 +1375,7 @@ __metadata: languageName: node linkType: hard -"@babel/preset-typescript@npm:^7.13.0": - version: 7.17.12 - resolution: "@babel/preset-typescript@npm:7.17.12" - dependencies: - "@babel/helper-plugin-utils": ^7.17.12 - "@babel/helper-validator-option": ^7.16.7 - "@babel/plugin-transform-typescript": ^7.17.12 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f4ee9eeb0ef631a47d1c9bd7f6e365ae0bacefa3f47c702b03c51652ea764c267b26fdcf2814718b26c73accdd0fff7fcec1bb2d00625a967ecd7dac2f5fdce1 - languageName: node - linkType: hard - -"@babel/preset-typescript@npm:^7.18.6": +"@babel/preset-typescript@npm:^7.13.0, @babel/preset-typescript@npm:^7.18.6": version: 7.18.6 resolution: "@babel/preset-typescript@npm:7.18.6" dependencies: @@ -2226,8 +1389,8 @@ __metadata: linkType: hard "@babel/register@npm:^7.13.16": - version: 7.17.7 - resolution: "@babel/register@npm:7.17.7" + version: 7.18.9 + resolution: "@babel/register@npm:7.18.9" dependencies: clone-deep: ^4.0.1 find-cache-dir: ^2.0.0 @@ -2236,16 +1399,16 @@ __metadata: source-map-support: ^0.5.16 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b4b352a29487e9a45f3694e3f7cacc24668add2c3f9a45a5c8768a39cf495b1b49b7c95f0ebc6e415db4ac66317d20de15b3de96ca40f76d192137c4ad4cc7ce + checksum: 4aeaff97e061a397f632659082ba86c539ef8194697b236d991c10d1c2ea8f73213d3b5b3b2c24625951a1ef726b7a7d2e70f70ffcb37f79ef0c1a745eebef21 languageName: node linkType: hard "@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.6, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2": - version: 7.18.3 - resolution: "@babel/runtime@npm:7.18.3" + version: 7.18.9 + resolution: "@babel/runtime@npm:7.18.9" dependencies: regenerator-runtime: ^0.13.4 - checksum: db8526226aa02cfa35a5a7ac1a34b5f303c62a1f000c7db48cb06c6290e616483e5036ab3c4e7a84d0f3be6d4e2148d5fe5cec9564bf955f505c3e764b83d7f1 + checksum: 36dd736baba7164e82b3cc9d43e081f0cb2d05ff867ad39cac515d99546cee75b7f782018b02a3dcf5f2ef3d27f319faa68965fdfec49d4912c60c6002353a2e languageName: node linkType: hard @@ -2256,18 +1419,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.16.7, @babel/template@npm:^7.3.3": - version: 7.16.7 - resolution: "@babel/template@npm:7.16.7" - dependencies: - "@babel/code-frame": ^7.16.7 - "@babel/parser": ^7.16.7 - "@babel/types": ^7.16.7 - checksum: 10cd112e89276e00f8b11b55a51c8b2f1262c318283a980f4d6cdb0286dc05734b9aaeeb9f3ad3311900b09bc913e02343fcaa9d4a4f413964aaab04eb84ac4a - languageName: node - linkType: hard - -"@babel/template@npm:^7.18.6": +"@babel/template@npm:^7.18.6, @babel/template@npm:^7.3.3": version: 7.18.6 resolution: "@babel/template@npm:7.18.6" dependencies: @@ -2278,43 +1430,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.18.0, @babel/traverse@npm:^7.18.2, @babel/traverse@npm:^7.7.2": - version: 7.18.2 - resolution: "@babel/traverse@npm:7.18.2" - dependencies: - "@babel/code-frame": ^7.16.7 - "@babel/generator": ^7.18.2 - "@babel/helper-environment-visitor": ^7.18.2 - "@babel/helper-function-name": ^7.17.9 - "@babel/helper-hoist-variables": ^7.16.7 - "@babel/helper-split-export-declaration": ^7.16.7 - "@babel/parser": ^7.18.0 - "@babel/types": ^7.18.2 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: e21c2d550bf610406cf21ef6fbec525cb1d80b9d6d71af67552478a24ee371203cb4025b23b110ae7288a62a874ad5898daad19ad23daa95dfc8ab47a47a092f - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/traverse@npm:7.18.6" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.6 - "@babel/helper-function-name": ^7.18.6 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.18.6 - "@babel/types": ^7.18.6 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 5427a9db63984b2600f62b257dab18e3fc057997b69d708573bfc88eb5eacd6678fb24fddba082d6ac050734b8846ce110960be841ea1e461d66e2cde72b6b07 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.18.9": +"@babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.7.2": version: 7.18.9 resolution: "@babel/traverse@npm:7.18.9" dependencies: @@ -2332,27 +1448,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.16.0, @babel/types@npm:^7.16.7, @babel/types@npm:^7.17.0, @babel/types@npm:^7.18.0, @babel/types@npm:^7.18.2, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": - version: 7.18.4 - resolution: "@babel/types@npm:7.18.4" - dependencies: - "@babel/helper-validator-identifier": ^7.16.7 - to-fast-properties: ^2.0.0 - checksum: 85df59beb99c1b95e9e41590442f2ffa1e5b1b558d025489db40c9f7c906bd03a17da26c3ec486e5800e80af27c42ca7eee9506d9212ab17766d2d68d30fbf52 - languageName: node - linkType: hard - -"@babel/types@npm:^7.18.6, @babel/types@npm:^7.18.7": - version: 7.18.7 - resolution: "@babel/types@npm:7.18.7" - dependencies: - "@babel/helper-validator-identifier": ^7.18.6 - to-fast-properties: ^2.0.0 - checksum: 3114ce161c4ebcb70271e168aa5af5cecedf3278209161d5ba6124bd3f9cb02e3f3ace587ad1b53f7baa153b6b3714720721c72a9ef3ec451663862f9cc1f014 - languageName: node - linkType: hard - -"@babel/types@npm:^7.18.9": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.17.0, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": version: 7.18.9 resolution: "@babel/types@npm:7.18.9" dependencies: @@ -2362,16 +1458,6 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.8.3": - version: 7.17.0 - resolution: "@babel/types@npm:7.17.0" - dependencies: - "@babel/helper-validator-identifier": ^7.16.7 - to-fast-properties: ^2.0.0 - checksum: 12e5a287986fe557188e87b2c5202223f1dc83d9239a196ab936fdb9f8c1eb0be717ff19f934b5fad4e29a75586d5798f74bed209bccea1c20376b9952056f0e - languageName: node - linkType: hard - "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -2627,37 +1713,37 @@ __metadata: languageName: node linkType: hard -"@definitelytyped/header-parser@latest": - version: 0.0.100 - resolution: "@definitelytyped/header-parser@npm:0.0.100" +"@definitelytyped/header-parser@npm:latest": + version: 0.0.121 + resolution: "@definitelytyped/header-parser@npm:0.0.121" dependencies: - "@definitelytyped/typescript-versions": ^0.0.100 + "@definitelytyped/typescript-versions": ^0.0.121 "@types/parsimmon": ^1.10.1 parsimmon: ^1.13.0 - checksum: 1909fc809881b33204111969c9a3ea088bc9e29054ea709d10858a21b765fd2c18a5286251157dc5322f0f1546f2d08d80e31952034ce34beb92b8f38ba1234e + checksum: fed4328800f1031e6dd4064c8b869d97f56db97fa718bff323d52878eac61fb816c2d53b082fd16bd0dcf594fa57261dd4ffe08aa87ae08dd6585a6f4b4a8c72 languageName: node linkType: hard -"@definitelytyped/typescript-versions@latest, @definitelytyped/typescript-versions@npm:^0.0.100": - version: 0.0.100 - resolution: "@definitelytyped/typescript-versions@npm:0.0.100" - checksum: e30e8d798cbf4c615aa9ca33678e83f6b21b5c4a2c7e07a96f6d12716b19387cea306ebf30d149530e1e6cc112ea48a8ae59ac4e9039baee5c549633f878772d +"@definitelytyped/typescript-versions@npm:^0.0.121, @definitelytyped/typescript-versions@npm:latest": + version: 0.0.121 + resolution: "@definitelytyped/typescript-versions@npm:0.0.121" + checksum: d52b062f5a973a875ea95d18cf6f5582e8f70a7bbdd06b2b555e5b8b103f62d9dcc86ef32ccb2aafbce78abfb3013a53fd50d91bc5ca1acbe25a4963cdd93315 languageName: node linkType: hard -"@definitelytyped/utils@latest": - version: 0.0.100 - resolution: "@definitelytyped/utils@npm:0.0.100" +"@definitelytyped/utils@npm:latest": + version: 0.0.121 + resolution: "@definitelytyped/utils@npm:0.0.121" dependencies: - "@definitelytyped/typescript-versions": ^0.0.100 + "@definitelytyped/typescript-versions": ^0.0.121 "@qiwi/npm-registry-client": ^8.9.1 "@types/node": ^14.14.35 charm: ^1.0.2 fs-extra: ^8.1.0 fstream: ^1.0.12 - tar: ^2.2.2 + tar: ^6.1.11 tar-stream: ^2.1.4 - checksum: 62c726c4c6160f69f4f696d3fa995d067c46e2f2e66bdd0bcb60b9db8310b3f6707c12216a8760c3f6ea078dc0ff0fa77cbc328628e41329d7f740d363a91560 + checksum: 354f42ab32488f34304c658d7325319b87e54082e1a0865ab6a5b0227a6b74dc01f047ff49b6e38c115f0af9b22e4ddb89a1d701ddbf857c7b2cf9f6c4072330 languageName: node linkType: hard @@ -2931,14 +2017,45 @@ __metadata: happy-dom: ^6.0.4 msw: ^0.44.2 prettier: ^2.7.1 - react: ^18.2.0 - react-dom: ^18.2.0 - react-icons: ^4.4.0 - react-syntax-highlighter: ^15.5.0 - remix: ^1.6.5 + react: ^18.2.0 + react-dom: ^18.2.0 + react-icons: ^4.4.0 + react-syntax-highlighter: ^15.5.0 + remix: ^1.6.5 + typescript: ^4.7.4 + unocss: ^0.44.5 + vitest: ^0.18.1 + languageName: unknown + linkType: soft + +"@discordjs/ws@workspace:packages/ws": + version: 0.0.0-use.local + resolution: "@discordjs/ws@workspace:packages/ws" + dependencies: + "@discordjs/collection": "workspace:^" + "@discordjs/docgen": "workspace:^" + "@discordjs/rest": "workspace:^" + "@discordjs/scripts": "workspace:^" + "@favware/cliff-jumper": ^1.8.5 + "@microsoft/api-extractor": ^7.28.3 + "@sapphire/async-queue": ^1.3.1 + "@types/node": ^18.0.3 + "@types/ws": ^8.5.3 + "@vladfrangu/async_event_emitter": ^2.0.1 + c8: ^7.11.3 + discord-api-types: ^0.36.1 + eslint: ^8.19.0 + mock-socket: ^9.1.5 + prettier: ^2.7.1 + rollup-plugin-typescript2: ^0.32.1 + tslib: ^2.4.0 + tsup: ^6.1.3 typescript: ^4.7.4 - unocss: ^0.44.5 - vitest: ^0.18.1 + unbuild: ^0.7.6 + undici: ^5.8.0 + vitest: ^0.17.0 + ws: ^8.8.0 + zlib-sync: ^0.1.7 languageName: unknown linkType: soft @@ -3010,21 +2127,21 @@ __metadata: languageName: node linkType: hard -"@gar/promisify@npm:^1.0.1": - version: 1.1.2 - resolution: "@gar/promisify@npm:1.1.2" - checksum: d05081e0887a49c178b75ee3067bd6ee086f73c154d121b854fb2e044e8a89cb1cbb6de3a0dd93a519b80f0531fda68b099dd7256205f7fbb3490324342f2217 +"@gar/promisify@npm:^1.0.1, @gar/promisify@npm:^1.1.3": + version: 1.1.3 + resolution: "@gar/promisify@npm:1.1.3" + checksum: 4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1 languageName: node linkType: hard "@humanwhocodes/config-array@npm:^0.9.2": - version: 0.9.2 - resolution: "@humanwhocodes/config-array@npm:0.9.2" + version: 0.9.5 + resolution: "@humanwhocodes/config-array@npm:0.9.5" dependencies: "@humanwhocodes/object-schema": ^1.2.1 debug: ^4.1.1 minimatch: ^3.0.4 - checksum: 28a9e2974c50a86765cb6cc96e03d29187ea33fdaba62c4f35db89002e3cfbd340e64c9f6cf869e33e2e5cdcc06e78763458f4178d38a6f30aea1308787ca706 + checksum: 8ba6281bc0590f6c6eadeefc14244b5a3e3f5903445aadd1a32099ed80e753037674026ce1b3c945ab93561bea5eb29e3c5bff67060e230c295595ba517a3492 languageName: node linkType: hard @@ -3233,15 +2350,6 @@ __metadata: languageName: node linkType: hard -"@jest/schemas@npm:^28.0.2": - version: 28.0.2 - resolution: "@jest/schemas@npm:28.0.2" - dependencies: - "@sinclair/typebox": ^0.23.3 - checksum: 6a177e97b112c99f377697fe803a34f4489b92cd07949876250c69edc9029c7cbda771fcbb03caebd20ffbcfa89b9c22b4dc9d1e9a7fbc9873185459b48ba780 - languageName: node - linkType: hard - "@jest/schemas@npm:^28.1.3": version: 28.1.3 resolution: "@jest/schemas@npm:28.1.3" @@ -3309,19 +2417,6 @@ __metadata: languageName: node linkType: hard -"@jest/types@npm:^27.4.2": - version: 27.4.2 - resolution: "@jest/types@npm:27.4.2" - dependencies: - "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^3.0.0 - "@types/node": "*" - "@types/yargs": ^16.0.0 - chalk: ^4.0.0 - checksum: 1191022023e32763063cc1c8b1143fa316fb05db2f9698280a7bdbafcabd989e5fd64f8eb875b8a2e54c53f25dba45ed2eea8ced394d9e484da0fda674cd17a5 - languageName: node - linkType: hard - "@jest/types@npm:^28.1.3": version: 28.1.3 resolution: "@jest/types@npm:28.1.3" @@ -3346,17 +2441,6 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.0": - version: 0.3.1 - resolution: "@jridgewell/gen-mapping@npm:0.3.1" - dependencies: - "@jridgewell/set-array": ^1.0.0 - "@jridgewell/sourcemap-codec": ^1.4.10 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: e9e7bb3335dea9e60872089761d4e8e089597360cdb1af90370e9d53b7d67232c1e0a3ab65fbfef4fc785745193fbc56bff9f3a6cab6c6ce3f15e12b4191f86b - languageName: node - linkType: hard - "@jridgewell/gen-mapping@npm:^0.3.2": version: 0.3.2 resolution: "@jridgewell/gen-mapping@npm:0.3.2" @@ -3369,20 +2453,13 @@ __metadata: linkType: hard "@jridgewell/resolve-uri@npm:^3.0.3": - version: 3.0.4 - resolution: "@jridgewell/resolve-uri@npm:3.0.4" - checksum: 799bcba2730280a42f11b4d41a5d34d68ce72cb1bd23186bd3356607c93b62765b2b050e5dfb67f04ce4e817f882bfc10a4d1c43fe2d8eeb38371c98d71217b4 - languageName: node - linkType: hard - -"@jridgewell/set-array@npm:^1.0.0": - version: 1.1.1 - resolution: "@jridgewell/set-array@npm:1.1.1" - checksum: cc5d91e0381c347e3edee4ca90b3c292df9e6e55f29acbe0dd97de8651b4730e9ab761406fd572effa79972a0edc55647b627f8c72315e276d959508853d9bf2 + version: 3.1.0 + resolution: "@jridgewell/resolve-uri@npm:3.1.0" + checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 languageName: node linkType: hard -"@jridgewell/set-array@npm:^1.0.1": +"@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1": version: 1.1.2 resolution: "@jridgewell/set-array@npm:1.1.2" checksum: 69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e @@ -3390,9 +2467,9 @@ __metadata: linkType: hard "@jridgewell/sourcemap-codec@npm:^1.4.10": - version: 1.4.11 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.11" - checksum: 3b2afaf8400fb07a36db60e901fcce6a746cdec587310ee9035939d89878e57b2dec8173b0b8f63176f647efa352294049a53c49739098eb907ff81fec2547c8 + version: 1.4.14 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" + checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 languageName: node linkType: hard @@ -3406,7 +2483,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.13": +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.13, @jridgewell/trace-mapping@npm:^0.3.9": version: 0.3.14 resolution: "@jridgewell/trace-mapping@npm:0.3.14" dependencies: @@ -3416,32 +2493,22 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.7, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.13 - resolution: "@jridgewell/trace-mapping@npm:0.3.13" - dependencies: - "@jridgewell/resolve-uri": ^3.0.3 - "@jridgewell/sourcemap-codec": ^1.4.10 - checksum: e38254e830472248ca10a6ed1ae75af5e8514f0680245a5e7b53bc3c030fd8691d4d3115d80595b45d3badead68269769ed47ecbbdd67db1343a11f05700e75a - languageName: node - linkType: hard - -"@microsoft/api-extractor-model@npm:7.22.0, @microsoft/api-extractor-model@npm:^7.22.0": - version: 7.22.0 - resolution: "@microsoft/api-extractor-model@npm:7.22.0" +"@microsoft/api-extractor-model@npm:7.22.1, @microsoft/api-extractor-model@npm:^7.22.0": + version: 7.22.1 + resolution: "@microsoft/api-extractor-model@npm:7.22.1" dependencies: "@microsoft/tsdoc": 0.14.1 "@microsoft/tsdoc-config": ~0.16.1 "@rushstack/node-core-library": 3.49.0 - checksum: 3dfc2459fea007ab44fddff56156b2a0372204636a133b196a48e0b9f7b77953c4ccd735a7307d010e7de57483e1bf3e4a1ecc0adb1ceaaa65bc9d82f1e63fb9 + checksum: f1e583cc95abf383e0650568ec3c8a32810de3f47175308f7f867b5b5fa18a92d6fdb2d1f035f54b77c9346ad8a4070c8c70a18602de80a404b2ff3310d9334d languageName: node linkType: hard -"@microsoft/api-extractor@npm:^7.28.5": - version: 7.28.5 - resolution: "@microsoft/api-extractor@npm:7.28.5" +"@microsoft/api-extractor@npm:^7.28.3, @microsoft/api-extractor@npm:^7.28.5": + version: 7.28.6 + resolution: "@microsoft/api-extractor@npm:7.28.6" dependencies: - "@microsoft/api-extractor-model": 7.22.0 + "@microsoft/api-extractor-model": 7.22.1 "@microsoft/tsdoc": 0.14.1 "@microsoft/tsdoc-config": ~0.16.1 "@rushstack/node-core-library": 3.49.0 @@ -3455,7 +2522,7 @@ __metadata: typescript: ~4.6.3 bin: api-extractor: bin/api-extractor - checksum: 3278dca7c2e79f6d27e5210f1c056a9ea92aa428811ee94d45777146bd3121e667570ac9875bf875b8a977ef1f74a1cf3873bec9fcf5c64e7c473a6fb6ae2587 + checksum: a287e12c84c8c11690783f1118b7cc2e02f777ef21c72e9e37bd920a4837ab09a05888ce0d25f8d29af0032465b80ab62e9a111b169226c49b17e8b97b21f598 languageName: node linkType: hard @@ -3532,12 +2599,22 @@ __metadata: linkType: hard "@npmcli/fs@npm:^1.0.0": - version: 1.1.0 - resolution: "@npmcli/fs@npm:1.1.0" + version: 1.1.1 + resolution: "@npmcli/fs@npm:1.1.1" dependencies: "@gar/promisify": ^1.0.1 semver: ^7.3.5 - checksum: e435b883b4f8da8c95a820f458cabb7d86582406eed5ad79fc689000d3e2df17e1f475c4903627272c001357cabc70d8b4c62520cbdae8cfab1dfdd51949f408 + checksum: f5ad92f157ed222e4e31c352333d0901df02c7c04311e42a81d8eb555d4ec4276ea9c635011757de20cc476755af33e91622838de573b17e52e2e7703f0a9965 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^2.1.0": + version: 2.1.1 + resolution: "@npmcli/fs@npm:2.1.1" + dependencies: + "@gar/promisify": ^1.1.3 + semver: ^7.3.5 + checksum: 4944a0545d38d3e6e29780eeb3cd4be6059c1e9627509d2c9ced635c53b852d28b37cdc615a2adf815b51ab8673adb6507e370401a20a7e90c8a6dc4fac02389 languageName: node linkType: hard @@ -3551,6 +2628,16 @@ __metadata: languageName: node linkType: hard +"@npmcli/move-file@npm:^2.0.0": + version: 2.0.0 + resolution: "@npmcli/move-file@npm:2.0.0" + dependencies: + mkdirp: ^1.0.4 + rimraf: ^3.0.2 + checksum: 1388777b507b0c592d53f41b9d182e1a8de7763bc625fc07999b8edbc22325f074e5b3ec90af79c89d6987fdb2325bc66d59f483258543c14a43661621f841b0 + languageName: node + linkType: hard + "@npmcli/package-json@npm:^2.0.0": version: 2.0.0 resolution: "@npmcli/package-json@npm:2.0.0" @@ -3760,16 +2847,16 @@ __metadata: linkType: hard "@remix-run/web-fetch@npm:^4.1.3": - version: 4.1.3 - resolution: "@remix-run/web-fetch@npm:4.1.3" + version: 4.2.0 + resolution: "@remix-run/web-fetch@npm:4.2.0" dependencies: "@remix-run/web-blob": ^3.0.4 - "@remix-run/web-form-data": ^3.0.2 + "@remix-run/web-form-data": ^3.0.3 "@remix-run/web-stream": ^1.0.3 "@web3-storage/multipart-parser": ^1.0.0 data-uri-to-buffer: ^3.0.1 mrmime: ^1.0.0 - checksum: 157c7f4cb8d08980de546a850cacca8513d06482d7b55889b10cfadbf2da9f1a063d3f6c8766eab8c29dabd0803af8810c831e6a3eeb07412e14542ccef3efc9 + checksum: ecd91b6942cc9af5ac4c55def04aa107b118e84a68776f92c0fd5d4688013dab150fd9b83e2629b3ec4178768110343cc773bcdbad625e6b47c5f2b8bf5a80aa languageName: node linkType: hard @@ -3782,12 +2869,12 @@ __metadata: languageName: node linkType: hard -"@remix-run/web-form-data@npm:^3.0.2": - version: 3.0.2 - resolution: "@remix-run/web-form-data@npm:3.0.2" +"@remix-run/web-form-data@npm:^3.0.3": + version: 3.0.3 + resolution: "@remix-run/web-form-data@npm:3.0.3" dependencies: web-encoding: 1.1.5 - checksum: 8b41caf2c2897741b4d7451a8d9a206345c59964f5ed7d245d950fb4f70683eade28834c4328b6a9a11d0850a7043d1fbf48d4066ac16510582cd9c737794d46 + checksum: e22a07e6ebf1e703108872ec606a3fbe664868c1fb463cb35df905a93db3b3a7aa4a8e37bc7b0c4b3fe3cab6aaddc4c73b61c9e6b7457e99d09e66ed7a28efb6 languageName: node linkType: hard @@ -3929,7 +3016,7 @@ __metadata: languageName: node linkType: hard -"@sapphire/async-queue@npm:^1.3.2": +"@sapphire/async-queue@npm:^1.3.1, @sapphire/async-queue@npm:^1.3.2": version: 1.3.2 resolution: "@sapphire/async-queue@npm:1.3.2" checksum: 348f35a278bff68cb6d5e2c2219b03ce66243162522003bb14426e5fdad251300bea8ef3883043eb034c181dddd52296a519e9f377075a5b31074807fe163e76 @@ -3937,11 +3024,11 @@ __metadata: linkType: hard "@sapphire/fetch@npm:^2.0.0": - version: 2.0.3 - resolution: "@sapphire/fetch@npm:2.0.3" + version: 2.4.1 + resolution: "@sapphire/fetch@npm:2.4.1" dependencies: - cross-fetch: ^3.1.4 - checksum: 7e0ddbd79c0d84f322c5ba3c50a9d353a599ff39279f698f21433cf6e3cf8eaf6e9a87d805b68b6c1c15c7106b8a47c4a049e00c0e7f715fb76d43a00cbd8595 + cross-fetch: ^3.1.5 + checksum: f8ab0baa59dfcb931729a46957073e4e26377b6b5e3bdbbed921ae793c0848a240545ed157efd5db13342d68eed84dc73c6fe83038a5e62af9daa3715326c4a9 languageName: node linkType: hard @@ -3969,24 +3056,10 @@ __metadata: languageName: node linkType: hard -"@sapphire/utilities@npm:^3.0.1": - version: 3.1.0 - resolution: "@sapphire/utilities@npm:3.1.0" - checksum: aa0628352faf8c52774740c53a26ca7154b133ffbe86efaf9684de67c9d8d913732f99108d15babf4e4f9c2bc6e71070466bc8585be9a7add1659533aa2b5716 - languageName: node - linkType: hard - -"@sapphire/utilities@npm:^3.6.2": - version: 3.6.2 - resolution: "@sapphire/utilities@npm:3.6.2" - checksum: 71210753b446f3f2835dd9d28fb10767f4c6f005b465eea179082d9f2c071acb7dcd2aebdf7c4974b26aad3ab2374a1dd168a66371b06bd65f248bbca4a90cda - languageName: node - linkType: hard - -"@sinclair/typebox@npm:^0.23.3": - version: 0.23.5 - resolution: "@sinclair/typebox@npm:0.23.5" - checksum: c96056d35d9cb862aeb635ff8873e2e7633e668dd544e162aee2690a82c970d0b3f90aa2b3501fe374dfa8e792388559a3e3a86712b23ebaef10061add534f47 +"@sapphire/utilities@npm:^3.0.1, @sapphire/utilities@npm:^3.6.2": + version: 3.7.0 + resolution: "@sapphire/utilities@npm:3.7.0" + checksum: 3b574586242f015859e913123a5311774ad2d6cb79241c2a3d447a585282bdb04cddcd8e086f757a8ae5d2c49f4a25b4f848d63cebe605c7641364b51c3cfa11 languageName: node linkType: hard @@ -4043,23 +3116,7 @@ __metadata: languageName: node linkType: hard -"@testing-library/dom@npm:^8.1.0, @testing-library/dom@npm:^8.5.0": - version: 8.13.0 - resolution: "@testing-library/dom@npm:8.13.0" - dependencies: - "@babel/code-frame": ^7.10.4 - "@babel/runtime": ^7.12.5 - "@types/aria-query": ^4.2.0 - aria-query: ^5.0.0 - chalk: ^4.1.0 - dom-accessibility-api: ^0.5.9 - lz-string: ^1.4.4 - pretty-format: ^27.0.2 - checksum: 880f1872b9949800d4444e3bdbd03df86d6f41ec7c27136dff1da29e87d2df2d7ee904afcdf895ffce351c25bd12119117eae023354d50e707ad56d43b2ed3ed - languageName: node - linkType: hard - -"@testing-library/dom@npm:^8.16.0": +"@testing-library/dom@npm:^8.1.0, @testing-library/dom@npm:^8.16.0, @testing-library/dom@npm:^8.5.0": version: 8.16.0 resolution: "@testing-library/dom@npm:8.16.0" dependencies: @@ -4129,31 +3186,38 @@ __metadata: languageName: node linkType: hard +"@tootallnate/once@npm:2": + version: 2.0.0 + resolution: "@tootallnate/once@npm:2.0.0" + checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 + languageName: node + linkType: hard + "@tsconfig/node10@npm:^1.0.7": - version: 1.0.8 - resolution: "@tsconfig/node10@npm:1.0.8" - checksum: b8d5fffbc6b17ef64ef74f7fdbccee02a809a063ade785c3648dae59406bc207f70ea2c4296f92749b33019fa36a5ae716e42e49cc7f1bbf0fd147be0d6b970a + version: 1.0.9 + resolution: "@tsconfig/node10@npm:1.0.9" + checksum: a33ae4dc2a621c0678ac8ac4bceb8e512ae75dac65417a2ad9b022d9b5411e863c4c198b6ba9ef659e14b9fb609bbec680841a2e84c1172df7a5ffcf076539df languageName: node linkType: hard "@tsconfig/node12@npm:^1.0.7": - version: 1.0.9 - resolution: "@tsconfig/node12@npm:1.0.9" - checksum: a01b2400ab3582b86b589c6d31dcd0c0656f333adecde85d6d7d4086adb059808b82692380bb169546d189bf771ae21d02544a75b57bd6da4a5dd95f8567bec9 + version: 1.0.11 + resolution: "@tsconfig/node12@npm:1.0.11" + checksum: 5ce29a41b13e7897a58b8e2df11269c5395999e588b9a467386f99d1d26f6c77d1af2719e407621412520ea30517d718d5192a32403b8dfcc163bf33e40a338a languageName: node linkType: hard "@tsconfig/node14@npm:^1.0.0": - version: 1.0.1 - resolution: "@tsconfig/node14@npm:1.0.1" - checksum: 976345e896c0f059867f94f8d0f6ddb8b1844fb62bf36b727de8a9a68f024857e5db97ed51d3325e23e0616a5e48c034ff51a8d595b3fe7e955f3587540489be + version: 1.0.3 + resolution: "@tsconfig/node14@npm:1.0.3" + checksum: 19275fe80c4c8d0ad0abed6a96dbf00642e88b220b090418609c4376e1cef81bf16237bf170ad1b341452feddb8115d8dd2e5acdfdea1b27422071163dc9ba9d languageName: node linkType: hard "@tsconfig/node16@npm:^1.0.2": - version: 1.0.2 - resolution: "@tsconfig/node16@npm:1.0.2" - checksum: ca94d3639714672bbfd55f03521d3f56bb6a25479bd425da81faf21f13e1e9d15f40f97377dedbbf477a5841c5b0c8f4cd1b391f33553d750b9202c54c2c07aa + version: 1.0.3 + resolution: "@tsconfig/node16@npm:1.0.3" + checksum: 3a8b657dd047495b7ad23437d6afd20297ce90380ff0bdee93fc7d39a900dbd8d9e26e53ff6b465e7967ce2adf0b218782590ce9013285121e6a5928fbd6819f languageName: node linkType: hard @@ -4311,9 +3375,9 @@ __metadata: linkType: hard "@types/estree@npm:*": - version: 0.0.50 - resolution: "@types/estree@npm:0.0.50" - checksum: 9a2b6a4a8c117f34d08fbda5e8f69b1dfb109f7d149b60b00fd7a9fb6ac545c078bc590aa4ec2f0a256d680cf72c88b3b28b60c326ee38a7bc8ee1ee95624922 + version: 1.0.0 + resolution: "@types/estree@npm:1.0.0" + checksum: 910d97fb7092c6738d30a7430ae4786a38542023c6302b95d46f49420b797f21619cdde11fa92b338366268795884111c2eb10356e4bd2c8ad5b92941e9e6443 languageName: node linkType: hard @@ -4324,13 +3388,6 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:^0.0.46": - version: 0.0.46 - resolution: "@types/estree@npm:0.0.46" - checksum: 620f7549c8cf99fe1c91a943a42ae2684c18f6007dc1bd6a439a2bf3204022ab746ffb3be5244c70d43a822beeb3c948216be1a69cb25e79005daeca4ebe5722 - languageName: node - linkType: hard - "@types/estree@npm:^0.0.51": version: 0.0.51 resolution: "@types/estree@npm:0.0.51" @@ -4407,17 +3464,7 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:*": - version: 28.1.1 - resolution: "@types/jest@npm:28.1.1" - dependencies: - jest-matcher-utils: ^27.0.0 - pretty-format: ^27.0.0 - checksum: 0a8b045a7b660372decc807c390d3f99a2b12bb1659a1cd593afe04557f4b7c235b0576a5e35b1577710d20e42759d3d8755eb8bed6edc8733f47007e75a5509 - languageName: node - linkType: hard - -"@types/jest@npm:^28.1.6": +"@types/jest@npm:*, @types/jest@npm:^28.1.6": version: 28.1.6 resolution: "@types/jest@npm:28.1.6" dependencies: @@ -4449,9 +3496,9 @@ __metadata: linkType: hard "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.9": - version: 7.0.9 - resolution: "@types/json-schema@npm:7.0.9" - checksum: 259d0e25f11a21ba5c708f7ea47196bd396e379fddb79c76f9f4f62c945879dc21657904914313ec2754e443c5018ea8372362f323f30e0792897fdb2098a705 + version: 7.0.11 + resolution: "@types/json-schema@npm:7.0.11" + checksum: 527bddfe62db9012fccd7627794bd4c71beb77601861055d87e3ee464f2217c85fca7a4b56ae677478367bbd248dbde13553312b7d4dbc702a2f2bbf60c4018d languageName: node linkType: hard @@ -4525,10 +3572,10 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*": - version: 17.0.6 - resolution: "@types/node@npm:17.0.6" - checksum: 36fda5555ec759132886721f59fa74333947f7148b7dcce3de0a78c36f37f57ec86a3d09fd38c835ba65c8de77905de6c01523ec99864d8cead83f404118a44a +"@types/node@npm:*, @types/node@npm:>=12, @types/node@npm:^18.0.3": + version: 18.0.6 + resolution: "@types/node@npm:18.0.6" + checksum: 780f8885a6b6eb12f4c0246617747fdc37a451931b3c01ce8148d356c0903b705dcb16cc6a914de63d48b0dc1b002c7a3dfae681f580e1761aa551d3cd996813 languageName: node linkType: hard @@ -4539,13 +3586,6 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:>=12": - version: 17.0.17 - resolution: "@types/node@npm:17.0.17" - checksum: 8ddba2829acdf1684fbd8fd248ec13f033efb70ecd1085677b547c40ef8e936a006b95eac3bdc28c47939c62526f3f027afeb4a930e30e4394923bbae4626476 - languageName: node - linkType: hard - "@types/node@npm:^10.0.3": version: 10.17.60 resolution: "@types/node@npm:10.17.60" @@ -4553,17 +3593,10 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^14.14.31": - version: 14.18.21 - resolution: "@types/node@npm:14.18.21" - checksum: 4ed35b76609647a4e36a194702e31cdda9ed42174ddaf7937bc5498984e98a99e8a42ea895ea17dd9c5ec18080112c29ab670c34f90eb9f7a4703b85b31e34fa - languageName: node - linkType: hard - -"@types/node@npm:^14.14.35": - version: 14.18.4 - resolution: "@types/node@npm:14.18.4" - checksum: 12015baff875140579d4c8982a7c239685ceee3a7b0ea58e6d6918d001582a752bfbc13e5c06c745e2bb10261068e632929fdf3e013c98fba006cd0cc4c67bf9 +"@types/node@npm:^14.14.31, @types/node@npm:^14.14.35": + version: 14.18.22 + resolution: "@types/node@npm:14.18.22" + checksum: 5cec8276b834b8988f0af69655423e816729a5757d2015a3199156bdc98ea55206338fad752b26236c55d431dce24eb973b4f5a8918f8e6b17056ffcc12edc08 languageName: node linkType: hard @@ -4623,16 +3656,7 @@ __metadata: languageName: node linkType: hard -"@types/react-dom@npm:^18.0.0": - version: 18.0.5 - resolution: "@types/react-dom@npm:18.0.5" - dependencies: - "@types/react": "*" - checksum: cd48b81950f499b52a3f0c08261f00046f9b7c96699fa249c9664e257e820daf6ecac815cd1028cebc9d105094adc39d047d1efd79214394b8b2d515574c0787 - languageName: node - linkType: hard - -"@types/react-dom@npm:^18.0.6": +"@types/react-dom@npm:^18.0.0, @types/react-dom@npm:^18.0.6": version: 18.0.6 resolution: "@types/react-dom@npm:18.0.6" dependencies: @@ -4651,13 +3675,13 @@ __metadata: linkType: hard "@types/react@npm:*": - version: 18.0.12 - resolution: "@types/react@npm:18.0.12" + version: 18.0.15 + resolution: "@types/react@npm:18.0.15" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: 526ea13b3adf7fe4b475e55b7426510a7861ef2910664a9014ef42cba0c699d5167dc378eb161e2ec26c07a3b6fde9b6bdcbbb6f4b5580612246bc289395ef03 + checksum: e22cc388d1c145aa184787e44dc28db4789976c704cd5db475c170bb76a560eb81def5f346cfe750949bb3d43ad88822b8cbb9f19b1286e3795892a8263e7715 languageName: node linkType: hard @@ -4736,11 +3760,11 @@ __metadata: linkType: hard "@types/testing-library__jest-dom@npm:^5.9.1": - version: 5.14.3 - resolution: "@types/testing-library__jest-dom@npm:5.14.3" + version: 5.14.5 + resolution: "@types/testing-library__jest-dom@npm:5.14.5" dependencies: "@types/jest": "*" - checksum: 203443d0e7e5929fbc9e441146f92d85efa033b4697e427ed0164df1c40b720b6bb9bbd96a3171ea5fd8d9301b538fd0f49d4f35594d142afd0f6d2ecac25785 + checksum: dcb05416758fe88c1f4f3aa97b4699fcb46a5ed8f53c6b81721e66155452a48caf12ecb97dfdfd4130678e65efd66b9fca0ac434b3d63affec84842a84a6bf38 languageName: node linkType: hard @@ -4761,18 +3785,9 @@ __metadata: linkType: hard "@types/yargs-parser@npm:*": - version: 20.2.1 - resolution: "@types/yargs-parser@npm:20.2.1" - checksum: 1d039e64494a7a61ddd278349a3dc60b19f99ff0517425696e796f794e4252452b9d62178e69755ad03f439f9dc0c8c3d7b3a1201b3a24e134bac1a09fa11eaa - languageName: node - linkType: hard - -"@types/yargs@npm:^16.0.0": - version: 16.0.4 - resolution: "@types/yargs@npm:16.0.4" - dependencies: - "@types/yargs-parser": "*" - checksum: caa21d2c957592fe2184a8368c8cbe5a82a6c2e2f2893722e489f842dc5963293d2f3120bc06fe3933d60a3a0d1e2eb269649fd6b1947fe1820f8841ba611dd9 + version: 21.0.0 + resolution: "@types/yargs-parser@npm:21.0.0" + checksum: b2f4c8d12ac18a567440379909127cf2cec393daffb73f246d0a25df36ea983b93b7e9e824251f959e9f928cbc7c1aab6728d0a0ff15d6145f66cec2be67d9a2 languageName: node linkType: hard @@ -5113,6 +4128,13 @@ __metadata: languageName: node linkType: hard +"@vladfrangu/async_event_emitter@npm:^2.0.1": + version: 2.0.1 + resolution: "@vladfrangu/async_event_emitter@npm:2.0.1" + checksum: 96aec2c774676c3af47651167cb8ce1eba386c512aeac44731b09080f3a6faed7286993c37086da6cf600027f3281572d7beb8bc650f2fb257749ac99e6e2f6a + languageName: node + linkType: hard + "@vscode/codicons@npm:^0.0.31": version: 0.0.31 resolution: "@vscode/codicons@npm:0.0.31" @@ -5206,21 +4228,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.0, acorn@npm:^8.7.1": - version: 8.7.1 - resolution: "acorn@npm:8.7.1" - bin: - acorn: bin/acorn - checksum: aca0aabf98826717920ac2583fdcad0a6fbe4e583fdb6e843af2594e907455aeafe30b1e14f1757cd83ce1776773cf8296ffc3a4acf13f0bd3dfebcf1db6ae80 - languageName: node - linkType: hard - -"acorn@npm:^8.4.1": - version: 8.7.0 - resolution: "acorn@npm:8.7.0" +"acorn@npm:^8.0.0, acorn@npm:^8.4.1, acorn@npm:^8.7.1": + version: 8.8.0 + resolution: "acorn@npm:8.8.0" bin: acorn: bin/acorn - checksum: e0f79409d68923fbf1aa6d4166f3eedc47955320d25c89a20cc822e6ba7c48c5963d5bc657bc242d68f7a4ac9faf96eef033e8f73656da6c640d4219935fdfd0 + checksum: 7270ca82b242eafe5687a11fea6e088c960af712683756abf0791b68855ea9cace3057bd5e998ffcef50c944810c1e0ca1da526d02b32110e13c722aa959afdc languageName: node linkType: hard @@ -5240,14 +4253,14 @@ __metadata: languageName: node linkType: hard -"agentkeepalive@npm:^4.1.3": - version: 4.2.0 - resolution: "agentkeepalive@npm:4.2.0" +"agentkeepalive@npm:^4.1.3, agentkeepalive@npm:^4.2.1": + version: 4.2.1 + resolution: "agentkeepalive@npm:4.2.1" dependencies: debug: ^4.1.0 depd: ^1.1.2 humanize-ms: ^1.2.1 - checksum: 89806f83ceebbcaabf6bd581a8dce4870910fd2a11f66df8f505b4cd4ce4ca5ab9e6eec8d11ce8531a6b60f6748b75b0775e0e2fa33871503ef00d535418a19a + checksum: 39cb49ed8cf217fd6da058a92828a0a84e0b74c35550f82ee0a10e1ee403c4b78ade7948be2279b188b7a7303f5d396ea2738b134731e464bf28de00a4f72a18 languageName: node linkType: hard @@ -5408,13 +4421,13 @@ __metadata: languageName: node linkType: hard -"are-we-there-yet@npm:^2.0.0": - version: 2.0.0 - resolution: "are-we-there-yet@npm:2.0.0" +"are-we-there-yet@npm:^3.0.0": + version: 3.0.0 + resolution: "are-we-there-yet@npm:3.0.0" dependencies: delegates: ^1.0.0 readable-stream: ^3.6.0 - checksum: 6c80b4fd04ecee6ba6e737e0b72a4b41bdc64b7d279edfc998678567ff583c8df27e27523bc789f2c99be603ffa9eaa612803da1d886962d2086e7ff6fa90c7c + checksum: 348edfdd931b0b50868b55402c01c3f64df1d4c229ab6f063539a5025fd6c5f5bb8a0cab409bbed8d75d34762d22aa91b7c20b4204eb8177063158d9ba792981 languageName: node linkType: hard @@ -5546,20 +4559,7 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.4": - version: 3.1.4 - resolution: "array-includes@npm:3.1.4" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.1 - get-intrinsic: ^1.1.1 - is-string: ^1.0.7 - checksum: 69967c38c52698f84b50a7aed5554aadc89c6ac6399b6d92ad061a5952f8423b4bba054c51d40963f791dfa294d7247cdd7988b6b1f2c5861477031c6386e1c0 - languageName: node - linkType: hard - -"array-includes@npm:^3.1.5": +"array-includes@npm:^3.1.4, array-includes@npm:^3.1.5": version: 3.1.5 resolution: "array-includes@npm:3.1.5" dependencies: @@ -5587,13 +4587,14 @@ __metadata: linkType: hard "array.prototype.flat@npm:^1.2.5": - version: 1.2.5 - resolution: "array.prototype.flat@npm:1.2.5" + version: 1.3.0 + resolution: "array.prototype.flat@npm:1.3.0" dependencies: call-bind: ^1.0.2 define-properties: ^1.1.3 - es-abstract: ^1.19.0 - checksum: 9cc6414b111abfc7717e39546e4887b1e5ec74df8f1618d83425deaa95752bf05d475d1d241253b4d88d4a01f8e1bc84845ad5b7cc2047f8db2f614512acd40e + es-abstract: ^1.19.2 + es-shim-unscopables: ^1.0.0 + checksum: 2a652b3e8dc0bebb6117e42a5ab5738af0203a14c27341d7bb2431467bdb4b348e2c5dc555dfcda8af0a5e4075c400b85311ded73861c87290a71a17c3e0a257 languageName: node linkType: hard @@ -5965,15 +4966,6 @@ __metadata: languageName: node linkType: hard -"block-stream@npm:*": - version: 0.0.9 - resolution: "block-stream@npm:0.0.9" - dependencies: - inherits: ~2.0.0 - checksum: 72733cbb816181b7c92449e7b650247c02122f743526ce9d948ff68afc27d8709106cd62f2c876c6d8cd3977e0204a014f38d22805974008039bd3bed35f2cbd - languageName: node - linkType: hard - "bluebird@npm:^3.7.2": version: 3.7.2 resolution: "bluebird@npm:3.7.2" @@ -6038,7 +5030,7 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.1, braces@npm:^3.0.2, braces@npm:~3.0.2": +"braces@npm:^3.0.2, braces@npm:~3.0.2": version: 3.0.2 resolution: "braces@npm:3.0.2" dependencies: @@ -6056,18 +5048,17 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.20.2, browserslist@npm:^4.20.3": - version: 4.20.3 - resolution: "browserslist@npm:4.20.3" +"browserslist@npm:^4.20.2, browserslist@npm:^4.21.2": + version: 4.21.2 + resolution: "browserslist@npm:4.21.2" dependencies: - caniuse-lite: ^1.0.30001332 - electron-to-chromium: ^1.4.118 - escalade: ^3.1.1 - node-releases: ^2.0.3 - picocolors: ^1.0.0 + caniuse-lite: ^1.0.30001366 + electron-to-chromium: ^1.4.188 + node-releases: ^2.0.6 + update-browserslist-db: ^1.0.4 bin: browserslist: cli.js - checksum: 1e4b719ac2ca0fe235218a606e8b8ef16b8809e0973b924158c39fbc435a0b0fe43437ea52dd6ef5ad2efcb83fcb07431244e472270177814217f7c563651f7d + checksum: 30fe59f8b065f99665ea63819d29c797660f7975857c290f61f570403abed4d7039ca15b6fd21e39a57b87e1a9262f94676114040766fc0da6ccc11faf9fc377 languageName: node linkType: hard @@ -6150,7 +5141,7 @@ __metadata: languageName: node linkType: hard -"c8@npm:^7.12.0": +"c8@npm:^7.11.3, c8@npm:^7.12.0": version: 7.12.0 resolution: "c8@npm:7.12.0" dependencies: @@ -6205,6 +5196,32 @@ __metadata: languageName: node linkType: hard +"cacache@npm:^16.1.0": + version: 16.1.1 + resolution: "cacache@npm:16.1.1" + dependencies: + "@npmcli/fs": ^2.1.0 + "@npmcli/move-file": ^2.0.0 + chownr: ^2.0.0 + fs-minipass: ^2.1.0 + glob: ^8.0.1 + infer-owner: ^1.0.4 + lru-cache: ^7.7.1 + minipass: ^3.1.6 + minipass-collect: ^1.0.2 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + mkdirp: ^1.0.4 + p-map: ^4.0.0 + promise-inflight: ^1.0.1 + rimraf: ^3.0.2 + ssri: ^9.0.0 + tar: ^6.1.11 + unique-filename: ^1.1.1 + checksum: 488524617008b793f0249b0c4ea2c330c710ca997921376e15650cc2415a8054491ae2dee9f01382c2015602c0641f3f977faf2fa7361aa33d2637dcfb03907a + languageName: node + linkType: hard + "cache-base@npm:^1.0.1": version: 1.0.1 resolution: "cache-base@npm:1.0.1" @@ -6304,10 +5321,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001332": - version: 1.0.30001346 - resolution: "caniuse-lite@npm:1.0.30001346" - checksum: 951590454ffa4e2e7b772558dc593cd08604b44c83741e1188166298f54c34387f4bf34f5141a35de4a43028c012484240ad15c896e48bf4eac70dd7076a4449 +"caniuse-lite@npm:^1.0.30001366": + version: 1.0.30001368 + resolution: "caniuse-lite@npm:1.0.30001368" + checksum: e2a763e7bca8f7a2494f752d0e1a5c0cd1c70ebd18df2eda2bdcf2f908901bbff14f78961ad1cada3eb7af32120ce95aa93f06c5a093d721e787816dc7f5bfaa languageName: node linkType: hard @@ -6439,9 +5456,9 @@ __metadata: linkType: hard "character-entities@npm:^2.0.0": - version: 2.0.1 - resolution: "character-entities@npm:2.0.1" - checksum: 1165064dbe1cc1f3cd5b28eba0e94f051d97bdd65463b0e763d6a8aae527443596f9e0e774a79c4a66de0c47ad95c94fc5fb2c7f6bec6551b5580f730a8da341 + version: 2.0.2 + resolution: "character-entities@npm:2.0.2" + checksum: cf1643814023697f725e47328fcec17923b8f1799102a8a79c1514e894815651794a2bffd84bb1b3a4b124b050154e4529ed6e81f7c8068a734aecf07a6d3def languageName: node linkType: hard @@ -6489,7 +5506,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^3.4.2, chokidar@npm:^3.5.3": +"chokidar@npm:^3.4.2, chokidar@npm:^3.5.1, chokidar@npm:^3.5.3": version: 3.5.3 resolution: "chokidar@npm:3.5.3" dependencies: @@ -6508,25 +5525,6 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^3.5.1": - version: 3.5.2 - resolution: "chokidar@npm:3.5.2" - dependencies: - anymatch: ~3.1.2 - braces: ~3.0.2 - fsevents: ~2.3.2 - glob-parent: ~5.1.2 - is-binary-path: ~2.1.0 - is-glob: ~4.0.1 - normalize-path: ~3.0.0 - readdirp: ~3.6.0 - dependenciesMeta: - fsevents: - optional: true - checksum: d1fda32fcd67d9f6170a8468ad2630a3c6194949c9db3f6a91b16478c328b2800f433fb5d2592511b6cb145a47c013ea1cce60b432b1a001ae3ee978a8bffc2d - languageName: node - linkType: hard - "chownr@npm:^1.1.1": version: 1.1.4 resolution: "chownr@npm:1.1.4" @@ -6542,9 +5540,9 @@ __metadata: linkType: hard "ci-info@npm:^3.2.0": - version: 3.3.0 - resolution: "ci-info@npm:3.3.0" - checksum: c3d86fe374938ecda5093b1ba39acb535d8309185ba3f23587747c6a057e63f45419b406d880304dbc0e1d72392c9a33e42fe9a1e299209bc0ded5efaa232b66 + version: 3.3.2 + resolution: "ci-info@npm:3.3.2" + checksum: fd81f1edd2d3b0f6cb077b2e84365136d87b9db8c055928c1ad69da8a76c2c2f19cba8ea51b90238302157ca927f91f92b653e933f2398dde4867500f08d6e62 languageName: node linkType: hard @@ -6664,11 +5662,11 @@ __metadata: linkType: hard "clone-response@npm:^1.0.2": - version: 1.0.2 - resolution: "clone-response@npm:1.0.2" + version: 1.0.3 + resolution: "clone-response@npm:1.0.3" dependencies: mimic-response: ^1.0.0 - checksum: 2d0e61547fc66276e0903be9654ada422515f5a15741691352000d47e8c00c226061221074ce2c0064d12e975e84a8687cfd35d8b405750cb4e772f87b256eda + checksum: 4e671cac39b11c60aa8ba0a450657194a5d6504df51bca3fac5b3bd0145c4f8e8464898f87c8406b83232e3bc5cca555f51c1f9c8ac023969ebfbf7f6bdabb2e languageName: node linkType: hard @@ -6752,7 +5750,7 @@ __metadata: languageName: node linkType: hard -"color-support@npm:^1.1.2": +"color-support@npm:^1.1.3": version: 1.1.3 resolution: "color-support@npm:1.1.3" bin: @@ -6761,21 +5759,7 @@ __metadata: languageName: node linkType: hard -"colorette@npm:^2.0.14": - version: 2.0.16 - resolution: "colorette@npm:2.0.16" - checksum: cd55596a3a2d1071c1a28eee7fd8a5387593ff1bd10a3e8d0a6221499311fe34a9f2b9272d77c391e0e003dcdc8934fb2f8d106e7ef1f7516f8060c901d41a27 - languageName: node - linkType: hard - -"colorette@npm:^2.0.16": - version: 2.0.17 - resolution: "colorette@npm:2.0.17" - checksum: 693a56d816846e0e213f92c8061b65eb5025030b28a113f90c539fe34c860abc41132c03599af26bcbc213170a31bac1bf2d4c535ccad5ac7b5cb3248f9d98a8 - languageName: node - linkType: hard - -"colorette@npm:^2.0.17, colorette@npm:^2.0.19": +"colorette@npm:^2.0.14, colorette@npm:^2.0.16, colorette@npm:^2.0.17, colorette@npm:^2.0.19": version: 2.0.19 resolution: "colorette@npm:2.0.19" checksum: 888cf5493f781e5fcf54ce4d49e9d7d698f96ea2b2ef67906834bb319a392c667f9ec69f4a10e268d2946d13a9503d2d19b3abaaaf174e3451bfe91fb9d82427 @@ -6820,14 +5804,14 @@ __metadata: linkType: hard "command-line-args@npm:^5.0.0": - version: 5.2.0 - resolution: "command-line-args@npm:5.2.0" + version: 5.2.1 + resolution: "command-line-args@npm:5.2.1" dependencies: array-back: ^3.1.0 find-replace: ^3.0.0 lodash.camelcase: ^4.3.0 typical: ^4.0.0 - checksum: a63dd41541fc98fcef7a5f4f63e626a6c5955fae57247b604077f1d0cfbff58c5830240880903342785a0c40952c4bbd3a977425ba3f4c7d515253296843a566 + checksum: e759519087be3cf2e86af8b9a97d3058b4910cd11ee852495be881a067b72891f6a32718fb685ee6d41531ab76b2b7bfb6602f79f882cd4b7587ff1e827982c7 languageName: node linkType: hard @@ -6884,14 +5868,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^9.3.0": - version: 9.3.0 - resolution: "commander@npm:9.3.0" - checksum: d421ce66fee25792a1470c69aa8d1b86434bf873a96483aa92c8267f81a6f20c6f7c426f5e82f88ac50a8ec4855d3f2787aebcdef8aa559e1080a2337a95a217 - languageName: node - linkType: hard - -"commander@npm:^9.4.0": +"commander@npm:^9.3.0, commander@npm:^9.4.0": version: 9.4.0 resolution: "commander@npm:9.4.0" checksum: a322de584a6ccd1ea83c24f6a660e52d16ffbe2613fcfbb8d2cc68bc9dec637492456d754fe8bb5b039ad843ed8e04fb0b107e581a75f62cde9e1a0ab1546e09 @@ -7322,12 +6299,12 @@ __metadata: linkType: hard "core-js-compat@npm:^3.21.0, core-js-compat@npm:^3.22.1": - version: 3.22.8 - resolution: "core-js-compat@npm:3.22.8" + version: 3.23.5 + resolution: "core-js-compat@npm:3.23.5" dependencies: - browserslist: ^4.20.3 + browserslist: ^4.21.2 semver: 7.0.0 - checksum: 0c82d9110dcb267c2f5547c61b62f8043793d203523048169176b8badf0b73f3792624342b85d9c923df8eb8971b4aa468b160abb81a023d183c5951e4f05a66 + checksum: c2398a39239a782ba1b9531a80b25f8d9fb8d98de8bf980f32140e9be3d2852afb797517afdf3a15f9319bcd25d594b3d3d2a500dce7c338532532565c9e83cb languageName: node linkType: hard @@ -7346,16 +6323,16 @@ __metadata: linkType: hard "cosmiconfig-typescript-loader@npm:^2.0.0": - version: 2.0.1 - resolution: "cosmiconfig-typescript-loader@npm:2.0.1" + version: 2.0.2 + resolution: "cosmiconfig-typescript-loader@npm:2.0.2" dependencies: cosmiconfig: ^7 - ts-node: ^10.8.0 + ts-node: ^10.8.1 peerDependencies: "@types/node": "*" cosmiconfig: ">=7" typescript: ">=3" - checksum: 8412f91c0c00150ffab8a4a1bf797cc5dc417b8b99c48d445daa11608722d87456aec5052b52c38d990868cdbb763708a272fd377f6f5c51e70d414bd69fafee + checksum: 0c9a777e2e3ff7594d753e5781e8c3817ce5ba493a4e69cfde698a8e231b438695248dcc62a16c661f93ada7f762ac6e24457889439c94f58c094a24aecbd982 languageName: node linkType: hard @@ -7379,12 +6356,12 @@ __metadata: languageName: node linkType: hard -"cross-fetch@npm:^3.1.4": - version: 3.1.4 - resolution: "cross-fetch@npm:3.1.4" +"cross-fetch@npm:^3.1.5": + version: 3.1.5 + resolution: "cross-fetch@npm:3.1.5" dependencies: - node-fetch: 2.6.1 - checksum: 2107e5e633aa327bdacab036b1907c7ddd28651ede0c1d4fd14db04510944d56849a8255e2f5b8f9a1da0e061b6cee943f6819fe29ed9a130195e7fadd82a4ff + node-fetch: 2.6.7 + checksum: f6b8c6ee3ef993ace6277fd789c71b6acf1b504fd5f5c7128df4ef2f125a429e29cd62dc8c127523f04a5f2fa4771ed80e3f3d9695617f441425045f505cf3bb languageName: node linkType: hard @@ -7510,9 +6487,9 @@ __metadata: linkType: hard "date-fns@npm:^2.16.1": - version: 2.28.0 - resolution: "date-fns@npm:2.28.0" - checksum: a0516b2e4f99b8bffc6cc5193349f185f195398385bdcaf07f17c2c4a24473c99d933eb0018be4142a86a6d46cb0b06be6440ad874f15e795acbedd6fd727a1f + version: 2.29.1 + resolution: "date-fns@npm:2.29.1" + checksum: 9d07f77dffc1eb8c213391bde39f2963ffe7c0019d9edde14487882d627224f3a39b963e6e99d0cc58afff220a6a1a7e8864d2789958f4eaa77714de94d4d076 languageName: node linkType: hard @@ -7524,19 +6501,19 @@ __metadata: linkType: hard "dayjs@npm:^1.10.4": - version: 1.11.3 - resolution: "dayjs@npm:1.11.3" - checksum: c87e06b562a51ae6568cc5b840c7579d82a0f8af7163128c858fe512d3d71d07bd8e8e464b8cc41b8698a9e26b80ab2c082d14a1cd4c33df5692d77ccdfc5a43 + version: 1.11.4 + resolution: "dayjs@npm:1.11.4" + checksum: 478c8a2db9e3fc752db9f02ef23f00e12308eebbeb85569913731ea78e8d5616f2335e14f25af48e9f16bbcbd796653092eca4d2f42c0218a948402c31735f59 languageName: node linkType: hard "deasync@npm:^0.1.0": - version: 0.1.26 - resolution: "deasync@npm:0.1.26" + version: 0.1.27 + resolution: "deasync@npm:0.1.27" dependencies: bindings: ^1.5.0 node-addon-api: ^1.7.1 - checksum: 4ac04ba620a2a1d2954e6c54b4fcc2b4d79866d8981fc5eab7cec1b031af4133fa799f4c9f875479d096f2384e5e7f789991e062f486630fea8fd75faaed10e2 + checksum: 2a3629f36e2e9d9a26622c68dbaf96a9034805ed4cedc7d0b73ea05121113be257f118a13353606a859f625123d32f695702cb6db8bbfe661869ef884f7e5ec9 languageName: node linkType: hard @@ -7549,15 +6526,15 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2": - version: 4.3.3 - resolution: "debug@npm:4.3.3" +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": + version: 4.3.4 + resolution: "debug@npm:4.3.4" dependencies: ms: 2.1.2 peerDependenciesMeta: supports-color: optional: true - checksum: 14472d56fe4a94dbcfaa6dbed2dd3849f1d72ba78104a1a328047bb564643ca49df0224c3a17fa63533fd11dd3d4c8636cd861191232a2c6735af00cc2d4de16 + checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 languageName: node linkType: hard @@ -7570,18 +6547,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.0.0, debug@npm:^4.3.3, debug@npm:^4.3.4": - version: 4.3.4 - resolution: "debug@npm:4.3.4" - dependencies: - ms: 2.1.2 - peerDependenciesMeta: - supports-color: - optional: true - checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 - languageName: node - linkType: hard - "decamelize-keys@npm:^1.1.0": version: 1.1.0 resolution: "decamelize-keys@npm:1.1.0" @@ -7684,16 +6649,7 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.1.3": - version: 1.1.3 - resolution: "define-properties@npm:1.1.3" - dependencies: - object-keys: ^1.0.12 - checksum: da80dba55d0cd76a5a7ab71ef6ea0ebcb7b941f803793e4e0257b384cb772038faa0c31659d244e82c4342edef841c1a1212580006a05a5068ee48223d787317 - languageName: node - linkType: hard - -"define-properties@npm:^1.1.4": +"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4": version: 1.1.4 resolution: "define-properties@npm:1.1.4" dependencies: @@ -7767,9 +6723,9 @@ __metadata: linkType: hard "dequal@npm:^2.0.0": - version: 2.0.2 - resolution: "dequal@npm:2.0.2" - checksum: 86c7a2c59f7b0797ed397c74b5fcdb744e48fc19440b70ad6ac59f57550a96b0faef3f1cfd5760ec5e6d3f7cb101f634f1f80db4e727b1dc8389bf62d977c0a0 + version: 2.0.3 + resolution: "dequal@npm:2.0.3" + checksum: 8679b850e1a3d0ebbc46ee780d5df7b478c23f335887464023a631d1b9af051ad4a6595a44220f9ff8ff95a8ddccf019b5ad778a976fd7bbf77383d36f412f90 languageName: node linkType: hard @@ -7811,13 +6767,6 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^27.4.0": - version: 27.4.0 - resolution: "diff-sequences@npm:27.4.0" - checksum: 66d04033e8632eeacdd029b4ecaf87d233d475e4b0cd1cee035eda99e70e1a7f803507d72f2677990ef526f28a2f6e5709af8d94dcdc0682b8884a3a646190a1 - languageName: node - linkType: hard - "diff-sequences@npm:^27.5.1": version: 27.5.1 resolution: "diff-sequences@npm:27.5.1" @@ -7862,7 +6811,7 @@ __metadata: languageName: node linkType: hard -"discord-api-types@npm:^0.36.3": +"discord-api-types@npm:^0.36.1, discord-api-types@npm:^0.36.3": version: 0.36.3 resolution: "discord-api-types@npm:0.36.3" checksum: 3089c0fb37425dc5df03c76d82988d43fcc272699b06a02fc830d0a3bef550009aaebdf6d646529e8a7ccea76ae3f43b099d736ea5ef37a0be143142ab49871d @@ -7971,7 +6920,7 @@ __metadata: languageName: node linkType: hard -dts-critic@latest: +"dts-critic@npm:latest": version: 3.3.11 resolution: "dts-critic@npm:3.3.11" dependencies: @@ -8052,10 +7001,10 @@ dts-critic@latest: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.118": - version: 1.4.146 - resolution: "electron-to-chromium@npm:1.4.146" - checksum: 5700a27f44463d2701cbc1593973a711ba7b23374db840ec00c612d1e0272ba95b4f170f561953380441739665a400670c6678bcff26a0ae28d2e49ab03d478d +"electron-to-chromium@npm:^1.4.188": + version: 1.4.198 + resolution: "electron-to-chromium@npm:1.4.198" + checksum: 4ef3e595539779711cbc21fda244825ec344897a2d1e82451b1b8b6d24bc49caab58166aa8ea26fc5fa58f8ae35ffd44fd27c7f0aba65249aaad8e2f3267a7a1 languageName: node linkType: hard @@ -8094,7 +7043,7 @@ dts-critic@latest: languageName: node linkType: hard -"encoding@npm:^0.1.12": +"encoding@npm:^0.1.12, encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" dependencies: @@ -8155,41 +7104,13 @@ dts-critic@latest: "error-ex@npm:^1.3.1": version: 1.3.2 resolution: "error-ex@npm:1.3.2" - dependencies: - is-arrayish: ^0.2.1 - checksum: c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 - languageName: node - linkType: hard - -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.1": - version: 1.19.1 - resolution: "es-abstract@npm:1.19.1" - dependencies: - call-bind: ^1.0.2 - es-to-primitive: ^1.2.1 - function-bind: ^1.1.1 - get-intrinsic: ^1.1.1 - get-symbol-description: ^1.0.0 - has: ^1.0.3 - has-symbols: ^1.0.2 - internal-slot: ^1.0.3 - is-callable: ^1.2.4 - is-negative-zero: ^2.0.1 - is-regex: ^1.1.4 - is-shared-array-buffer: ^1.0.1 - is-string: ^1.0.7 - is-weakref: ^1.0.1 - object-inspect: ^1.11.0 - object-keys: ^1.1.1 - object.assign: ^4.1.2 - string.prototype.trimend: ^1.0.4 - string.prototype.trimstart: ^1.0.4 - unbox-primitive: ^1.0.1 - checksum: b6be8410672c5364db3fb01eb786e30c7b4bb32b4af63d381c08840f4382c4a168e7855cd338bf59d4f1a1a1138f4d748d1fd40ec65aaa071876f9e9fbfed949 + dependencies: + is-arrayish: ^0.2.1 + checksum: c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 languageName: node linkType: hard -"es-abstract@npm:^1.19.2, es-abstract@npm:^1.19.5, es-abstract@npm:^1.20.0": +"es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.1, es-abstract@npm:^1.19.2, es-abstract@npm:^1.19.5, es-abstract@npm:^1.20.0": version: 1.20.1 resolution: "es-abstract@npm:1.20.1" dependencies: @@ -8247,20 +7168,6 @@ dts-critic@latest: languageName: node linkType: hard -"esbuild-android-64@npm:0.14.46": - version: 0.14.46 - resolution: "esbuild-android-64@npm:0.14.46" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - -"esbuild-android-64@npm:0.14.48": - version: 0.14.48 - resolution: "esbuild-android-64@npm:0.14.48" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - "esbuild-android-64@npm:0.14.49": version: 0.14.49 resolution: "esbuild-android-64@npm:0.14.49" @@ -8275,20 +7182,6 @@ dts-critic@latest: languageName: node linkType: hard -"esbuild-android-arm64@npm:0.14.46": - version: 0.14.46 - resolution: "esbuild-android-arm64@npm:0.14.46" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-android-arm64@npm:0.14.48": - version: 0.14.48 - resolution: "esbuild-android-arm64@npm:0.14.48" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "esbuild-android-arm64@npm:0.14.49": version: 0.14.49 resolution: "esbuild-android-arm64@npm:0.14.49" @@ -8303,20 +7196,6 @@ dts-critic@latest: languageName: node linkType: hard -"esbuild-darwin-64@npm:0.14.46": - version: 0.14.46 - resolution: "esbuild-darwin-64@npm:0.14.46" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"esbuild-darwin-64@npm:0.14.48": - version: 0.14.48 - resolution: "esbuild-darwin-64@npm:0.14.48" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "esbuild-darwin-64@npm:0.14.49": version: 0.14.49 resolution: "esbuild-darwin-64@npm:0.14.49" @@ -8331,20 +7210,6 @@ dts-critic@latest: languageName: node linkType: hard -"esbuild-darwin-arm64@npm:0.14.46": - version: 0.14.46 - resolution: "esbuild-darwin-arm64@npm:0.14.46" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-darwin-arm64@npm:0.14.48": - version: 0.14.48 - resolution: "esbuild-darwin-arm64@npm:0.14.48" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "esbuild-darwin-arm64@npm:0.14.49": version: 0.14.49 resolution: "esbuild-darwin-arm64@npm:0.14.49" @@ -8359,20 +7224,6 @@ dts-critic@latest: languageName: node linkType: hard -"esbuild-freebsd-64@npm:0.14.46": - version: 0.14.46 - resolution: "esbuild-freebsd-64@npm:0.14.46" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-freebsd-64@npm:0.14.48": - version: 0.14.48 - resolution: "esbuild-freebsd-64@npm:0.14.48" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "esbuild-freebsd-64@npm:0.14.49": version: 0.14.49 resolution: "esbuild-freebsd-64@npm:0.14.49" @@ -8387,20 +7238,6 @@ dts-critic@latest: languageName: node linkType: hard -"esbuild-freebsd-arm64@npm:0.14.46": - version: 0.14.46 - resolution: "esbuild-freebsd-arm64@npm:0.14.46" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-freebsd-arm64@npm:0.14.48": - version: 0.14.48 - resolution: "esbuild-freebsd-arm64@npm:0.14.48" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - "esbuild-freebsd-arm64@npm:0.14.49": version: 0.14.49 resolution: "esbuild-freebsd-arm64@npm:0.14.49" @@ -8415,20 +7252,6 @@ dts-critic@latest: languageName: node linkType: hard -"esbuild-linux-32@npm:0.14.46": - version: 0.14.46 - resolution: "esbuild-linux-32@npm:0.14.46" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - -"esbuild-linux-32@npm:0.14.48": - version: 0.14.48 - resolution: "esbuild-linux-32@npm:0.14.48" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - "esbuild-linux-32@npm:0.14.49": version: 0.14.49 resolution: "esbuild-linux-32@npm:0.14.49" @@ -8443,20 +7266,6 @@ dts-critic@latest: languageName: node linkType: hard -"esbuild-linux-64@npm:0.14.46": - version: 0.14.46 - resolution: "esbuild-linux-64@npm:0.14.46" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"esbuild-linux-64@npm:0.14.48": - version: 0.14.48 - resolution: "esbuild-linux-64@npm:0.14.48" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - "esbuild-linux-64@npm:0.14.49": version: 0.14.49 resolution: "esbuild-linux-64@npm:0.14.49" @@ -8471,20 +7280,6 @@ dts-critic@latest: languageName: node linkType: hard -"esbuild-linux-arm64@npm:0.14.46": - version: 0.14.46 - resolution: "esbuild-linux-arm64@npm:0.14.46" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-linux-arm64@npm:0.14.48": - version: 0.14.48 - resolution: "esbuild-linux-arm64@npm:0.14.48" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - "esbuild-linux-arm64@npm:0.14.49": version: 0.14.49 resolution: "esbuild-linux-arm64@npm:0.14.49" @@ -8499,20 +7294,6 @@ dts-critic@latest: languageName: node linkType: hard -"esbuild-linux-arm@npm:0.14.46": - version: 0.14.46 - resolution: "esbuild-linux-arm@npm:0.14.46" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"esbuild-linux-arm@npm:0.14.48": - version: 0.14.48 - resolution: "esbuild-linux-arm@npm:0.14.48" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - "esbuild-linux-arm@npm:0.14.49": version: 0.14.49 resolution: "esbuild-linux-arm@npm:0.14.49" @@ -8527,20 +7308,6 @@ dts-critic@latest: languageName: node linkType: hard -"esbuild-linux-mips64le@npm:0.14.46": - version: 0.14.46 - resolution: "esbuild-linux-mips64le@npm:0.14.46" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - -"esbuild-linux-mips64le@npm:0.14.48": - version: 0.14.48 - resolution: "esbuild-linux-mips64le@npm:0.14.48" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - "esbuild-linux-mips64le@npm:0.14.49": version: 0.14.49 resolution: "esbuild-linux-mips64le@npm:0.14.49" @@ -8555,20 +7322,6 @@ dts-critic@latest: languageName: node linkType: hard -"esbuild-linux-ppc64le@npm:0.14.46": - version: 0.14.46 - resolution: "esbuild-linux-ppc64le@npm:0.14.46" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"esbuild-linux-ppc64le@npm:0.14.48": - version: 0.14.48 - resolution: "esbuild-linux-ppc64le@npm:0.14.48" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - "esbuild-linux-ppc64le@npm:0.14.49": version: 0.14.49 resolution: "esbuild-linux-ppc64le@npm:0.14.49" @@ -8583,20 +7336,6 @@ dts-critic@latest: languageName: node linkType: hard -"esbuild-linux-riscv64@npm:0.14.46": - version: 0.14.46 - resolution: "esbuild-linux-riscv64@npm:0.14.46" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"esbuild-linux-riscv64@npm:0.14.48": - version: 0.14.48 - resolution: "esbuild-linux-riscv64@npm:0.14.48" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - "esbuild-linux-riscv64@npm:0.14.49": version: 0.14.49 resolution: "esbuild-linux-riscv64@npm:0.14.49" @@ -8611,20 +7350,6 @@ dts-critic@latest: languageName: node linkType: hard -"esbuild-linux-s390x@npm:0.14.46": - version: 0.14.46 - resolution: "esbuild-linux-s390x@npm:0.14.46" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - -"esbuild-linux-s390x@npm:0.14.48": - version: 0.14.48 - resolution: "esbuild-linux-s390x@npm:0.14.48" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - "esbuild-linux-s390x@npm:0.14.49": version: 0.14.49 resolution: "esbuild-linux-s390x@npm:0.14.49" @@ -8639,20 +7364,6 @@ dts-critic@latest: languageName: node linkType: hard -"esbuild-netbsd-64@npm:0.14.46": - version: 0.14.46 - resolution: "esbuild-netbsd-64@npm:0.14.46" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-netbsd-64@npm:0.14.48": - version: 0.14.48 - resolution: "esbuild-netbsd-64@npm:0.14.48" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - "esbuild-netbsd-64@npm:0.14.49": version: 0.14.49 resolution: "esbuild-netbsd-64@npm:0.14.49" @@ -8667,20 +7378,6 @@ dts-critic@latest: languageName: node linkType: hard -"esbuild-openbsd-64@npm:0.14.46": - version: 0.14.46 - resolution: "esbuild-openbsd-64@npm:0.14.46" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-openbsd-64@npm:0.14.48": - version: 0.14.48 - resolution: "esbuild-openbsd-64@npm:0.14.48" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - "esbuild-openbsd-64@npm:0.14.49": version: 0.14.49 resolution: "esbuild-openbsd-64@npm:0.14.49" @@ -8695,20 +7392,6 @@ dts-critic@latest: languageName: node linkType: hard -"esbuild-sunos-64@npm:0.14.46": - version: 0.14.46 - resolution: "esbuild-sunos-64@npm:0.14.46" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - -"esbuild-sunos-64@npm:0.14.48": - version: 0.14.48 - resolution: "esbuild-sunos-64@npm:0.14.48" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - "esbuild-sunos-64@npm:0.14.49": version: 0.14.49 resolution: "esbuild-sunos-64@npm:0.14.49" @@ -8723,20 +7406,6 @@ dts-critic@latest: languageName: node linkType: hard -"esbuild-windows-32@npm:0.14.46": - version: 0.14.46 - resolution: "esbuild-windows-32@npm:0.14.46" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"esbuild-windows-32@npm:0.14.48": - version: 0.14.48 - resolution: "esbuild-windows-32@npm:0.14.48" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "esbuild-windows-32@npm:0.14.49": version: 0.14.49 resolution: "esbuild-windows-32@npm:0.14.49" @@ -8751,20 +7420,6 @@ dts-critic@latest: languageName: node linkType: hard -"esbuild-windows-64@npm:0.14.46": - version: 0.14.46 - resolution: "esbuild-windows-64@npm:0.14.46" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"esbuild-windows-64@npm:0.14.48": - version: 0.14.48 - resolution: "esbuild-windows-64@npm:0.14.48" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "esbuild-windows-64@npm:0.14.49": version: 0.14.49 resolution: "esbuild-windows-64@npm:0.14.49" @@ -8779,20 +7434,6 @@ dts-critic@latest: languageName: node linkType: hard -"esbuild-windows-arm64@npm:0.14.46": - version: 0.14.46 - resolution: "esbuild-windows-arm64@npm:0.14.46" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-windows-arm64@npm:0.14.48": - version: 0.14.48 - resolution: "esbuild-windows-arm64@npm:0.14.48" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "esbuild-windows-arm64@npm:0.14.49": version: 0.14.49 resolution: "esbuild-windows-arm64@npm:0.14.49" @@ -8868,149 +7509,7 @@ dts-critic@latest: languageName: node linkType: hard -"esbuild@npm:^0.14.25": - version: 0.14.46 - resolution: "esbuild@npm:0.14.46" - dependencies: - esbuild-android-64: 0.14.46 - esbuild-android-arm64: 0.14.46 - esbuild-darwin-64: 0.14.46 - esbuild-darwin-arm64: 0.14.46 - esbuild-freebsd-64: 0.14.46 - esbuild-freebsd-arm64: 0.14.46 - esbuild-linux-32: 0.14.46 - esbuild-linux-64: 0.14.46 - esbuild-linux-arm: 0.14.46 - esbuild-linux-arm64: 0.14.46 - esbuild-linux-mips64le: 0.14.46 - esbuild-linux-ppc64le: 0.14.46 - esbuild-linux-riscv64: 0.14.46 - esbuild-linux-s390x: 0.14.46 - esbuild-netbsd-64: 0.14.46 - esbuild-openbsd-64: 0.14.46 - esbuild-sunos-64: 0.14.46 - esbuild-windows-32: 0.14.46 - esbuild-windows-64: 0.14.46 - esbuild-windows-arm64: 0.14.46 - dependenciesMeta: - esbuild-android-64: - optional: true - esbuild-android-arm64: - optional: true - esbuild-darwin-64: - optional: true - esbuild-darwin-arm64: - optional: true - esbuild-freebsd-64: - optional: true - esbuild-freebsd-arm64: - optional: true - esbuild-linux-32: - optional: true - esbuild-linux-64: - optional: true - esbuild-linux-arm: - optional: true - esbuild-linux-arm64: - optional: true - esbuild-linux-mips64le: - optional: true - esbuild-linux-ppc64le: - optional: true - esbuild-linux-riscv64: - optional: true - esbuild-linux-s390x: - optional: true - esbuild-netbsd-64: - optional: true - esbuild-openbsd-64: - optional: true - esbuild-sunos-64: - optional: true - esbuild-windows-32: - optional: true - esbuild-windows-64: - optional: true - esbuild-windows-arm64: - optional: true - bin: - esbuild: bin/esbuild - checksum: 2aa28d80907bbb9f1c37267e17fa2ff436add97b38650621c2ffd2311ef6802e2b39c61fa20d5a88b583b0a28f6f4ec48f84b905364fa2d91cd34847ad0ea607 - languageName: node - linkType: hard - -"esbuild@npm:^0.14.47": - version: 0.14.48 - resolution: "esbuild@npm:0.14.48" - dependencies: - esbuild-android-64: 0.14.48 - esbuild-android-arm64: 0.14.48 - esbuild-darwin-64: 0.14.48 - esbuild-darwin-arm64: 0.14.48 - esbuild-freebsd-64: 0.14.48 - esbuild-freebsd-arm64: 0.14.48 - esbuild-linux-32: 0.14.48 - esbuild-linux-64: 0.14.48 - esbuild-linux-arm: 0.14.48 - esbuild-linux-arm64: 0.14.48 - esbuild-linux-mips64le: 0.14.48 - esbuild-linux-ppc64le: 0.14.48 - esbuild-linux-riscv64: 0.14.48 - esbuild-linux-s390x: 0.14.48 - esbuild-netbsd-64: 0.14.48 - esbuild-openbsd-64: 0.14.48 - esbuild-sunos-64: 0.14.48 - esbuild-windows-32: 0.14.48 - esbuild-windows-64: 0.14.48 - esbuild-windows-arm64: 0.14.48 - dependenciesMeta: - esbuild-android-64: - optional: true - esbuild-android-arm64: - optional: true - esbuild-darwin-64: - optional: true - esbuild-darwin-arm64: - optional: true - esbuild-freebsd-64: - optional: true - esbuild-freebsd-arm64: - optional: true - esbuild-linux-32: - optional: true - esbuild-linux-64: - optional: true - esbuild-linux-arm: - optional: true - esbuild-linux-arm64: - optional: true - esbuild-linux-mips64le: - optional: true - esbuild-linux-ppc64le: - optional: true - esbuild-linux-riscv64: - optional: true - esbuild-linux-s390x: - optional: true - esbuild-netbsd-64: - optional: true - esbuild-openbsd-64: - optional: true - esbuild-sunos-64: - optional: true - esbuild-windows-32: - optional: true - esbuild-windows-64: - optional: true - esbuild-windows-arm64: - optional: true - bin: - esbuild: bin/esbuild - checksum: 352d5f5678b697eaafe0bb3374e3da013b31df98c2da17e94266f0bd9d421c531733df038d5b3548d1e8bc86daac0417f1ba2df1cc184685fdb899e1f309f47d - languageName: node - linkType: hard - -"esbuild@npm:^0.14.49": +"esbuild@npm:^0.14.25, esbuild@npm:^0.14.47, esbuild@npm:^0.14.49": version: 0.14.49 resolution: "esbuild@npm:0.14.49" dependencies: @@ -9254,9 +7753,9 @@ dts-critic@latest: linkType: hard "eslint-rule-docs@npm:^1.1.5": - version: 1.1.231 - resolution: "eslint-rule-docs@npm:1.1.231" - checksum: b776c75469bf392d58747e2ffa12e96041f7fef00d6b6c7d5e1a3f3621e42fdde4811795eb7cd4c429c33ef71b9d84f5822d58bca8964e2814485f2498be77b5 + version: 1.1.235 + resolution: "eslint-rule-docs@npm:1.1.235" + checksum: b163596f9a05568e287b2c78f51a280092122a2e43c45fa2c200f0bd3f61877af186c641dab97620978bec96d9e2cfb621e51728044d9efe42ddc24f5a594b26 languageName: node linkType: hard @@ -9305,7 +7804,7 @@ dts-critic@latest: languageName: node linkType: hard -"eslint@npm:^8.20.0": +"eslint@npm:^8.19.0, eslint@npm:^8.20.0": version: 8.20.0 resolution: "eslint@npm:8.20.0" dependencies: @@ -9404,11 +7903,11 @@ dts-critic@latest: linkType: hard "estree-util-attach-comments@npm:^2.0.0": - version: 2.0.0 - resolution: "estree-util-attach-comments@npm:2.0.0" + version: 2.0.1 + resolution: "estree-util-attach-comments@npm:2.0.1" dependencies: - "@types/estree": ^0.0.46 - checksum: 64048f336bd18dea83e9945c3f70efc51e363c5befa6bb32a417e27fc7d7303f72f63f6910a9886c2e9e369168f5c6d023755420bd76edbce07ff0b98fdc998f + "@types/estree": ^0.0.51 + checksum: 56035644e2bdb0b3f7e4807bd87973c9feb489e1d8e9429308134240b9227254c3790ba9f67d60cd9f0d30c8c0004adfb7d346ed970ac5e9d93cfffd2f5c4c37 languageName: node linkType: hard @@ -9431,9 +7930,9 @@ dts-critic@latest: linkType: hard "estree-util-is-identifier-name@npm:^2.0.0": - version: 2.0.0 - resolution: "estree-util-is-identifier-name@npm:2.0.0" - checksum: 09305036c4e22e388686826c4f90813b25a907b7269557dd934664bac98bf2fa814c40a0e93ce9815fd7d64ff04d2a4d48ed405cb90762025cd5f80dcfd9b58e + version: 2.0.1 + resolution: "estree-util-is-identifier-name@npm:2.0.1" + checksum: d91693dc1c8e7f9860e5c73d3f2e0ad4fc484dc9df432086e0432c27c89f1690fe3c63f0d608d11bce77bb026a4edef434c28da5cbad0761d0292741a96b1481 languageName: node linkType: hard @@ -9506,9 +8005,9 @@ dts-critic@latest: linkType: hard "eventemitter2@npm:^6.4.3": - version: 6.4.5 - resolution: "eventemitter2@npm:6.4.5" - checksum: 84504f9cf0cc30205cdd46783fe9df3733435e5097f13070b678023110b5ef07847651808ae280cd94c42cd5976880211c7a40321a8ff8fa56f7c5f9c5c11960 + version: 6.4.6 + resolution: "eventemitter2@npm:6.4.6" + checksum: 1ede7ce0c01298fa3bc1998b34857c2acd0e73a1d7406e37b9127a84712762cf303a46add62943ae6944cd806bdd29ff542344c727a012b2ea6fd3c90f059367 languageName: node linkType: hard @@ -9764,19 +8263,6 @@ dts-critic@latest: languageName: node linkType: hard -"fast-glob@npm:^3.1.1": - version: 3.2.7 - resolution: "fast-glob@npm:3.2.7" - dependencies: - "@nodelib/fs.stat": ^2.0.2 - "@nodelib/fs.walk": ^1.2.3 - glob-parent: ^5.1.2 - merge2: ^1.3.0 - micromatch: ^4.0.4 - checksum: 2f4708ff112d2b451888129fdd9a0938db88b105b0ddfd043c064e3c4d3e20eed8d7c7615f7565fee660db34ddcf08a2db1bf0ab3c00b87608e4719694642d78 - languageName: node - linkType: hard - "fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" @@ -10005,16 +8491,16 @@ dts-critic@latest: linkType: hard "flatted@npm:^3.1.0": - version: 3.2.4 - resolution: "flatted@npm:3.2.4" - checksum: 7d33846428ab337ec81ef9b8b9103894c1c81f5f67feb32bd4ed106fbc47da60d56edb42efd36c9f1f30a010272aeccd34ec1ffacfe9dfdff19673b1d4df481b + version: 3.2.6 + resolution: "flatted@npm:3.2.6" + checksum: 33b87aa88dfa40ca6ee31d7df61712bbbad3d3c05c132c23e59b9b61d34631b337a18ff2b8dc5553acdc871ec72b741e485f78969cf006124a3f57174de29a0e languageName: node linkType: hard "flow-parser@npm:0.*": - version: 0.179.0 - resolution: "flow-parser@npm:0.179.0" - checksum: 939ef4e35dd126ecbfc461f996fbb796a8506b416bc018920fc13a5a0f705c2a688533a6459411b9edca3719fb7d8489287f142b8c164abff85f9232ca251e17 + version: 0.183.0 + resolution: "flow-parser@npm:0.183.0" + checksum: e973b440a189de761d0d4c3f5c4fa5409d531344046106d0cfa5613c66b8520a81e421444e50ad33c7034cef89eafcfacd49cca8696a8c76d1510adbcc313b07 languageName: node linkType: hard @@ -10134,13 +8620,13 @@ dts-critic@latest: linkType: hard "fs-extra@npm:^10.0.0": - version: 10.0.0 - resolution: "fs-extra@npm:10.0.0" + version: 10.1.0 + resolution: "fs-extra@npm:10.1.0" dependencies: graceful-fs: ^4.2.0 jsonfile: ^6.0.1 universalify: ^2.0.0 - checksum: 5285a3d8f34b917cf2b66af8c231a40c1623626e9d701a20051d3337be16c6d7cac94441c8b3732d47a92a2a027886ca93c69b6a4ae6aee3c89650d2a8880c0a + checksum: dc94ab37096f813cc3ca12f0f1b5ad6744dfed9ed21e953d72530d103cea193c2f81584a39e9dee1bea36de5ee66805678c0dddc048e8af1427ac19c00fffc50 languageName: node linkType: hard @@ -10189,7 +8675,7 @@ dts-critic@latest: languageName: node linkType: hard -"fs-minipass@npm:^2.0.0": +"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" dependencies: @@ -10276,20 +8762,19 @@ dts-critic@latest: languageName: node linkType: hard -"gauge@npm:^4.0.0": - version: 4.0.0 - resolution: "gauge@npm:4.0.0" +"gauge@npm:^4.0.3": + version: 4.0.4 + resolution: "gauge@npm:4.0.4" dependencies: - ansi-regex: ^5.0.1 aproba: ^1.0.3 || ^2.0.0 - color-support: ^1.1.2 - console-control-strings: ^1.0.0 + color-support: ^1.1.3 + console-control-strings: ^1.1.0 has-unicode: ^2.0.1 - signal-exit: ^3.0.0 + signal-exit: ^3.0.7 string-width: ^4.2.3 strip-ansi: ^6.0.1 - wide-align: ^1.1.2 - checksum: 637b34c84f518defa89319dbef68211a24e9302182ad2a619e3be1be5b7dcf2a962c8359e889294af667440f4722e7e6e61671859e00bd8ec280a136ded89b25 + wide-align: ^1.1.5 + checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d languageName: node linkType: hard @@ -10331,13 +8816,13 @@ dts-critic@latest: linkType: hard "get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.0, get-intrinsic@npm:^1.1.1": - version: 1.1.1 - resolution: "get-intrinsic@npm:1.1.1" + version: 1.1.2 + resolution: "get-intrinsic@npm:1.1.2" dependencies: function-bind: ^1.1.1 has: ^1.0.3 - has-symbols: ^1.0.1 - checksum: a9fe2ca8fa3f07f9b0d30fb202bcd01f3d9b9b6b732452e79c48e79f7d6d8d003af3f9e38514250e3553fdc83c61650851cb6870832ac89deaaceb08e3721a17 + has-symbols: ^1.0.3 + checksum: 252f45491f2ba88ebf5b38018020c7cc3279de54b1d67ffb70c0cdf1dfa8ab31cd56467b5d117a8b4275b7a4dde91f86766b163a17a850f036528a7b2faafb2b languageName: node linkType: hard @@ -10519,7 +9004,7 @@ dts-critic@latest: languageName: node linkType: hard -"glob@npm:^7.0.0, glob@npm:^7.1.6": +"glob@npm:^7.0.0, glob@npm:^7.1.1, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -10533,17 +9018,16 @@ dts-critic@latest: languageName: node linkType: hard -"glob@npm:^7.1.1, glob@npm:^7.1.3, glob@npm:^7.1.4": - version: 7.2.0 - resolution: "glob@npm:7.2.0" +"glob@npm:^8.0.1": + version: 8.0.3 + resolution: "glob@npm:8.0.3" dependencies: fs.realpath: ^1.0.0 inflight: ^1.0.4 inherits: 2 - minimatch: ^3.0.4 + minimatch: ^5.0.1 once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: 78a8ea942331f08ed2e055cb5b9e40fe6f46f579d7fd3d694f3412fe5db23223d29b7fee1575440202e9a7ff9a72ab106a39fee39934c7bedafe5e5f8ae20134 + checksum: 50bcdea19d8e79d8de5f460b1939ffc2b3299eac28deb502093fdca22a78efebc03e66bf54f0abc3d3d07d8134d19a32850288b7440d77e072aa55f9d33b18c5 languageName: node linkType: hard @@ -10573,11 +9057,11 @@ dts-critic@latest: linkType: hard "globals@npm:^13.15.0": - version: 13.15.0 - resolution: "globals@npm:13.15.0" + version: 13.17.0 + resolution: "globals@npm:13.17.0" dependencies: type-fest: ^0.20.2 - checksum: 383ade0873b2ab29ce6d143466c203ed960491575bc97406395e5c8434026fb02472ab2dfff5bc16689b8460269b18fda1047975295cd0183904385c51258bae + checksum: fbaf4112e59b92c9f5575e85ce65e9e17c0b82711196ec5f58beb08599bbd92fd72703d6dfc9b080381fd35b644e1b11dcf25b38cc2341ec21df942594cbc8ce languageName: node linkType: hard @@ -10604,21 +9088,7 @@ dts-critic@latest: languageName: node linkType: hard -"globby@npm:^11.0.1": - version: 11.0.4 - resolution: "globby@npm:11.0.4" - dependencies: - array-union: ^2.1.0 - dir-glob: ^3.0.1 - fast-glob: ^3.1.1 - ignore: ^5.1.4 - merge2: ^1.3.0 - slash: ^3.0.0 - checksum: d3e02d5e459e02ffa578b45f040381c33e3c0538ed99b958f0809230c423337999867d7b0dbf752ce93c46157d3bbf154d3fff988a93ccaeb627df8e1841775b - languageName: node - linkType: hard - -"globby@npm:^11.0.3, globby@npm:^11.1.0": +"globby@npm:^11.0.1, globby@npm:^11.0.3, globby@npm:^11.1.0": version: 11.1.0 resolution: "globby@npm:11.1.0" dependencies: @@ -10671,27 +9141,13 @@ dts-critic@latest: languageName: node linkType: hard -"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.10 resolution: "graceful-fs@npm:4.2.10" checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da languageName: node linkType: hard -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4": - version: 4.2.8 - resolution: "graceful-fs@npm:4.2.8" - checksum: 5d224c8969ad0581d551dfabdb06882706b31af2561bd5e2034b4097e67cc27d05232849b8643866585fd0a41c7af152950f8776f4dd5579e9853733f31461c6 - languageName: node - linkType: hard - -"graceful-fs@npm:^4.2.6": - version: 4.2.9 - resolution: "graceful-fs@npm:4.2.9" - checksum: 68ea4e07ff2c041ada184f9278b830375f8e0b75154e3f080af6b70f66172fabb4108d19b3863a96b53fc068a310b9b6493d86d1291acc5f3861eb4b79d26ad6 - languageName: node - linkType: hard - "graphql@npm:^16.3.0": version: 16.5.0 resolution: "graphql@npm:16.5.0" @@ -10790,14 +9246,7 @@ dts-critic@latest: languageName: node linkType: hard -"has-bigints@npm:^1.0.1": - version: 1.0.1 - resolution: "has-bigints@npm:1.0.1" - checksum: 44ab55868174470065d2e0f8f6def1c990d12b82162a8803c679699fa8a39f966e336f2a33c185092fe8aea7e8bf2e85f1c26add5f29d98f2318bd270096b183 - languageName: node - linkType: hard - -"has-bigints@npm:^1.0.2": +"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": version: 1.0.2 resolution: "has-bigints@npm:1.0.2" checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b @@ -10827,14 +9276,7 @@ dts-critic@latest: languageName: node linkType: hard -"has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2": - version: 1.0.2 - resolution: "has-symbols@npm:1.0.2" - checksum: 2309c426071731be792b5be43b3da6fb4ed7cbe8a9a6bcfca1862587709f01b33d575ce8f5c264c1eaad09fca2f9a8208c0a2be156232629daa2dd0c0740976b - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.3": +"has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 @@ -10964,9 +9406,9 @@ dts-critic@latest: linkType: hard "headers-polyfill@npm:^3.0.4": - version: 3.0.7 - resolution: "headers-polyfill@npm:3.0.7" - checksum: ee392c1acdd2be797090837a085b14c8dc79f221e2501508afc1474667fba0627d583e06f9ab5cad57cf9dd570942d3166f791c75b92522a17c69c1e6bfcfbc4 + version: 3.0.10 + resolution: "headers-polyfill@npm:3.0.10" + checksum: 9bb7e7056278f2da8f72a614475dcfed6e7299a1f84bff1763ac8c297d3b3e43f47e181950da249e7c922c26c552506a429123eac1f06e9e4c7d71779784c7ab languageName: node linkType: hard @@ -11008,11 +9450,11 @@ dts-critic@latest: linkType: hard "hosted-git-info@npm:^4.0.0, hosted-git-info@npm:^4.0.1": - version: 4.0.2 - resolution: "hosted-git-info@npm:4.0.2" + version: 4.1.0 + resolution: "hosted-git-info@npm:4.1.0" dependencies: lru-cache: ^6.0.0 - checksum: d1b2d7720398ce96a788bd38d198fbddce089a2381f63cfb01743e6c7e5aed656e5547fe74090fb9fe53b2cb785b0e8c9ebdddadff48ed26bb471dd23cd25458 + checksum: c3f87b3c2f7eb8c2748c8f49c0c2517c9a95f35d26f4bf54b2a8cba05d2e668f3753548b6ea366b18ec8dadb4e12066e19fa382a01496b0ffa0497eb23cbe461 languageName: node linkType: hard @@ -11066,6 +9508,17 @@ dts-critic@latest: languageName: node linkType: hard +"http-proxy-agent@npm:^5.0.0": + version: 5.0.0 + resolution: "http-proxy-agent@npm:5.0.0" + dependencies: + "@tootallnate/once": 2 + agent-base: 6 + debug: 4 + checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786 + languageName: node + linkType: hard + "http-response-object@npm:^3.0.1": version: 3.0.2 resolution: "http-response-object@npm:3.0.2" @@ -11108,12 +9561,12 @@ dts-critic@latest: linkType: hard "https-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "https-proxy-agent@npm:5.0.0" + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" dependencies: agent-base: 6 debug: 4 - checksum: 165bfb090bd26d47693597661298006841ab733d0c7383a8cb2f17373387a94c903a3ac687090aa739de05e379ab6f868bae84ab4eac288ad85c328cd1ec9e53 + checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 languageName: node linkType: hard @@ -11181,7 +9634,7 @@ dts-critic@latest: languageName: node linkType: hard -"ignore@npm:^5.1.1, ignore@npm:^5.1.4, ignore@npm:^5.2.0": +"ignore@npm:^5.1.1, ignore@npm:^5.2.0": version: 5.2.0 resolution: "ignore@npm:5.2.0" checksum: 6b1f926792d614f64c6c83da3a1f9c83f6196c2839aa41e1e32dd7b8d174cef2e329d75caabb62cb61ce9dc432f75e67d07d122a037312db7caa73166a1bdb77 @@ -11317,10 +9770,10 @@ dts-critic@latest: languageName: node linkType: hard -"ip@npm:^1.1.5": - version: 1.1.5 - resolution: "ip@npm:1.1.5" - checksum: 30133981f082a060a32644f6a7746e9ba7ac9e2bc07ecc8bbdda3ee8ca9bec1190724c390e45a1ee7695e7edfd2a8f7dda2c104ec5f7ac5068c00648504c7e5a +"ip@npm:^2.0.0": + version: 2.0.0 + resolution: "ip@npm:2.0.0" + checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca625349 languageName: node linkType: hard @@ -11476,7 +9929,7 @@ dts-critic@latest: languageName: node linkType: hard -"is-core-module@npm:^2.1.0, is-core-module@npm:^2.9.0": +"is-core-module@npm:^2.1.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1, is-core-module@npm:^2.9.0": version: 2.9.0 resolution: "is-core-module@npm:2.9.0" dependencies: @@ -11485,24 +9938,6 @@ dts-critic@latest: languageName: node linkType: hard -"is-core-module@npm:^2.2.0, is-core-module@npm:^2.5.0": - version: 2.8.0 - resolution: "is-core-module@npm:2.8.0" - dependencies: - has: ^1.0.3 - checksum: f8b52714891e1a6c6577fcb8d5e057bab064a7a30954aab6beb5092e311473eb8da57afd334de4981dc32409ffca998412efc3a2edceb9e397cef6098d21dd91 - languageName: node - linkType: hard - -"is-core-module@npm:^2.8.1": - version: 2.8.1 - resolution: "is-core-module@npm:2.8.1" - dependencies: - has: ^1.0.3 - checksum: 418b7bc10768a73c41c7ef497e293719604007f88934a6ffc5f7c78702791b8528102fb4c9e56d006d69361549b3d9519440214a74aefc7e0b79e5e4411d377f - languageName: node - linkType: hard - "is-data-descriptor@npm:^0.1.4": version: 0.1.4 resolution: "is-data-descriptor@npm:0.1.4" @@ -11705,7 +10140,7 @@ dts-critic@latest: languageName: node linkType: hard -"is-negative-zero@npm:^2.0.1, is-negative-zero@npm:^2.0.2": +"is-negative-zero@npm:^2.0.2": version: 2.0.2 resolution: "is-negative-zero@npm:2.0.2" checksum: f3232194c47a549da60c3d509c9a09be442507616b69454716692e37ae9f37c4dea264fb208ad0c9f3efd15a796a46b79df07c7e53c6227c32170608b809149a @@ -11720,11 +10155,11 @@ dts-critic@latest: linkType: hard "is-number-object@npm:^1.0.4": - version: 1.0.6 - resolution: "is-number-object@npm:1.0.6" + version: 1.0.7 + resolution: "is-number-object@npm:1.0.7" dependencies: has-tostringtag: ^1.0.0 - checksum: c697704e8fc2027fc41cb81d29805de4e8b6dc9c3efee93741dbf126a8ecc8443fef85adbc581415ae7e55d325e51d0a942324ae35c829131748cce39cba55f3 + checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 languageName: node linkType: hard @@ -11780,9 +10215,9 @@ dts-critic@latest: linkType: hard "is-plain-obj@npm:^4.0.0": - version: 4.0.0 - resolution: "is-plain-obj@npm:4.0.0" - checksum: a6bb55a90636345a64c6153b74d85a9b6440f9975f4dcc57eed596c280b7ba228c71c406355a3147ed0488330d2743d5756e052c9492b1aa4f7dcd281f08c4b6 + version: 4.1.0 + resolution: "is-plain-obj@npm:4.1.0" + checksum: 6dc45da70d04a81f35c9310971e78a6a3c7a63547ef782e3a07ee3674695081b6ca4e977fbb8efc48dae3375e0b34558d2bcd722aec9bddfa2d7db5b041be8ce languageName: node linkType: hard @@ -11823,13 +10258,6 @@ dts-critic@latest: languageName: node linkType: hard -"is-shared-array-buffer@npm:^1.0.1": - version: 1.0.1 - resolution: "is-shared-array-buffer@npm:1.0.1" - checksum: 2ffb92533e64e2876e6cfe6906871d28400b6f1a53130fe652ec8007bc0e5044d05e7af8e31bdc992fbba520bd92938cfbeedd0f286be92f250c7c76191c4d90 - languageName: node - linkType: hard - "is-shared-array-buffer@npm:^1.0.2": version: 1.0.2 resolution: "is-shared-array-buffer@npm:1.0.2" @@ -11907,7 +10335,7 @@ dts-critic@latest: languageName: node linkType: hard -"is-weakref@npm:^1.0.1, is-weakref@npm:^1.0.2": +"is-weakref@npm:^1.0.2": version: 1.0.2 resolution: "is-weakref@npm:1.0.2" dependencies: @@ -12012,12 +10440,12 @@ dts-critic@latest: linkType: hard "istanbul-reports@npm:^3.1.3, istanbul-reports@npm:^3.1.4": - version: 3.1.4 - resolution: "istanbul-reports@npm:3.1.4" + version: 3.1.5 + resolution: "istanbul-reports@npm:3.1.5" dependencies: html-escaper: ^2.0.0 istanbul-lib-report: ^3.0.0 - checksum: 2132983355710c522f6b26808015cab9a0ee8b9f5ae0db0d3edeff40b886dd83cb670fb123cb7b32dbe59473d7c00cdde2ba6136bc0acdb20a865fccea64dfe1 + checksum: 7867228f83ed39477b188ea07e7ccb9b4f5320b6f73d1db93a0981b7414fa4ef72d3f80c4692c442f90fc250d9406e71d8d7ab65bb615cb334e6292b73192b89 languageName: node linkType: hard @@ -12124,18 +10552,6 @@ dts-critic@latest: linkType: hard "jest-diff@npm:^27.0.2": - version: 27.4.2 - resolution: "jest-diff@npm:27.4.2" - dependencies: - chalk: ^4.0.0 - diff-sequences: ^27.4.0 - jest-get-type: ^27.4.0 - pretty-format: ^27.4.2 - checksum: e5bcdb4f27747795b74a56d56a9545d7fc8f1671a1251d580aea1a7a52df5db044f62ec24f2abc68305f0226d918a443f3b88d9a82f8d0dc4aaa079b621ab091 - languageName: node - linkType: hard - -"jest-diff@npm:^27.5.1": version: 27.5.1 resolution: "jest-diff@npm:27.5.1" dependencies: @@ -12147,18 +10563,6 @@ dts-critic@latest: languageName: node linkType: hard -"jest-diff@npm:^28.1.1": - version: 28.1.1 - resolution: "jest-diff@npm:28.1.1" - dependencies: - chalk: ^4.0.0 - diff-sequences: ^28.1.1 - jest-get-type: ^28.0.2 - pretty-format: ^28.1.1 - checksum: d9e0355880bee8728f7615ac0f03c66dcd4e93113935cca056a5f5a2f20ac2c7812aca6ad68e79bd1b11f2428748bd9123e6b1c7e51c93b4da3dfa5a875339f7 - languageName: node - linkType: hard - "jest-diff@npm:^28.1.3": version: 28.1.3 resolution: "jest-diff@npm:28.1.3" @@ -12207,13 +10611,6 @@ dts-critic@latest: languageName: node linkType: hard -"jest-get-type@npm:^27.4.0": - version: 27.4.0 - resolution: "jest-get-type@npm:27.4.0" - checksum: bb9b70e420009fdaed3026d5bccd01569f92c7500f9f544d862796d4f4efa93ced5484864b2f272c7748bfb5bfd3268d48868b169c51ab45fe5b45b9519b6e46 - languageName: node - linkType: hard - "jest-get-type@npm:^27.5.1": version: 27.5.1 resolution: "jest-get-type@npm:27.5.1" @@ -12261,31 +10658,7 @@ dts-critic@latest: languageName: node linkType: hard -"jest-matcher-utils@npm:^27.0.0": - version: 27.5.1 - resolution: "jest-matcher-utils@npm:27.5.1" - dependencies: - chalk: ^4.0.0 - jest-diff: ^27.5.1 - jest-get-type: ^27.5.1 - pretty-format: ^27.5.1 - checksum: bb2135fc48889ff3fe73888f6cc7168ddab9de28b51b3148f820c89fdfd2effdcad005f18be67d0b9be80eda208ad47290f62f03d0a33f848db2dd0273c8217a - languageName: node - linkType: hard - -"jest-matcher-utils@npm:^28.0.0": - version: 28.1.1 - resolution: "jest-matcher-utils@npm:28.1.1" - dependencies: - chalk: ^4.0.0 - jest-diff: ^28.1.1 - jest-get-type: ^28.0.2 - pretty-format: ^28.1.1 - checksum: cb73ccd347638cd761ef7e0b606fbd71c115bd8febe29413f7b105fff6855d4356b8094c6b72393c5457db253b9c163498f188f25f9b6308c39c510e4c2886ee - languageName: node - linkType: hard - -"jest-matcher-utils@npm:^28.1.3": +"jest-matcher-utils@npm:^28.0.0, jest-matcher-utils@npm:^28.1.3": version: 28.1.3 resolution: "jest-matcher-utils@npm:28.1.3" dependencies: @@ -12553,15 +10926,6 @@ dts-critic@latest: languageName: node linkType: hard -"jiti@npm:^1.13.0": - version: 1.13.0 - resolution: "jiti@npm:1.13.0" - bin: - jiti: bin/jiti.js - checksum: 1e74d99b9a551df952057b8bce56f744caccca0044aa05021643e6ce0837ed47bc2d5b290fecb462e32988c6bf318afe77e341310c5ecf6bb63c19c80c929cb6 - languageName: node - linkType: hard - "jju@npm:~1.4.0": version: 1.4.0 resolution: "jju@npm:1.4.0" @@ -12716,8 +11080,8 @@ dts-critic@latest: linkType: hard "jsdoc@npm:^3.6.10": - version: 3.6.10 - resolution: "jsdoc@npm:3.6.10" + version: 3.6.11 + resolution: "jsdoc@npm:3.6.11" dependencies: "@babel/parser": ^7.9.4 "@types/markdown-it": ^12.2.3 @@ -12725,7 +11089,7 @@ dts-critic@latest: catharsis: ^0.9.0 escape-string-regexp: ^2.0.0 js2xmlparser: ^4.0.2 - klaw: ^4.0.1 + klaw: ^3.0.0 markdown-it: ^12.3.2 markdown-it-anchor: ^8.4.1 marked: ^4.0.10 @@ -12736,7 +11100,7 @@ dts-critic@latest: underscore: ~1.13.2 bin: jsdoc: jsdoc.js - checksum: 8902aa91a51c393036e0c4701ec6b1134dee5f0b42e6b9c7660958410200868368d6bf3df537d1c0fbcd193da83cbea9b8a60804f93bca658bc10e37ae999ab7 + checksum: 7920b5cba6200c8f56c9ac2ac5e89d06b6581dd1ce22e66976409fad8b68c16bfd8cd30fe9af58baeacc9f6bd9ba06d901ca4f5e234944f42a3c37e55e4ddcf0 languageName: node linkType: hard @@ -12853,9 +11217,9 @@ dts-critic@latest: linkType: hard "jsonc-parser@npm:^3.0.0": - version: 3.0.0 - resolution: "jsonc-parser@npm:3.0.0" - checksum: 1df2326f1f9688de30c70ff19c5b2a83ba3b89a1036160da79821d1361090775e9db502dc57a67c11b56e1186fc1ed70b887f25c5febf9a3ec4f91435836c99d + version: 3.1.0 + resolution: "jsonc-parser@npm:3.1.0" + checksum: 81b00c565c60cb1b400523a918d42ad9c7bb3d9cf34c708bf78d37c8c496ecd670c3ff8828f2f60aa6e6627ef4287982794ddf92261ea71e320973c54b29fb22 languageName: node linkType: hard @@ -12923,22 +11287,22 @@ dts-critic@latest: linkType: hard "jsx-ast-utils@npm:^2.4.1 || ^3.0.0": - version: 3.3.0 - resolution: "jsx-ast-utils@npm:3.3.0" + version: 3.3.2 + resolution: "jsx-ast-utils@npm:3.3.2" dependencies: - array-includes: ^3.1.4 + array-includes: ^3.1.5 object.assign: ^4.1.2 - checksum: e3c0667e8979c70600fb0456b19f0ec194994c953678ac2772a819d8d5740df2ed751e49e4f1db7869bf63251585a93b18acd42ef02269fe41cb23941d0d4950 + checksum: 61d4596d44480afc03ae0a7ebb272aa6603dc4c3645805dea0fc8d9f0693542cd0959f3ba7c0c9b16c13dd5a900c7c4310108bada273132a8355efe3fed22064 languageName: node linkType: hard "keyv@npm:^4.0.0": - version: 4.3.0 - resolution: "keyv@npm:4.3.0" + version: 4.3.3 + resolution: "keyv@npm:4.3.3" dependencies: compress-brotli: ^1.3.8 json-buffer: 3.0.1 - checksum: abcb5885fc636fb867929234da9e1cd4f74a7da5db2c59fe5f8537372416cfa4e25b54e1c18ae9c3a0e9688452d15bf32fbba1ed9dfb57047673fe6ddb8a7bb6 + checksum: bcc946eeec3407fb3b42d831ce985357162113c5f07a8c45c12ede39704ba2d99be4c3dded76d2d2d2a2366627e42440bdde24393216164156928399949c12a1 languageName: node linkType: hard @@ -12974,10 +11338,12 @@ dts-critic@latest: languageName: node linkType: hard -"klaw@npm:^4.0.1": - version: 4.0.1 - resolution: "klaw@npm:4.0.1" - checksum: 7835649ef632f96099d500f94b38c032acf1432ad5e87da596a2509c2f6a63a7fc346fb357e2227091cc433af5c1378ed448e1c0522ed028981dcd446152291e +"klaw@npm:^3.0.0": + version: 3.0.0 + resolution: "klaw@npm:3.0.0" + dependencies: + graceful-fs: ^4.1.9 + checksum: 1bf9de22392c80d28de8a2babd6f0de29fa52fcdc1654838fd35174b3641c168ec32b8b03022191e3c190efd535c31fce23f85e29cb260245571da7263ef418e languageName: node linkType: hard @@ -12989,9 +11355,9 @@ dts-critic@latest: linkType: hard "kleur@npm:^4.0.3": - version: 4.1.4 - resolution: "kleur@npm:4.1.4" - checksum: 7f6db36e378045dec14acd3cbf0b1e59130c09e984ee8b8ce56dd2d2257cfff90389c1e8f8b19bd09dd5d241080566a814b4ccd99fdcef91f59ef93ec33c8a44 + version: 4.1.5 + resolution: "kleur@npm:4.1.5" + checksum: 1dc476e32741acf0b1b5b0627ffd0d722e342c1b0da14de3e8ae97821327ca08f9fb944542fb3c126d90ac5f27f9d804edbe7c585bf7d12ef495d115e0f22c12 languageName: node linkType: hard @@ -13026,13 +11392,20 @@ dts-critic@latest: languageName: node linkType: hard -"lilconfig@npm:2.0.5, lilconfig@npm:^2.0.5": +"lilconfig@npm:2.0.5": version: 2.0.5 resolution: "lilconfig@npm:2.0.5" checksum: f7bb9e42656f06930ad04e583026f087508ae408d3526b8b54895e934eb2a966b7aafae569656f2c79a29fe6d779b3ec44ba577e80814734c8655d6f71cdf2d1 languageName: node linkType: hard +"lilconfig@npm:^2.0.5": + version: 2.0.6 + resolution: "lilconfig@npm:2.0.6" + checksum: 40a3cd72f103b1be5975f2ac1850810b61d4053e20ab09be8d3aeddfe042187e1ba70b4651a7e70f95efa1642e7dc8b2ae395b317b7d7753b241b43cef7c0f7d + languageName: node + linkType: hard + "lines-and-columns@npm:^1.1.6": version: 1.2.4 resolution: "lines-and-columns@npm:1.2.4" @@ -13144,14 +11517,7 @@ dts-critic@latest: languageName: node linkType: hard -"local-pkg@npm:^0.4.1": - version: 0.4.1 - resolution: "local-pkg@npm:0.4.1" - checksum: 4ab3b4853ffbc3b292a3ae2e22618dbc348418a2ebf60ada55fdcc5a8583f9167c89fc7977194ffa39d0a4c5078f9c421d246afdd252fea7a840f7a8f3b5f96b - languageName: node - linkType: hard - -"local-pkg@npm:^0.4.2": +"local-pkg@npm:^0.4.1, local-pkg@npm:^0.4.2": version: 0.4.2 resolution: "local-pkg@npm:0.4.2" checksum: 22be451353c25c4411b552bf01880ebc9e995b93574b2facc7757968d888356df59199cacada14162ab53bbc9da055bb692c907b4171f008dbce45a2afc777c1 @@ -13369,6 +11735,13 @@ dts-critic@latest: languageName: node linkType: hard +"lru-cache@npm:^7.7.1": + version: 7.13.1 + resolution: "lru-cache@npm:7.13.1" + checksum: f53c7dd098a7afd6342b23f7182629edff206c7665de79445a7f5455440e768a4d1c6ec52e1a16175580c71535c9437dfb6f6bc22ca1a0e4a7454a97cde87329 + languageName: node + linkType: hard + "lunr@npm:^2.3.9": version: 2.3.9 resolution: "lunr@npm:2.3.9" @@ -13429,7 +11802,31 @@ dts-critic@latest: languageName: node linkType: hard -"make-fetch-happen@npm:^9.0.1, make-fetch-happen@npm:^9.1.0": +"make-fetch-happen@npm:^10.0.3": + version: 10.2.0 + resolution: "make-fetch-happen@npm:10.2.0" + dependencies: + agentkeepalive: ^4.2.1 + cacache: ^16.1.0 + http-cache-semantics: ^4.1.0 + http-proxy-agent: ^5.0.0 + https-proxy-agent: ^5.0.0 + is-lambda: ^1.0.1 + lru-cache: ^7.7.1 + minipass: ^3.1.6 + minipass-collect: ^1.0.2 + minipass-fetch: ^2.0.3 + minipass-flush: ^1.0.5 + minipass-pipeline: ^1.2.4 + negotiator: ^0.6.3 + promise-retry: ^2.0.1 + socks-proxy-agent: ^7.0.0 + ssri: ^9.0.0 + checksum: 2f6c294179972f56fab40fd8618f07841e06550692bb78f6da16e7afaa9dca78c345b08cf44a77a8907ef3948e4dc77e93eb7492b8381f1217d7ac057a7522f8 + languageName: node + linkType: hard + +"make-fetch-happen@npm:^9.0.1": version: 9.1.0 resolution: "make-fetch-happen@npm:9.1.0" dependencies: @@ -13524,32 +11921,23 @@ dts-critic@latest: languageName: node linkType: hard -"marked@npm:^4.0.10, marked@npm:^4.0.16": - version: 4.0.16 - resolution: "marked@npm:4.0.16" - bin: - marked: bin/marked.js - checksum: c0ef780bf56c9bb49c15b66683e5648410c924c1d725f1489fc3c7dc3bd01194c50d720052bb0282ad7907f472dfdc8fa278acbc7903c5db3be4b83487e0d684 - languageName: node - linkType: hard - -"marked@npm:^4.0.12": - version: 4.0.14 - resolution: "marked@npm:4.0.14" +"marked@npm:^4.0.10, marked@npm:^4.0.12, marked@npm:^4.0.16": + version: 4.0.18 + resolution: "marked@npm:4.0.18" bin: marked: bin/marked.js - checksum: 778bc2fc94c51ae4fbafe5a08bc1f3917799c4dd39e9fccd972a97df4e5bc5aa78664b7143d12d4b4969608fb90c6a2de3f19811a2f9ccf6b7f207022f2842ba + checksum: a13e886d5059a8500a6fd552feecc16e18fc3636aa491fce372384b1fdea67e323d67ac49f7618f6977e66ca96e39f27400eb5c1273d5ee9c2301e8c33e90dce languageName: node linkType: hard "mdast-util-definitions@npm:^5.0.0": - version: 5.1.0 - resolution: "mdast-util-definitions@npm:5.1.0" + version: 5.1.1 + resolution: "mdast-util-definitions@npm:5.1.1" dependencies: "@types/mdast": ^3.0.0 "@types/unist": ^2.0.0 - unist-util-visit: ^3.0.0 - checksum: a5237dc5925d965ec5f4c237b8d2fbc4728c18402f4f0cea0c947fb6241d7f2c7264b8bd5000363800388003d1474d57f5d5d29e0605a504bd186e59ddf8906a + unist-util-visit: ^4.0.0 + checksum: f8025e2c35f6f8641528037abe18f492ef100e00a48c92cf78b7a313f9ccdb0e30c6aed0b40539767a3f425be09e78cb0f2f9bc4131fff41ea4664a1a7314a14 languageName: node linkType: hard @@ -13623,15 +12011,15 @@ dts-critic@latest: linkType: hard "mdast-util-mdxjs-esm@npm:^1.0.0": - version: 1.2.0 - resolution: "mdast-util-mdxjs-esm@npm:1.2.0" + version: 1.2.1 + resolution: "mdast-util-mdxjs-esm@npm:1.2.1" dependencies: "@types/estree-jsx": ^0.0.1 "@types/hast": ^2.0.0 "@types/mdast": ^3.0.0 mdast-util-from-markdown: ^1.0.0 mdast-util-to-markdown: ^1.0.0 - checksum: be8a9bc77bc66b2a7dd9057974b30e7e8e0a37caee467ee7f22451da25e4aeb58eec78b93132672449f8714bfb5c60dc58b3822956bdc8fffbc2ff476a1e4450 + checksum: cc9b50612187208da2c592057b9b9f056e2eb6689891f6c9a85eeb800673f93d3b99b2a11e784114802db695654f2d4ad9af8fde8e3aadcdad75904a090c83ab languageName: node linkType: hard @@ -14135,17 +12523,7 @@ dts-critic@latest: languageName: node linkType: hard -"micromatch@npm:^4.0.4": - version: 4.0.4 - resolution: "micromatch@npm:4.0.4" - dependencies: - braces: ^3.0.1 - picomatch: ^2.2.3 - checksum: ef3d1c88e79e0a68b0e94a03137676f3324ac18a908c245a9e5936f838079fcc108ac7170a5fadc265a9c2596963462e402841406bda1a4bb7b68805601d631c - languageName: node - linkType: hard - -"micromatch@npm:^4.0.5": +"micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": version: 4.0.5 resolution: "micromatch@npm:4.0.5" dependencies: @@ -14155,13 +12533,6 @@ dts-critic@latest: languageName: node linkType: hard -"mime-db@npm:1.51.0": - version: 1.51.0 - resolution: "mime-db@npm:1.51.0" - checksum: 613b1ac9d6e725cc24444600b124a7f1ce6c60b1baa654f39a3e260d0995a6dffc5693190217e271af7e2a5612dae19f2a73f3e316707d797a7391165f7ef423 - languageName: node - linkType: hard - "mime-db@npm:1.52.0, mime-db@npm:>= 1.43.0 < 2": version: 1.52.0 resolution: "mime-db@npm:1.52.0" @@ -14169,16 +12540,7 @@ dts-critic@latest: languageName: node linkType: hard -"mime-types@npm:^2.1.12, mime-types@npm:~2.1.19": - version: 2.1.34 - resolution: "mime-types@npm:2.1.34" - dependencies: - mime-db: 1.51.0 - checksum: 67013de9e9d6799bde6d669d18785b7e18bcd212e710d3e04a4727f92f67a8ad4e74aee24be28b685adb794944814bde649119b58ee3282ffdbee58f9278d9f3 - languageName: node - linkType: hard - -"mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": +"mime-types@npm:^2.1.12, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -14240,7 +12602,7 @@ dts-critic@latest: languageName: node linkType: hard -"minimatch@npm:^3.0.2, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -14249,16 +12611,7 @@ dts-critic@latest: languageName: node linkType: hard -"minimatch@npm:^3.0.4": - version: 3.0.4 - resolution: "minimatch@npm:3.0.4" - dependencies: - brace-expansion: ^1.1.7 - checksum: 66ac295f8a7b59788000ea3749938b0970344c841750abd96694f80269b926ebcafad3deeb3f1da2522978b119e6ae3a5869b63b13a7859a456b3408bd18a078 - languageName: node - linkType: hard - -"minimatch@npm:^5.1.0": +"minimatch@npm:^5.0.1, minimatch@npm:^5.1.0": version: 5.1.0 resolution: "minimatch@npm:5.1.0" dependencies: @@ -14278,14 +12631,7 @@ dts-critic@latest: languageName: node linkType: hard -"minimist@npm:^1.2.0, minimist@npm:^1.2.5": - version: 1.2.5 - resolution: "minimist@npm:1.2.5" - checksum: 86706ce5b36c16bfc35c5fe3dbb01d5acdc9a22f2b6cc810b6680656a1d2c0e44a0159c9a3ba51fb072bb5c203e49e10b51dcd0eec39c481f4c42086719bae52 - languageName: node - linkType: hard - -"minimist@npm:^1.2.6": +"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6": version: 1.2.6 resolution: "minimist@npm:1.2.6" checksum: d15428cd1e11eb14e1233bcfb88ae07ed7a147de251441d61158619dfb32c4d7e9061d09cab4825fdee18ecd6fce323228c8c47b5ba7cd20af378ca4048fb3fb @@ -14316,6 +12662,21 @@ dts-critic@latest: languageName: node linkType: hard +"minipass-fetch@npm:^2.0.3": + version: 2.1.0 + resolution: "minipass-fetch@npm:2.1.0" + dependencies: + encoding: ^0.1.13 + minipass: ^3.1.6 + minipass-sized: ^1.0.3 + minizlib: ^2.1.2 + dependenciesMeta: + encoding: + optional: true + checksum: 1334732859a3f7959ed22589bafd9c40384b885aebb5932328071c33f86b3eb181d54c86919675d1825ab5f1c8e4f328878c863873258d113c29d79a4b0c9c9f + languageName: node + linkType: hard + "minipass-flush@npm:^1.0.5": version: 1.0.5 resolution: "minipass-flush@npm:1.0.5" @@ -14353,16 +12714,16 @@ dts-critic@latest: languageName: node linkType: hard -"minipass@npm:^3.0.0, minipass@npm:^3.1.0, minipass@npm:^3.1.1, minipass@npm:^3.1.3": - version: 3.1.6 - resolution: "minipass@npm:3.1.6" +"minipass@npm:^3.0.0, minipass@npm:^3.1.0, minipass@npm:^3.1.1, minipass@npm:^3.1.3, minipass@npm:^3.1.6": + version: 3.3.4 + resolution: "minipass@npm:3.3.4" dependencies: yallist: ^4.0.0 - checksum: 57a04041413a3531a65062452cb5175f93383ef245d6f4a2961d34386eb9aa8ac11ac7f16f791f5e8bbaf1dfb1ef01596870c88e8822215db57aa591a5bb0a77 + checksum: 5d95a7738c54852ba78d484141e850c792e062666a2d0c681a5ac1021275beb7e1acb077e59f9523ff1defb80901aea4e30fac10ded9a20a25d819a42916ef1b languageName: node linkType: hard -"minizlib@npm:^2.0.0, minizlib@npm:^2.1.1": +"minizlib@npm:^2.0.0, minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": version: 2.1.2 resolution: "minizlib@npm:2.1.2" dependencies: @@ -14397,13 +12758,13 @@ dts-critic@latest: linkType: hard "mkdirp@npm:>=0.5 0, mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.3": - version: 0.5.5 - resolution: "mkdirp@npm:0.5.5" + version: 0.5.6 + resolution: "mkdirp@npm:0.5.6" dependencies: - minimist: ^1.2.5 + minimist: ^1.2.6 bin: mkdirp: bin/cmd.js - checksum: 3bce20ea525f9477befe458ab85284b0b66c8dc3812f94155af07c827175948cdd8114852ac6c6d82009b13c1048c37f6d98743eb019651ee25c39acc8aabe7d + checksum: 0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 languageName: node linkType: hard @@ -14438,17 +12799,7 @@ dts-critic@latest: languageName: node linkType: hard -"mlly@npm:^0.5.3": - version: 0.5.4 - resolution: "mlly@npm:0.5.4" - dependencies: - pathe: ^0.3.1 - pkg-types: ^0.3.3 - checksum: fb756e817aaf5edb94f3cd238bf608c59bb1e0f505fa4b9bd38d13a151e4120c561e8689bff4265602b0fea37cc43902b0d8e6754301b36c4ca5167926e75709 - languageName: node - linkType: hard - -"mlly@npm:^0.5.4": +"mlly@npm:^0.5.3, mlly@npm:^0.5.4": version: 0.5.5 resolution: "mlly@npm:0.5.5" dependencies: @@ -14458,14 +12809,7 @@ dts-critic@latest: languageName: node linkType: hard -"mock-socket@npm:^9.1.0": - version: 9.1.0 - resolution: "mock-socket@npm:9.1.0" - checksum: 19b16017da9810bbdcc2bc8e7e2b3ff0c7aa57d0f1edf5ab354e468457c1bace8d3d15c885123a614aa9cf916f6b40de5075b94f56b314a53a0ed2fbdff02e14 - languageName: node - linkType: hard - -"mock-socket@npm:^9.1.5": +"mock-socket@npm:^9.1.0, mock-socket@npm:^9.1.5": version: 9.1.5 resolution: "mock-socket@npm:9.1.5" checksum: a01586bc2850eb5809eda6de0c7ab19255c1e0eb217a805f86ba662bb4aab00b919032d67e7c826c6c12bcfb2fbe19cecbacf0ab6184936487edc4ba37d3ba53 @@ -14500,9 +12844,9 @@ dts-critic@latest: linkType: hard "mrmime@npm:^1.0.0": - version: 1.0.0 - resolution: "mrmime@npm:1.0.0" - checksum: 2c72a40942af7c53bc97d1e9e9c5cb0e6541d18f736811c3a1b46fa2a2b2362480d687daa8ae8372523acaacd82426a4f7ce34b0bf1825ea83b3983e8cb91afd + version: 1.0.1 + resolution: "mrmime@npm:1.0.1" + checksum: cc979da44bbbffebaa8eaf7a45117e851f2d4cb46a3ada6ceb78130466a04c15a0de9a9ce1c8b8ba6f6e1b8618866b1352992bf1757d241c0ddca558b9f28a77 languageName: node linkType: hard @@ -14580,6 +12924,15 @@ dts-critic@latest: languageName: node linkType: hard +"nan@npm:^2.14.0": + version: 2.16.0 + resolution: "nan@npm:2.16.0" + dependencies: + node-gyp: latest + checksum: cb16937273ea55b01ea47df244094c12297ce6b29b36e845d349f1f7c268b8d7c5abd126a102c5678a1e1afd0d36bba35ea0cc959e364928ce60561c9306064a + languageName: node + linkType: hard + "nanoid@npm:^3.3.4": version: 3.3.4 resolution: "nanoid@npm:3.3.4" @@ -14615,20 +12968,13 @@ dts-critic@latest: languageName: node linkType: hard -"negotiator@npm:0.6.3": +"negotiator@npm:0.6.3, negotiator@npm:^0.6.2, negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 languageName: node linkType: hard -"negotiator@npm:^0.6.2": - version: 0.6.2 - resolution: "negotiator@npm:0.6.2" - checksum: dfddaff6c06792f1c4c3809e29a427b8daef8cd437c83b08dd51d7ee11bbd1c29d9512d66b801144d6c98e910ffd8723f2432e0cbf8b18d41d2a09599c975ab3 - languageName: node - linkType: hard - "neo-async@npm:^2.5.0, neo-async@npm:^2.6.0": version: 2.6.2 resolution: "neo-async@npm:2.6.2" @@ -14655,20 +13001,13 @@ dts-critic@latest: linkType: hard "node-fetch-native@npm:^0.1.3": - version: 0.1.3 - resolution: "node-fetch-native@npm:0.1.3" - checksum: b9659a22c41b471e970ef3223682d08c7c439deed9ed647f218bda503dae06d78f1882e1532ff9a70d088eac4a20b12a1711e18a756f609e26d6956955277a40 - languageName: node - linkType: hard - -"node-fetch@npm:2.6.1": - version: 2.6.1 - resolution: "node-fetch@npm:2.6.1" - checksum: 91075bedd57879117e310fbcc36983ad5d699e522edb1ebcdc4ee5294c982843982652925c3532729fdc86b2d64a8a827797a745f332040d91823c8752ee4d7c + version: 0.1.4 + resolution: "node-fetch-native@npm:0.1.4" + checksum: f7c5feb80159e95ac2165cfa650c8446158e3b1549f6046d83f75bd89cc32ef4673a57b9a19fc0335ad77a08527aed4cf53d83dc3d41ef628672fe97369f7f87 languageName: node linkType: hard -"node-fetch@npm:^2.6.7, node-fetch@npm:^2.x.x": +"node-fetch@npm:2.6.7, node-fetch@npm:^2.6.7, node-fetch@npm:^2.x.x": version: 2.6.7 resolution: "node-fetch@npm:2.6.7" dependencies: @@ -14683,13 +13022,13 @@ dts-critic@latest: linkType: hard "node-gyp@npm:latest": - version: 8.4.1 - resolution: "node-gyp@npm:8.4.1" + version: 9.1.0 + resolution: "node-gyp@npm:9.1.0" dependencies: env-paths: ^2.2.0 glob: ^7.1.4 graceful-fs: ^4.2.6 - make-fetch-happen: ^9.1.0 + make-fetch-happen: ^10.0.3 nopt: ^5.0.0 npmlog: ^6.0.0 rimraf: ^3.0.2 @@ -14698,7 +13037,7 @@ dts-critic@latest: which: ^2.0.2 bin: node-gyp: bin/node-gyp.js - checksum: 341710b5da39d3660e6a886b37e210d33f8282047405c2e62c277bcc744c7552c5b8b972ebc3a7d5c2813794e60cc48c3ebd142c46d6e0321db4db6c92dd0355 + checksum: 1437fa4a879b5b9010604128e8da8609b57c66034262087539ee04a8b764b8436af2be01bab66f8fc729a3adba2dcc21b10a32b9f552696c3fa8cd657d134fc4 languageName: node linkType: hard @@ -14709,10 +13048,10 @@ dts-critic@latest: languageName: node linkType: hard -"node-releases@npm:^2.0.3": - version: 2.0.5 - resolution: "node-releases@npm:2.0.5" - checksum: e85d949addd19f8827f32569d2be5751e7812ccf6cc47879d49f79b5234ff4982225e39a3929315f96370823b070640fb04d79fc0ddec8b515a969a03493a42f +"node-releases@npm:^2.0.6": + version: 2.0.6 + resolution: "node-releases@npm:2.0.6" + checksum: e86a926dc9fbb3b41b4c4a89d998afdf140e20a4e8dbe6c0a807f7b2948b42ea97d7fd3ad4868041487b6e9ee98409829c6e4d84a734a4215dff060a7fbeb4bf languageName: node linkType: hard @@ -14821,14 +13160,14 @@ dts-critic@latest: linkType: hard "npmlog@npm:^6.0.0": - version: 6.0.0 - resolution: "npmlog@npm:6.0.0" + version: 6.0.2 + resolution: "npmlog@npm:6.0.2" dependencies: - are-we-there-yet: ^2.0.0 + are-we-there-yet: ^3.0.0 console-control-strings: ^1.1.0 - gauge: ^4.0.0 + gauge: ^4.0.3 set-blocking: ^2.0.0 - checksum: 33d8a7fe3d63bf83b16655b6588ae7ba10b5f37b067a661e7cab6508660d7c3204ae716ee2c5ce4eb9626fd1489cf2fa7645d789bc3b704f8c3ccb04a532a50b + checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a languageName: node linkType: hard @@ -14871,21 +13210,14 @@ dts-critic@latest: languageName: node linkType: hard -"object-inspect@npm:^1.11.0, object-inspect@npm:^1.9.0": - version: 1.12.0 - resolution: "object-inspect@npm:1.12.0" - checksum: 2b36d4001a9c921c6b342e2965734519c9c58c355822243c3207fbf0aac271f8d44d30d2d570d450b2cc6f0f00b72bcdba515c37827d2560e5f22b1899a31cf4 - languageName: node - linkType: hard - -"object-inspect@npm:^1.12.0, object-inspect@npm:^1.12.2": +"object-inspect@npm:^1.12.0, object-inspect@npm:^1.12.2, object-inspect@npm:^1.9.0": version: 1.12.2 resolution: "object-inspect@npm:1.12.2" checksum: a534fc1b8534284ed71f25ce3a496013b7ea030f3d1b77118f6b7b1713829262be9e6243acbcb3ef8c626e2b64186112cb7f6db74e37b2789b9c789ca23048b2 languageName: node linkType: hard -"object-keys@npm:^1.0.12, object-keys@npm:^1.1.1": +"object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a @@ -15374,14 +13706,7 @@ dts-critic@latest: languageName: node linkType: hard -"pathe@npm:^0.3.0": - version: 0.3.0 - resolution: "pathe@npm:0.3.0" - checksum: 1da704da2b625b9062be4079b6f8d5609e053add991520fb6a43905b492ee48e5c61cc6fb87f7ae970df39d4b7be1e6840285f683d670f8b430481e46c81c863 - languageName: node - linkType: hard - -"pathe@npm:^0.3.1, pathe@npm:^0.3.2": +"pathe@npm:^0.3.0, pathe@npm:^0.3.2": version: 0.3.2 resolution: "pathe@npm:0.3.2" checksum: a3fdfe2875b074d5dd20f32d89d0d2ded2341423cdccfaec820bc994ea9d76badba2de6fd522fcf580dc5e5b3adb238d3b71855001d428c5554fb61223001eed @@ -15451,14 +13776,7 @@ dts-critic@latest: languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3": - version: 2.3.0 - resolution: "picomatch@npm:2.3.0" - checksum: 16818720ea7c5872b6af110760dee856c8e4cd79aed1c7a006d076b1cc09eff3ae41ca5019966694c33fbd2e1cc6ea617ab10e4adac6df06556168f13be3fca2 - languageName: node - linkType: hard - -"picomatch@npm:^2.2.2, picomatch@npm:^2.3.1": +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf @@ -15602,46 +13920,22 @@ dts-critic@latest: "pretty-bytes@npm:^6.0.0": version: 6.0.0 resolution: "pretty-bytes@npm:6.0.0" - checksum: 0bb9f95e617236404b29a8392c6efd82d65805f622f5e809ecd70068102be857d4e3276c86d2a32fa2ef851cc29472e380945dab7bec83ec79bd57a19a10faf7 - languageName: node - linkType: hard - -"pretty-format@npm:^27.0.0, pretty-format@npm:^27.0.2, pretty-format@npm:^27.5.1": - version: 27.5.1 - resolution: "pretty-format@npm:27.5.1" - dependencies: - ansi-regex: ^5.0.1 - ansi-styles: ^5.0.0 - react-is: ^17.0.1 - checksum: cf610cffcb793885d16f184a62162f2dd0df31642d9a18edf4ca298e909a8fe80bdbf556d5c9573992c102ce8bf948691da91bf9739bee0ffb6e79c8a8a6e088 + checksum: 0bb9f95e617236404b29a8392c6efd82d65805f622f5e809ecd70068102be857d4e3276c86d2a32fa2ef851cc29472e380945dab7bec83ec79bd57a19a10faf7 languageName: node linkType: hard -"pretty-format@npm:^27.4.2": - version: 27.4.2 - resolution: "pretty-format@npm:27.4.2" +"pretty-format@npm:^27.0.2, pretty-format@npm:^27.5.1": + version: 27.5.1 + resolution: "pretty-format@npm:27.5.1" dependencies: - "@jest/types": ^27.4.2 ansi-regex: ^5.0.1 ansi-styles: ^5.0.0 react-is: ^17.0.1 - checksum: 0daaf00c4dcb35493e57d30147e8045d0c45cb47fc4c94e3ab1892401abe939627c39975c77cc81eb2581aaa5b12bf23ef669fa550bec68b396fb79dd8c10afa - languageName: node - linkType: hard - -"pretty-format@npm:^28.0.0, pretty-format@npm:^28.1.1": - version: 28.1.1 - resolution: "pretty-format@npm:28.1.1" - dependencies: - "@jest/schemas": ^28.0.2 - ansi-regex: ^5.0.1 - ansi-styles: ^5.0.0 - react-is: ^18.0.0 - checksum: 7fde4e2d6fd57cef8cf2fa9d5560cc62126de481f09c65dccfe89a3e6158a04355cff278853ace07fdf7f2f48c3d77877c00c47d7d3c1c028dcff5c322300d79 + checksum: cf610cffcb793885d16f184a62162f2dd0df31642d9a18edf4ca298e909a8fe80bdbf556d5c9573992c102ce8bf948691da91bf9739bee0ffb6e79c8a8a6e088 languageName: node linkType: hard -"pretty-format@npm:^28.1.3": +"pretty-format@npm:^28.0.0, pretty-format@npm:^28.1.3": version: 28.1.3 resolution: "pretty-format@npm:28.1.3" dependencies: @@ -15785,9 +14079,9 @@ dts-critic@latest: linkType: hard "psl@npm:^1.1.28": - version: 1.8.0 - resolution: "psl@npm:1.8.0" - checksum: 6150048ed2da3f919478bee8a82f3828303bc0fc730fb015a48f83c9977682c7b28c60ab01425a72d82a2891a1681627aa530a991d50c086b48a3be27744bde7 + version: 1.9.0 + resolution: "psl@npm:1.9.0" + checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d languageName: node linkType: hard @@ -15836,7 +14130,7 @@ dts-critic@latest: languageName: node linkType: hard -"qs@npm:6.10.3, qs@npm:^6.10.3": +"qs@npm:6.10.3": version: 6.10.3 resolution: "qs@npm:6.10.3" dependencies: @@ -15852,19 +14146,19 @@ dts-critic@latest: languageName: node linkType: hard -"qs@npm:^6.4.0": - version: 6.10.5 - resolution: "qs@npm:6.10.5" +"qs@npm:^6.10.3, qs@npm:^6.4.0": + version: 6.11.0 + resolution: "qs@npm:6.11.0" dependencies: side-channel: ^1.0.4 - checksum: b3873189a11bcf48445864b3ba66f7a76db0d9d874955d197779f561addfa604884f7b107971526ce1eca02c99bf7d1e47f28a3e7e6e29204d798fb279164226 + checksum: 6e1f29dd5385f7488ec74ac7b6c92f4d09a90408882d0c208414a34dd33badc1a621019d4c799a3df15ab9b1d0292f97c1dd71dc7c045e69f81a8064e5af7297 languageName: node linkType: hard "qs@npm:~6.5.2": - version: 6.5.2 - resolution: "qs@npm:6.5.2" - checksum: 24af7b9928ba2141233fba2912876ff100403dba1b08b20c3b490da9ea6c636760445ea2211a079e7dfa882a5cf8f738337b3748c8bdd0f93358fa8881d2db8f + version: 6.5.3 + resolution: "qs@npm:6.5.3" + checksum: 6f20bf08cabd90c458e50855559539a28d00b2f2e7dddcb66082b16a43188418cb3cb77cbd09268bcef6022935650f0534357b8af9eeb29bf0f27ccb17655692 languageName: node linkType: hard @@ -15944,9 +14238,9 @@ dts-critic@latest: linkType: hard "react-is@npm:^18.0.0": - version: 18.1.0 - resolution: "react-is@npm:18.1.0" - checksum: d206a0fe6790851bff168727bfb896de02c5591695afb0c441163e8630136a3e13ee1a7ddd59fdccddcc93968b4721ae112c10f790b194b03b35a3dc13a355ef + version: 18.2.0 + resolution: "react-is@npm:18.2.0" + checksum: e72d0ba81b5922759e4aff17e0252bd29988f9642ed817f56b25a3e217e13eea8a7f2322af99a06edb779da12d5d636e9fda473d620df9a3da0df2a74141d53e languageName: node linkType: hard @@ -16234,20 +14528,6 @@ dts-critic@latest: languageName: node linkType: hard -"regexpu-core@npm:^5.0.1": - version: 5.0.1 - resolution: "regexpu-core@npm:5.0.1" - dependencies: - regenerate: ^1.4.2 - regenerate-unicode-properties: ^10.0.1 - regjsgen: ^0.6.0 - regjsparser: ^0.8.2 - unicode-match-property-ecmascript: ^2.0.0 - unicode-match-property-value-ecmascript: ^2.0.0 - checksum: 6151a9700dad512fadb5564ad23246d54c880eb9417efa5e5c3658b910c1ff894d622dfd159af2ed527ffd44751bfe98682ae06c717155c254d8e2b4bab62785 - languageName: node - linkType: hard - "regexpu-core@npm:^5.1.0": version: 5.1.0 resolution: "regexpu-core@npm:5.1.0" @@ -16468,7 +14748,7 @@ dts-critic@latest: languageName: node linkType: hard -"resolve@npm:^1.1.6, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.22.1": +"resolve@npm:^1.1.6, resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.0, resolve@npm:^1.22.1, resolve@npm:^1.3.2": version: 1.22.1 resolution: "resolve@npm:1.22.1" dependencies: @@ -16481,36 +14761,16 @@ dts-critic@latest: languageName: node linkType: hard -"resolve@npm:^1.10.0, resolve@npm:^1.20.0, resolve@npm:^1.3.2": - version: 1.20.0 - resolution: "resolve@npm:1.20.0" - dependencies: - is-core-module: ^2.2.0 - path-parse: ^1.0.6 - checksum: 40cf70b2cde00ef57f99daf2dc63c6a56d6c14a1b7fc51735d06a6f0a3b97cb67b4fb7ef6c747b4e13a7baba83b0ef625d7c4ce92a483cd5af923c3b65fd16fe - languageName: node - linkType: hard - -"resolve@npm:^1.14.2, resolve@npm:^1.22.0": - version: 1.22.0 - resolution: "resolve@npm:1.22.0" +"resolve@npm:^2.0.0-next.3": + version: 2.0.0-next.4 + resolution: "resolve@npm:2.0.0-next.4" dependencies: - is-core-module: ^2.8.1 + is-core-module: ^2.9.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: a2d14cc437b3a23996f8c7367eee5c7cf8149c586b07ca2ae00e96581ce59455555a1190be9aa92154785cf9f2042646c200d0e00e0bbd2b8a995a93a0ed3e4e - languageName: node - linkType: hard - -"resolve@npm:^2.0.0-next.3": - version: 2.0.0-next.3 - resolution: "resolve@npm:2.0.0-next.3" - dependencies: - is-core-module: ^2.2.0 - path-parse: ^1.0.6 - checksum: f34b3b93ada77d64a6d590c06a83e198f3a827624c4ec972260905fa6c4d612164fbf0200d16d2beefea4ad1755b001f4a9a1293d8fc2322a8f7d6bf692c4ff5 + checksum: c438ac9a650f2030fd074219d7f12ceb983b475da2d89ad3d6dd05fbf6b7a0a8cd37d4d10b43cb1f632bc19f22246ab7f36ebda54d84a29bfb2910a0680906d3 languageName: node linkType: hard @@ -16533,7 +14793,7 @@ dts-critic@latest: languageName: node linkType: hard -"resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin": +"resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin, resolve@patch:resolve@^1.3.2#~builtin": version: 1.22.1 resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=07638b" dependencies: @@ -16546,36 +14806,16 @@ dts-critic@latest: languageName: node linkType: hard -"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.3.2#~builtin": - version: 1.20.0 - resolution: "resolve@patch:resolve@npm%3A1.20.0#~builtin::version=1.20.0&hash=07638b" - dependencies: - is-core-module: ^2.2.0 - path-parse: ^1.0.6 - checksum: a0dd7d16a8e47af23afa9386df2dff10e3e0debb2c7299a42e581d9d9b04d7ad5d2c53f24f1e043f7b3c250cbdc71150063e53d0b6559683d37f790b7c8c3cd5 - languageName: node - linkType: hard - -"resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.22.0#~builtin": - version: 1.22.0 - resolution: "resolve@patch:resolve@npm%3A1.22.0#~builtin::version=1.22.0&hash=07638b" +"resolve@patch:resolve@^2.0.0-next.3#~builtin": + version: 2.0.0-next.4 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.4#~builtin::version=2.0.0-next.4&hash=07638b" dependencies: - is-core-module: ^2.8.1 + is-core-module: ^2.9.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: c79ecaea36c872ee4a79e3db0d3d4160b593f2ca16e031d8283735acd01715a203607e9ded3f91f68899c2937fa0d49390cddbe0fb2852629212f3cda283f4a7 - languageName: node - linkType: hard - -"resolve@patch:resolve@^2.0.0-next.3#~builtin": - version: 2.0.0-next.3 - resolution: "resolve@patch:resolve@npm%3A2.0.0-next.3#~builtin::version=2.0.0-next.3&hash=07638b" - dependencies: - is-core-module: ^2.2.0 - path-parse: ^1.0.6 - checksum: 21684b4d99a4877337cdbd5484311c811b3e8910edb5d868eec85c6e6550b0f570d911f9a384f9e176172d6713f2715bd0b0887fa512cb8c6aeece018de6a9f8 + checksum: 4bf9f4f8a458607af90518ff73c67a4bc1a38b5a23fef2bb0ccbd45e8be89820a1639b637b0ba377eb2be9eedfb1739a84cde24fe4cd670c8207d8fea922b011 languageName: node linkType: hard @@ -16599,11 +14839,11 @@ dts-critic@latest: linkType: hard "responselike@npm:^2.0.0": - version: 2.0.0 - resolution: "responselike@npm:2.0.0" + version: 2.0.1 + resolution: "responselike@npm:2.0.1" dependencies: lowercase-keys: ^2.0.0 - checksum: 6a4d32c37d4e88678ae0a9d69fcc90aafa15b1a3eab455bd65c06af3c6c4976afc47d07a0e5a60d277ab041a465f43bf0a581e0d7ab33786e7a7741573f2e487 + checksum: b122535466e9c97b55e69c7f18e2be0ce3823c5d47ee8de0d9c0b114aa55741c6db8bfbfce3766a94d1272e61bfb1ebf0a15e9310ac5629fbb7446a861b4fd3a languageName: node linkType: hard @@ -16730,7 +14970,7 @@ dts-critic@latest: languageName: node linkType: hard -"rollup-plugin-typescript2@npm:0.32.1": +"rollup-plugin-typescript2@npm:0.32.1, rollup-plugin-typescript2@npm:^0.32.1": version: 0.32.1 resolution: "rollup-plugin-typescript2@npm:0.32.1" dependencies: @@ -16771,21 +15011,7 @@ dts-critic@latest: languageName: node linkType: hard -"rollup@npm:^2.74.1, rollup@npm:^2.75.6": - version: 2.75.7 - resolution: "rollup@npm:2.75.7" - dependencies: - fsevents: ~2.3.2 - dependenciesMeta: - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: a6331d46b01062b184efdcb42ce12caf2e1575f989963944534b02f5855f6f3bc239ed0c1a18893572d7695af6d83166f3aef59dbd0365084e1531cb67824674 - languageName: node - linkType: hard - -"rollup@npm:^2.77.0": +"rollup@npm:^2.74.1, rollup@npm:^2.75.6, rollup@npm:^2.77.0": version: 2.77.0 resolution: "rollup@npm:2.77.0" dependencies: @@ -16816,11 +15042,11 @@ dts-critic@latest: linkType: hard "rxjs@npm:^7.0.0, rxjs@npm:^7.5.1, rxjs@npm:^7.5.5": - version: 7.5.5 - resolution: "rxjs@npm:7.5.5" + version: 7.5.6 + resolution: "rxjs@npm:7.5.6" dependencies: tslib: ^2.1.0 - checksum: e034f60805210cce756dd2f49664a8108780b117cf5d0e2281506e9e6387f7b4f1532d974a8c8b09314fa7a16dd2f6cff3462072a5789672b5dcb45c4173f3c6 + checksum: fc05f01364a74dac57490fb3e07ea63b422af04017fae1db641a009073f902ef69f285c5daac31359620dc8d9aee7d81e42b370ca2a8573d1feae0b04329383b languageName: node linkType: hard @@ -16879,14 +15105,14 @@ dts-critic@latest: languageName: node linkType: hard -"semver@npm:2 >=2.2.1 || 3.x || 4 || 5 || 7, semver@npm:^7.3.4, semver@npm:^7.3.5": - version: 7.3.5 - resolution: "semver@npm:7.3.5" +"semver@npm:2 >=2.2.1 || 3.x || 4 || 5 || 7, semver@npm:7.3.7, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:~7.3.0": + version: 7.3.7 + resolution: "semver@npm:7.3.7" dependencies: lru-cache: ^6.0.0 bin: semver: bin/semver.js - checksum: 5eafe6102bea2a7439897c1856362e31cc348ccf96efd455c8b5bc2c61e6f7e7b8250dc26b8828c1d76a56f818a7ee907a36ae9fb37a599d3d24609207001d60 + checksum: 2fa3e877568cd6ce769c75c211beaed1f9fce80b28338cadd9d0b6c40f2e2862bafd62c19a6cff42f3d54292b7c623277bcab8816a2b5521cf15210d43e75232 languageName: node linkType: hard @@ -16908,17 +15134,6 @@ dts-critic@latest: languageName: node linkType: hard -"semver@npm:7.3.7, semver@npm:^7.3.2, semver@npm:^7.3.7, semver@npm:~7.3.0": - version: 7.3.7 - resolution: "semver@npm:7.3.7" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: 2fa3e877568cd6ce769c75c211beaed1f9fce80b28338cadd9d0b6c40f2e2862bafd62c19a6cff42f3d54292b7c623277bcab8816a2b5521cf15210d43e75232 - languageName: node - linkType: hard - "semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.2.0, semver@npm:^6.3.0": version: 6.3.0 resolution: "semver@npm:6.3.0" @@ -17061,14 +15276,7 @@ dts-critic@latest: languageName: node linkType: hard -"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3": - version: 3.0.6 - resolution: "signal-exit@npm:3.0.6" - checksum: b819ac81ba757af559dad0804233ae31bf6f054591cd8a671e9cbcf09f21c72ec3076fe87d1e04861f5b33b47d63f0694b568de99c99cd733ee2060515beb6d5 - languageName: node - linkType: hard - -"signal-exit@npm:^3.0.7": +"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 @@ -17146,7 +15354,7 @@ dts-critic@latest: languageName: node linkType: hard -"smart-buffer@npm:^4.1.0": +"smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b @@ -17190,23 +15398,34 @@ dts-critic@latest: linkType: hard "socks-proxy-agent@npm:^6.0.0": - version: 6.1.1 - resolution: "socks-proxy-agent@npm:6.1.1" + version: 6.2.1 + resolution: "socks-proxy-agent@npm:6.2.1" dependencies: agent-base: ^6.0.2 - debug: ^4.3.1 - socks: ^2.6.1 - checksum: 9a8a4f791bba0060315cf7291ca6f9db37d6fc280fd0860d73d8887d3efe4c22e823aa25a8d5375f6079279f8dc91b50c075345179bf832bfe3c7c26d3582e3c + debug: ^4.3.3 + socks: ^2.6.2 + checksum: 9ca089d489e5ee84af06741135c4b0d2022977dad27ac8d649478a114cdce87849e8d82b7c22b51501a4116e231241592946fc7fae0afc93b65030ee57084f58 languageName: node linkType: hard -"socks@npm:^2.6.1": - version: 2.6.1 - resolution: "socks@npm:2.6.1" +"socks-proxy-agent@npm:^7.0.0": + version: 7.0.0 + resolution: "socks-proxy-agent@npm:7.0.0" + dependencies: + agent-base: ^6.0.2 + debug: ^4.3.3 + socks: ^2.6.2 + checksum: 720554370154cbc979e2e9ce6a6ec6ced205d02757d8f5d93fe95adae454fc187a5cbfc6b022afab850a5ce9b4c7d73e0f98e381879cf45f66317a4895953846 + languageName: node + linkType: hard + +"socks@npm:^2.6.2": + version: 2.7.0 + resolution: "socks@npm:2.7.0" dependencies: - ip: ^1.1.5 - smart-buffer: ^4.1.0 - checksum: 2ca9d616e424f645838ebaabb04f85d94ea999e0f8393dc07f86c435af22ed88cb83958feeabd1bb7bc537c635ed47454255635502c6808a6df61af1f41af750 + ip: ^2.0.0 + smart-buffer: ^4.2.0 + checksum: 0b5d94e2b3c11e7937b40fc5dac1e80d8b92a330e68c51f1d271ce6980c70adca42a3f8cd47c4a5769956bada074823b53374f2dc5f2ea5c2121b222dec6eadf languageName: node linkType: hard @@ -17426,7 +15645,7 @@ dts-critic@latest: languageName: node linkType: hard -"sshpk@npm:^1.14.1": +"sshpk@npm:^1.14.1, sshpk@npm:^1.7.0": version: 1.17.0 resolution: "sshpk@npm:1.17.0" dependencies: @@ -17447,27 +15666,6 @@ dts-critic@latest: languageName: node linkType: hard -"sshpk@npm:^1.7.0": - version: 1.16.1 - resolution: "sshpk@npm:1.16.1" - dependencies: - asn1: ~0.2.3 - assert-plus: ^1.0.0 - bcrypt-pbkdf: ^1.0.0 - dashdash: ^1.12.0 - ecc-jsbn: ~0.1.1 - getpass: ^0.1.1 - jsbn: ~0.1.0 - safer-buffer: ^2.0.2 - tweetnacl: ~0.14.0 - bin: - sshpk-conv: bin/sshpk-conv - sshpk-sign: bin/sshpk-sign - sshpk-verify: bin/sshpk-verify - checksum: 5e76afd1cedc780256f688b7c09327a8a650902d18e284dfeac97489a735299b03c3e72c6e8d22af03dbbe4d6f123fdfd5f3c4ed6bedbec72b9529a55051b857 - languageName: node - linkType: hard - "ssri@npm:^8.0.0, ssri@npm:^8.0.1": version: 8.0.1 resolution: "ssri@npm:8.0.1" @@ -17477,6 +15675,15 @@ dts-critic@latest: languageName: node linkType: hard +"ssri@npm:^9.0.0": + version: 9.0.1 + resolution: "ssri@npm:9.0.1" + dependencies: + minipass: ^3.1.1 + checksum: fb58f5e46b6923ae67b87ad5ef1c5ab6d427a17db0bead84570c2df3cd50b4ceb880ebdba2d60726588272890bae842a744e1ecce5bd2a2a582fccd5068309eb + languageName: node + linkType: hard + "stack-utils@npm:^2.0.3": version: 2.0.5 resolution: "stack-utils@npm:2.0.5" @@ -17608,16 +15815,6 @@ dts-critic@latest: languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.4": - version: 1.0.4 - resolution: "string.prototype.trimend@npm:1.0.4" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - checksum: 17e5aa45c3983f582693161f972c1c1fa4bbbdf22e70e582b00c91b6575f01680dc34e83005b98e31abe4d5d29e0b21fcc24690239c106c7b2315aade6a898ac - languageName: node - linkType: hard - "string.prototype.trimend@npm:^1.0.5": version: 1.0.5 resolution: "string.prototype.trimend@npm:1.0.5" @@ -17629,16 +15826,6 @@ dts-critic@latest: languageName: node linkType: hard -"string.prototype.trimstart@npm:^1.0.4": - version: 1.0.4 - resolution: "string.prototype.trimstart@npm:1.0.4" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - checksum: 3fb06818d3cccac5fa3f5f9873d984794ca0e9f6616fae6fcc745885d9efed4e17fe15f832515d9af5e16c279857fdbffdfc489ca4ed577811b017721b30302f - languageName: node - linkType: hard - "string.prototype.trimstart@npm:^1.0.5": version: 1.0.5 resolution: "string.prototype.trimstart@npm:1.0.5" @@ -17776,8 +15963,8 @@ dts-critic@latest: linkType: hard "sucrase@npm:^3.20.3": - version: 3.21.0 - resolution: "sucrase@npm:3.21.0" + version: 3.24.0 + resolution: "sucrase@npm:3.24.0" dependencies: commander: ^4.0.0 glob: 7.1.6 @@ -17788,7 +15975,7 @@ dts-critic@latest: bin: sucrase: bin/sucrase sucrase-node: bin/sucrase-node - checksum: d686f255af65bab2cb4e685287a7a4fe00f241a891a2ddea8c6218ff8f412780339d4d544e4a582e93e3994d1ebbe2fbce6a555474e80641958319a2b249e836 + checksum: 143c8bee97f5645973a512fdec535e1759014a8599bbf5e4c1915dd2a5fdef517684a9495369a6fb5fbd04357bb2fef65cbe4266a1a30f3e58fc37ef75722215 languageName: node linkType: hard @@ -17954,18 +16141,7 @@ dts-critic@latest: languageName: node linkType: hard -"tar@npm:^2.2.2": - version: 2.2.2 - resolution: "tar@npm:2.2.2" - dependencies: - block-stream: "*" - fstream: ^1.0.12 - inherits: 2 - checksum: c0c3727d529077423cf771f9f9c06edaaff82034d05d685806d3cee69d334ee8e6f394ee8d02dbd294cdecb95bb22625703279caff24bdb90b17e59de03a4733 - languageName: node - linkType: hard - -"tar@npm:^6.0.2, tar@npm:^6.1.2": +"tar@npm:^6.0.2, tar@npm:^6.1.11, tar@npm:^6.1.2": version: 6.1.11 resolution: "tar@npm:6.1.11" dependencies: @@ -18164,13 +16340,20 @@ dts-critic@latest: languageName: node linkType: hard -"tinypool@npm:^0.2.4": +"tinypool@npm:^0.2.1, tinypool@npm:^0.2.4": version: 0.2.4 resolution: "tinypool@npm:0.2.4" checksum: f050bd36c89529a2a0d3f9c1fdbba3f317114e3ee6eb5d5ba72c51e887d45ef3ef8d8533fb2ca2eba7189d19d2231712b81b3a75e099248532f5563369929c33 languageName: node linkType: hard +"tinyspy@npm:^0.3.3": + version: 0.3.3 + resolution: "tinyspy@npm:0.3.3" + checksum: 1beb8f04c100d9ac769ff85266594f07d6f08f41cfb95c4bef9da3e59988b42e8d4e66c2ec455d3ecad80027347920e87d7a7098c5a2a28637f9fee25e11a8f1 + languageName: node + linkType: hard + "tinyspy@npm:^1.0.0": version: 1.0.0 resolution: "tinyspy@npm:1.0.0" @@ -18344,9 +16527,9 @@ dts-critic@latest: languageName: node linkType: hard -"ts-node@npm:^10.8.0": - version: 10.8.1 - resolution: "ts-node@npm:10.8.1" +"ts-node@npm:^10.8.1": + version: 10.9.1 + resolution: "ts-node@npm:10.9.1" dependencies: "@cspotcode/source-map-support": ^0.8.0 "@tsconfig/node10": ^1.0.7 @@ -18378,7 +16561,7 @@ dts-critic@latest: ts-node-script: dist/bin-script.js ts-node-transpile-only: dist/bin-transpile.js ts-script: dist/bin-script-deprecated.js - checksum: 7d1aa7aa3ae1c0459c4922ed0dbfbade442cfe0c25aebaf620cdf1774f112c8d7a9b14934cb6719274917f35b2c503ba87bcaf5e16a0d39ba0f68ce3e7728363 + checksum: 090adff1302ab20bd3486e6b4799e90f97726ed39e02b39e566f8ab674fd5bd5f727f43615debbfc580d33c6d9d1c6b1b3ce7d8e3cca3e20530a145ffa232c35 languageName: node linkType: hard @@ -18664,17 +16847,7 @@ dts-critic@latest: languageName: node linkType: hard -"typescript@npm:^4.6.4": - version: 4.7.3 - resolution: "typescript@npm:4.7.3" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: fd13a1ce53790a36bb8350e1f5e5e384b5f6cb9b0635114a6d01d49cb99916abdcfbc13c7521cdae2f2d3f6d8bc4a8ae7625edf645a04ee940588cd5e7597b2f - languageName: node - linkType: hard - -"typescript@npm:^4.7.4": +"typescript@npm:^4.6.4, typescript@npm:^4.7.4": version: 4.7.4 resolution: "typescript@npm:4.7.4" bin: @@ -18685,12 +16858,12 @@ dts-critic@latest: linkType: hard "typescript@npm:next": - version: 4.8.0-dev.20220720 - resolution: "typescript@npm:4.8.0-dev.20220720" + version: 4.8.0-dev.20220722 + resolution: "typescript@npm:4.8.0-dev.20220722" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: d744e9da9f0fe0fa45cc4b1bc893f3a38913b86474f1cf7723d0e7ffeb3c792c3e70773c52fc8720c3f3f21f91d5d424e37c735111ef2c758a2a4f0fb3ff981e + checksum: 2c6a40519b994ac9a4c865e031f67df83f5d6031aa2c170dbb0a970bada9f0aff4b2811d2b346601748ff532de4121238cf355793e04017cb1c3085c96940384 languageName: node linkType: hard @@ -18704,17 +16877,7 @@ dts-critic@latest: languageName: node linkType: hard -"typescript@patch:typescript@^4.6.4#~builtin": - version: 4.7.3 - resolution: "typescript@patch:typescript@npm%3A4.7.3#~builtin::version=4.7.3&hash=7ad353" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 137d18a77f52254a284960b16ab53d0619f57b69b5d585804b8413f798a1175ce3e774fb95e6a101868577aafe357d8fcfc9171f0dc9fc0c210e9ae59d107cc0 - languageName: node - linkType: hard - -"typescript@patch:typescript@^4.7.4#~builtin": +"typescript@patch:typescript@^4.6.4#~builtin, typescript@patch:typescript@^4.7.4#~builtin": version: 4.7.4 resolution: "typescript@patch:typescript@npm%3A4.7.4#~builtin::version=4.7.4&hash=7ad353" bin: @@ -18725,12 +16888,12 @@ dts-critic@latest: linkType: hard "typescript@patch:typescript@next#~builtin": - version: 4.8.0-dev.20220720 - resolution: "typescript@patch:typescript@npm%3A4.8.0-dev.20220720#~builtin::version=4.8.0-dev.20220720&hash=7ad353" + version: 4.8.0-dev.20220722 + resolution: "typescript@patch:typescript@npm%3A4.8.0-dev.20220722#~builtin::version=4.8.0-dev.20220722&hash=7ad353" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 6f021e33a28776a935ced736bf3643633aa52168918f902b908d684578b456be349a102ac3f6a0b86dedf08b8ea6b8c3fd4dd2831e15c7001a3788effff1c083 + checksum: e49f213f63c079b864ce4682f99489841cab7475c9952478861a621a0c118505c19b81cb9b0a34844d0db878668c8d34285578eb5bb77b9c1d8f6c6779b7b705 languageName: node linkType: hard @@ -18773,30 +16936,18 @@ dts-critic@latest: linkType: hard "ufo@npm:^0.8.4": - version: 0.8.4 - resolution: "ufo@npm:0.8.4" - checksum: a2ebef6f64b9cc4114fc65405837eeb83eb8975edd6d54c7f37abb6905da6fd1f63524e4a02c8b087e7b0b3db6e6f4f798a3d86a96500410ff590b405f807dc9 + version: 0.8.5 + resolution: "ufo@npm:0.8.5" + checksum: 4dcf657a906550112ab1eb045110ebb768a914fb653373a2c363776a1f6ba25ea9d20bd5ed7f4bb44fb72bd4421b37d62991cd5ce4e3a2aef7e3eae450bb9508 languageName: node linkType: hard "uglify-js@npm:^3.1.4": - version: 3.14.5 - resolution: "uglify-js@npm:3.14.5" + version: 3.16.2 + resolution: "uglify-js@npm:3.16.2" bin: uglifyjs: bin/uglifyjs - checksum: 0330eb11a36f4181b6d9a00336355989bfad9dd2203049fc63a59454b0d12337612272ad011bc571b9a382bf74d829ca20409ebfe089e38edb26cfc06bfa2cc9 - languageName: node - linkType: hard - -"unbox-primitive@npm:^1.0.1": - version: 1.0.1 - resolution: "unbox-primitive@npm:1.0.1" - dependencies: - function-bind: ^1.1.1 - has-bigints: ^1.0.1 - has-symbols: ^1.0.2 - which-boxed-primitive: ^1.0.2 - checksum: 89d950e18fb45672bc6b3c961f1e72c07beb9640c7ceed847b571ba6f7d2af570ae1a2584cfee268b9d9ea1e3293f7e33e0bc29eaeb9f8e8a0bab057ff9e6bba + checksum: 5b62e748b7fa1d982f0949ed1876b9367dcde4782f74159f4ea0b3d130835336eb0245e090456ec057468d937eb016114677bb38a7a4fdc7f68c3d002ca760ee languageName: node linkType: hard @@ -18850,13 +17001,13 @@ dts-critic@latest: linkType: hard "unconfig@npm:^0.3.4": - version: 0.3.4 - resolution: "unconfig@npm:0.3.4" + version: 0.3.5 + resolution: "unconfig@npm:0.3.5" dependencies: - "@antfu/utils": ^0.5.1 + "@antfu/utils": ^0.5.2 defu: ^6.0.0 - jiti: ^1.13.0 - checksum: 77e9d172a7a8aade3c3dd9177a0d6ae058cd1df2feef0323abbb71f67758dbd0ec022b0d9a66d592926cdcb7c1784979485c631e802d8c431e4a4dfe67ec79da + jiti: ^1.14.0 + checksum: 3a685ef473598e8367bfb8e954708667a98d3d4ed3d0752ed2063d256062e69090681cf25a7f81695e6d014cd8828d789aa8c0c84fe3b4684b1488307689eb59 languageName: node linkType: hard @@ -18867,14 +17018,7 @@ dts-critic@latest: languageName: node linkType: hard -"undici@npm:^5.2.0": - version: 5.4.0 - resolution: "undici@npm:5.4.0" - checksum: 2852397ee1dbb2b3ad58166520ec30f4f0143895f6e7b157dbedfac4e43b522a710a3927be61a67b2ae791190973f206d30785564ece7675e08133427cebaaa1 - languageName: node - linkType: hard - -"undici@npm:^5.8.0": +"undici@npm:^5.2.0, undici@npm:^5.8.0": version: 5.8.0 resolution: "undici@npm:5.8.0" checksum: 7b486ad064da00628d3906e140b86223023cd3494c811da8d7aa1375c2392fe6a6ac421af236c056fd3d3136bba3a91b99e0505dde071dd946070946eb0718b8 @@ -19017,16 +17161,6 @@ dts-critic@latest: languageName: node linkType: hard -"unist-util-visit-parents@npm:^4.0.0": - version: 4.1.1 - resolution: "unist-util-visit-parents@npm:4.1.1" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^5.0.0 - checksum: 49d78984a6dd858a989f849d2b4330c8a04d1ee99c0e9920a5e37668cf847dab95db77a3bf0c8aaeb3e66abeae12e2d454949ec401614efef377d8f82d215662 - languageName: node - linkType: hard - "unist-util-visit-parents@npm:^5.0.0": version: 5.1.0 resolution: "unist-util-visit-parents@npm:5.1.0" @@ -19037,17 +17171,6 @@ dts-critic@latest: languageName: node linkType: hard -"unist-util-visit@npm:^3.0.0": - version: 3.1.0 - resolution: "unist-util-visit@npm:3.1.0" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^5.0.0 - unist-util-visit-parents: ^4.0.0 - checksum: c37dbc0c5509f85f3abdf46d927b3dd11e6c419159771b1f1a5ce446d36ac993d04b087e28bc6173a172e0fbe9d77e997f120029b2b449766ebe55b6f6e0cc2c - languageName: node - linkType: hard - "unist-util-visit@npm:^4.0.0": version: 4.1.0 resolution: "unist-util-visit@npm:4.1.0" @@ -19137,6 +17260,20 @@ dts-critic@latest: languageName: node linkType: hard +"update-browserslist-db@npm:^1.0.4": + version: 1.0.5 + resolution: "update-browserslist-db@npm:1.0.5" + dependencies: + escalade: ^3.1.1 + picocolors: ^1.0.0 + peerDependencies: + browserslist: ">= 4.21.0" + bin: + browserslist-lint: cli.js + checksum: 7e425fe5dbbebdccf72a84ce70ec47fc74dce561d28f47bc2b84a1c2b84179a862c2261b18ab66a5e73e261c7e2ef9e11c6129112989d4d52e8f75a56bb923f8 + languageName: node + linkType: hard + "uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" @@ -19207,8 +17344,8 @@ dts-critic@latest: linkType: hard "uvu@npm:^0.5.0": - version: 0.5.3 - resolution: "uvu@npm:0.5.3" + version: 0.5.6 + resolution: "uvu@npm:0.5.6" dependencies: dequal: ^2.0.0 diff: ^5.0.0 @@ -19216,7 +17353,7 @@ dts-critic@latest: sade: ^1.7.3 bin: uvu: bin.js - checksum: 0cf8e9e6ec79199dacc64fe0e9f82b5bf1d2308f3c54ec1aba5d1ca0a4beff4f173cae0f87bc52d35121565fd232b969fbf52cca3707e20517e62645e19b898e + checksum: 09460a37975627de9fcad396e5078fb844d01aaf64a6399ebfcfd9e55f1c2037539b47611e8631f89be07656962af0cf48c334993db82b9ae9c3d25ce3862168 languageName: node linkType: hard @@ -19234,18 +17371,7 @@ dts-critic@latest: languageName: node linkType: hard -"v8-to-istanbul@npm:^9.0.0": - version: 9.0.0 - resolution: "v8-to-istanbul@npm:9.0.0" - dependencies: - "@jridgewell/trace-mapping": ^0.3.7 - "@types/istanbul-lib-coverage": ^2.0.1 - convert-source-map: ^1.6.0 - checksum: d8ed2c39ba657dfd851a3c7b3f2b87e5b96c9face806ecfe5b627abe53b0c86f264f51425c591e451405b739e3f8a6728da59670f081790990710e813d8d3440 - languageName: node - linkType: hard - -"v8-to-istanbul@npm:^9.0.1": +"v8-to-istanbul@npm:^9.0.0, v8-to-istanbul@npm:^9.0.1": version: 9.0.1 resolution: "v8-to-istanbul@npm:9.0.1" dependencies: @@ -19321,20 +17447,20 @@ dts-critic@latest: linkType: hard "vfile@npm:^5.0.0": - version: 5.3.2 - resolution: "vfile@npm:5.3.2" + version: 5.3.4 + resolution: "vfile@npm:5.3.4" dependencies: "@types/unist": ^2.0.0 is-buffer: ^2.0.0 unist-util-stringify-position: ^3.0.0 vfile-message: ^3.0.0 - checksum: c352a76974c4ce0a0177e157335c95a647dae9e510ed4fad9b328479eb46230dc9ade8793d4c8b7f78263314797fc5026ff14da086e3805d530645e7d8057dcb + checksum: 2382edc7c6e3502bca72bc95bc1ff0fe1852482e8a0ac257615f9ab12f32564d6f6a55da8756b74a900d26a247da5ca23a92ca7c9a18dbda2b0f87504ef0611f languageName: node linkType: hard "vite@npm:^2.9.12 || ^3.0.0-0": - version: 3.0.0-beta.5 - resolution: "vite@npm:3.0.0-beta.5" + version: 3.0.2 + resolution: "vite@npm:3.0.2" dependencies: esbuild: ^0.14.47 fsevents: ~2.3.2 @@ -19360,7 +17486,43 @@ dts-critic@latest: optional: true bin: vite: bin/vite.js - checksum: 93a19bae089007236813e2ee95f9fdf342b8abc76a3c39ef2fd08f2bdbe2801bfb3473c7c1812253aad04fd2bda198b5e77bf24b4fb525d72b0003ee15fb4d42 + checksum: 10aebec0df89bbdba9a0c72dc35ec3ec5be0b50216fc7a1e04b5da11de244033b1cbe83a95b1af67be176fc09e05698387d3cc9dcbee64e009dd43811f8717e9 + languageName: node + linkType: hard + +"vitest@npm:^0.17.0": + version: 0.17.1 + resolution: "vitest@npm:0.17.1" + dependencies: + "@types/chai": ^4.3.1 + "@types/chai-subset": ^1.3.3 + "@types/node": "*" + chai: ^4.3.6 + debug: ^4.3.4 + local-pkg: ^0.4.1 + tinypool: ^0.2.1 + tinyspy: ^0.3.3 + vite: ^2.9.12 || ^3.0.0-0 + peerDependencies: + "@edge-runtime/vm": "*" + "@vitest/ui": "*" + c8: "*" + happy-dom: "*" + jsdom: "*" + peerDependenciesMeta: + "@edge-runtime/vm": + optional: true + "@vitest/ui": + optional: true + c8: + optional: true + happy-dom: + optional: true + jsdom: + optional: true + bin: + vitest: vitest.mjs + checksum: eae2d024d97a46ba08f3cc7e0703a330c92dc0a6f4c7a9bc20ec8a5129bf787d8ebabd14bf31ae810897c1813e29178af59f63ec8b24b5944cfa62e225cd207c languageName: node linkType: hard @@ -19401,9 +17563,9 @@ dts-critic@latest: linkType: hard "vscode-oniguruma@npm:^1.6.1": - version: 1.6.1 - resolution: "vscode-oniguruma@npm:1.6.1" - checksum: b019563a0d48b08c26b66c9f8729ed4ca2620b3b09c6957d5e622f0f104574bec48c7ba575bd157da40fb9a03c03495704894e3ed2d799d80a7180e3051b1f10 + version: 1.6.2 + resolution: "vscode-oniguruma@npm:1.6.2" + checksum: 6b754acdafd5b68242ea5938bb00a32effc16c77f471d4f0f337d879d0e8e592622998e2441f42d9a7ff799c1593f31c11f26ca8d9bf9917e3ca881d3c1f3e19 languageName: node linkType: hard @@ -19569,7 +17731,7 @@ dts-critic@latest: languageName: node linkType: hard -"wide-align@npm:^1.1.0, wide-align@npm:^1.1.2": +"wide-align@npm:^1.1.0, wide-align@npm:^1.1.5": version: 1.1.5 resolution: "wide-align@npm:1.1.5" dependencies: @@ -19653,8 +17815,8 @@ dts-critic@latest: linkType: hard "ws@npm:^7.4.5": - version: 7.5.8 - resolution: "ws@npm:7.5.8" + version: 7.5.9 + resolution: "ws@npm:7.5.9" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -19663,11 +17825,11 @@ dts-critic@latest: optional: true utf-8-validate: optional: true - checksum: 49479ccf3ddab6500c5906fbcc316e9c8cd44b0ffb3903a6c1caf9b38cb9e06691685722a4c642cfa7d4c6eb390424fc3142cd4f8b940cfc7a9ce9761b1cd65b + checksum: c3c100a181b731f40b7f2fddf004aa023f79d64f489706a28bc23ff88e87f6a64b3c6651fbec3a84a53960b75159574d7a7385709847a62ddb7ad6af76f49138 languageName: node linkType: hard -"ws@npm:^8.8.1": +"ws@npm:^8.8.0, ws@npm:^8.8.1": version: 8.8.1 resolution: "ws@npm:8.8.1" peerDependencies: @@ -19782,9 +17944,9 @@ dts-critic@latest: linkType: hard "yargs-parser@npm:^21.0.0": - version: 21.0.0 - resolution: "yargs-parser@npm:21.0.0" - checksum: 1e205fca1cb7a36a1585e2b94a64e641c12741b53627d338e12747f4dca3c3610cdd9bb235040621120548dd74c3ef03a8168d52a1eabfedccbe4a62462b6731 + version: 21.0.1 + resolution: "yargs-parser@npm:21.0.1" + checksum: c3ea2ed12cad0377ce3096b3f138df8267edf7b1aa7d710cd502fe16af417bafe4443dd71b28158c22fcd1be5dfd0e86319597e47badf42ff83815485887323a languageName: node linkType: hard @@ -19822,22 +17984,7 @@ dts-critic@latest: languageName: node linkType: hard -"yargs@npm:^17.0.0": - version: 17.3.1 - resolution: "yargs@npm:17.3.1" - dependencies: - cliui: ^7.0.2 - escalade: ^3.1.1 - get-caller-file: ^2.0.5 - require-directory: ^2.1.1 - string-width: ^4.2.3 - y18n: ^5.0.5 - yargs-parser: ^21.0.0 - checksum: 64fc2e32c56739f1d14d2d24acd17a6944c3c8e3e3558f09fc1953ac112e868cc16013d282886b9d5be22187f8b9ed4f60741a6b1011f595ce2718805a656852 - languageName: node - linkType: hard - -"yargs@npm:^17.3.1": +"yargs@npm:^17.0.0, yargs@npm:^17.3.1": version: 17.5.1 resolution: "yargs@npm:17.5.1" dependencies: @@ -19893,6 +18040,16 @@ dts-critic@latest: languageName: node linkType: hard +"zlib-sync@npm:^0.1.7": + version: 0.1.7 + resolution: "zlib-sync@npm:0.1.7" + dependencies: + nan: ^2.14.0 + node-gyp: latest + checksum: 8f6ef7bf5726b41fefffa4509f5679872b425ef47227a59d8c787b32518db6220961262f78b0f6eb1dcd9b52cd71bc8213d4f061b8b56a9b7e82c345a548e6f4 + languageName: node + linkType: hard + "zwitch@npm:^2.0.0": version: 2.0.2 resolution: "zwitch@npm:2.0.2"