Archived
0
0
Fork 0

feat(gateway): added basic gateway connectivity

This commit is contained in:
Daryl Ronningen 2021-07-16 20:00:35 -07:00
parent 8de53c0a23
commit 7acf32b33c
Signed by: Daryl Ronningen
GPG key ID: FD23F0C934A5EC6B
9 changed files with 135 additions and 473 deletions

View file

@ -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
}

View file

@ -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",

View file

@ -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) {

View file

@ -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;

View file

@ -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<IClientOptions>);
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<void> {

View file

@ -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<void> {
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<void> {
@ -36,13 +44,54 @@ export class GatewayClient {
);
this.connection.on('message', async (msg: Buffer | string) => {
let parsedMessage: IGatewayMessage<null>;
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 });
}
}

View file

@ -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,
},

View file

@ -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<T> {
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> = T extends Builtin
: T extends {}
? { [K in keyof T]-?: DeepRequired<T[K]> }
: NonNullable<T>;
export type GatewayReceiveMessage = IGatewayHeartbeat | IGatewayHeartbeatAck;
export type GatewaySendMessage = IGatewayHeartbeatSend | IGatewayIdentify;
export type Primitives = bigint | boolean | null | number | string | symbol | undefined;

435
yarn.lock
View file

@ -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<compat/resolve>, resolve@patch:resolve@^1.13.1#~builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>":
"resolve@patch:resolve@^1.10.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>":
version: 1.20.0
resolution: "resolve@patch:resolve@npm%3A1.20.0#~builtin<compat/resolve>::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"