diff --git a/.eslintrc b/.eslintrc index 219bcb0..62367c2 100644 --- a/.eslintrc +++ b/.eslintrc @@ -7,8 +7,6 @@ }, "extends": [ "eslint:recommended", - "plugin:import/recommended", - "plugin:import/typescript", "plugin:@typescript-eslint/eslint-recommended", "plugin:@typescript-eslint/recommended" ], @@ -122,27 +120,7 @@ { "case": "camelCase" } - ], - // Import Rules - "import/order": [ - "error", - { - "newlines-between": "always-and-inside-groups", - "groups": [ - [ - "builtin", - "external", - "internal", - "parent", - "sibling", - "index", - "object", - "type" - ] - ] - } - ], - "import/newline-after-import": "error" + ] }, "reportUnusedDisableDirectives": true } diff --git a/package.json b/package.json index f3491b3..c74c65e 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "build": "tsc", "commit": "cz", "lint": "eslint --format=pretty src", + "lint:fix": "eslint --format=pretty src --fix", "postinstall": "husky install", "prepublishOnly": "pinst --disable", "postpublish": "pinst --enable", @@ -71,8 +72,6 @@ "commitizen": "^4.2.4", "eslint": "^7.30.0", "eslint-formatter-pretty": "^4.1.0", - "eslint-plugin-header": "^3.1.1", - "eslint-plugin-import": "^2.23.4", "eslint-plugin-unicorn": "^34.0.1", "husky": "^7.0.1", "inquirer": "^8.1.2", diff --git a/src/api/apiHandler.ts b/src/api/apiHandler.ts index e425a96..28364c0 100644 --- a/src/api/apiHandler.ts +++ b/src/api/apiHandler.ts @@ -2,12 +2,11 @@ import { AsyncQueue } from '@sapphire/async-queue'; import { AbortController } from 'abort-controller'; import FormData from 'form-data'; import fetch from 'node-fetch'; - -import { sleep } from '../utils/sleep'; - -import type { ApiManager } from './apiManager'; import type { Client } from '../client/client'; +import { sleep } from '../utils/sleep'; import type { IMakeRequestOptions, IRouteIdentifier } from '../utils/types'; +import type { ApiManager } from './apiManager'; + function calculateReset(reset: number, resetAfter: number, serverDate: number): number { if (resetAfter) { diff --git a/src/api/apiManager.ts b/src/api/apiManager.ts index 495ea0e..4647fe6 100644 --- a/src/api/apiManager.ts +++ b/src/api/apiManager.ts @@ -1,9 +1,10 @@ -import { ApiHandler } from './apiHandler'; import { Snowflake } from '../utils/snowflake'; +import { ApiHandler } from './apiHandler'; import type { Client } from '../client/client'; import type { ApiMethods, IMakeRequestOptions, IRouteIdentifier } from '../utils/types'; + export class ApiManager { public client: Client; public globalReset: number; diff --git a/src/client/client.ts b/src/client/client.ts index ac1c2ac..0642e00 100644 --- a/src/client/client.ts +++ b/src/client/client.ts @@ -1,6 +1,5 @@ import _ from 'lodash'; import EventEmitter from 'events'; - import { ApiHelper } from '../api/apiHelper'; import { GatewayClient } from '../gateway/gatewayClient'; import { defaults } from '../utils/defaults'; @@ -14,14 +13,14 @@ export class Client extends EventEmitter { private _token: string; - public constructor(token: string, options: IClientOptions = {}) { + public constructor(token: string, options?: IClientOptions) { super(); this.options = _.merge(defaults.clientOptions, options as DeepRequired); this._token = token; this.api = new ApiHelper(this, this._token); - this.ws = new GatewayClient(this); + this.ws = new GatewayClient(this, this._token); } public async login(): Promise { diff --git a/src/gateway/gatewayClient.ts b/src/gateway/gatewayClient.ts index 807002f..61f6a1a 100644 --- a/src/gateway/gatewayClient.ts +++ b/src/gateway/gatewayClient.ts @@ -1,8 +1,9 @@ import zlib from 'fast-zlib'; +import os from 'os'; import WebSocket from 'ws'; -import type { Client } from '../client/client'; -import type { IGatewayMessage } from '../utils/types'; +import type { Client } from '../client/client'; +import type { GatewayReceiveMessage, GatewaySendMessage } from '../utils/types'; export class GatewayClient { public client: Client; @@ -10,22 +11,29 @@ export class GatewayClient { public deflate: zlib.Deflate; public inflate: zlib.Inflate; + private _heartbeatInterval: number; + private _heartbeatIntervalTimer: NodeJS.Timer | null; private _sequence: number; + private _token: string; - public constructor(client: Client) { + public constructor(client: Client, token: string) { this.client = client; this.connection = null; this.deflate = new zlib.Deflate(); this.inflate = new zlib.Inflate(); + this._heartbeatInterval = 0; + this._heartbeatIntervalTimer= null; this._sequence = 0; + this._token= token; } public async close(): Promise { if (!this.connection) throw new Error('You are not connected to the Discord WebSocket Gateway!'); this.connection.close(1000); + if (this._heartbeatIntervalTimer) clearTimeout(this._heartbeatIntervalTimer); } public async connect(): Promise { @@ -36,13 +44,54 @@ export class GatewayClient { ); this.connection.on('message', async (msg: Buffer | string) => { - let parsedMessage: IGatewayMessage; + let parsedMessage: GatewayReceiveMessage; if (this.client.options.ws.compression && typeof msg === 'object') parsedMessage = JSON.parse(this.inflate.process(msg).toString('utf8')); else if (!this.client.options.ws.compression && typeof msg === 'string') parsedMessage = JSON.parse(msg); else parsedMessage = JSON.parse(msg.toString('utf8')); - if (parsedMessage.s) this._sequence = parsedMessage.s; + // if (parsedMessage.s) this._sequence = parsedMessage.s; + + this.client.emit('raw', parsedMessage); + + switch (parsedMessage.op) { + case 10: + this._heartbeatInterval = parsedMessage.d.heartbeat_interval; + this._heartbeatIntervalTimer = setInterval(() => this._sendHeartbeat(), this._heartbeatInterval * 1000); + + this.send({ + op: 2, d: { + compress: this.client.options.ws.compression, + intents: this.client.options.ws.intents, + large_threshold: this.client.options.ws.largeThreshold, + presence: this.client.options.presence, + properties: { + $browser: '@neonjs/library', + $device: '@neonjs/library', + $os: os.platform(), + }, + token: this._token, + }, + }); + break; + default: + break; + } }); } + + public send(data: GatewaySendMessage): void { + if (!this.connection) throw new Error('You are not connected to the Discord WebSocket Gateway!'); + + let parsedMessage: Buffer | string; + + if (this.client.options.ws.compression) parsedMessage = this.deflate.process(JSON.stringify(data)); + else parsedMessage = JSON.stringify(data); + + this.connection.send(parsedMessage); + } + + private _sendHeartbeat(): void { + this.send({ op: 1, d: this._sequence }); + } } diff --git a/src/utils/defaults.ts b/src/utils/defaults.ts index 8489f3d..e5541fd 100644 --- a/src/utils/defaults.ts +++ b/src/utils/defaults.ts @@ -10,9 +10,12 @@ export const defaults: IDefaultOptions = { url: 'https://discord.com/api', version: 9, }, + presence: {}, ws: { compression: true, encoding: 'json', + intents: 0, + largeThreshold: 250, url: 'wss://gateway.discord.gg', version: 9, }, diff --git a/src/utils/types.ts b/src/utils/types.ts index 6b0fe11..bb76f43 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -10,7 +10,8 @@ export interface IApiClientOptions { export interface IClientOptions { api?: IApiClientOptions; - ws?: IWebSocketClientOptions; + presence?: IUpdatePresence; + ws: IWebSocketClientOptions; } export interface IDefaultOptions { @@ -56,9 +57,22 @@ export interface IRouteIdentifier { route: string; } +export interface IUpdatePresence { + activities?: { + name?: string; + type?: EActivityType; + url?: string; + }[]; + afk?: boolean; + since?: number; + status?: EStatus; +} + export interface IWebSocketClientOptions { compression?: boolean; encoding?: 'json'; + intents: number; + largeThreshold?: number; url?: string; version?: number; } @@ -85,14 +99,55 @@ export interface IApiCreateMessage { } // WebSocket Gateway Message Interfaces -export interface IGatewayMessage { - d?: T; - op: number; - s?: number; - t?: string; +export interface IGatewayHeartbeatSend { + op: 1; + d: number; +} + +// TODO: Add sharding when i get to it +export interface IGatewayIdentify { + op: 2; + d: { + compress: boolean; + intents: number; + large_threshold: number; + presence?: IUpdatePresence; + properties: { + $browser: string; + $device: string; + $os: string; + }; + token: string; + }; +} + +export interface IGatewayHeartbeat { + op: 10; + d: { + heartbeat_interval: number; + }; +} + +export interface IGatewayHeartbeatAck { + op: 11; } // Enums +export enum EActivityType { + GAME = 0, + STREAMING = 1, + LISTENING = 2, + WATCHING = 3, + COMPETING = 5, +} + +export enum EStatus { + DND = 'dnd', + IDLE = 'idle', + INVISIBLE = 'invisible', + OFFLINE = 'offline', + ONLINE = 'online', +} // Type Aliases export type ApiMethods = 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT' ; @@ -118,4 +173,6 @@ export type DeepRequired = T extends Builtin : T extends {} ? { [K in keyof T]-?: DeepRequired } : NonNullable; +export type GatewayReceiveMessage = IGatewayHeartbeat | IGatewayHeartbeatAck; +export type GatewaySendMessage = IGatewayHeartbeatSend | IGatewayIdentify; export type Primitives = bigint | boolean | null | number | string | symbol | undefined; diff --git a/yarn.lock b/yarn.lock index 52c24f3..46f31c0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -566,8 +566,6 @@ __metadata: commitizen: ^4.2.4 eslint: ^7.30.0 eslint-formatter-pretty: ^4.1.0 - eslint-plugin-header: ^3.1.1 - eslint-plugin-import: ^2.23.4 eslint-plugin-unicorn: ^34.0.1 fast-zlib: ^2.0.1 form-data: ^4.0.0 @@ -1236,13 +1234,6 @@ __metadata: languageName: node linkType: hard -"@types/json5@npm:^0.0.29": - version: 0.0.29 - resolution: "@types/json5@npm:0.0.29" - checksum: e60b153664572116dfea673c5bda7778dbff150498f44f998e34b5886d8afc47f16799280e4b6e241c0472aef1bc36add771c569c68fc5125fc2ae519a3eb9ac - languageName: node - linkType: hard - "@types/keyv@npm:*, @types/keyv@npm:^3.1.1": version: 3.1.1 resolution: "@types/keyv@npm:3.1.1" @@ -1746,19 +1737,6 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.3": - version: 3.1.3 - resolution: "array-includes@npm:3.1.3" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.18.0-next.2 - get-intrinsic: ^1.1.1 - is-string: ^1.0.5 - checksum: eaab8812412b5ec921c8fe678a9d61f501b12f6c72e271e0e8652fe7f4145276cc7ad79ff303ac4ed69cbf5135155bfb092b1b6d552e423e75106d1c887da150 - languageName: node - linkType: hard - "array-union@npm:^2.1.0": version: 2.1.0 resolution: "array-union@npm:2.1.0" @@ -1766,17 +1744,6 @@ __metadata: languageName: node linkType: hard -"array.prototype.flat@npm:^1.2.4": - version: 1.2.4 - resolution: "array.prototype.flat@npm:1.2.4" - dependencies: - call-bind: ^1.0.0 - define-properties: ^1.1.3 - es-abstract: ^1.18.0-next.1 - checksum: 1ec5d9887ae45e70e4b993e801b440ae5ddcd0d2c6d1dbe214c311e91436152f510916bdac82b066693544b9801a3c510dfbec8a278ababf8de7eb0bde74636f - languageName: node - linkType: hard - "arrify@npm:^1.0.1": version: 1.0.1 resolution: "arrify@npm:1.0.1" @@ -2076,16 +2043,6 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": - version: 1.0.2 - resolution: "call-bind@npm:1.0.2" - dependencies: - function-bind: ^1.1.1 - get-intrinsic: ^1.0.2 - checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 - languageName: node - linkType: hard - "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" @@ -2724,24 +2681,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:^2.6.9": - version: 2.6.9 - resolution: "debug@npm:2.6.9" - dependencies: - ms: 2.0.0 - checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 - languageName: node - linkType: hard - -"debug@npm:^3.2.7": - version: 3.2.7 - resolution: "debug@npm:3.2.7" - dependencies: - ms: ^2.1.1 - checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c - languageName: node - linkType: hard - "debuglog@npm:^1.0.1": version: 1.0.1 resolution: "debuglog@npm:1.0.1" @@ -2837,15 +2776,6 @@ __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 - "del@npm:^6.0.0": version: 6.0.0 resolution: "del@npm:6.0.0" @@ -2937,15 +2867,6 @@ __metadata: languageName: node linkType: hard -"doctrine@npm:^2.1.0": - version: 2.1.0 - resolution: "doctrine@npm:2.1.0" - dependencies: - esutils: ^2.0.2 - checksum: a45e277f7feaed309fe658ace1ff286c6e2002ac515af0aaf37145b8baa96e49899638c7cd47dccf84c3d32abfc113246625b3ac8f552d1046072adee13b0dc8 - languageName: node - linkType: hard - "doctrine@npm:^3.0.0": version: 3.0.0 resolution: "doctrine@npm:3.0.0" @@ -3064,41 +2985,6 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.18.0-next.1, es-abstract@npm:^1.18.0-next.2, es-abstract@npm:^1.18.2": - version: 1.18.3 - resolution: "es-abstract@npm:1.18.3" - dependencies: - call-bind: ^1.0.2 - es-to-primitive: ^1.2.1 - function-bind: ^1.1.1 - get-intrinsic: ^1.1.1 - has: ^1.0.3 - has-symbols: ^1.0.2 - is-callable: ^1.2.3 - is-negative-zero: ^2.0.1 - is-regex: ^1.1.3 - is-string: ^1.0.6 - object-inspect: ^1.10.3 - 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: 6bbf526b5a60cdbd390397644facbf654fc6616564614533a5ce223ecc185f7812a1f45c3ab6d0334b4ff2e8f554237539f4d05a0fceb036be24dd5d1ec022b0 - languageName: node - linkType: hard - -"es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" - dependencies: - is-callable: ^1.1.4 - is-date-object: ^1.0.1 - is-symbol: ^1.0.2 - checksum: 4ead6671a2c1402619bdd77f3503991232ca15e17e46222b0a41a5d81aebc8740a77822f5b3c965008e631153e9ef0580540007744521e72de8e33599fca2eed - languageName: node - linkType: hard - "es6-error@npm:^4.0.1": version: 4.1.1 resolution: "es6-error@npm:4.1.1" @@ -3143,60 +3029,6 @@ __metadata: languageName: node linkType: hard -"eslint-import-resolver-node@npm:^0.3.4": - version: 0.3.4 - resolution: "eslint-import-resolver-node@npm:0.3.4" - dependencies: - debug: ^2.6.9 - resolve: ^1.13.1 - checksum: a0db55ec26c5bb385c8681af6b8d6dee16768d5f27dff72c3113407d0f028f28e56dcb1cc3a4689c79396a5f6a9c24bd0cac9a2c9c588c7d7357d24a42bec876 - languageName: node - linkType: hard - -"eslint-module-utils@npm:^2.6.1": - version: 2.6.1 - resolution: "eslint-module-utils@npm:2.6.1" - dependencies: - debug: ^3.2.7 - pkg-dir: ^2.0.0 - checksum: 3cc43a36a0075d300db6a3946203ec92249b6da1539694ef205a43b4ccfbc2eaf4961475d4b89c24b12c187d6bfd882c7c7d0b2ce02adb40c2dedb7fd022a7e2 - languageName: node - linkType: hard - -"eslint-plugin-header@npm:^3.1.1": - version: 3.1.1 - resolution: "eslint-plugin-header@npm:3.1.1" - peerDependencies: - eslint: ">=7.7.0" - checksum: 2353e4ba011be81d5c27fbd79929e18dce118d7673a2f717b1ac5a0bceb33e06ec9a7c80a01dddc5804df75e2cc8eb475d268cd1abef5eab5088ede62e5ad246 - languageName: node - linkType: hard - -"eslint-plugin-import@npm:^2.23.4": - version: 2.23.4 - resolution: "eslint-plugin-import@npm:2.23.4" - dependencies: - array-includes: ^3.1.3 - array.prototype.flat: ^1.2.4 - debug: ^2.6.9 - doctrine: ^2.1.0 - eslint-import-resolver-node: ^0.3.4 - eslint-module-utils: ^2.6.1 - find-up: ^2.0.0 - has: ^1.0.3 - is-core-module: ^2.4.0 - minimatch: ^3.0.4 - object.values: ^1.1.3 - pkg-up: ^2.0.0 - read-pkg-up: ^3.0.0 - resolve: ^1.20.0 - tsconfig-paths: ^3.9.0 - peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 - checksum: 8c64bb96fa35607de3da1ddf5d127a5913aebde5677bc276c55fecb3e539a7287569dc697af4f5c523bd2b08bff8f5b525448df5aa7d6256c86436b615be5abc - languageName: node - linkType: hard - "eslint-plugin-unicorn@npm:^34.0.1": version: 34.0.1 resolution: "eslint-plugin-unicorn@npm:34.0.1" @@ -3601,7 +3433,7 @@ __metadata: languageName: node linkType: hard -"find-up@npm:^2.0.0, find-up@npm:^2.1.0": +"find-up@npm:^2.0.0": version: 2.1.0 resolution: "find-up@npm:2.1.0" dependencies: @@ -3853,17 +3685,6 @@ fsevents@~2.3.2: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1": - version: 1.1.1 - resolution: "get-intrinsic@npm:1.1.1" - dependencies: - function-bind: ^1.1.1 - has: ^1.0.3 - has-symbols: ^1.0.1 - checksum: a9fe2ca8fa3f07f9b0d30fb202bcd01f3d9b9b6b732452e79c48e79f7d6d8d003af3f9e38514250e3553fdc83c61650851cb6870832ac89deaaceb08e3721a17 - languageName: node - linkType: hard - "get-own-enumerable-property-symbols@npm:^3.0.0": version: 3.0.2 resolution: "get-own-enumerable-property-symbols@npm:3.0.2" @@ -4127,13 +3948,6 @@ fsevents@~2.3.2: 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-flag@npm:^3.0.0": version: 3.0.0 resolution: "has-flag@npm:3.0.0" @@ -4148,13 +3962,6 @@ fsevents@~2.3.2: 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-unicode@npm:^2.0.0": version: 2.0.1 resolution: "has-unicode@npm:2.0.1" @@ -4516,13 +4323,6 @@ fsevents@~2.3.2: languageName: node linkType: hard -"is-bigint@npm:^1.0.1": - version: 1.0.2 - resolution: "is-bigint@npm:1.0.2" - checksum: 5268edbde844583d8d5ce86f8e47669bf9dd9b3d4de0238b25bb2ddfc620b47e0e226171a906f19ac4c10debba160353fb98c134d0309898495e1b691efcfb80 - languageName: node - linkType: hard - "is-binary-path@npm:~2.1.0": version: 2.1.0 resolution: "is-binary-path@npm:2.1.0" @@ -4532,15 +4332,6 @@ fsevents@~2.3.2: languageName: node linkType: hard -"is-boolean-object@npm:^1.1.0": - version: 1.1.1 - resolution: "is-boolean-object@npm:1.1.1" - dependencies: - call-bind: ^1.0.2 - checksum: 95b832242638b8495d012538716761122dfc4a930baf2aa676e0bc344fe39cda2364c739893a6d07d10863ced67cc95e11884732104d7904bd0d896033414d11 - languageName: node - linkType: hard - "is-builtin-module@npm:^3.1.0": version: 3.1.0 resolution: "is-builtin-module@npm:3.1.0" @@ -4550,13 +4341,6 @@ fsevents@~2.3.2: languageName: node linkType: hard -"is-callable@npm:^1.1.4, is-callable@npm:^1.2.3": - version: 1.2.3 - resolution: "is-callable@npm:1.2.3" - checksum: 084a732afd78e14a40cd5f6f34001edd500f43bb542991c1305b88842cab5f2fb6b48f0deed4cd72270b2e71cab3c3a56c69b324e3a02d486f937824bb7de553 - languageName: node - linkType: hard - "is-cidr@npm:^4.0.2": version: 4.0.2 resolution: "is-cidr@npm:4.0.2" @@ -4566,7 +4350,7 @@ fsevents@~2.3.2: languageName: node linkType: hard -"is-core-module@npm:^2.2.0, is-core-module@npm:^2.4.0": +"is-core-module@npm:^2.2.0": version: 2.4.0 resolution: "is-core-module@npm:2.4.0" dependencies: @@ -4575,13 +4359,6 @@ fsevents@~2.3.2: languageName: node linkType: hard -"is-date-object@npm:^1.0.1": - version: 1.0.4 - resolution: "is-date-object@npm:1.0.4" - checksum: 20ce7b73fda926b4dfad2457e0d6fa04bb0a4cf555456d68918e334cbf80ac30523155adac420be0c8a4bc126fafe0874c4cfc0ffe0d97bac6333a8f02de1b94 - languageName: node - linkType: hard - "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -4635,20 +4412,6 @@ fsevents@~2.3.2: languageName: node linkType: hard -"is-negative-zero@npm:^2.0.1": - version: 2.0.1 - resolution: "is-negative-zero@npm:2.0.1" - checksum: a46f2e0cb5e16fdb8f2011ed488979386d7e68d381966682e3f4c98fc126efe47f26827912baca2d06a02a644aee458b9cba307fb389f6b161e759125db7a3b8 - languageName: node - linkType: hard - -"is-number-object@npm:^1.0.4": - version: 1.0.5 - resolution: "is-number-object@npm:1.0.5" - checksum: 8c217b4a16632fc3a900121792e4293f2d2d3c73158895deca4593aa4779995203fc6f31b57b47d90df981936a82ea4e8e8a3af2e5ed646cf979287c1d201089 - languageName: node - linkType: hard - "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" @@ -4705,16 +4468,6 @@ fsevents@~2.3.2: languageName: node linkType: hard -"is-regex@npm:^1.1.3": - version: 1.1.3 - resolution: "is-regex@npm:1.1.3" - dependencies: - call-bind: ^1.0.2 - has-symbols: ^1.0.2 - checksum: 19a831a1ba88d09bb43ab30194672e6ae1461caff27254d2c160ed63c95015155ad8784e80995e46a637d0880da8f4ed63b5c3242af1b49c0b5c4666a7a2d3d8 - languageName: node - linkType: hard - "is-regexp@npm:^1.0.0": version: 1.0.0 resolution: "is-regexp@npm:1.0.0" @@ -4729,22 +4482,6 @@ fsevents@~2.3.2: languageName: node linkType: hard -"is-string@npm:^1.0.5, is-string@npm:^1.0.6": - version: 1.0.6 - resolution: "is-string@npm:1.0.6" - checksum: 9990bf0abf2eea6255f0218f82ba1bcfc8d27923af99bcbb2c77ec5eae4ddbe6c23f1f916d6f19f9e9aa57ec7cd8a91a3e026a34e207c51af35fced1ad50bba8 - languageName: node - linkType: hard - -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" - dependencies: - has-symbols: ^1.0.2 - checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 - languageName: node - linkType: hard - "is-text-path@npm:^1.0.1": version: 1.0.1 resolution: "is-text-path@npm:1.0.1" @@ -5014,17 +4751,6 @@ fsevents@~2.3.2: languageName: node linkType: hard -"json5@npm:^1.0.1": - version: 1.0.1 - resolution: "json5@npm:1.0.1" - dependencies: - minimist: ^1.2.0 - bin: - json5: lib/cli.js - checksum: e76ea23dbb8fc1348c143da628134a98adf4c5a4e8ea2adaa74a80c455fc2cdf0e2e13e6398ef819bfe92306b610ebb2002668ed9fc1af386d593691ef346fc3 - languageName: node - linkType: hard - "json5@npm:^2.1.2, json5@npm:^2.2.0": version: 2.2.0 resolution: "json5@npm:2.2.0" @@ -5880,13 +5606,6 @@ fsevents@~2.3.2: languageName: node linkType: hard -"ms@npm:2.0.0": - version: 2.0.0 - resolution: "ms@npm:2.0.0" - checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 - languageName: node - linkType: hard - "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" @@ -5894,7 +5613,7 @@ fsevents@~2.3.2: languageName: node linkType: hard -"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.2": +"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.2": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -6066,7 +5785,7 @@ fsevents@~2.3.2: languageName: node linkType: hard -"normalize-package-data@npm:^2.3.2, normalize-package-data@npm:^2.5.0": +"normalize-package-data@npm:^2.5.0": version: 2.5.0 resolution: "normalize-package-data@npm:2.5.0" dependencies: @@ -6363,43 +6082,6 @@ fsevents@~2.3.2: languageName: node linkType: hard -"object-inspect@npm:^1.10.3": - version: 1.10.3 - resolution: "object-inspect@npm:1.10.3" - checksum: 9a56db2e0146fe94a7a9c78f677a2a28eec11d0ae13430e0bb2cb908fdd2d3feb7dbba7c638b9b7f88ace01d9a937227a8801709d13afb76613775aeb68632d3 - languageName: node - linkType: hard - -"object-keys@npm:^1.0.12, object-keys@npm:^1.1.1": - version: 1.1.1 - resolution: "object-keys@npm:1.1.1" - checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a - languageName: node - linkType: hard - -"object.assign@npm:^4.1.2": - version: 4.1.2 - resolution: "object.assign@npm:4.1.2" - dependencies: - call-bind: ^1.0.0 - define-properties: ^1.1.3 - has-symbols: ^1.0.1 - object-keys: ^1.1.1 - checksum: d621d832ed7b16ac74027adb87196804a500d80d9aca536fccb7ba48d33a7e9306a75f94c1d29cbfa324bc091bfc530bc24789568efdaee6a47fcfa298993814 - languageName: node - linkType: hard - -"object.values@npm:^1.1.3": - version: 1.1.4 - resolution: "object.values@npm:1.1.4" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.18.2 - checksum: 1a2f1e9d0bcfc299b8491170a50e6e7ca23392641d7781a8528e96c72f0013ba7ee731792ff8586c8eaec0328acda16c59622924c82c58bd0eb5c4ee67794856 - languageName: node - linkType: hard - "once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" @@ -6773,15 +6455,6 @@ fsevents@~2.3.2: languageName: node linkType: hard -"path-type@npm:^3.0.0": - version: 3.0.0 - resolution: "path-type@npm:3.0.0" - dependencies: - pify: ^3.0.0 - checksum: 735b35e256bad181f38fa021033b1c33cfbe62ead42bb2222b56c210e42938eecb272ae1949f3b6db4ac39597a61b44edd8384623ec4d79bfdc9a9c0f12537a6 - languageName: node - linkType: hard - "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" @@ -6838,15 +6511,6 @@ fsevents@~2.3.2: languageName: node linkType: hard -"pkg-dir@npm:^2.0.0": - version: 2.0.0 - resolution: "pkg-dir@npm:2.0.0" - dependencies: - find-up: ^2.1.0 - checksum: 8c72b712305b51e1108f0ffda5ec1525a8307e54a5855db8fb1dcf77561a5ae98e2ba3b4814c9806a679f76b2f7e5dd98bde18d07e594ddd9fdd25e9cf242ea1 - languageName: node - linkType: hard - "pkg-dir@npm:^4.1.0": version: 4.2.0 resolution: "pkg-dir@npm:4.2.0" @@ -6856,15 +6520,6 @@ fsevents@~2.3.2: languageName: node linkType: hard -"pkg-up@npm:^2.0.0": - version: 2.0.0 - resolution: "pkg-up@npm:2.0.0" - dependencies: - find-up: ^2.1.0 - checksum: de4b418175281a082e366ce1a919f032520ee53cf421578b35173f03816f6ec4c19e1552066840bb0988c3e1215859653948efd6ca3507a23f4f44229269500d - languageName: node - linkType: hard - "please-upgrade-node@npm:^3.2.0": version: 3.2.0 resolution: "please-upgrade-node@npm:3.2.0" @@ -7087,16 +6742,6 @@ fsevents@~2.3.2: languageName: node linkType: hard -"read-pkg-up@npm:^3.0.0": - version: 3.0.0 - resolution: "read-pkg-up@npm:3.0.0" - dependencies: - find-up: ^2.0.0 - read-pkg: ^3.0.0 - checksum: 16175573f2914ab9788897bcbe2a62b5728d0075e62285b3680cebe97059e2911e0134a062cf6e51ebe3e3775312bc788ac2039ed6af38ec68d2c10c6f2b30fb - languageName: node - linkType: hard - "read-pkg-up@npm:^7.0.0, read-pkg-up@npm:^7.0.1": version: 7.0.1 resolution: "read-pkg-up@npm:7.0.1" @@ -7108,17 +6753,6 @@ fsevents@~2.3.2: languageName: node linkType: hard -"read-pkg@npm:^3.0.0": - version: 3.0.0 - resolution: "read-pkg@npm:3.0.0" - dependencies: - load-json-file: ^4.0.0 - normalize-package-data: ^2.3.2 - path-type: ^3.0.0 - checksum: 398903ebae6c7e9965419a1062924436cc0b6f516c42c4679a90290d2f87448ed8f977e7aa2dbba4aa1ac09248628c43e493ac25b2bc76640e946035200e34c6 - languageName: node - linkType: hard - "read-pkg@npm:^5.0.0, read-pkg@npm:^5.2.0": version: 5.2.0 resolution: "read-pkg@npm:5.2.0" @@ -7329,7 +6963,7 @@ fsevents@~2.3.2: languageName: node linkType: hard -"resolve@^1.10.0, resolve@^1.13.1, resolve@^1.20.0": +"resolve@^1.10.0, resolve@^1.20.0": version: 1.20.0 resolution: "resolve@npm:1.20.0" dependencies: @@ -7339,7 +6973,7 @@ fsevents@~2.3.2: languageName: node linkType: hard -"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.13.1#~builtin, resolve@patch:resolve@^1.20.0#~builtin": +"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin": version: 1.20.0 resolution: "resolve@patch:resolve@npm%3A1.20.0#~builtin::version=1.20.0&hash=00b1ff" dependencies: @@ -7877,26 +7511,6 @@ fsevents@~2.3.2: 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.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_decoder@npm:^1.1.1": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" @@ -8278,18 +7892,6 @@ fsevents@~2.3.2: languageName: node linkType: hard -"tsconfig-paths@npm:^3.9.0": - version: 3.9.0 - resolution: "tsconfig-paths@npm:3.9.0" - dependencies: - "@types/json5": ^0.0.29 - json5: ^1.0.1 - minimist: ^1.2.0 - strip-bom: ^3.0.0 - checksum: 243b3b098c76a4ca90ea0431683f3755a4ff175c6123bcba5f7b4bd80fe2ef8fa9bdc8f4d525148a1e71ade7f3e037e7c0313ae177fd12398ab68f05c2c7f25d - languageName: node - linkType: hard - "tslib@npm:^1.8.1, tslib@npm:^1.9.0": version: 1.14.1 resolution: "tslib@npm:1.14.1" @@ -8434,18 +8036,6 @@ typescript@^4.3.5: 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 - languageName: node - linkType: hard - "unique-filename@npm:^1.1.1": version: 1.1.1 resolution: "unique-filename@npm:1.1.1" @@ -8589,19 +8179,6 @@ typescript@^4.3.5: languageName: node linkType: hard -"which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" - dependencies: - is-bigint: ^1.0.1 - is-boolean-object: ^1.1.0 - is-number-object: ^1.0.4 - is-string: ^1.0.5 - is-symbol: ^1.0.3 - checksum: 53ce774c7379071729533922adcca47220228405e1895f26673bbd71bdf7fb09bee38c1d6399395927c6289476b5ae0629863427fd151491b71c4b6cb04f3a5e - languageName: node - linkType: hard - "which-module@npm:^2.0.0": version: 2.0.0 resolution: "which-module@npm:2.0.0"