diff --git a/.eslintrc.cjs b/.eslintrc.cjs
new file mode 100644
index 0000000..efd7734
--- /dev/null
+++ b/.eslintrc.cjs
@@ -0,0 +1,37 @@
+module.exports = {
+ root: true,
+ parser: '@typescript-eslint/parser',
+ parserOptions: {
+ project: './tsconfig.json',
+ tsconfigRootDir: __dirname,
+ },
+ plugins: ['@typescript-eslint'],
+ extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', require.resolve("eslint-config-airbnb/base")],
+ rules: {
+ 'quotes': ['error', 'single'],
+ 'object-curly-spacing': ['error', 'always'],
+ 'import/prefer-default-export': 'off',
+ 'indent': ['error', 4],
+ 'no-console': 'off',
+ 'max-len': [
+ 'error',
+ {
+ ignoreComments: true,
+ code: 150,
+ ignoreUrls: true,
+ ignoreStrings: true,
+ ignoreTemplateLiterals: true
+ }
+ ],
+ 'class-methods-use-this': 'off',
+ 'no-inner-declarations': 'off',
+ 'import/extensions': 'off',
+ 'consistent-return': 'off',
+ 'import/no-unresolved': 'off',
+ 'no-nested-ternary': 'off',
+ 'no-unused-expressions': 'off',
+ 'max-classes-per-file': 'off',
+ 'no-use-before-define': 'off',
+ 'no-throw-literal': 'off'
+ },
+};
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
new file mode 100644
index 0000000..8555d4e
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -0,0 +1,46 @@
+name: Bug report
+description: Create a report to help us improve
+title: "[BUG] Short Description"
+labels: bug
+body:
+ - type: textarea
+ attributes:
+ label: Current Behavior
+ description: A clear and concise description of what you're experiencing. Do NOT combine multiple bugs into one issue. If you have multiple bugs to report please open separate issues for EACH bug.
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: Expected Behavior
+ description: A clear and concise description of what you expected to happen.
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: Steps To Reproduce
+ description: Steps to reproduce the behavior.
+ placeholder: |
+ 1. Go to ...
+ 2. Click on ...
+ 3. Scroll to ...
+ 4. See error ...
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: Screenshots and Additional Info
+ description: |
+ Provide any relevant additional information such as screenshots or other details here.
+
+ Tip: You can attach images files by clicking this area to highlight it and then dragging files in.
+ validations:
+ required: false
+ - type: checkboxes
+ attributes:
+ label: Checklist
+ description: Before submitting your bug report.
+ options:
+ - label: I have made a separate issue for each bug that I am reporting.
+ required: true
+ - label: I have searched the issues and this bug has not been reported.
+ required: true
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000..ec4bb38
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1 @@
+blank_issues_enabled: false
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml
new file mode 100644
index 0000000..54ffdb6
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -0,0 +1,35 @@
+name: Feature request
+description: Suggest an idea for this project
+title: "[Feature] Short Description"
+labels: enhancement
+body:
+ - type: textarea
+ attributes:
+ label: Feature description
+ description: A clear and concise description of what you want to happen. Do NOT combine multiple feature requests into one issue. Open new issues for EACH request.
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: Why is this feature needed? Please justify and explain.
+ description: A clear and concise explanation justifying why this feature is needed. Ex. I'm always frustrated when [...]
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: Screenshots and Additional Info
+ description: |
+ Provide any relevant additional information such as screenshots or other details here.
+
+ Tip: You can attach images files by clicking this area to highlight it and then dragging files in.
+ validations:
+ required: false
+ - type: checkboxes
+ attributes:
+ label: Checklist
+ description: Before submitting your feature request.
+ options:
+ - label: I have made a separate issue for each feature I am requesting.
+ required: true
+ - label: I have searched the issues and this feature has not been requested.
+ required: true
\ No newline at end of file
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 0000000..cdda3e1
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,28 @@
+
+
+## Pull request type
+
+
+
+Please check the type of change your PR introduces:
+
+- [ ] Bugfix
+- [ ] Feature
+
+## What is the current behavior?
+
+
+
+Issue Number: N/A
+
+## What is the new behavior?
+
+
+
+-
+-
+-
+
+## Other information
+
+
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
new file mode 100644
index 0000000..24401b4
--- /dev/null
+++ b/.github/workflows/stale.yml
@@ -0,0 +1,30 @@
+name: Close stale issues and PRs
+'on':
+ schedule:
+ - cron: 0 0 * * *
+jobs:
+ stale:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/stale@v8
+ with:
+ days-before-stale: 30
+ days-before-close: 5
+ stale-issue-message: >-
+ This issue has been automatically flagged as stale due to a lack of
+ recent updates. It will be closed if no further activity is
+ observed. We appreciate your contributions.
+ stale-pr-message: >-
+ This pull request has been automatically flagged as stale due to a
+ lack of recent updates. It will be closed if no further activity is
+ observed. We appreciate your contributions.
+ close-issue-message: >-
+ This issue has been closed due to inactivity. Please feel free to
+ reopen if further action is required or additional information is
+ provided.
+ close-pr-message: >-
+ This pull request has been closed due to inactivity. Please feel
+ free to reopen if further action is required or additional
+ information is provided.
+ exempt-issue-labels: in-progress
+ exempt-pr-labels: in-progress
diff --git a/.gitignore b/.gitignore
index fe32a4c..aa8482b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,10 +1,36 @@
-# Irritating file create by Mac
+# ========================
+# System generated files
+# ========================
+
+# macOS generated files
.DS_Store
-# Random stuff
-node_modules/
-yarn.lock
-.eslintrc.json
+# ========================
+# Build output
+# ========================
+
+# Build directory
+build/
+
+# ========================
+# IDEs and editors
+# ========================
+
+# JetBrains IDEs (e.g., WebStorm, IntelliJ)
+.idea/
+# ========================
+# Dependency management
+# ========================
+
+# Yarn: lock file and error log
+yarn-error.log
+.yarn/
+.pnp.cjs
+.pnp.loader.mjs
+
+# ========================
# Config file
-config.json
\ No newline at end of file
+# ========================
+config.json
+
diff --git a/README.md b/README.md
index 4f39637..df18dfd 100644
--- a/README.md
+++ b/README.md
@@ -1,79 +1,83 @@
-
-[](https://www.codacy.com/gh/RagnarLothbrok-Odin/trakt-discord-presence/dashboard?utm_source=github.com&utm_medium=referral&utm_content=RagnarLothbrok-Odin/trakt-discord-presence&utm_campaign=Badge_Grade)
-
-
-
-
-
+
# Trakt Discord Presence
-Set your Discord presence according to what you are watching on [Trakt](https://trakt.tv/)
-Due to Discord limitations, your Discord client **MUST** be running on the same device as this script.
+Instantly stream your watching status on Discord courtesy [Trakt](https://trakt.tv/). Please note, due to certain
+limitations on Discord, this script is required to run on the same device as your Discord client.
-## Prerequisites
-* [Node.js](https://nodejs.org)
-* [Yarn](https://yarnpkg.com)
-* [Trakt.tv Account](https://trakt.tv)
-* [Discord Account](https://discord.com)
+## Requirements
-## Installation
-1. [Download the latest release](https://github.com/RagnarLothbrok-Odin/trakt-discord-presence/releases)
- * Extract the folder that was downloaded to your desired location using your preferred software, [WinRar for example](https://www.win-rar.com)
+- [Node.js](https://nodejs.org)
+- [Yarn](https://yarnpkg.com)
+- [Trakt.tv](https://trakt.tv) & [Discord](https://discord.com) accounts
-2. [Download Node.js](https://nodejs.org)
- * `LTS` preferred, Current should work but `LTS` is recommended
- * Ensure that `Node` is installed to `PATH`, it should be an option while installing
+## Installation & Setup
-3. [Install Yarn](https://classic.yarnpkg.com/en/docs/install)
- * Open CMD/terminal/console on your device
- * Run the following command
+1. [Download](https://github.com/RagnarLothbrok-Odin/TraktDiscordPresence/releases), extract, and move the latest
+ release to your chosen location.
- npm install --global yarn
- * Point your CMD/terminal/console to the folder that you extracted the source to, by using the `cd` command, an example follows:
+2. [Install Node.js](https://nodejs.org) (preferably the `LTS` version) and ensure `Node` is added to `PATH`.
- cd /Users/ragnarlothbrok/Downloads/trakt-discord-presence
+3. [Install Yarn](https://classic.yarnpkg.com/en/docs/install) globally, navigate to the source directory using the `cd`
+ command.
+ ```Shell
+ npm install --global yarn
+ cd /path/to/your/extracted/source
+ ```
-4. Install the necessary packages with the following command:
+4. Install packages using `yarn install`. A confirmation message appears upon successful installation.
- yarn install
- * A message will indicate when this step is completed
+## App Configuration
-## Setup
-1. [Create your Trakt application](https://trakt.tv/oauth/applications)
- * After clicking the above link, click `NEW APPLICATION`
- * Set the `Name` as: `Discord`
- * Set the `Redirect uri` as `urn:ietf:wg:oauth:2.0:oob`
+1. [Create a new Trakt application](https://trakt.tv/oauth/applications), name it `Discord` and set `Redirect uri`
+ as `urn:ietf:wg:oauth:2.0:oob`.
-2. [Create your Discord application](https://discord.com/developers/applications)
- * After clicking the above link, click `New Application`
- * Set the `NAME` as: `Trakt`
- * Set the app icon by clicking the box under where it says `APP ICON` _(Set this image to the file named_ `trakt.png` _(you can find this file in the folder named_ `images` _in the extracted source)_
- * Click `Rich Presence` on the left hand pane
- * Set the cover image by clicking the box under where it say `Select Image` _(Set this image to the file named_ `trakt.png` _(you can find this file in the folder named_ `images` _in the extracted source)_
- * Click `Add Image(s)` and upload the images you can find in the folder named `images` in the extracted source
+2. [Create a new Discord application](https://discord.com/developers/applications), name it `Trakt` and
+ add `trakt.png` (available in `images` folder) as the app icon and as the cover image in `Rich Presence` section.
+ Upload the remaining images found in `images` folder.
-## Usage
-1. Run the program by running the following command:
+## How to Use
- yarn start
+1. Run the program using `yarn start`.
-2. You will be asked for your [Trakt Client ID](https://trakt.tv/oauth/applications), if you did not create an application, ensure you read the [Setup section of this page](https://github.com/RagnarLothbrok-Odin/trakt-discord-presence/blob/main/README.md#setup)
+2. It prompts for [Trakt Client ID and Secret](https://trakt.tv/oauth/applications)
+ and [Discord Client ID](https://discord.com/developers/applications) (Refer to `App Configuration` section if not
+ already setup).
-3. You will be asked for your [Trakt Client Secret](https://trakt.tv/oauth/applications)
+3. It prompts for your preferred UI mode, either 'Progress Bar' or 'Standard Log' Examples of both outputs can be seen
+ at the bottom of this page.
-4. You will be asked for your [Discord Client ID](https://discord.com/developers/applications), if you did not create an application, ensure you read the [Setup section of this page](https://github.com/RagnarLothbrok-Odin/trakt-discord-presence/blob/main/README.md#setup)
+4. You're then provided a `URL`. Paste this onto any browser, retrieve the code and enter it in your terminal.
-5. You will be provided a `URL`, you must paste this link into a browser of your choosing
- * Once you visit this `URL`, a code will be provided, you must paste this code into your CMD/terminal/console
-
-6. Finally, you must now run the following code to start the program.
+5. Run `yarn start` to launch the program.
- yarn start
+If set up correctly, your output should resemble this:
-## Functionality
-If you follow all the steps correctly, you should see an output similar to the following
-
+- **Progress Bar**
+
+- **Standard Log**
+
## License
+
diff --git a/Trakt.js b/Trakt.js
deleted file mode 100644
index 110e26b..0000000
--- a/Trakt.js
+++ /dev/null
@@ -1,230 +0,0 @@
-const Trakt = require('trakt.tv');
-const DiscordRPC = require('discord-rpc');
-const fs = require('fs');
-const { prompt } = require('enquirer');
-const { DateTime } = require('luxon');
-const chalk = require('chalk');
-
-// If the config file does not exist, run the questios() function, which will create the file and auth the account
-if (!fs.existsSync('./config.json')) {
- questions();
- return;
-}
-
-// Fetching the data from config.json
-const { clientId, clientSecret, oAuth, discordClientId } = require('./config.json');
-
-// Checks if the oAuth has expired and runs tokenExpired() function if it has
-if (Date.now() > oAuth.expires) {
- tokenExpired(clientId, clientSecret);
- return;
-}
-
-// Trakt client options
-const options = {
- client_id: clientId,
- client_secret: clientSecret
-};
-
-// Spawn new Trakt client with options
-const trakt = new Trakt(options);
-trakt.import_token(oAuth);
-
-// Create the Discord RPC client
-// Create client
-
-// Set rpc as null
-let rpc;
-// We define the interval so we can clear it, incase the connection is lost
-let statusInt;
-
-const spawnRPC = async () => {
- try {
- // Attempt to spawn an RPC Client
- rpc = new DiscordRPC.Client({ transport: 'ipc' });
-
- // Log when error is thrown
- rpc.on('error', (err) => {
- console.log(err);
- });
- // Log when connected
- await rpc.on('ready', () => {
- console.log(chalk.green.bold('Successfully connected to Discord!'));
- });
- // Attempt to log in
- await rpc.login({ clientId: discordClientId });
- // Update status
- updateStatus();
-
- // Update status every 15 seconds
- statusInt = setInterval(() => {
- updateStatus();
- }, 15000);
- } catch (err) {
- console.log(chalk.red.bold('Failed to connect to Discord. Retrying in 15 seconds.'));
- // Retry every 15 seconds until successful.
- setTimeout(() => {
- spawnRPC();
- }, 15000);
- return;
- }
-};
-
-// Spawn the RPC
-spawnRPC();
-
-// Get Trakt user
-async function updateStatus() {
- // If the RPC connection is valid
- if (rpc) {
- // Check if RPC is still connected
- if (rpc.transport.socket.readyState !== 'open') {
- // Reset the updateStatus() interval due to connection loss
- clearInterval(statusInt);
- // Destroy the existing client
- rpc.destroy();
- // Set the RPC as null
- rpc = null;
- // Attempt to reconnect
- spawnRPC();
- return;
- }
-
- const user = await trakt.users.settings();
- const watching = await trakt.users.watching({ username: user.user.username });
-
- if (watching) {
- const type = {};
-
- type.smallImageKey = 'play';
- type.largeImageKey = 'trakt';
- type.startTimestamp = new Date(watching.started_at);
-
- // Set the activity
- if (watching.type === 'movie') {
- const { movie } = watching;
- type.details = `${movie.title} (${movie.year})`;
- } else if (watching.type === 'episode') {
- const { show, episode } = watching;
- type.details = `${show.title}`;
- type.state = `S${episode.season}E${episode.number} (${episode.title})`;
- }
- rpc.setActivity({ ...type });
-
- console.log(`${formatDate()} | ${chalk.red.bold.underline('Trakt Playing:')} ${type.details}${type.state ? ` - ${type.state}` : ''}`);
- } else {
- // Check if the user is currently watching something and if not, run on a timeout.
- console.log(`${formatDate()} | ${chalk.red.bold.underline('Trakt:')} Not Playing.`);
- rpc.clearActivity();
- }
- }
-}
-
-// Function to ask the user for their Trakt credentials
-async function questions() {
- console.log(chalk.green.bold('Please follow the on-screen instructions on authorizing your account.\n**NOTE: Your credentials are private and should not be shared, your credentials will be stored in a file called `config.json`.\n'));
-
- const response = await prompt([
- {
- type: 'input',
- name: 'clientId',
- message: 'What is your Trakt Client ID?'
- },
- {
- type: 'input',
- name: 'clientSecret',
- message: 'What is your Trakt Client Secret?'
- },
- {
- type: 'input',
- name: 'discordClientId',
- message: 'What is your Discord Client ID?'
- }
- ]).catch(() => {
- console.error('The user aborted the request.');
- process.exit(1);
- });
-
- const qOptions = {
- client_id: response.clientId,
- client_secret: response.clientSecret
- };
-
- const qTrakt = new Trakt(qOptions);
-
- const traktAuthUrl = qTrakt.get_url();
-
- const auth = await prompt([
- {
- type: 'input',
- name: 'oAuth',
- message: `Please go to the follow link and then paste the code into the console:\n${traktAuthUrl}\n`
- }
- ]).catch(() => {
- console.error('The user aborted the request.');
- process.exit(1);
- });
-
- const arr = {};
- arr.clientId = response.clientId;
- arr.clientSecret = response.clientSecret;
- arr.discordClientId = response.discordClientId;
-
- try {
- await qTrakt.exchange_code(auth.oAuth, null);
- const token = await qTrakt.export_token();
- arr.oAuth = token;
- } catch {
- console.log(chalk.red.bold('\nAn invalid token was provided! Please try again by restarting the program.'));
- process.exit(1);
- }
-
- await fs.writeFileSync('./config.json', JSON.stringify(arr, null, 3));
-
- console.log(chalk.green.bold('\nPlease restart this program.'));
- process.exit(1);
-}
-
-// Function to manually re-auth Trakt
-async function tokenExpired(id, secret) {
- const rOptions = {
- client_id: id,
- client_secret: secret
- };
-
- const rTrakt = new Trakt(rOptions);
-
- const traktAuthUrl = rTrakt.get_url();
-
- const reAuth = await prompt([
- {
- type: 'input',
- name: 'oAuth',
- message: `Your Trakt token has expired, please regenerate one by going to the following link and pasting the code in the console:\n${traktAuthUrl}\n`
- }
- ]).catch(() => {
- console.error('The user aborted the request.');
- process.exit(1);
- });
-
- try {
- await rTrakt.exchange_code(reAuth.oAuth, null);
- const token = await rTrakt.export_token();
- const config = require('./config');
- config.oAuth = token;
- fs.writeFileSync('./config.json', JSON.stringify(config, null, 3));
- } catch {
- console.log(chalk.red.bold('\nAn invalid token was provided! Please try again by restarting the program.'));
- process.exit(1);
- }
-
- console.log(chalk.green.bold('\nPlease restart this program.'));
- process.exit(1);
-}
-
-// Function to format the current date
-function formatDate() {
- const now = DateTime.now();
-
- return chalk.green.italic(`${now.toLocaleString(DateTime.DATE_HUGE)} - ${now.toLocaleString(DateTime.TIME_WITH_SHORT_OFFSET)}`);
-}
diff --git a/example.png b/example.png
deleted file mode 100644
index a2c5077..0000000
Binary files a/example.png and /dev/null differ
diff --git a/package.json b/package.json
index 9b65dba..590204c 100644
--- a/package.json
+++ b/package.json
@@ -1,26 +1,39 @@
{
- "name": "trakt-discord-presence",
- "version": "1.0.7",
+ "name": "traktdiscordpresence",
+ "description": "Set your Discord presence according to what you are watching on Trakt.tv",
+ "version": "2.0.35",
+ "repository": "https://github.com/RagnarLothbrok-Odin/TraktDiscordPresence.git",
+ "author": "Ragnar Lothbrok ",
+ "license": "MIT",
"engines": {
- "node": ">=12.0.0"
+ "node": ">=16.0.0"
},
"scripts": {
- "install": "yarn install",
- "start": "node Trakt.js"
+ "start": "tsc && node build/index.js"
},
- "main": "Trakt.js",
- "repository": "https://github.com/RagnarLothbrok-Odin/trakt-discord-presence.git",
- "author": "Ragnar Lothbrok <30740511+RagnarLothbrok-Odin@users.noreply.github.com>",
- "license": "MIT",
+ "type": "module",
"dependencies": {
- "chalk": "4.1.2",
+ "@types/luxon": "^3.3.7",
+ "cli-progress": "^3.12.0",
+ "colors": "^1.4.0",
"discord-rpc": "^4.0.1",
- "enquirer": "^2.3.6",
- "luxon": "^2.4.0",
- "trakt.tv": "^8.1.1"
+ "enquirer": "^2.4.1",
+ "luxon": "^3.4.4",
+ "pretty-ms": "^8.0.0",
+ "trakt.tv": "^8.2.0",
+ "ts-node": "^10.9.2"
},
"devDependencies": {
- "eslint": "^8.5.0",
- "eslint-config-tesseract": "^0.3.0"
- }
+ "@types/cli-progress": "^3.11.5",
+ "@types/discord-rpc": "^4.0.8",
+ "@types/node": "^20.10.5",
+ "@typescript-eslint/eslint-plugin": "^6.14.0",
+ "@typescript-eslint/parser": "^6.14.0",
+ "eslint": "^8.56.0",
+ "eslint-config-airbnb": "^19.0.4",
+ "eslint-formatter-table": "^7.32.1",
+ "eslint-plugin-import": "^2.29.1",
+ "typescript": "^5.3.3"
+ },
+ "packageManager": "yarn@4.0.2"
}
diff --git a/src/index.ts b/src/index.ts
new file mode 100644
index 0000000..13f50d2
--- /dev/null
+++ b/src/index.ts
@@ -0,0 +1,612 @@
+import { existsSync, readFileSync, writeFileSync } from 'fs';
+import 'colors';
+import Enquirer from 'enquirer';
+// @ts-expect-error [currently, no types file exists for trakt.tv, so this will cause an error]
+import Trakt from 'trakt.tv';
+import { Client } from 'discord-rpc';
+import { DateTime } from 'luxon';
+import {
+ GenericFormatter, Options, Params, SingleBar,
+} from 'cli-progress';
+import prettyMilliseconds from 'pretty-ms';
+
+const { prompt } = Enquirer;
+
+interface Configuration {
+ clientId: string;
+ clientSecret: string;
+ discordClientId: string;
+ oAuth?: string;
+ mode: string;
+}
+
+interface TraktContent {
+ smallImageKey: string;
+ largeImageKey: string;
+ startTimestamp: Date;
+ details?: string;
+ state?: string;
+}
+
+interface Movie {
+ expires_at: string;
+ started_at: string;
+ movie: {
+ title: string;
+ year: number;
+ }
+
+}
+
+interface TvShow {
+ expires_at: string;
+ started_at: string;
+ show: {
+ title: string;
+ }
+ episode: {
+ season: number;
+ number: number;
+ title: string;
+ }
+}
+
+/**
+ * This variable can be either an instance of the `Client` from 'discord-rpc' or null.
+ * It is used to control the Discord Rich Presence client.
+ *
+ * @type Client | null
+ */
+let rpc: Client | null;
+
+/**
+ * `progressBar` is a SingleBar instance from the `cli-progress` module that represents a progress bar instance.
+ * It is initially null but will be assigned later when a movie starts playing.
+ *
+ * The SingleBar instance is used to visualize the progress of the movie's play time on the terminal.
+ *
+ * @see {@link https://www.npmjs.com/package/cli-progress} for more information about how the cli-progress module works.
+ */
+let progressBar: SingleBar | null;
+
+/**
+ * This class is responsible for managing the Discord Rich Presence Client and its connection.
+ *
+ * @class
+ */
+class DiscordRPC {
+ public statusInt: NodeJS.Timeout | null = null;
+
+ /**
+ * Spawns and manages a Discord Rich Presence client.
+ *
+ * @async
+ * @public
+ * @param trakt - An instance of Trakt that contains the necessary methods to interact with the Trakt service.
+ * @throws When it fails to connect to Discord or fetch Trakt Credentials.
+ */
+ async spawnRPC(trakt: TraktInstance) {
+ try {
+ const traktCredentials = await fetchTraktCredentials();
+
+ // Initialize the RPC client with IPC transport
+ rpc = new Client({ transport: 'ipc' });
+
+ // Event handler for when the RPC client is ready
+ rpc.on('ready', () => {
+ console.log('Successfully connected to Discord!'.green);
+ });
+
+ // Login to Discord using Trakt's Discord client ID
+ await rpc.login({ clientId: traktCredentials.discordClientId });
+
+ // Update the status initially
+ await trakt.updateStatus(this.statusInt);
+
+ // Set up interval for updating status
+ this.statusInt = setInterval(async () => {
+ await trakt.updateStatus(this.statusInt);
+ }, 15 * 1000);
+ } catch (err) {
+ // Handle errors and retry after 15 seconds
+ console.log('Failed to connect to Discord. Retrying in 15 seconds.'.red, `(${err})`.italic);
+ setTimeout(() => {
+ this.spawnRPC(trakt);
+ }, 15 * 1000);
+ }
+ }
+}
+
+/**
+ * This class encapsulates the Trakt API with necessary methods to interact with the service.
+ *
+ * @class
+ */
+class TraktInstance {
+ trakt: Trakt;
+
+ private credentials: Configuration | null = null;
+
+ /**
+ * Initializes the Trakt API object.
+ *
+ * @async
+ * @returns Returns a promise that resolves with an instance of the Trakt API.
+ */
+ async createTrakt(): Promise {
+ // Fetch Trakt credentials
+ const traktCredentials = await fetchTraktCredentials();
+
+ // Store the credentials for use in other TraktInstance functions
+ this.credentials = traktCredentials;
+
+ // Create a new Trakt instance
+ this.trakt = new Trakt({
+ client_id: traktCredentials.clientId,
+ client_secret: traktCredentials.clientSecret,
+ });
+
+ // Import Trakt OAuth token
+ this.trakt.import_token(traktCredentials.oAuth);
+
+ // Return the Trakt instance
+ return this.trakt;
+ }
+
+ /**
+ * Connects with the Discord RPC and updates the status.
+ *
+ * @async
+ * @param discordStatusInterval - Timeout interval for updating the Discord status.
+ */
+ async updateStatus(discordStatusInterval: NodeJS.Timeout | null) {
+ if (!rpc) return;
+
+ // Check if the RPC transport socket is not open
+ // @ts-expect-error [currently, no types file exists for trakt.tv, so this will cause an error]
+ if (rpc.transport.socket.readyState !== 'open') {
+ // Clear the Discord status interval
+ if (discordStatusInterval) clearInterval(discordStatusInterval);
+
+ // Destroy the RPC client
+ await rpc.destroy();
+ rpc = null;
+
+ // Stop the progress bar if it exists
+ if (progressBar) progressBar.stop();
+
+ // Respawn the RPC client
+ await new DiscordRPC().spawnRPC(this);
+ return;
+ }
+
+ // Fetch user settings and currently watching content from Trakt
+ const user = await this.trakt.users.settings();
+ const watching = await this.trakt.users.watching({ username: user.user.username });
+
+ if (watching) {
+ // Prepare Trakt content for Discord RPC
+ let traktContent: TraktContent = {
+ smallImageKey: 'play',
+ largeImageKey: 'trakt',
+ startTimestamp: new Date(watching.started_at),
+ };
+
+ // Handle different content types (movie or episode)
+ if (watching.type === 'movie') {
+ traktContent = await this.handleMovie(watching, traktContent);
+ } else if (watching.type === 'episode') {
+ traktContent = await this.handleEpisode(watching, traktContent);
+ }
+
+ // Set Discord activity with Trakt content
+ await rpc.setActivity({ ...traktContent });
+ return;
+ }
+
+ // Stop the progress bar if not watching anything, and it exists
+ if (progressBar) progressBar.stop();
+
+ // Log that Trakt is not playing anything
+ console.log(`${formatDate()} | ${'Trakt:'.red} Not Playing.`.bold);
+
+ // Clear Discord activity
+ await rpc.clearActivity();
+ }
+
+ /**
+ * Processes a movie object received from Trakt and prepares it for Discord.
+ *
+ * @private
+ * @async
+ * @param watching - The movie object from Trakt.
+ * @param traktContent - The content to send to Discord.
+ * @returns The modified content to send to Discord.
+ */
+ private async handleMovie(watching: Movie, traktContent: TraktContent): Promise {
+ const { movie } = watching;
+ const detail = `${movie.title} (${movie.year})`;
+
+ // Calculate total and elapsed durations in seconds
+ const totalDuration = DateTime.fromISO(watching.expires_at).diff(DateTime.fromISO(watching.started_at), 'seconds').seconds;
+ const elapsedDuration = DateTime.local().diff(DateTime.fromISO(watching.started_at), 'seconds').seconds;
+
+ // Initialize progress bar if it doesn't exist
+ if (!progressBar && this.credentials?.mode === 'progress_bar') {
+ progressBar = await generateProgressBar();
+ progressBar.start(totalDuration, elapsedDuration, {
+ content: detail,
+ startedAt: watching.started_at,
+ endsAt: watching.expires_at,
+ });
+ }
+
+ // If the mode is set to standard cli logging
+ if (this.credentials?.mode === 'standard_log') {
+ console.log(`${formatDate()} | ${'Trakt Playing:'.red.bold} ${detail} (${movie.year})`);
+ }
+
+ // Update Trakt content details
+ return { ...traktContent, details: detail };
+ }
+
+ /**
+ * Processes a TV show object received from Trakt and prepares it for Discord.
+ *
+ * @private
+ * @async
+ * @param watching - The TV show object from Trakt.
+ * @param traktContent - The content to send to Discord.
+ * @returns The modified content to send to Discord.
+ */
+ private async handleEpisode(watching: TvShow, traktContent: TraktContent): Promise {
+ const { show, episode } = watching;
+ const detail = `${show.title}`;
+ const state = `S${episode.season}E${episode.number} (${episode.title})`;
+
+ // Calculate total and elapsed durations in seconds
+ const totalDuration = DateTime.fromISO(watching.expires_at).diff(DateTime.fromISO(watching.started_at), 'seconds').seconds;
+ const elapsedDuration = DateTime.local().diff(DateTime.fromISO(watching.started_at), 'seconds').seconds;
+
+ // Initialize progress bar if it doesn't exist
+ if (!progressBar && this.credentials?.mode === 'progress_bar') {
+ progressBar = await generateProgressBar();
+ progressBar.start(totalDuration, elapsedDuration, {
+ content: `${detail} - ${state}`,
+ startedAt: watching.started_at,
+ endsAt: watching.expires_at,
+ });
+ }
+
+ // If the mode is set to standard cli logging
+ if (this.credentials?.mode === 'standard_log') {
+ console.log(`${formatDate()} | ${'Trakt Playing:'.red.bold} ${detail} - ${state}`);
+ }
+
+ // Update Trakt content details and state
+ return { ...traktContent, details: detail, state };
+ }
+}
+
+/**
+ * Formats a date and time string into a localized time string using the current time zone.
+ *
+ * @param date - A string representing a date and time.
+ * @returns A string representing the formatted time in the local time zone.
+ */
+function formatDateTime(date: string): string {
+ return DateTime.fromISO(date).setZone('local').toLocaleString(DateTime.TIME_SIMPLE);
+}
+
+/**
+ * Calculates the elapsed duration in seconds between the current time and the specified starting time.
+ *
+ * @param startedAt - A string representing the starting date and time.
+ * @returns The elapsed duration in seconds.
+ */
+function calculateElapsedDuration(startedAt: string): number {
+ return DateTime.local().diff(DateTime.fromISO(startedAt), 'seconds').seconds;
+}
+
+/**
+ * Generates a string representing a progress bar based on the specified options and parameters.
+ *
+ * @param options - An object containing optional settings for the progress bar.
+ * @param params - An object containing parameters for generating the progress bar.
+ * @returns A string representing the generated progress bar.
+ */
+function generateBarProgress(options: Options, params: Params): string {
+ // Calculate the number of complete and incomplete characters based on the progress and bar size.
+ const complete = (options.barCompleteString || '').slice(0, Math.round(params.progress * (options.barsize ?? 0)));
+ const incomplete = (options.barIncompleteString || '').slice(0, Math.round((1 - params.progress) * (options.barsize ?? 0)));
+
+ // Combine complete and incomplete parts to form the progress bar string.
+ return complete + incomplete;
+}
+
+/**
+ * Asynchronously generates a progress bar using the provided options and parameters.
+ *
+ * @returns A `SingleBar` instance representing the generated progress bar.
+ */
+async function generateProgressBar() {
+ // Define a custom format function for the progress bar
+ const formatFunction: GenericFormatter = (options, params, payload) => {
+ // Extract relevant information from the payload
+ const { startedAt, endsAt, content } = payload;
+
+ // Format start and end dates in local time
+ const localStartDate = formatDateTime(startedAt);
+ const localEndDate = formatDateTime(endsAt);
+
+ // Calculate elapsed duration and format it in a human-readable format
+ const elapsedDuration = calculateElapsedDuration(startedAt);
+ const prettyDuration = prettyMilliseconds(elapsedDuration * 1000, { secondsDecimalDigits: 0 });
+
+ // Generate progress bar
+ const barProgress = generateBarProgress(options, params);
+
+ // Construct the progress bar line with formatted information
+ return `${content.cyan.padStart(3)} ${barProgress} Started at ${localStartDate.green.bold} | Ends at ${localEndDate.green.bold} | Time Elapsed: ${prettyDuration.green.bold}`;
+ };
+
+ // Create a new SingleBar instance with specified options
+ return new SingleBar({
+ format: formatFunction,
+ barCompleteChar: '█',
+ barIncompleteChar: '░',
+ hideCursor: true,
+ clearOnComplete: true,
+ linewrap: true,
+ });
+}
+
+/**
+ * Asynchronously fetches Trakt credentials from a `config.json` file.
+ *
+ * @returns Returns a promise that resolves with the Trakt Credentials.
+ *
+ * @example
+ * ```typescript
+ * const credentials = await fetchTraktCredentials();
+ * ```
+ *
+ * The `TraktCredentials` interface consists of the following properties:
+ * - `clientId`: string
+ * - `clientSecret`: string
+ * - `discordClientId`: string
+ * - `oAuth?`: string (optional)
+ *
+ * The function reads a JSON file using `readFileSync` from the `fs` module and parses it to a JavaScript object.
+ * In case of an error during reading the file, it will throw an error.
+ */
+async function fetchTraktCredentials(): Promise {
+ try {
+ // Read the configuration file synchronously
+ const configData = readFileSync('./config.json', 'utf8');
+
+ // Return the parsed credentials
+ return JSON.parse(configData);
+ } catch (error) {
+ // Handle errors during file reading or JSON parsing
+ console.error('Error fetching Trakt credentials:', error);
+ process.exit(1);
+ }
+}
+
+/**
+ * Formats the current date and time into a specific format.
+ *
+ * @returns Returns the current date and time as a string, formatted like:
+ * 'Thursday, April 14, 2022' for date, and '11:37 PM +08:00' for time.
+ * The formatted date and time is styled using ANSI escape codes to be green and italic.
+ *
+ * @example
+ * ```typescript
+ * console.log(formatDate());
+ * ```
+ * will log the current date and time, formatted and styled as described above.
+ *
+ * Note: The ANSI styling will only be visible in environments that support it, like many terminal emulators.
+ *
+ * This function uses `DateTime` from the `luxon` module to get the current date and time, and format it.
+ */
+function formatDate(): string {
+ const now = DateTime.now();
+
+ return `${now.toLocaleString(DateTime.DATE_HUGE)} - ${now.toLocaleString(DateTime.TIME_WITH_SHORT_OFFSET)}`.green.italic;
+}
+
+/**
+ * Generates a configuration object for creating a prompt in enquirer's prompt interface.
+ *
+ * @param type - The type of prompt
+ * @param name - The name of the input field (also used as a key in the final object response i.e. `clientId`, `clientSecret`, `discordClientId`, `oAuth`).
+ * @param message - The message to show in the prompt.
+ *
+ * @returns An object with properties `type`, `name`, and `message` which can be used with enquirer's prompt interface.
+ *
+ * @example
+ * Usage with Enquirer prompt function:
+ *
+ * ```typescript
+ * prompt([
+ * generatePromptConfig('clientId', 'Please provide your Trakt Client ID:')
+ * ])
+ * ```
+ *
+ * It will create a single input prompt with name as 'clientId' and message as 'Please provide your Trakt Client ID:'.
+ */
+function generatePromptConfig(type: string, name: string, message: string) {
+ return {
+ type,
+ name,
+ message,
+ };
+}
+
+/**
+ * Asynchronously generates Trakt credentials by prompting for necessary inputs.
+ *
+ * It sends prompts to the console for `clientId`, `clientSecret`, and `discordClientId` and
+ * returns an object containing these inputs after successful entry.
+ *
+ * @remarks
+ * This method should be run if there's no existing 'config.json' file.
+ * It utilizes `generatePromptConfig` to generate prompt configurations for enquirer's prompt interface.
+ * Once the necessary input prompts are answered correctly, the function returns
+ * an object that satisfies the `TraktCredentials` interface.
+ *
+ * @example
+ * If there's no 'config.json' file, it will generate Trakt credentials:
+ *
+ * ```typescript
+ * if (!existsSync('./config.json')) {
+ * const generatedCredentials = await generateTraktCredentials();
+ * }
+ * ```
+ *
+ * @returns A Promise that resolves to an object satisfying the `TraktCredentials`
+ * interface or null if inputs were not provided or there was an error.
+ *
+ * @async
+ */
+async function generateTraktCredentials(): Promise {
+ console.log(
+ `Kindly adhere to the instructions displayed on the screen to authenticate your account.\n${
+ '**CRUCIAL: Handle your login credentials with the highest level of privacy and avoid disclosing them. They will be stored in a `config.json` file.\n'.red.italic
+ }`,
+ );
+
+ const modePrompt = [{
+ type: 'select',
+ name: 'mode',
+ message: 'Please select which UI you would prefer.',
+ initial: 0,
+ choices: [
+ { name: 'Progress Bar', message: 'Progress Bar', value: '#ff0000' },
+ { name: 'Standard Log', message: 'Standard Log', value: '#00ff00' },
+ ],
+ }];
+
+ return prompt([
+ generatePromptConfig('input', 'clientId', 'Please provide your Trakt Client ID:'),
+ generatePromptConfig('input', 'clientSecret', 'Please provide your Trakt Client Secret:'),
+ generatePromptConfig('input', 'discordClientId', 'Please provide your Discord Client ID:'),
+ ...modePrompt,
+ ]);
+}
+
+/**
+ * Authorizes Trakt by generating a new Trakt instance, creating and sending a request
+ * to acquire an authorization code, and then exchanging that code for a token.
+ * The obtained token is then saved into a file named `config.json`.
+ * In case the provided token is incorrect, the function logs the error message and terminates the process.
+ *
+ * @param gen - An object of a type `TraktCredentials` that contains
+ * `clientId`, `clientSecret`, and `discordClientId`.
+ *
+ * @throws When the received token is incorrect or if unable
+ * to write the received token into `config.json`.
+ *
+ * @remarks
+ * The function uses the `prompt` function to interact with the user directly.
+ *
+ * @returns A Promise that is resolved when the process of authorization
+ * is finished successfully or throws an error otherwise.
+ *
+ * @async
+ */
+async function authoriseTrakt(gen: Configuration) {
+ // Create a Trakt instance with client ID and client secret
+ const traktOptions = {
+ client_id: gen.clientId,
+ client_secret: gen.clientSecret,
+ };
+ const traktInstance = new Trakt(traktOptions);
+
+ // Get the Trakt authorization URL
+ const traktAuthUrl = traktInstance.get_url();
+
+ // Prompt the user to visit the Trakt authorization URL and enter the received code
+ const auth = await prompt([
+ generatePromptConfig('input', 'oAuth', `Please visit the following link and subsequently, paste the received code into the console:\n${traktAuthUrl}\n`),
+ ]);
+
+ // Prepare a TraktCredentials object with essential information
+ const updatedCredentials: Configuration = {
+ clientId: gen.clientId,
+ clientSecret: gen.clientSecret,
+ discordClientId: gen.discordClientId,
+ mode: gen.mode === 'Progress Bar' ? 'progress_bar' : 'standard_log',
+ };
+
+ try {
+ // Exchange the authorization code for an access token
+ await traktInstance.exchange_code(auth.oAuth, null);
+
+ // Export the Trakt access token and store it in the credentials object
+ updatedCredentials.oAuth = await traktInstance.export_token();
+ } catch (error) {
+ // Handle errors during the token exchange process
+ console.log('\nAn incorrect token has been provided! Please restart the program and try again.'.red.bold);
+ process.exit(1);
+ }
+
+ // Write the updated credentials to the configuration file
+ writeFileSync('./config.json', JSON.stringify(updatedCredentials, null, 3));
+
+ // Prompt the user to restart the program
+ console.log('\nPlease restart this program.'.green.bold);
+ process.exit(1);
+}
+
+/**
+ * Initializes instances of Trakt and Discord RPC.
+ *
+ * @throws When there is a failure to initialize Trakt and Discord RPC.
+ * @returns A Promise that resolves when the operation is finished.
+ */
+async function initializeTraktAndDiscordRPC(): Promise {
+ const traktInstance = new TraktInstance();
+ await traktInstance.createTrakt();
+ const discordRPC = new DiscordRPC();
+ await discordRPC.spawnRPC(traktInstance);
+}
+
+/**
+ * The main function of the application.
+ *
+ * If there's no 'config.json' file, it will generate Trakt credentials and authorize them.
+ * Then, it will initialize Trakt and Discord RPC.
+ *
+ * If any error occurs during these operations, it will be logged in the console,
+ * and the process will exit with status code 1.
+ *
+ * @throws When unable to perform operations.
+ * @returns A Promise that resolves when all operations are finished.
+ */
+async function main(): Promise {
+ try {
+ // Check if the configuration file exists
+ if (!existsSync('./config.json')) {
+ // Generate Trakt credentials if the file doesn't exist
+ const generatedCredentials = await generateTraktCredentials();
+
+ // If credentials were generated, authorize Trakt
+ if (generatedCredentials) {
+ await authoriseTrakt(generatedCredentials);
+ }
+ }
+
+ // Initialize Trakt and Discord RPC
+ await initializeTraktAndDiscordRPC();
+ } catch (error) {
+ // Handle and log errors
+ console.error(`\nAn error occurred: ${error}`.red);
+ process.exit(1);
+ }
+}
+
+// Call the main function
+await main();
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..7156750
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,19 @@
+{
+ "compilerOptions": {
+ "target": "ESNext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
+ "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
+ "module": "ESNext", /* Specify what module code is generated. */
+ "rootDir": "src", /* Specify the root folder within your source files. */
+ "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
+ "baseUrl": "./src",
+ "allowSyntheticDefaultImports": true, /* Specify a set of entries that re-map imports to additional lookup locations. */
+ "resolveJsonModule": true, /* Enable importing .json files. */
+ "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
+ "outDir": "./build", /* Specify an output folder for all emitted files. */
+ "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
+ "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
+ "strict": true, /* Enable all strict type-checking options. */
+ "skipLibCheck": true /* Skip type checking all .d.ts files. */
+ },
+ "exclude": ["build"],
+}
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..7d8736d
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,3468 @@
+# This file is generated by running "yarn install" inside your project.
+# Manual changes might be lost - proceed with caution!
+
+__metadata:
+ version: 8
+ cacheKey: 10c0
+
+"@aashutoshrathi/word-wrap@npm:^1.2.3":
+ version: 1.2.6
+ resolution: "@aashutoshrathi/word-wrap@npm:1.2.6"
+ checksum: 53c2b231a61a46792b39a0d43bc4f4f776bb4542aa57ee04930676802e5501282c2fc8aac14e4cd1f1120ff8b52616b6ff5ab539ad30aa2277d726444b71619f
+ languageName: node
+ linkType: hard
+
+"@cspotcode/source-map-support@npm:^0.8.0":
+ version: 0.8.1
+ resolution: "@cspotcode/source-map-support@npm:0.8.1"
+ dependencies:
+ "@jridgewell/trace-mapping": "npm:0.3.9"
+ checksum: 05c5368c13b662ee4c122c7bfbe5dc0b613416672a829f3e78bc49a357a197e0218d6e74e7c66cfcd04e15a179acab080bd3c69658c9fbefd0e1ccd950a07fc6
+ languageName: node
+ linkType: hard
+
+"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0":
+ version: 4.4.0
+ resolution: "@eslint-community/eslint-utils@npm:4.4.0"
+ dependencies:
+ eslint-visitor-keys: "npm:^3.3.0"
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
+ checksum: 7e559c4ce59cd3a06b1b5a517b593912e680a7f981ae7affab0d01d709e99cd5647019be8fafa38c350305bc32f1f7d42c7073edde2ab536c745e365f37b607e
+ languageName: node
+ linkType: hard
+
+"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1":
+ version: 4.10.0
+ resolution: "@eslint-community/regexpp@npm:4.10.0"
+ checksum: c5f60ef1f1ea7649fa7af0e80a5a79f64b55a8a8fa5086de4727eb4c86c652aedee407a9c143b8995d2c0b2d75c1222bec9ba5d73dbfc1f314550554f0979ef4
+ languageName: node
+ linkType: hard
+
+"@eslint/eslintrc@npm:^2.1.4":
+ version: 2.1.4
+ resolution: "@eslint/eslintrc@npm:2.1.4"
+ dependencies:
+ ajv: "npm:^6.12.4"
+ debug: "npm:^4.3.2"
+ espree: "npm:^9.6.0"
+ globals: "npm:^13.19.0"
+ ignore: "npm:^5.2.0"
+ import-fresh: "npm:^3.2.1"
+ js-yaml: "npm:^4.1.0"
+ minimatch: "npm:^3.1.2"
+ strip-json-comments: "npm:^3.1.1"
+ checksum: 32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573
+ languageName: node
+ linkType: hard
+
+"@eslint/js@npm:8.56.0":
+ version: 8.56.0
+ resolution: "@eslint/js@npm:8.56.0"
+ checksum: 60b3a1cf240e2479cec9742424224465dc50e46d781da1b7f5ef240501b2d1202c225bd456207faac4b34a64f4765833345bc4ddffd00395e1db40fa8c426f5a
+ languageName: node
+ linkType: hard
+
+"@humanwhocodes/config-array@npm:^0.11.13":
+ version: 0.11.13
+ resolution: "@humanwhocodes/config-array@npm:0.11.13"
+ dependencies:
+ "@humanwhocodes/object-schema": "npm:^2.0.1"
+ debug: "npm:^4.1.1"
+ minimatch: "npm:^3.0.5"
+ checksum: d76ca802d853366094d0e98ff0d0994117fc8eff96649cd357b15e469e428228f597cd2e929d54ab089051684949955f16ee905bb19f7b2f0446fb377157be7a
+ languageName: node
+ linkType: hard
+
+"@humanwhocodes/module-importer@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "@humanwhocodes/module-importer@npm:1.0.1"
+ checksum: 909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529
+ languageName: node
+ linkType: hard
+
+"@humanwhocodes/object-schema@npm:^2.0.1":
+ version: 2.0.1
+ resolution: "@humanwhocodes/object-schema@npm:2.0.1"
+ checksum: 9dba24e59fdb4041829d92b693aacb778add3b6f612aaa9c0774f3b650c11a378cc64f042a59da85c11dae33df456580a3c36837b953541aed6ff94294f97fac
+ languageName: node
+ linkType: hard
+
+"@isaacs/cliui@npm:^8.0.2":
+ version: 8.0.2
+ resolution: "@isaacs/cliui@npm:8.0.2"
+ dependencies:
+ string-width: "npm:^5.1.2"
+ string-width-cjs: "npm:string-width@^4.2.0"
+ strip-ansi: "npm:^7.0.1"
+ strip-ansi-cjs: "npm:strip-ansi@^6.0.1"
+ wrap-ansi: "npm:^8.1.0"
+ wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0"
+ checksum: b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e
+ languageName: node
+ linkType: hard
+
+"@jridgewell/resolve-uri@npm:^3.0.3":
+ version: 3.1.1
+ resolution: "@jridgewell/resolve-uri@npm:3.1.1"
+ checksum: 0dbc9e29bc640bbbdc5b9876d2859c69042bfcf1423c1e6421bcca53e826660bff4e41c7d4bcb8dbea696404231a6f902f76ba41835d049e20f2dd6cffb713bf
+ languageName: node
+ linkType: hard
+
+"@jridgewell/sourcemap-codec@npm:^1.4.10":
+ version: 1.4.15
+ resolution: "@jridgewell/sourcemap-codec@npm:1.4.15"
+ checksum: 0c6b5ae663087558039052a626d2d7ed5208da36cfd707dcc5cea4a07cfc918248403dcb5989a8f7afaf245ce0573b7cc6fd94c4a30453bd10e44d9363940ba5
+ languageName: node
+ linkType: hard
+
+"@jridgewell/trace-mapping@npm:0.3.9":
+ version: 0.3.9
+ resolution: "@jridgewell/trace-mapping@npm:0.3.9"
+ dependencies:
+ "@jridgewell/resolve-uri": "npm:^3.0.3"
+ "@jridgewell/sourcemap-codec": "npm:^1.4.10"
+ checksum: fa425b606d7c7ee5bfa6a31a7b050dd5814b4082f318e0e4190f991902181b4330f43f4805db1dd4f2433fd0ed9cc7a7b9c2683f1deeab1df1b0a98b1e24055b
+ languageName: node
+ linkType: hard
+
+"@nodelib/fs.scandir@npm:2.1.5":
+ version: 2.1.5
+ resolution: "@nodelib/fs.scandir@npm:2.1.5"
+ dependencies:
+ "@nodelib/fs.stat": "npm:2.0.5"
+ run-parallel: "npm:^1.1.9"
+ checksum: 732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb
+ languageName: node
+ linkType: hard
+
+"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2":
+ version: 2.0.5
+ resolution: "@nodelib/fs.stat@npm:2.0.5"
+ checksum: 88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d
+ languageName: node
+ linkType: hard
+
+"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8":
+ version: 1.2.8
+ resolution: "@nodelib/fs.walk@npm:1.2.8"
+ dependencies:
+ "@nodelib/fs.scandir": "npm:2.1.5"
+ fastq: "npm:^1.6.0"
+ checksum: db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1
+ languageName: node
+ linkType: hard
+
+"@npmcli/agent@npm:^2.0.0":
+ version: 2.2.0
+ resolution: "@npmcli/agent@npm:2.2.0"
+ dependencies:
+ agent-base: "npm:^7.1.0"
+ http-proxy-agent: "npm:^7.0.0"
+ https-proxy-agent: "npm:^7.0.1"
+ lru-cache: "npm:^10.0.1"
+ socks-proxy-agent: "npm:^8.0.1"
+ checksum: 7b89590598476dda88e79c473766b67c682aae6e0ab0213491daa6083dcc0c171f86b3868f5506f22c09aa5ea69ad7dfb78f4bf39a8dca375d89a42f408645b3
+ languageName: node
+ linkType: hard
+
+"@npmcli/fs@npm:^3.1.0":
+ version: 3.1.0
+ resolution: "@npmcli/fs@npm:3.1.0"
+ dependencies:
+ semver: "npm:^7.3.5"
+ checksum: 162b4a0b8705cd6f5c2470b851d1dc6cd228c86d2170e1769d738c1fbb69a87160901411c3c035331e9e99db72f1f1099a8b734bf1637cc32b9a5be1660e4e1e
+ languageName: node
+ linkType: hard
+
+"@pkgjs/parseargs@npm:^0.11.0":
+ version: 0.11.0
+ resolution: "@pkgjs/parseargs@npm:0.11.0"
+ checksum: 5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd
+ languageName: node
+ linkType: hard
+
+"@sindresorhus/is@npm:^4.0.0":
+ version: 4.6.0
+ resolution: "@sindresorhus/is@npm:4.6.0"
+ checksum: 33b6fb1d0834ec8dd7689ddc0e2781c2bfd8b9c4e4bacbcb14111e0ae00621f2c264b8a7d36541799d74888b5dccdf422a891a5cb5a709ace26325eedc81e22e
+ languageName: node
+ linkType: hard
+
+"@szmarczak/http-timer@npm:^4.0.5":
+ version: 4.0.6
+ resolution: "@szmarczak/http-timer@npm:4.0.6"
+ dependencies:
+ defer-to-connect: "npm:^2.0.0"
+ checksum: 73946918c025339db68b09abd91fa3001e87fc749c619d2e9c2003a663039d4c3cb89836c98a96598b3d47dec2481284ba85355392644911f5ecd2336536697f
+ languageName: node
+ linkType: hard
+
+"@tsconfig/node10@npm:^1.0.7":
+ version: 1.0.9
+ resolution: "@tsconfig/node10@npm:1.0.9"
+ checksum: c176a2c1e1b16be120c328300ea910df15fb9a5277010116d26818272341a11483c5a80059389d04edacf6fd2d03d4687ad3660870fdd1cc0b7109e160adb220
+ languageName: node
+ linkType: hard
+
+"@tsconfig/node12@npm:^1.0.7":
+ version: 1.0.11
+ resolution: "@tsconfig/node12@npm:1.0.11"
+ checksum: dddca2b553e2bee1308a056705103fc8304e42bb2d2cbd797b84403a223b25c78f2c683ec3e24a095e82cd435387c877239bffcb15a590ba817cd3f6b9a99fd9
+ languageName: node
+ linkType: hard
+
+"@tsconfig/node14@npm:^1.0.0":
+ version: 1.0.3
+ resolution: "@tsconfig/node14@npm:1.0.3"
+ checksum: 67c1316d065fdaa32525bc9449ff82c197c4c19092b9663b23213c8cbbf8d88b6ed6a17898e0cbc2711950fbfaf40388938c1c748a2ee89f7234fc9e7fe2bf44
+ languageName: node
+ linkType: hard
+
+"@tsconfig/node16@npm:^1.0.2":
+ version: 1.0.4
+ resolution: "@tsconfig/node16@npm:1.0.4"
+ checksum: 05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb
+ languageName: node
+ linkType: hard
+
+"@types/cacheable-request@npm:^6.0.1":
+ version: 6.0.3
+ resolution: "@types/cacheable-request@npm:6.0.3"
+ dependencies:
+ "@types/http-cache-semantics": "npm:*"
+ "@types/keyv": "npm:^3.1.4"
+ "@types/node": "npm:*"
+ "@types/responselike": "npm:^1.0.0"
+ checksum: 10816a88e4e5b144d43c1d15a81003f86d649776c7f410c9b5e6579d0ad9d4ca71c541962fb403077388b446e41af7ae38d313e46692144985f006ac5e11fa03
+ languageName: node
+ linkType: hard
+
+"@types/cli-progress@npm:^3.11.5":
+ version: 3.11.5
+ resolution: "@types/cli-progress@npm:3.11.5"
+ dependencies:
+ "@types/node": "npm:*"
+ checksum: bf00f543ee677f61b12e390876df59354943d6c13d96640171528e9b7827f4edb7701cdd4675d6256d13ef9ee542731bd5cae585e1b43502553f69fc210dcb92
+ languageName: node
+ linkType: hard
+
+"@types/discord-rpc@npm:^4.0.8":
+ version: 4.0.8
+ resolution: "@types/discord-rpc@npm:4.0.8"
+ dependencies:
+ "@types/events": "npm:*"
+ checksum: 134e3dcc972bd92dbe3037c01efd4e010bfd7bdb890b4a5871fc928ef2b38ab8eca661f392195c348638319fedb40f6c5f87d8bea850cca60312ec1fa0a68dc2
+ languageName: node
+ linkType: hard
+
+"@types/events@npm:*":
+ version: 3.0.3
+ resolution: "@types/events@npm:3.0.3"
+ checksum: 3a56f8c51eb4ebc0d05dcadca0c6636c816acc10216ce36c976fad11e54a01f4bb979a07211355686015884753b37f17d74bfdc7aaf4ebb027c1e8a501c7b21d
+ languageName: node
+ linkType: hard
+
+"@types/http-cache-semantics@npm:*":
+ version: 4.0.4
+ resolution: "@types/http-cache-semantics@npm:4.0.4"
+ checksum: 51b72568b4b2863e0fe8d6ce8aad72a784b7510d72dc866215642da51d84945a9459fa89f49ec48f1e9a1752e6a78e85a4cda0ded06b1c73e727610c925f9ce6
+ languageName: node
+ linkType: hard
+
+"@types/json-schema@npm:^7.0.12":
+ version: 7.0.15
+ resolution: "@types/json-schema@npm:7.0.15"
+ checksum: a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db
+ languageName: node
+ linkType: hard
+
+"@types/json5@npm:^0.0.29":
+ version: 0.0.29
+ resolution: "@types/json5@npm:0.0.29"
+ checksum: 6bf5337bc447b706bb5b4431d37686aa2ea6d07cfd6f79cc31de80170d6ff9b1c7384a9c0ccbc45b3f512bae9e9f75c2e12109806a15331dc94e8a8db6dbb4ac
+ languageName: node
+ linkType: hard
+
+"@types/keyv@npm:^3.1.4":
+ version: 3.1.4
+ resolution: "@types/keyv@npm:3.1.4"
+ dependencies:
+ "@types/node": "npm:*"
+ checksum: ff8f54fc49621210291f815fe5b15d809fd7d032941b3180743440bd507ecdf08b9e844625fa346af568c84bf34114eb378dcdc3e921a08ba1e2a08d7e3c809c
+ languageName: node
+ linkType: hard
+
+"@types/luxon@npm:^3.3.7":
+ version: 3.3.7
+ resolution: "@types/luxon@npm:3.3.7"
+ checksum: ff6ba3fd83636c23c077fea7b2841ad5365ae22872a250baef2a99885123f0d5e997cfbc1ac0afccf89c70ff24b1517b2cc0ebadb2bee27559c670574620bed1
+ languageName: node
+ linkType: hard
+
+"@types/node@npm:*, @types/node@npm:^20.10.5":
+ version: 20.10.5
+ resolution: "@types/node@npm:20.10.5"
+ dependencies:
+ undici-types: "npm:~5.26.4"
+ checksum: be30609aae0bfe492097815f166ccc07f465220cb604647fa4e5ec05a1d16c012a41b82b5f11ecfe2485cbb479d4d20384b95b809ca0bcff6d94d5bbafa645bb
+ languageName: node
+ linkType: hard
+
+"@types/responselike@npm:^1.0.0":
+ version: 1.0.3
+ resolution: "@types/responselike@npm:1.0.3"
+ dependencies:
+ "@types/node": "npm:*"
+ checksum: a58ba341cb9e7d74f71810a88862da7b2a6fa42e2a1fc0ce40498f6ea1d44382f0640117057da779f74c47039f7166bf48fad02dc876f94e005c7afa50f5e129
+ languageName: node
+ linkType: hard
+
+"@types/semver@npm:^7.5.0":
+ version: 7.5.6
+ resolution: "@types/semver@npm:7.5.6"
+ checksum: 196dc32db5f68cbcde2e6a42bb4aa5cbb100fa2b7bd9c8c82faaaf3e03fbe063e205dbb4f03c7cdf53da2edb70a0d34c9f2e601b54281b377eb8dc1743226acd
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/eslint-plugin@npm:^6.14.0":
+ version: 6.14.0
+ resolution: "@typescript-eslint/eslint-plugin@npm:6.14.0"
+ dependencies:
+ "@eslint-community/regexpp": "npm:^4.5.1"
+ "@typescript-eslint/scope-manager": "npm:6.14.0"
+ "@typescript-eslint/type-utils": "npm:6.14.0"
+ "@typescript-eslint/utils": "npm:6.14.0"
+ "@typescript-eslint/visitor-keys": "npm:6.14.0"
+ debug: "npm:^4.3.4"
+ graphemer: "npm:^1.4.0"
+ ignore: "npm:^5.2.4"
+ natural-compare: "npm:^1.4.0"
+ semver: "npm:^7.5.4"
+ ts-api-utils: "npm:^1.0.1"
+ peerDependencies:
+ "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha
+ eslint: ^7.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ checksum: 6360efb0e142ed91de5e9bddcd041f769feeedd256332733be08f7a74c8ae637cbfb78c6b85d747c73231bbb95cef95ed2d2854ab7d43aebfbedb3a191f447f1
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/parser@npm:^6.14.0":
+ version: 6.14.0
+ resolution: "@typescript-eslint/parser@npm:6.14.0"
+ dependencies:
+ "@typescript-eslint/scope-manager": "npm:6.14.0"
+ "@typescript-eslint/types": "npm:6.14.0"
+ "@typescript-eslint/typescript-estree": "npm:6.14.0"
+ "@typescript-eslint/visitor-keys": "npm:6.14.0"
+ debug: "npm:^4.3.4"
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ checksum: 0344f7f640374e7e5a5b50e9c90fbd161611b3f455132e541ef9116eef7bd3acf364db64bd38d4b6b4fe148414494620c9df660f8ddce036019c38ae8e146585
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/scope-manager@npm:6.14.0":
+ version: 6.14.0
+ resolution: "@typescript-eslint/scope-manager@npm:6.14.0"
+ dependencies:
+ "@typescript-eslint/types": "npm:6.14.0"
+ "@typescript-eslint/visitor-keys": "npm:6.14.0"
+ checksum: 8c59a215af3d7d24d8d0b21c28a858263de471650829f288a941e0eb8af8a054798da5c7594b7f39370219718270c18464b5edb96f451457e5f080a33ba57c2c
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/type-utils@npm:6.14.0":
+ version: 6.14.0
+ resolution: "@typescript-eslint/type-utils@npm:6.14.0"
+ dependencies:
+ "@typescript-eslint/typescript-estree": "npm:6.14.0"
+ "@typescript-eslint/utils": "npm:6.14.0"
+ debug: "npm:^4.3.4"
+ ts-api-utils: "npm:^1.0.1"
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ checksum: 836a6e84be5a245b07c76968c98e2f3bae064767dde720080fe8f33e226188510778dbca4199b7e42ef675ec3fd6d0ab522ec1c77d6e2a9b50e8e275fe7c72c9
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/types@npm:6.14.0":
+ version: 6.14.0
+ resolution: "@typescript-eslint/types@npm:6.14.0"
+ checksum: d59306a7a441982a4dcee7d775928fd5086aba9331f7a238f915723a0dc785df0e43af562a30a7c2f1b056a1e49fd64863a8d2450d31706193add0ade87334a4
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/typescript-estree@npm:6.14.0":
+ version: 6.14.0
+ resolution: "@typescript-eslint/typescript-estree@npm:6.14.0"
+ dependencies:
+ "@typescript-eslint/types": "npm:6.14.0"
+ "@typescript-eslint/visitor-keys": "npm:6.14.0"
+ debug: "npm:^4.3.4"
+ globby: "npm:^11.1.0"
+ is-glob: "npm:^4.0.3"
+ semver: "npm:^7.5.4"
+ ts-api-utils: "npm:^1.0.1"
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ checksum: 767c3309987b8ad053a2403605a9bd7c4eb3283dece864a741a7531a1c28eea4d85acaa4613141b64e194f9f6c4cbc5bc762c9b9f3a67c6202aa8cbb18b180d2
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/utils@npm:6.14.0":
+ version: 6.14.0
+ resolution: "@typescript-eslint/utils@npm:6.14.0"
+ dependencies:
+ "@eslint-community/eslint-utils": "npm:^4.4.0"
+ "@types/json-schema": "npm:^7.0.12"
+ "@types/semver": "npm:^7.5.0"
+ "@typescript-eslint/scope-manager": "npm:6.14.0"
+ "@typescript-eslint/types": "npm:6.14.0"
+ "@typescript-eslint/typescript-estree": "npm:6.14.0"
+ semver: "npm:^7.5.4"
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ checksum: 72689b2897b89e1bd1c71c1c2ae436d0ccfbcfffabf3be4378de74ad8138b2ecdbeeda7c1720e2f1754569e773f2fc7216f704335e1e56c38c7601ee1d190aeb
+ languageName: node
+ linkType: hard
+
+"@typescript-eslint/visitor-keys@npm:6.14.0":
+ version: 6.14.0
+ resolution: "@typescript-eslint/visitor-keys@npm:6.14.0"
+ dependencies:
+ "@typescript-eslint/types": "npm:6.14.0"
+ eslint-visitor-keys: "npm:^3.4.1"
+ checksum: 0e2363f9f1986ebdb41507c54a666fa1c336eb6beb383dc342a10844d3c42c89067b21c3f158851fa6f0825e1e451a5470b5454fde70a6fc33b4b0259462d954
+ languageName: node
+ linkType: hard
+
+"@ungap/structured-clone@npm:^1.2.0":
+ version: 1.2.0
+ resolution: "@ungap/structured-clone@npm:1.2.0"
+ checksum: 8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d
+ languageName: node
+ linkType: hard
+
+"abbrev@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "abbrev@npm:2.0.0"
+ checksum: f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372
+ languageName: node
+ linkType: hard
+
+"acorn-jsx@npm:^5.3.2":
+ version: 5.3.2
+ resolution: "acorn-jsx@npm:5.3.2"
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+ checksum: 4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1
+ languageName: node
+ linkType: hard
+
+"acorn-walk@npm:^8.1.1":
+ version: 8.3.1
+ resolution: "acorn-walk@npm:8.3.1"
+ checksum: a23d2f7c6b6cad617f4c77f14dfeb062a239208d61753e9ba808d916c550add92b39535467d2e6028280761ac4f5a904cc9df21530b84d3f834e3edef74ddde5
+ languageName: node
+ linkType: hard
+
+"acorn@npm:^8.4.1, acorn@npm:^8.9.0":
+ version: 8.11.2
+ resolution: "acorn@npm:8.11.2"
+ bin:
+ acorn: bin/acorn
+ checksum: a3ed76c761b75ec54b1ec3068fb7f113a182e95aea7f322f65098c2958d232e3d211cb6dac35ff9c647024b63714bc528a26d54a925d1fef2c25585b4c8e4017
+ languageName: node
+ linkType: hard
+
+"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0":
+ version: 7.1.0
+ resolution: "agent-base@npm:7.1.0"
+ dependencies:
+ debug: "npm:^4.3.4"
+ checksum: fc974ab57ffdd8421a2bc339644d312a9cca320c20c3393c9d8b1fd91731b9bbabdb985df5fc860f5b79d81c3e350daa3fcb31c5c07c0bb385aafc817df004ce
+ languageName: node
+ linkType: hard
+
+"aggregate-error@npm:^3.0.0":
+ version: 3.1.0
+ resolution: "aggregate-error@npm:3.1.0"
+ dependencies:
+ clean-stack: "npm:^2.0.0"
+ indent-string: "npm:^4.0.0"
+ checksum: a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039
+ languageName: node
+ linkType: hard
+
+"ajv@npm:^6.12.4":
+ version: 6.12.6
+ resolution: "ajv@npm:6.12.6"
+ dependencies:
+ fast-deep-equal: "npm:^3.1.1"
+ fast-json-stable-stringify: "npm:^2.0.0"
+ json-schema-traverse: "npm:^0.4.1"
+ uri-js: "npm:^4.2.2"
+ checksum: 41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71
+ languageName: node
+ linkType: hard
+
+"ajv@npm:^8.0.1":
+ version: 8.12.0
+ resolution: "ajv@npm:8.12.0"
+ dependencies:
+ fast-deep-equal: "npm:^3.1.1"
+ json-schema-traverse: "npm:^1.0.0"
+ require-from-string: "npm:^2.0.2"
+ uri-js: "npm:^4.2.2"
+ checksum: ac4f72adf727ee425e049bc9d8b31d4a57e1c90da8d28bcd23d60781b12fcd6fc3d68db5df16994c57b78b94eed7988f5a6b482fd376dc5b084125e20a0a622e
+ languageName: node
+ linkType: hard
+
+"ansi-colors@npm:^4.1.1":
+ version: 4.1.3
+ resolution: "ansi-colors@npm:4.1.3"
+ checksum: ec87a2f59902f74e61eada7f6e6fe20094a628dab765cfdbd03c3477599368768cffccdb5d3bb19a1b6c99126783a143b1fee31aab729b31ffe5836c7e5e28b9
+ languageName: node
+ linkType: hard
+
+"ansi-regex@npm:^5.0.1":
+ version: 5.0.1
+ resolution: "ansi-regex@npm:5.0.1"
+ checksum: 9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737
+ languageName: node
+ linkType: hard
+
+"ansi-regex@npm:^6.0.1":
+ version: 6.0.1
+ resolution: "ansi-regex@npm:6.0.1"
+ checksum: cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08
+ languageName: node
+ linkType: hard
+
+"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0":
+ version: 4.3.0
+ resolution: "ansi-styles@npm:4.3.0"
+ dependencies:
+ color-convert: "npm:^2.0.1"
+ checksum: 895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041
+ languageName: node
+ linkType: hard
+
+"ansi-styles@npm:^6.1.0":
+ version: 6.2.1
+ resolution: "ansi-styles@npm:6.2.1"
+ checksum: 5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c
+ languageName: node
+ linkType: hard
+
+"arg@npm:^4.1.0":
+ version: 4.1.3
+ resolution: "arg@npm:4.1.3"
+ checksum: 070ff801a9d236a6caa647507bdcc7034530604844d64408149a26b9e87c2f97650055c0f049abd1efc024b334635c01f29e0b632b371ac3f26130f4cf65997a
+ languageName: node
+ linkType: hard
+
+"argparse@npm:^2.0.1":
+ version: 2.0.1
+ resolution: "argparse@npm:2.0.1"
+ checksum: c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e
+ languageName: node
+ linkType: hard
+
+"array-buffer-byte-length@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "array-buffer-byte-length@npm:1.0.0"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ is-array-buffer: "npm:^3.0.1"
+ checksum: 12f84f6418b57a954caa41654e5e63e019142a4bbb2c6829ba86d1ba65d31ccfaf1461d1743556fd32b091fac34ff44d9dfbdb001402361c45c373b2c86f5c20
+ languageName: node
+ linkType: hard
+
+"array-includes@npm:^3.1.7":
+ version: 3.1.7
+ resolution: "array-includes@npm:3.1.7"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ define-properties: "npm:^1.2.0"
+ es-abstract: "npm:^1.22.1"
+ get-intrinsic: "npm:^1.2.1"
+ is-string: "npm:^1.0.7"
+ checksum: 692907bd7f19d06dc58ccb761f34b58f5dc0b437d2b47a8fe42a1501849a5cf5c27aed3d521a9702667827c2c85a7e75df00a402c438094d87fc43f39ebf9b2b
+ languageName: node
+ linkType: hard
+
+"array-union@npm:^2.1.0":
+ version: 2.1.0
+ resolution: "array-union@npm:2.1.0"
+ checksum: 429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962
+ languageName: node
+ linkType: hard
+
+"array.prototype.findlastindex@npm:^1.2.3":
+ version: 1.2.3
+ resolution: "array.prototype.findlastindex@npm:1.2.3"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ define-properties: "npm:^1.2.0"
+ es-abstract: "npm:^1.22.1"
+ es-shim-unscopables: "npm:^1.0.0"
+ get-intrinsic: "npm:^1.2.1"
+ checksum: 2c5c4d3f07512d6729f728f6260a314c00f2eb0a243123092661fa1bc65dce90234c3b483b5f978396eccef6f69c50f0bea248448aaf9cdfcd1cedad6217acbb
+ languageName: node
+ linkType: hard
+
+"array.prototype.flat@npm:^1.3.2":
+ version: 1.3.2
+ resolution: "array.prototype.flat@npm:1.3.2"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ define-properties: "npm:^1.2.0"
+ es-abstract: "npm:^1.22.1"
+ es-shim-unscopables: "npm:^1.0.0"
+ checksum: a578ed836a786efbb6c2db0899ae80781b476200617f65a44846cb1ed8bd8b24c8821b83703375d8af639c689497b7b07277060024b9919db94ac3e10dc8a49b
+ languageName: node
+ linkType: hard
+
+"array.prototype.flatmap@npm:^1.3.2":
+ version: 1.3.2
+ resolution: "array.prototype.flatmap@npm:1.3.2"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ define-properties: "npm:^1.2.0"
+ es-abstract: "npm:^1.22.1"
+ es-shim-unscopables: "npm:^1.0.0"
+ checksum: 67b3f1d602bb73713265145853128b1ad77cc0f9b833c7e1e056b323fbeac41a4ff1c9c99c7b9445903caea924d9ca2450578d9011913191aa88cc3c3a4b54f4
+ languageName: node
+ linkType: hard
+
+"arraybuffer.prototype.slice@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "arraybuffer.prototype.slice@npm:1.0.2"
+ dependencies:
+ array-buffer-byte-length: "npm:^1.0.0"
+ call-bind: "npm:^1.0.2"
+ define-properties: "npm:^1.2.0"
+ es-abstract: "npm:^1.22.1"
+ get-intrinsic: "npm:^1.2.1"
+ is-array-buffer: "npm:^3.0.2"
+ is-shared-array-buffer: "npm:^1.0.2"
+ checksum: 96b6e40e439678ffb7fa266398510074d33c3980fbb475490b69980cca60adec3b0777047ef377068a29862157f83edef42efc64ce48ce38977d04d68de5b7fb
+ languageName: node
+ linkType: hard
+
+"astral-regex@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "astral-regex@npm:2.0.0"
+ checksum: f63d439cc383db1b9c5c6080d1e240bd14dae745f15d11ec5da863e182bbeca70df6c8191cffef5deba0b566ef98834610a68be79ac6379c95eeb26e1b310e25
+ languageName: node
+ linkType: hard
+
+"available-typed-arrays@npm:^1.0.5":
+ version: 1.0.5
+ resolution: "available-typed-arrays@npm:1.0.5"
+ checksum: c4df567ca72d2754a6cbad20088f5f98b1065b3360178169fa9b44ea101af62c0f423fc3854fa820fd6895b6b9171b8386e71558203103ff8fc2ad503fdcc660
+ languageName: node
+ linkType: hard
+
+"balanced-match@npm:^1.0.0":
+ version: 1.0.2
+ resolution: "balanced-match@npm:1.0.2"
+ checksum: 9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee
+ languageName: node
+ linkType: hard
+
+"bindings@npm:^1.3.0":
+ version: 1.5.0
+ resolution: "bindings@npm:1.5.0"
+ dependencies:
+ file-uri-to-path: "npm:1.0.0"
+ checksum: 3dab2491b4bb24124252a91e656803eac24292473e56554e35bbfe3cc1875332cfa77600c3bac7564049dc95075bf6fcc63a4609920ff2d64d0fe405fcf0d4ba
+ languageName: node
+ linkType: hard
+
+"brace-expansion@npm:^1.1.7":
+ version: 1.1.11
+ resolution: "brace-expansion@npm:1.1.11"
+ dependencies:
+ balanced-match: "npm:^1.0.0"
+ concat-map: "npm:0.0.1"
+ checksum: 695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668
+ languageName: node
+ linkType: hard
+
+"brace-expansion@npm:^2.0.1":
+ version: 2.0.1
+ resolution: "brace-expansion@npm:2.0.1"
+ dependencies:
+ balanced-match: "npm:^1.0.0"
+ checksum: b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f
+ languageName: node
+ linkType: hard
+
+"braces@npm:^3.0.2":
+ version: 3.0.2
+ resolution: "braces@npm:3.0.2"
+ dependencies:
+ fill-range: "npm:^7.0.1"
+ checksum: 321b4d675791479293264019156ca322163f02dc06e3c4cab33bb15cd43d80b51efef69b0930cfde3acd63d126ebca24cd0544fa6f261e093a0fb41ab9dda381
+ languageName: node
+ linkType: hard
+
+"cacache@npm:^18.0.0":
+ version: 18.0.1
+ resolution: "cacache@npm:18.0.1"
+ dependencies:
+ "@npmcli/fs": "npm:^3.1.0"
+ fs-minipass: "npm:^3.0.0"
+ glob: "npm:^10.2.2"
+ lru-cache: "npm:^10.0.1"
+ minipass: "npm:^7.0.3"
+ minipass-collect: "npm:^2.0.1"
+ minipass-flush: "npm:^1.0.5"
+ minipass-pipeline: "npm:^1.2.4"
+ p-map: "npm:^4.0.0"
+ ssri: "npm:^10.0.0"
+ tar: "npm:^6.1.11"
+ unique-filename: "npm:^3.0.0"
+ checksum: a31666805a80a8b16ad3f85faf66750275a9175a3480896f4f6d31b5d53ef190484fabd71bdb6d2ea5603c717fbef09f4af03d6a65b525c8ef0afaa44c361866
+ languageName: node
+ linkType: hard
+
+"cacheable-lookup@npm:^5.0.3":
+ version: 5.0.4
+ resolution: "cacheable-lookup@npm:5.0.4"
+ checksum: a6547fb4954b318aa831cbdd2f7b376824bc784fb1fa67610e4147099e3074726072d9af89f12efb69121415a0e1f2918a8ddd4aafcbcf4e91fbeef4a59cd42c
+ languageName: node
+ linkType: hard
+
+"cacheable-request@npm:^7.0.2":
+ version: 7.0.4
+ resolution: "cacheable-request@npm:7.0.4"
+ dependencies:
+ clone-response: "npm:^1.0.2"
+ get-stream: "npm:^5.1.0"
+ http-cache-semantics: "npm:^4.0.0"
+ keyv: "npm:^4.0.0"
+ lowercase-keys: "npm:^2.0.0"
+ normalize-url: "npm:^6.0.1"
+ responselike: "npm:^2.0.0"
+ checksum: 0834a7d17ae71a177bc34eab06de112a43f9b5ad05ebe929bec983d890a7d9f2bc5f1aa8bb67ea2b65e07a3bc74bea35fa62dd36dbac52876afe36fdcf83da41
+ languageName: node
+ linkType: hard
+
+"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.4, call-bind@npm:^1.0.5":
+ version: 1.0.5
+ resolution: "call-bind@npm:1.0.5"
+ dependencies:
+ function-bind: "npm:^1.1.2"
+ get-intrinsic: "npm:^1.2.1"
+ set-function-length: "npm:^1.1.1"
+ checksum: a6172c168fd6dacf744fcde745099218056bd755c50415b592655dcd6562157ed29f130f56c3f6db2250f67e4bd62e5c218cdc56d7bfd76e0bda50770fce2d10
+ languageName: node
+ linkType: hard
+
+"callsites@npm:^3.0.0":
+ version: 3.1.0
+ resolution: "callsites@npm:3.1.0"
+ checksum: fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301
+ languageName: node
+ linkType: hard
+
+"chalk@npm:^4.0.0":
+ version: 4.1.2
+ resolution: "chalk@npm:4.1.2"
+ dependencies:
+ ansi-styles: "npm:^4.1.0"
+ supports-color: "npm:^7.1.0"
+ checksum: 4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880
+ languageName: node
+ linkType: hard
+
+"chownr@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "chownr@npm:2.0.0"
+ checksum: 594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6
+ languageName: node
+ linkType: hard
+
+"clean-stack@npm:^2.0.0":
+ version: 2.2.0
+ resolution: "clean-stack@npm:2.2.0"
+ checksum: 1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1
+ languageName: node
+ linkType: hard
+
+"cli-progress@npm:^3.12.0":
+ version: 3.12.0
+ resolution: "cli-progress@npm:3.12.0"
+ dependencies:
+ string-width: "npm:^4.2.3"
+ checksum: f464cb19ebde2f3880620a2adfaeeefaec6cb15c8e610c8a659ca1047ee90d69f3bf2fdabbb1fe33ac408678e882e3e0eecdb84ab5df0edf930b269b8a72682d
+ languageName: node
+ linkType: hard
+
+"clone-response@npm:^1.0.2":
+ version: 1.0.3
+ resolution: "clone-response@npm:1.0.3"
+ dependencies:
+ mimic-response: "npm:^1.0.0"
+ checksum: 06a2b611824efb128810708baee3bd169ec9a1bf5976a5258cd7eb3f7db25f00166c6eee5961f075c7e38e194f373d4fdf86b8166ad5b9c7e82bbd2e333a6087
+ languageName: node
+ linkType: hard
+
+"color-convert@npm:^2.0.1":
+ version: 2.0.1
+ resolution: "color-convert@npm:2.0.1"
+ dependencies:
+ color-name: "npm:~1.1.4"
+ checksum: 37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7
+ languageName: node
+ linkType: hard
+
+"color-name@npm:~1.1.4":
+ version: 1.1.4
+ resolution: "color-name@npm:1.1.4"
+ checksum: a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95
+ languageName: node
+ linkType: hard
+
+"colors@npm:^1.4.0":
+ version: 1.4.0
+ resolution: "colors@npm:1.4.0"
+ checksum: 9af357c019da3c5a098a301cf64e3799d27549d8f185d86f79af23069e4f4303110d115da98483519331f6fb71c8568d5688fa1c6523600044fd4a54e97c4efb
+ languageName: node
+ linkType: hard
+
+"concat-map@npm:0.0.1":
+ version: 0.0.1
+ resolution: "concat-map@npm:0.0.1"
+ checksum: c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f
+ languageName: node
+ linkType: hard
+
+"confusing-browser-globals@npm:^1.0.10":
+ version: 1.0.11
+ resolution: "confusing-browser-globals@npm:1.0.11"
+ checksum: 475d0a284fa964a5182b519af5738b5b64bf7e413cfd703c1b3496bf6f4df9f827893a9b221c0ea5873c1476835beb1e0df569ba643eff0734010c1eb780589e
+ languageName: node
+ linkType: hard
+
+"create-require@npm:^1.1.0":
+ version: 1.1.1
+ resolution: "create-require@npm:1.1.1"
+ checksum: 157cbc59b2430ae9a90034a5f3a1b398b6738bf510f713edc4d4e45e169bc514d3d99dd34d8d01ca7ae7830b5b8b537e46ae8f3c8f932371b0875c0151d7ec91
+ languageName: node
+ linkType: hard
+
+"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2":
+ version: 7.0.3
+ resolution: "cross-spawn@npm:7.0.3"
+ dependencies:
+ path-key: "npm:^3.1.0"
+ shebang-command: "npm:^2.0.0"
+ which: "npm:^2.0.1"
+ checksum: 5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750
+ languageName: node
+ linkType: hard
+
+"debug@npm:4, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.4":
+ version: 4.3.4
+ resolution: "debug@npm:4.3.4"
+ dependencies:
+ ms: "npm:2.1.2"
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ checksum: cedbec45298dd5c501d01b92b119cd3faebe5438c3917ff11ae1bff86a6c722930ac9c8659792824013168ba6db7c4668225d845c633fbdafbbf902a6389f736
+ languageName: node
+ linkType: hard
+
+"debug@npm:^3.2.7":
+ version: 3.2.7
+ resolution: "debug@npm:3.2.7"
+ dependencies:
+ ms: "npm:^2.1.1"
+ checksum: 37d96ae42cbc71c14844d2ae3ba55adf462ec89fd3a999459dec3833944cd999af6007ff29c780f1c61153bcaaf2c842d1e4ce1ec621e4fc4923244942e4a02a
+ languageName: node
+ linkType: hard
+
+"decompress-response@npm:^6.0.0":
+ version: 6.0.0
+ resolution: "decompress-response@npm:6.0.0"
+ dependencies:
+ mimic-response: "npm:^3.1.0"
+ checksum: bd89d23141b96d80577e70c54fb226b2f40e74a6817652b80a116d7befb8758261ad073a8895648a29cc0a5947021ab66705cb542fa9c143c82022b27c5b175e
+ languageName: node
+ linkType: hard
+
+"deep-is@npm:^0.1.3":
+ version: 0.1.4
+ resolution: "deep-is@npm:0.1.4"
+ checksum: 7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c
+ languageName: node
+ linkType: hard
+
+"defer-to-connect@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "defer-to-connect@npm:2.0.1"
+ checksum: 625ce28e1b5ad10cf77057b9a6a727bf84780c17660f6644dab61dd34c23de3001f03cedc401f7d30a4ed9965c2e8a7336e220a329146f2cf85d4eddea429782
+ languageName: node
+ linkType: hard
+
+"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.1":
+ version: 1.1.1
+ resolution: "define-data-property@npm:1.1.1"
+ dependencies:
+ get-intrinsic: "npm:^1.2.1"
+ gopd: "npm:^1.0.1"
+ has-property-descriptors: "npm:^1.0.0"
+ checksum: 77ef6e0bceb515e05b5913ab635a84d537cee84f8a7c37c77fdcb31fc5b80f6dbe81b33375e4b67d96aa04e6a0d8d4ea099e431d83f089af8d93adfb584bcb94
+ languageName: node
+ linkType: hard
+
+"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1":
+ version: 1.2.1
+ resolution: "define-properties@npm:1.2.1"
+ dependencies:
+ define-data-property: "npm:^1.0.1"
+ has-property-descriptors: "npm:^1.0.0"
+ object-keys: "npm:^1.1.1"
+ checksum: 88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3
+ languageName: node
+ linkType: hard
+
+"diff@npm:^4.0.1":
+ version: 4.0.2
+ resolution: "diff@npm:4.0.2"
+ checksum: 81b91f9d39c4eaca068eb0c1eb0e4afbdc5bb2941d197f513dd596b820b956fef43485876226d65d497bebc15666aa2aa82c679e84f65d5f2bfbf14ee46e32c1
+ languageName: node
+ linkType: hard
+
+"dir-glob@npm:^3.0.1":
+ version: 3.0.1
+ resolution: "dir-glob@npm:3.0.1"
+ dependencies:
+ path-type: "npm:^4.0.0"
+ checksum: dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c
+ languageName: node
+ linkType: hard
+
+"discord-rpc@npm:^4.0.1":
+ version: 4.0.1
+ resolution: "discord-rpc@npm:4.0.1"
+ dependencies:
+ node-fetch: "npm:^2.6.1"
+ register-scheme: "github:devsnek/node-register-scheme"
+ ws: "npm:^7.3.1"
+ dependenciesMeta:
+ register-scheme:
+ optional: true
+ checksum: 9a055efcbd252b5ba91cbfc2c1a0130eba75e389c2b7ede5b0db2d7c7499b36d1a36c3503dad50370df184cfabd7e4e5c4689a7e043222fc4baf37a020fa3957
+ languageName: node
+ linkType: hard
+
+"doctrine@npm:^2.1.0":
+ version: 2.1.0
+ resolution: "doctrine@npm:2.1.0"
+ dependencies:
+ esutils: "npm:^2.0.2"
+ checksum: b6416aaff1f380bf56c3b552f31fdf7a69b45689368deca72d28636f41c16bb28ec3ebc40ace97db4c1afc0ceeb8120e8492fe0046841c94c2933b2e30a7d5ac
+ languageName: node
+ linkType: hard
+
+"doctrine@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "doctrine@npm:3.0.0"
+ dependencies:
+ esutils: "npm:^2.0.2"
+ checksum: c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520
+ languageName: node
+ linkType: hard
+
+"eastasianwidth@npm:^0.2.0":
+ version: 0.2.0
+ resolution: "eastasianwidth@npm:0.2.0"
+ checksum: 26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39
+ languageName: node
+ linkType: hard
+
+"emoji-regex@npm:^8.0.0":
+ version: 8.0.0
+ resolution: "emoji-regex@npm:8.0.0"
+ checksum: b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010
+ languageName: node
+ linkType: hard
+
+"emoji-regex@npm:^9.2.2":
+ version: 9.2.2
+ resolution: "emoji-regex@npm:9.2.2"
+ checksum: af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639
+ languageName: node
+ linkType: hard
+
+"encoding@npm:^0.1.13":
+ version: 0.1.13
+ resolution: "encoding@npm:0.1.13"
+ dependencies:
+ iconv-lite: "npm:^0.6.2"
+ checksum: 36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039
+ languageName: node
+ linkType: hard
+
+"end-of-stream@npm:^1.1.0":
+ version: 1.4.4
+ resolution: "end-of-stream@npm:1.4.4"
+ dependencies:
+ once: "npm:^1.4.0"
+ checksum: 870b423afb2d54bb8d243c63e07c170409d41e20b47eeef0727547aea5740bd6717aca45597a9f2745525667a6b804c1e7bede41f856818faee5806dd9ff3975
+ languageName: node
+ linkType: hard
+
+"enquirer@npm:^2.4.1":
+ version: 2.4.1
+ resolution: "enquirer@npm:2.4.1"
+ dependencies:
+ ansi-colors: "npm:^4.1.1"
+ strip-ansi: "npm:^6.0.1"
+ checksum: 43850479d7a51d36a9c924b518dcdc6373b5a8ae3401097d336b7b7e258324749d0ad37a1fcaa5706f04799baa05585cd7af19ebdf7667673e7694435fcea918
+ languageName: node
+ linkType: hard
+
+"env-paths@npm:^2.2.0":
+ version: 2.2.1
+ resolution: "env-paths@npm:2.2.1"
+ checksum: 285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4
+ languageName: node
+ linkType: hard
+
+"err-code@npm:^2.0.2":
+ version: 2.0.3
+ resolution: "err-code@npm:2.0.3"
+ checksum: b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66
+ languageName: node
+ linkType: hard
+
+"es-abstract@npm:^1.22.1":
+ version: 1.22.3
+ resolution: "es-abstract@npm:1.22.3"
+ dependencies:
+ array-buffer-byte-length: "npm:^1.0.0"
+ arraybuffer.prototype.slice: "npm:^1.0.2"
+ available-typed-arrays: "npm:^1.0.5"
+ call-bind: "npm:^1.0.5"
+ es-set-tostringtag: "npm:^2.0.1"
+ es-to-primitive: "npm:^1.2.1"
+ function.prototype.name: "npm:^1.1.6"
+ get-intrinsic: "npm:^1.2.2"
+ get-symbol-description: "npm:^1.0.0"
+ globalthis: "npm:^1.0.3"
+ gopd: "npm:^1.0.1"
+ has-property-descriptors: "npm:^1.0.0"
+ has-proto: "npm:^1.0.1"
+ has-symbols: "npm:^1.0.3"
+ hasown: "npm:^2.0.0"
+ internal-slot: "npm:^1.0.5"
+ is-array-buffer: "npm:^3.0.2"
+ is-callable: "npm:^1.2.7"
+ is-negative-zero: "npm:^2.0.2"
+ is-regex: "npm:^1.1.4"
+ is-shared-array-buffer: "npm:^1.0.2"
+ is-string: "npm:^1.0.7"
+ is-typed-array: "npm:^1.1.12"
+ is-weakref: "npm:^1.0.2"
+ object-inspect: "npm:^1.13.1"
+ object-keys: "npm:^1.1.1"
+ object.assign: "npm:^4.1.4"
+ regexp.prototype.flags: "npm:^1.5.1"
+ safe-array-concat: "npm:^1.0.1"
+ safe-regex-test: "npm:^1.0.0"
+ string.prototype.trim: "npm:^1.2.8"
+ string.prototype.trimend: "npm:^1.0.7"
+ string.prototype.trimstart: "npm:^1.0.7"
+ typed-array-buffer: "npm:^1.0.0"
+ typed-array-byte-length: "npm:^1.0.0"
+ typed-array-byte-offset: "npm:^1.0.0"
+ typed-array-length: "npm:^1.0.4"
+ unbox-primitive: "npm:^1.0.2"
+ which-typed-array: "npm:^1.1.13"
+ checksum: da31ec43b1c8eb47ba8a17693cac143682a1078b6c3cd883ce0e2062f135f532e93d873694ef439670e1f6ca03195118f43567ba6f33fb0d6c7daae750090236
+ languageName: node
+ linkType: hard
+
+"es-set-tostringtag@npm:^2.0.1":
+ version: 2.0.2
+ resolution: "es-set-tostringtag@npm:2.0.2"
+ dependencies:
+ get-intrinsic: "npm:^1.2.2"
+ has-tostringtag: "npm:^1.0.0"
+ hasown: "npm:^2.0.0"
+ checksum: 176d6bd1be31dd0145dcceee62bb78d4a5db7f81db437615a18308a6f62bcffe45c15081278413455e8cf0aad4ea99079de66f8de389605942dfdacbad74c2d5
+ languageName: node
+ linkType: hard
+
+"es-shim-unscopables@npm:^1.0.0":
+ version: 1.0.2
+ resolution: "es-shim-unscopables@npm:1.0.2"
+ dependencies:
+ hasown: "npm:^2.0.0"
+ checksum: f495af7b4b7601a4c0cfb893581c352636e5c08654d129590386a33a0432cf13a7bdc7b6493801cadd990d838e2839b9013d1de3b880440cb537825e834fe783
+ 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: "npm:^1.1.4"
+ is-date-object: "npm:^1.0.1"
+ is-symbol: "npm:^1.0.2"
+ checksum: 0886572b8dc075cb10e50c0af62a03d03a68e1e69c388bd4f10c0649ee41b1fbb24840a1b7e590b393011b5cdbe0144b776da316762653685432df37d6de60f1
+ languageName: node
+ linkType: hard
+
+"escape-string-regexp@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "escape-string-regexp@npm:4.0.0"
+ checksum: 9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9
+ languageName: node
+ linkType: hard
+
+"eslint-config-airbnb-base@npm:^15.0.0":
+ version: 15.0.0
+ resolution: "eslint-config-airbnb-base@npm:15.0.0"
+ dependencies:
+ confusing-browser-globals: "npm:^1.0.10"
+ object.assign: "npm:^4.1.2"
+ object.entries: "npm:^1.1.5"
+ semver: "npm:^6.3.0"
+ peerDependencies:
+ eslint: ^7.32.0 || ^8.2.0
+ eslint-plugin-import: ^2.25.2
+ checksum: 93639d991654414756f82ad7860aac30b0dc6797277b7904ddb53ed88a32c470598696bbc6c503e066414024d305221974d3769e6642de65043bedf29cbbd30f
+ languageName: node
+ linkType: hard
+
+"eslint-config-airbnb@npm:^19.0.4":
+ version: 19.0.4
+ resolution: "eslint-config-airbnb@npm:19.0.4"
+ dependencies:
+ eslint-config-airbnb-base: "npm:^15.0.0"
+ object.assign: "npm:^4.1.2"
+ object.entries: "npm:^1.1.5"
+ peerDependencies:
+ eslint: ^7.32.0 || ^8.2.0
+ eslint-plugin-import: ^2.25.3
+ eslint-plugin-jsx-a11y: ^6.5.1
+ eslint-plugin-react: ^7.28.0
+ eslint-plugin-react-hooks: ^4.3.0
+ checksum: 867feeda45c4b480b1b8eff8fabc1bb107e837da8b48e5039e0c175ae6ad34af383b1924fc163bbfcef24a324e6651b1515e5bd12cbcbb19535a8838e2544a02
+ languageName: node
+ linkType: hard
+
+"eslint-formatter-table@npm:^7.32.1":
+ version: 7.32.1
+ resolution: "eslint-formatter-table@npm:7.32.1"
+ dependencies:
+ chalk: "npm:^4.0.0"
+ table: "npm:^6.0.9"
+ checksum: f1d93eba886795fa6de4f4bf17367253e6e8cb8d8b9c357c4d741a36e5227dde14f1f74f3a12ffff031e0acf725217f0855a172cfa4e55da47744a0185a73acb
+ languageName: node
+ linkType: hard
+
+"eslint-import-resolver-node@npm:^0.3.9":
+ version: 0.3.9
+ resolution: "eslint-import-resolver-node@npm:0.3.9"
+ dependencies:
+ debug: "npm:^3.2.7"
+ is-core-module: "npm:^2.13.0"
+ resolve: "npm:^1.22.4"
+ checksum: 0ea8a24a72328a51fd95aa8f660dcca74c1429806737cf10261ab90cfcaaf62fd1eff664b76a44270868e0a932711a81b250053942595bcd00a93b1c1575dd61
+ languageName: node
+ linkType: hard
+
+"eslint-module-utils@npm:^2.8.0":
+ version: 2.8.0
+ resolution: "eslint-module-utils@npm:2.8.0"
+ dependencies:
+ debug: "npm:^3.2.7"
+ peerDependenciesMeta:
+ eslint:
+ optional: true
+ checksum: c7a8d1a58d76ec8217a8fea49271ec8132d1b9390965a75f6a4ecbc9e5983d742195b46d2e4378231d2186801439fe1aa5700714b0bfd4eb17aac6e1b65309df
+ languageName: node
+ linkType: hard
+
+"eslint-plugin-import@npm:^2.29.1":
+ version: 2.29.1
+ resolution: "eslint-plugin-import@npm:2.29.1"
+ dependencies:
+ array-includes: "npm:^3.1.7"
+ array.prototype.findlastindex: "npm:^1.2.3"
+ array.prototype.flat: "npm:^1.3.2"
+ array.prototype.flatmap: "npm:^1.3.2"
+ debug: "npm:^3.2.7"
+ doctrine: "npm:^2.1.0"
+ eslint-import-resolver-node: "npm:^0.3.9"
+ eslint-module-utils: "npm:^2.8.0"
+ hasown: "npm:^2.0.0"
+ is-core-module: "npm:^2.13.1"
+ is-glob: "npm:^4.0.3"
+ minimatch: "npm:^3.1.2"
+ object.fromentries: "npm:^2.0.7"
+ object.groupby: "npm:^1.0.1"
+ object.values: "npm:^1.1.7"
+ semver: "npm:^6.3.1"
+ tsconfig-paths: "npm:^3.15.0"
+ peerDependencies:
+ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
+ checksum: 5f35dfbf4e8e67f741f396987de9504ad125c49f4144508a93282b4ea0127e052bde65ab6def1f31b6ace6d5d430be698333f75bdd7dca3bc14226c92a083196
+ languageName: node
+ linkType: hard
+
+"eslint-scope@npm:^7.2.2":
+ version: 7.2.2
+ resolution: "eslint-scope@npm:7.2.2"
+ dependencies:
+ esrecurse: "npm:^4.3.0"
+ estraverse: "npm:^5.2.0"
+ checksum: 613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116
+ languageName: node
+ linkType: hard
+
+"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3":
+ version: 3.4.3
+ resolution: "eslint-visitor-keys@npm:3.4.3"
+ checksum: 92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820
+ languageName: node
+ linkType: hard
+
+"eslint@npm:^8.56.0":
+ version: 8.56.0
+ resolution: "eslint@npm:8.56.0"
+ dependencies:
+ "@eslint-community/eslint-utils": "npm:^4.2.0"
+ "@eslint-community/regexpp": "npm:^4.6.1"
+ "@eslint/eslintrc": "npm:^2.1.4"
+ "@eslint/js": "npm:8.56.0"
+ "@humanwhocodes/config-array": "npm:^0.11.13"
+ "@humanwhocodes/module-importer": "npm:^1.0.1"
+ "@nodelib/fs.walk": "npm:^1.2.8"
+ "@ungap/structured-clone": "npm:^1.2.0"
+ ajv: "npm:^6.12.4"
+ chalk: "npm:^4.0.0"
+ cross-spawn: "npm:^7.0.2"
+ debug: "npm:^4.3.2"
+ doctrine: "npm:^3.0.0"
+ escape-string-regexp: "npm:^4.0.0"
+ eslint-scope: "npm:^7.2.2"
+ eslint-visitor-keys: "npm:^3.4.3"
+ espree: "npm:^9.6.1"
+ esquery: "npm:^1.4.2"
+ esutils: "npm:^2.0.2"
+ fast-deep-equal: "npm:^3.1.3"
+ file-entry-cache: "npm:^6.0.1"
+ find-up: "npm:^5.0.0"
+ glob-parent: "npm:^6.0.2"
+ globals: "npm:^13.19.0"
+ graphemer: "npm:^1.4.0"
+ ignore: "npm:^5.2.0"
+ imurmurhash: "npm:^0.1.4"
+ is-glob: "npm:^4.0.0"
+ is-path-inside: "npm:^3.0.3"
+ js-yaml: "npm:^4.1.0"
+ json-stable-stringify-without-jsonify: "npm:^1.0.1"
+ levn: "npm:^0.4.1"
+ lodash.merge: "npm:^4.6.2"
+ minimatch: "npm:^3.1.2"
+ natural-compare: "npm:^1.4.0"
+ optionator: "npm:^0.9.3"
+ strip-ansi: "npm:^6.0.1"
+ text-table: "npm:^0.2.0"
+ bin:
+ eslint: bin/eslint.js
+ checksum: 2be598f7da1339d045ad933ffd3d4742bee610515cd2b0d9a2b8b729395a01d4e913552fff555b559fccaefd89d7b37632825789d1b06470608737ae69ab43fb
+ languageName: node
+ linkType: hard
+
+"espree@npm:^9.6.0, espree@npm:^9.6.1":
+ version: 9.6.1
+ resolution: "espree@npm:9.6.1"
+ dependencies:
+ acorn: "npm:^8.9.0"
+ acorn-jsx: "npm:^5.3.2"
+ eslint-visitor-keys: "npm:^3.4.1"
+ checksum: 1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460
+ languageName: node
+ linkType: hard
+
+"esquery@npm:^1.4.2":
+ version: 1.5.0
+ resolution: "esquery@npm:1.5.0"
+ dependencies:
+ estraverse: "npm:^5.1.0"
+ checksum: a084bd049d954cc88ac69df30534043fb2aee5555b56246493f42f27d1e168f00d9e5d4192e46f10290d312dc30dc7d58994d61a609c579c1219d636996f9213
+ languageName: node
+ linkType: hard
+
+"esrecurse@npm:^4.3.0":
+ version: 4.3.0
+ resolution: "esrecurse@npm:4.3.0"
+ dependencies:
+ estraverse: "npm:^5.2.0"
+ checksum: 81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5
+ languageName: node
+ linkType: hard
+
+"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0":
+ version: 5.3.0
+ resolution: "estraverse@npm:5.3.0"
+ checksum: 1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107
+ languageName: node
+ linkType: hard
+
+"esutils@npm:^2.0.2":
+ version: 2.0.3
+ resolution: "esutils@npm:2.0.3"
+ checksum: 9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7
+ languageName: node
+ linkType: hard
+
+"exponential-backoff@npm:^3.1.1":
+ version: 3.1.1
+ resolution: "exponential-backoff@npm:3.1.1"
+ checksum: 160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579
+ languageName: node
+ linkType: hard
+
+"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3":
+ version: 3.1.3
+ resolution: "fast-deep-equal@npm:3.1.3"
+ checksum: 40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0
+ languageName: node
+ linkType: hard
+
+"fast-glob@npm:^3.2.9":
+ version: 3.3.2
+ resolution: "fast-glob@npm:3.3.2"
+ dependencies:
+ "@nodelib/fs.stat": "npm:^2.0.2"
+ "@nodelib/fs.walk": "npm:^1.2.3"
+ glob-parent: "npm:^5.1.2"
+ merge2: "npm:^1.3.0"
+ micromatch: "npm:^4.0.4"
+ checksum: 42baad7b9cd40b63e42039132bde27ca2cb3a4950d0a0f9abe4639ea1aa9d3e3b40f98b1fe31cbc0cc17b664c9ea7447d911a152fa34ec5b72977b125a6fc845
+ 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"
+ checksum: 7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b
+ languageName: node
+ linkType: hard
+
+"fast-levenshtein@npm:^2.0.6":
+ version: 2.0.6
+ resolution: "fast-levenshtein@npm:2.0.6"
+ checksum: 111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4
+ languageName: node
+ linkType: hard
+
+"fastq@npm:^1.6.0":
+ version: 1.15.0
+ resolution: "fastq@npm:1.15.0"
+ dependencies:
+ reusify: "npm:^1.0.4"
+ checksum: 5ce4f83afa5f88c9379e67906b4d31bc7694a30826d6cc8d0f0473c966929017fda65c2174b0ec89f064ede6ace6c67f8a4fe04cef42119b6a55b0d465554c24
+ languageName: node
+ linkType: hard
+
+"file-entry-cache@npm:^6.0.1":
+ version: 6.0.1
+ resolution: "file-entry-cache@npm:6.0.1"
+ dependencies:
+ flat-cache: "npm:^3.0.4"
+ checksum: 58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd
+ languageName: node
+ linkType: hard
+
+"file-uri-to-path@npm:1.0.0":
+ version: 1.0.0
+ resolution: "file-uri-to-path@npm:1.0.0"
+ checksum: 3b545e3a341d322d368e880e1c204ef55f1d45cdea65f7efc6c6ce9e0c4d22d802d5629320eb779d006fe59624ac17b0e848d83cc5af7cd101f206cb704f5519
+ languageName: node
+ linkType: hard
+
+"fill-range@npm:^7.0.1":
+ version: 7.0.1
+ resolution: "fill-range@npm:7.0.1"
+ dependencies:
+ to-regex-range: "npm:^5.0.1"
+ checksum: 7cdad7d426ffbaadf45aeb5d15ec675bbd77f7597ad5399e3d2766987ed20bda24d5fac64b3ee79d93276f5865608bb22344a26b9b1ae6c4d00bd94bf611623f
+ languageName: node
+ linkType: hard
+
+"find-up@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "find-up@npm:5.0.0"
+ dependencies:
+ locate-path: "npm:^6.0.0"
+ path-exists: "npm:^4.0.0"
+ checksum: 062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a
+ languageName: node
+ linkType: hard
+
+"flat-cache@npm:^3.0.4":
+ version: 3.2.0
+ resolution: "flat-cache@npm:3.2.0"
+ dependencies:
+ flatted: "npm:^3.2.9"
+ keyv: "npm:^4.5.3"
+ rimraf: "npm:^3.0.2"
+ checksum: b76f611bd5f5d68f7ae632e3ae503e678d205cf97a17c6ab5b12f6ca61188b5f1f7464503efae6dc18683ed8f0b41460beb48ac4b9ac63fe6201296a91ba2f75
+ languageName: node
+ linkType: hard
+
+"flatted@npm:^3.2.9":
+ version: 3.2.9
+ resolution: "flatted@npm:3.2.9"
+ checksum: 5c91c5a0a21bbc0b07b272231e5b4efe6b822bcb4ad317caf6bb06984be4042a9e9045026307da0fdb4583f1f545e317a67ef1231a59e71f7fced3cc429cfc53
+ languageName: node
+ linkType: hard
+
+"for-each@npm:^0.3.3":
+ version: 0.3.3
+ resolution: "for-each@npm:0.3.3"
+ dependencies:
+ is-callable: "npm:^1.1.3"
+ checksum: 22330d8a2db728dbf003ec9182c2d421fbcd2969b02b4f97ec288721cda63eb28f2c08585ddccd0f77cb2930af8d958005c9e72f47141dc51816127a118f39aa
+ languageName: node
+ linkType: hard
+
+"foreground-child@npm:^3.1.0":
+ version: 3.1.1
+ resolution: "foreground-child@npm:3.1.1"
+ dependencies:
+ cross-spawn: "npm:^7.0.0"
+ signal-exit: "npm:^4.0.1"
+ checksum: 9700a0285628abaeb37007c9a4d92bd49f67210f09067638774338e146c8e9c825c5c877f072b2f75f41dc6a2d0be8664f79ffc03f6576649f54a84fb9b47de0
+ languageName: node
+ linkType: hard
+
+"fs-minipass@npm:^2.0.0":
+ version: 2.1.0
+ resolution: "fs-minipass@npm:2.1.0"
+ dependencies:
+ minipass: "npm:^3.0.0"
+ checksum: 703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004
+ languageName: node
+ linkType: hard
+
+"fs-minipass@npm:^3.0.0":
+ version: 3.0.3
+ resolution: "fs-minipass@npm:3.0.3"
+ dependencies:
+ minipass: "npm:^7.0.3"
+ checksum: 63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94
+ languageName: node
+ linkType: hard
+
+"fs.realpath@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "fs.realpath@npm:1.0.0"
+ checksum: 444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948
+ languageName: node
+ linkType: hard
+
+"function-bind@npm:^1.1.2":
+ version: 1.1.2
+ resolution: "function-bind@npm:1.1.2"
+ checksum: d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5
+ languageName: node
+ linkType: hard
+
+"function.prototype.name@npm:^1.1.6":
+ version: 1.1.6
+ resolution: "function.prototype.name@npm:1.1.6"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ define-properties: "npm:^1.2.0"
+ es-abstract: "npm:^1.22.1"
+ functions-have-names: "npm:^1.2.3"
+ checksum: 9eae11294905b62cb16874adb4fc687927cda3162285e0ad9612e6a1d04934005d46907362ea9cdb7428edce05a2f2c3dabc3b2d21e9fd343e9bb278230ad94b
+ languageName: node
+ linkType: hard
+
+"functions-have-names@npm:^1.2.3":
+ version: 1.2.3
+ resolution: "functions-have-names@npm:1.2.3"
+ checksum: 33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca
+ languageName: node
+ linkType: hard
+
+"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2":
+ version: 1.2.2
+ resolution: "get-intrinsic@npm:1.2.2"
+ dependencies:
+ function-bind: "npm:^1.1.2"
+ has-proto: "npm:^1.0.1"
+ has-symbols: "npm:^1.0.3"
+ hasown: "npm:^2.0.0"
+ checksum: 4e7fb8adc6172bae7c4fe579569b4d5238b3667c07931cd46b4eee74bbe6ff6b91329bec311a638d8e60f5b51f44fe5445693c6be89ae88d4b5c49f7ff12db0b
+ languageName: node
+ linkType: hard
+
+"get-stream@npm:^5.1.0":
+ version: 5.2.0
+ resolution: "get-stream@npm:5.2.0"
+ dependencies:
+ pump: "npm:^3.0.0"
+ checksum: 43797ffd815fbb26685bf188c8cfebecb8af87b3925091dd7b9a9c915993293d78e3c9e1bce125928ff92f2d0796f3889b92b5ec6d58d1041b574682132e0a80
+ languageName: node
+ linkType: hard
+
+"get-symbol-description@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "get-symbol-description@npm:1.0.0"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ get-intrinsic: "npm:^1.1.1"
+ checksum: 23bc3b44c221cdf7669a88230c62f4b9e30393b61eb21ba4400cb3e346801bd8f95fe4330ee78dbae37aecd874646d53e3e76a17a654d0c84c77f6690526d6bb
+ languageName: node
+ linkType: hard
+
+"glob-parent@npm:^5.1.2":
+ version: 5.1.2
+ resolution: "glob-parent@npm:5.1.2"
+ dependencies:
+ is-glob: "npm:^4.0.1"
+ checksum: cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee
+ languageName: node
+ linkType: hard
+
+"glob-parent@npm:^6.0.2":
+ version: 6.0.2
+ resolution: "glob-parent@npm:6.0.2"
+ dependencies:
+ is-glob: "npm:^4.0.3"
+ checksum: 317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8
+ languageName: node
+ linkType: hard
+
+"glob@npm:^10.2.2, glob@npm:^10.3.10":
+ version: 10.3.10
+ resolution: "glob@npm:10.3.10"
+ dependencies:
+ foreground-child: "npm:^3.1.0"
+ jackspeak: "npm:^2.3.5"
+ minimatch: "npm:^9.0.1"
+ minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0"
+ path-scurry: "npm:^1.10.1"
+ bin:
+ glob: dist/esm/bin.mjs
+ checksum: 13d8a1feb7eac7945f8c8480e11cd4a44b24d26503d99a8d8ac8d5aefbf3e9802a2b6087318a829fad04cb4e829f25c5f4f1110c68966c498720dd261c7e344d
+ languageName: node
+ linkType: hard
+
+"glob@npm:^7.1.3":
+ version: 7.2.3
+ resolution: "glob@npm:7.2.3"
+ dependencies:
+ fs.realpath: "npm:^1.0.0"
+ inflight: "npm:^1.0.4"
+ inherits: "npm:2"
+ minimatch: "npm:^3.1.1"
+ once: "npm:^1.3.0"
+ path-is-absolute: "npm:^1.0.0"
+ checksum: 65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe
+ languageName: node
+ linkType: hard
+
+"globals@npm:^13.19.0":
+ version: 13.24.0
+ resolution: "globals@npm:13.24.0"
+ dependencies:
+ type-fest: "npm:^0.20.2"
+ checksum: d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd
+ languageName: node
+ linkType: hard
+
+"globalthis@npm:^1.0.3":
+ version: 1.0.3
+ resolution: "globalthis@npm:1.0.3"
+ dependencies:
+ define-properties: "npm:^1.1.3"
+ checksum: 0db6e9af102a5254630351557ac15e6909bc7459d3e3f6b001e59fe784c96d31108818f032d9095739355a88467459e6488ff16584ee6250cd8c27dec05af4b0
+ languageName: node
+ linkType: hard
+
+"globby@npm:^11.1.0":
+ version: 11.1.0
+ resolution: "globby@npm:11.1.0"
+ dependencies:
+ array-union: "npm:^2.1.0"
+ dir-glob: "npm:^3.0.1"
+ fast-glob: "npm:^3.2.9"
+ ignore: "npm:^5.2.0"
+ merge2: "npm:^1.4.1"
+ slash: "npm:^3.0.0"
+ checksum: b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189
+ languageName: node
+ linkType: hard
+
+"gopd@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "gopd@npm:1.0.1"
+ dependencies:
+ get-intrinsic: "npm:^1.1.3"
+ checksum: 505c05487f7944c552cee72087bf1567debb470d4355b1335f2c262d218ebbff805cd3715448fe29b4b380bae6912561d0467233e4165830efd28da241418c63
+ languageName: node
+ linkType: hard
+
+"got@npm:11.8.6":
+ version: 11.8.6
+ resolution: "got@npm:11.8.6"
+ dependencies:
+ "@sindresorhus/is": "npm:^4.0.0"
+ "@szmarczak/http-timer": "npm:^4.0.5"
+ "@types/cacheable-request": "npm:^6.0.1"
+ "@types/responselike": "npm:^1.0.0"
+ cacheable-lookup: "npm:^5.0.3"
+ cacheable-request: "npm:^7.0.2"
+ decompress-response: "npm:^6.0.0"
+ http2-wrapper: "npm:^1.0.0-beta.5.2"
+ lowercase-keys: "npm:^2.0.0"
+ p-cancelable: "npm:^2.0.0"
+ responselike: "npm:^2.0.0"
+ checksum: 754dd44877e5cf6183f1e989ff01c648d9a4719e357457bd4c78943911168881f1cfb7b2cb15d885e2105b3ad313adb8f017a67265dd7ade771afdb261ee8cb1
+ languageName: node
+ linkType: hard
+
+"graceful-fs@npm:^4.2.6":
+ version: 4.2.11
+ resolution: "graceful-fs@npm:4.2.11"
+ checksum: 386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2
+ languageName: node
+ linkType: hard
+
+"graphemer@npm:^1.4.0":
+ version: 1.4.0
+ resolution: "graphemer@npm:1.4.0"
+ checksum: e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31
+ languageName: node
+ linkType: hard
+
+"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "has-bigints@npm:1.0.2"
+ checksum: 724eb1485bfa3cdff6f18d95130aa190561f00b3fcf9f19dc640baf8176b5917c143b81ec2123f8cddb6c05164a198c94b13e1377c497705ccc8e1a80306e83b
+ languageName: node
+ linkType: hard
+
+"has-flag@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "has-flag@npm:4.0.0"
+ checksum: 2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1
+ languageName: node
+ linkType: hard
+
+"has-property-descriptors@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "has-property-descriptors@npm:1.0.1"
+ dependencies:
+ get-intrinsic: "npm:^1.2.2"
+ checksum: d62ba94b40150b00d621bc64a6aedb5bf0ee495308b4b7ed6bac856043db3cdfb1db553ae81cec91c9d2bd82057ff0e94145e7fa25d5aa5985ed32e0921927f6
+ languageName: node
+ linkType: hard
+
+"has-proto@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "has-proto@npm:1.0.1"
+ checksum: c8a8fe411f810b23a564bd5546a8f3f0fff6f1b692740eb7a2fdc9df716ef870040806891e2f23ff4653f1083e3895bf12088703dd1a0eac3d9202d3a4768cd0
+ languageName: node
+ linkType: hard
+
+"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3":
+ version: 1.0.3
+ resolution: "has-symbols@npm:1.0.3"
+ checksum: e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3
+ languageName: node
+ linkType: hard
+
+"has-tostringtag@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "has-tostringtag@npm:1.0.0"
+ dependencies:
+ has-symbols: "npm:^1.0.2"
+ checksum: 1cdba76b7d13f65198a92b8ca1560ba40edfa09e85d182bf436d928f3588a9ebd260451d569f0ed1b849c4bf54f49c862aa0d0a77f9552b1855bb6deb526c011
+ languageName: node
+ linkType: hard
+
+"hasown@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "hasown@npm:2.0.0"
+ dependencies:
+ function-bind: "npm:^1.1.2"
+ checksum: 5d415b114f410661208c95e7ab4879f1cc2765b8daceff4dc8718317d1cb7b9ffa7c5d1eafd9a4389c9aab7445d6ea88e05f3096cb1e529618b55304956b87fc
+ languageName: node
+ linkType: hard
+
+"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.1":
+ version: 4.1.1
+ resolution: "http-cache-semantics@npm:4.1.1"
+ checksum: ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc
+ languageName: node
+ linkType: hard
+
+"http-proxy-agent@npm:^7.0.0":
+ version: 7.0.0
+ resolution: "http-proxy-agent@npm:7.0.0"
+ dependencies:
+ agent-base: "npm:^7.1.0"
+ debug: "npm:^4.3.4"
+ checksum: a11574ff39436cee3c7bc67f259444097b09474605846ddd8edf0bf4ad8644be8533db1aa463426e376865047d05dc22755e638632819317c0c2f1b2196657c8
+ languageName: node
+ linkType: hard
+
+"http2-wrapper@npm:^1.0.0-beta.5.2":
+ version: 1.0.3
+ resolution: "http2-wrapper@npm:1.0.3"
+ dependencies:
+ quick-lru: "npm:^5.1.1"
+ resolve-alpn: "npm:^1.0.0"
+ checksum: 6a9b72a033e9812e1476b9d776ce2f387bc94bc46c88aea0d5dab6bd47d0a539b8178830e77054dd26d1142c866d515a28a4dc7c3ff4232c88ff2ebe4f5d12d1
+ languageName: node
+ linkType: hard
+
+"https-proxy-agent@npm:^7.0.1":
+ version: 7.0.2
+ resolution: "https-proxy-agent@npm:7.0.2"
+ dependencies:
+ agent-base: "npm:^7.0.2"
+ debug: "npm:4"
+ checksum: 7735eb90073db087e7e79312e3d97c8c04baf7ea7ca7b013382b6a45abbaa61b281041a98f4e13c8c80d88f843785bcc84ba189165b4b4087b1e3496ba656d77
+ languageName: node
+ linkType: hard
+
+"iconv-lite@npm:^0.6.2":
+ version: 0.6.3
+ resolution: "iconv-lite@npm:0.6.3"
+ dependencies:
+ safer-buffer: "npm:>= 2.1.2 < 3.0.0"
+ checksum: 98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1
+ languageName: node
+ linkType: hard
+
+"ignore@npm:^5.2.0, ignore@npm:^5.2.4":
+ version: 5.3.0
+ resolution: "ignore@npm:5.3.0"
+ checksum: dc06bea5c23aae65d0725a957a0638b57e235ae4568dda51ca142053ed2c352de7e3bc93a69b2b32ac31966a1952e9a93c5ef2e2ab7c6b06aef9808f6b55b571
+ languageName: node
+ linkType: hard
+
+"import-fresh@npm:^3.2.1":
+ version: 3.3.0
+ resolution: "import-fresh@npm:3.3.0"
+ dependencies:
+ parent-module: "npm:^1.0.0"
+ resolve-from: "npm:^4.0.0"
+ checksum: 7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3
+ languageName: node
+ linkType: hard
+
+"imurmurhash@npm:^0.1.4":
+ version: 0.1.4
+ resolution: "imurmurhash@npm:0.1.4"
+ checksum: 8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6
+ languageName: node
+ linkType: hard
+
+"indent-string@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "indent-string@npm:4.0.0"
+ checksum: 1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f
+ languageName: node
+ linkType: hard
+
+"inflight@npm:^1.0.4":
+ version: 1.0.6
+ resolution: "inflight@npm:1.0.6"
+ dependencies:
+ once: "npm:^1.3.0"
+ wrappy: "npm:1"
+ checksum: 7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2
+ languageName: node
+ linkType: hard
+
+"inherits@npm:2":
+ version: 2.0.4
+ resolution: "inherits@npm:2.0.4"
+ checksum: 4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2
+ languageName: node
+ linkType: hard
+
+"internal-slot@npm:^1.0.5":
+ version: 1.0.6
+ resolution: "internal-slot@npm:1.0.6"
+ dependencies:
+ get-intrinsic: "npm:^1.2.2"
+ hasown: "npm:^2.0.0"
+ side-channel: "npm:^1.0.4"
+ checksum: aa37cafc8ffbf513a340de58f40d5017b4949d99722d7e4f0e24b182455bdd258000d4bb1d7b4adcf9f8979b97049b99fe9defa9db8e18a78071d2637ac143fb
+ languageName: node
+ linkType: hard
+
+"ip@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "ip@npm:2.0.0"
+ checksum: 8d186cc5585f57372847ae29b6eba258c68862055e18a75cc4933327232cb5c107f89800ce29715d542eef2c254fbb68b382e780a7414f9ee7caf60b7a473958
+ languageName: node
+ linkType: hard
+
+"is-array-buffer@npm:^3.0.1, is-array-buffer@npm:^3.0.2":
+ version: 3.0.2
+ resolution: "is-array-buffer@npm:3.0.2"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ get-intrinsic: "npm:^1.2.0"
+ is-typed-array: "npm:^1.1.10"
+ checksum: 40ed13a5f5746ac3ae2f2e463687d9b5a3f5fd0086f970fb4898f0253c2a5ec2e3caea2d664dd8f54761b1c1948609702416921a22faebe160c7640a9217c80e
+ languageName: node
+ linkType: hard
+
+"is-bigint@npm:^1.0.1":
+ version: 1.0.4
+ resolution: "is-bigint@npm:1.0.4"
+ dependencies:
+ has-bigints: "npm:^1.0.1"
+ checksum: eb9c88e418a0d195ca545aff2b715c9903d9b0a5033bc5922fec600eb0c3d7b1ee7f882dbf2e0d5a6e694e42391be3683e4368737bd3c4a77f8ac293e7773696
+ languageName: node
+ linkType: hard
+
+"is-boolean-object@npm:^1.1.0":
+ version: 1.1.2
+ resolution: "is-boolean-object@npm:1.1.2"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ has-tostringtag: "npm:^1.0.0"
+ checksum: 6090587f8a8a8534c0f816da868bc94f32810f08807aa72fa7e79f7e11c466d281486ffe7a788178809c2aa71fe3e700b167fe80dd96dad68026bfff8ebf39f7
+ languageName: node
+ linkType: hard
+
+"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7":
+ version: 1.2.7
+ resolution: "is-callable@npm:1.2.7"
+ checksum: ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f
+ languageName: node
+ linkType: hard
+
+"is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1":
+ version: 2.13.1
+ resolution: "is-core-module@npm:2.13.1"
+ dependencies:
+ hasown: "npm:^2.0.0"
+ checksum: 2cba9903aaa52718f11c4896dabc189bab980870aae86a62dc0d5cedb546896770ee946fb14c84b7adf0735f5eaea4277243f1b95f5cefa90054f92fbcac2518
+ languageName: node
+ linkType: hard
+
+"is-date-object@npm:^1.0.1":
+ version: 1.0.5
+ resolution: "is-date-object@npm:1.0.5"
+ dependencies:
+ has-tostringtag: "npm:^1.0.0"
+ checksum: eed21e5dcc619c48ccef804dfc83a739dbb2abee6ca202838ee1bd5f760fe8d8a93444f0d49012ad19bb7c006186e2884a1b92f6e1c056da7fd23d0a9ad5992e
+ languageName: node
+ linkType: hard
+
+"is-extglob@npm:^2.1.1":
+ version: 2.1.1
+ resolution: "is-extglob@npm:2.1.1"
+ checksum: 5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912
+ languageName: node
+ linkType: hard
+
+"is-fullwidth-code-point@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "is-fullwidth-code-point@npm:3.0.0"
+ checksum: bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc
+ languageName: node
+ linkType: hard
+
+"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3":
+ version: 4.0.3
+ resolution: "is-glob@npm:4.0.3"
+ dependencies:
+ is-extglob: "npm:^2.1.1"
+ checksum: 17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a
+ languageName: node
+ linkType: hard
+
+"is-lambda@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "is-lambda@npm:1.0.1"
+ checksum: 85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d
+ languageName: node
+ linkType: hard
+
+"is-negative-zero@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "is-negative-zero@npm:2.0.2"
+ checksum: eda024c158f70f2017f3415e471b818d314da5ef5be68f801b16314d4a4b6304a74cbed778acf9e2f955bb9c1c5f2935c1be0c7c99e1ad12286f45366217b6a3
+ languageName: node
+ linkType: hard
+
+"is-number-object@npm:^1.0.4":
+ version: 1.0.7
+ resolution: "is-number-object@npm:1.0.7"
+ dependencies:
+ has-tostringtag: "npm:^1.0.0"
+ checksum: aad266da1e530f1804a2b7bd2e874b4869f71c98590b3964f9d06cc9869b18f8d1f4778f838ecd2a11011bce20aeecb53cb269ba916209b79c24580416b74b1b
+ languageName: node
+ linkType: hard
+
+"is-number@npm:^7.0.0":
+ version: 7.0.0
+ resolution: "is-number@npm:7.0.0"
+ checksum: b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811
+ languageName: node
+ linkType: hard
+
+"is-path-inside@npm:^3.0.3":
+ version: 3.0.3
+ resolution: "is-path-inside@npm:3.0.3"
+ checksum: cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05
+ languageName: node
+ linkType: hard
+
+"is-regex@npm:^1.1.4":
+ version: 1.1.4
+ resolution: "is-regex@npm:1.1.4"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ has-tostringtag: "npm:^1.0.0"
+ checksum: bb72aae604a69eafd4a82a93002058c416ace8cde95873589a97fc5dac96a6c6c78a9977d487b7b95426a8f5073969124dd228f043f9f604f041f32fcc465fc1
+ 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"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ checksum: cfeee6f171f1b13e6cbc6f3b6cc44e192b93df39f3fcb31aa66ffb1d2df3b91e05664311659f9701baba62f5e98c83b0673c628e7adc30f55071c4874fcdccec
+ languageName: node
+ linkType: hard
+
+"is-string@npm:^1.0.5, is-string@npm:^1.0.7":
+ version: 1.0.7
+ resolution: "is-string@npm:1.0.7"
+ dependencies:
+ has-tostringtag: "npm:^1.0.0"
+ checksum: 905f805cbc6eedfa678aaa103ab7f626aac9ebbdc8737abb5243acaa61d9820f8edc5819106b8fcd1839e33db21de9f0116ae20de380c8382d16dc2a601921f6
+ 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: "npm:^1.0.2"
+ checksum: 9381dd015f7c8906154dbcbf93fad769de16b4b961edc94f88d26eb8c555935caa23af88bda0c93a18e65560f6d7cca0fd5a3f8a8e1df6f1abbb9bead4502ef7
+ languageName: node
+ linkType: hard
+
+"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.12, is-typed-array@npm:^1.1.9":
+ version: 1.1.12
+ resolution: "is-typed-array@npm:1.1.12"
+ dependencies:
+ which-typed-array: "npm:^1.1.11"
+ checksum: 9863e9cc7223c6fc1c462a2c3898a7beff6b41b1ee0fabb03b7d278ae7de670b5bcbc8627db56bb66ed60902fa37d53fe5cce0fd2f7d73ac64fe5da6f409b6ae
+ languageName: node
+ linkType: hard
+
+"is-weakref@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "is-weakref@npm:1.0.2"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ checksum: 1545c5d172cb690c392f2136c23eec07d8d78a7f57d0e41f10078aa4f5daf5d7f57b6513a67514ab4f073275ad00c9822fc8935e00229d0a2089e1c02685d4b1
+ languageName: node
+ linkType: hard
+
+"isarray@npm:^2.0.5":
+ version: 2.0.5
+ resolution: "isarray@npm:2.0.5"
+ checksum: 4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd
+ languageName: node
+ linkType: hard
+
+"isexe@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "isexe@npm:2.0.0"
+ checksum: 228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d
+ languageName: node
+ linkType: hard
+
+"isexe@npm:^3.1.1":
+ version: 3.1.1
+ resolution: "isexe@npm:3.1.1"
+ checksum: 9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7
+ languageName: node
+ linkType: hard
+
+"jackspeak@npm:^2.3.5":
+ version: 2.3.6
+ resolution: "jackspeak@npm:2.3.6"
+ dependencies:
+ "@isaacs/cliui": "npm:^8.0.2"
+ "@pkgjs/parseargs": "npm:^0.11.0"
+ dependenciesMeta:
+ "@pkgjs/parseargs":
+ optional: true
+ checksum: f01d8f972d894cd7638bc338e9ef5ddb86f7b208ce177a36d718eac96ec86638a6efa17d0221b10073e64b45edc2ce15340db9380b1f5d5c5d000cbc517dc111
+ languageName: node
+ linkType: hard
+
+"js-yaml@npm:^4.1.0":
+ version: 4.1.0
+ resolution: "js-yaml@npm:4.1.0"
+ dependencies:
+ argparse: "npm:^2.0.1"
+ bin:
+ js-yaml: bin/js-yaml.js
+ checksum: 184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f
+ languageName: node
+ linkType: hard
+
+"json-buffer@npm:3.0.1":
+ version: 3.0.1
+ resolution: "json-buffer@npm:3.0.1"
+ checksum: 0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7
+ languageName: node
+ linkType: hard
+
+"json-schema-traverse@npm:^0.4.1":
+ version: 0.4.1
+ resolution: "json-schema-traverse@npm:0.4.1"
+ checksum: 108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce
+ languageName: node
+ linkType: hard
+
+"json-schema-traverse@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "json-schema-traverse@npm:1.0.0"
+ checksum: 71e30015d7f3d6dc1c316d6298047c8ef98a06d31ad064919976583eb61e1018a60a0067338f0f79cabc00d84af3fcc489bd48ce8a46ea165d9541ba17fb30c6
+ languageName: node
+ linkType: hard
+
+"json-stable-stringify-without-jsonify@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "json-stable-stringify-without-jsonify@npm:1.0.1"
+ checksum: cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5
+ languageName: node
+ linkType: hard
+
+"json5@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "json5@npm:1.0.2"
+ dependencies:
+ minimist: "npm:^1.2.0"
+ bin:
+ json5: lib/cli.js
+ checksum: 9ee316bf21f000b00752e6c2a3b79ecf5324515a5c60ee88983a1910a45426b643a4f3461657586e8aeca87aaf96f0a519b0516d2ae527a6c3e7eed80f68717f
+ languageName: node
+ linkType: hard
+
+"keyv@npm:^4.0.0, keyv@npm:^4.5.3":
+ version: 4.5.4
+ resolution: "keyv@npm:4.5.4"
+ dependencies:
+ json-buffer: "npm:3.0.1"
+ checksum: aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e
+ languageName: node
+ linkType: hard
+
+"levn@npm:^0.4.1":
+ version: 0.4.1
+ resolution: "levn@npm:0.4.1"
+ dependencies:
+ prelude-ls: "npm:^1.2.1"
+ type-check: "npm:~0.4.0"
+ checksum: effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e
+ languageName: node
+ linkType: hard
+
+"locate-path@npm:^6.0.0":
+ version: 6.0.0
+ resolution: "locate-path@npm:6.0.0"
+ dependencies:
+ p-locate: "npm:^5.0.0"
+ checksum: d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3
+ languageName: node
+ linkType: hard
+
+"lodash.merge@npm:^4.6.2":
+ version: 4.6.2
+ resolution: "lodash.merge@npm:4.6.2"
+ checksum: 402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506
+ languageName: node
+ linkType: hard
+
+"lodash.truncate@npm:^4.4.2":
+ version: 4.4.2
+ resolution: "lodash.truncate@npm:4.4.2"
+ checksum: 4e870d54e8a6c86c8687e057cec4069d2e941446ccab7f40b4d9555fa5872d917d0b6aa73bece7765500a3123f1723bcdba9ae881b679ef120bba9e1a0b0ed70
+ languageName: node
+ linkType: hard
+
+"lowercase-keys@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "lowercase-keys@npm:2.0.0"
+ checksum: f82a2b3568910509da4b7906362efa40f5b54ea14c2584778ddb313226f9cbf21020a5db35f9b9a0e95847a9b781d548601f31793d736b22a2b8ae8eb9ab1082
+ languageName: node
+ linkType: hard
+
+"lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0":
+ version: 10.1.0
+ resolution: "lru-cache@npm:10.1.0"
+ checksum: 778bc8b2626daccd75f24c4b4d10632496e21ba064b126f526c626fbdbc5b28c472013fccd45d7646b9e1ef052444824854aed617b59cd570d01a8b7d651fc1e
+ languageName: node
+ linkType: hard
+
+"lru-cache@npm:^6.0.0":
+ version: 6.0.0
+ resolution: "lru-cache@npm:6.0.0"
+ dependencies:
+ yallist: "npm:^4.0.0"
+ checksum: cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9
+ languageName: node
+ linkType: hard
+
+"luxon@npm:^3.4.4":
+ version: 3.4.4
+ resolution: "luxon@npm:3.4.4"
+ checksum: 02e26a0b039c11fd5b75e1d734c8f0332c95510f6a514a9a0991023e43fb233884da02d7f966823ffb230632a733fc86d4a4b1e63c3fbe00058b8ee0f8c728af
+ languageName: node
+ linkType: hard
+
+"make-error@npm:^1.1.1":
+ version: 1.3.6
+ resolution: "make-error@npm:1.3.6"
+ checksum: 171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f
+ languageName: node
+ linkType: hard
+
+"make-fetch-happen@npm:^13.0.0":
+ version: 13.0.0
+ resolution: "make-fetch-happen@npm:13.0.0"
+ dependencies:
+ "@npmcli/agent": "npm:^2.0.0"
+ cacache: "npm:^18.0.0"
+ http-cache-semantics: "npm:^4.1.1"
+ is-lambda: "npm:^1.0.1"
+ minipass: "npm:^7.0.2"
+ minipass-fetch: "npm:^3.0.0"
+ minipass-flush: "npm:^1.0.5"
+ minipass-pipeline: "npm:^1.2.4"
+ negotiator: "npm:^0.6.3"
+ promise-retry: "npm:^2.0.1"
+ ssri: "npm:^10.0.0"
+ checksum: 43b9f6dcbc6fe8b8604cb6396957c3698857a15ba4dbc38284f7f0e61f248300585ef1eb8cc62df54e9c724af977e45b5cdfd88320ef7f53e45070ed3488da55
+ languageName: node
+ linkType: hard
+
+"merge2@npm:^1.3.0, merge2@npm:^1.4.1":
+ version: 1.4.1
+ resolution: "merge2@npm:1.4.1"
+ checksum: 254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb
+ languageName: node
+ linkType: hard
+
+"micromatch@npm:^4.0.4":
+ version: 4.0.5
+ resolution: "micromatch@npm:4.0.5"
+ dependencies:
+ braces: "npm:^3.0.2"
+ picomatch: "npm:^2.3.1"
+ checksum: 3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff
+ languageName: node
+ linkType: hard
+
+"mimic-response@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "mimic-response@npm:1.0.1"
+ checksum: c5381a5eae997f1c3b5e90ca7f209ed58c3615caeee850e85329c598f0c000ae7bec40196580eef1781c60c709f47258131dab237cad8786f8f56750594f27fa
+ languageName: node
+ linkType: hard
+
+"mimic-response@npm:^3.1.0":
+ version: 3.1.0
+ resolution: "mimic-response@npm:3.1.0"
+ checksum: 0d6f07ce6e03e9e4445bee655202153bdb8a98d67ee8dc965ac140900d7a2688343e6b4c9a72cfc9ef2f7944dfd76eef4ab2482eb7b293a68b84916bac735362
+ languageName: node
+ linkType: hard
+
+"minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2":
+ version: 3.1.2
+ resolution: "minimatch@npm:3.1.2"
+ dependencies:
+ brace-expansion: "npm:^1.1.7"
+ checksum: 0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311
+ languageName: node
+ linkType: hard
+
+"minimatch@npm:^9.0.1":
+ version: 9.0.3
+ resolution: "minimatch@npm:9.0.3"
+ dependencies:
+ brace-expansion: "npm:^2.0.1"
+ checksum: 85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac
+ languageName: node
+ linkType: hard
+
+"minimist@npm:^1.2.0, minimist@npm:^1.2.6":
+ version: 1.2.8
+ resolution: "minimist@npm:1.2.8"
+ checksum: 19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6
+ languageName: node
+ linkType: hard
+
+"minipass-collect@npm:^2.0.1":
+ version: 2.0.1
+ resolution: "minipass-collect@npm:2.0.1"
+ dependencies:
+ minipass: "npm:^7.0.3"
+ checksum: 5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e
+ languageName: node
+ linkType: hard
+
+"minipass-fetch@npm:^3.0.0":
+ version: 3.0.4
+ resolution: "minipass-fetch@npm:3.0.4"
+ dependencies:
+ encoding: "npm:^0.1.13"
+ minipass: "npm:^7.0.3"
+ minipass-sized: "npm:^1.0.3"
+ minizlib: "npm:^2.1.2"
+ dependenciesMeta:
+ encoding:
+ optional: true
+ checksum: 1b63c1f3313e88eeac4689f1b71c9f086598db9a189400e3ee960c32ed89e06737fa23976c9305c2d57464fb3fcdc12749d3378805c9d6176f5569b0d0ee8a75
+ languageName: node
+ linkType: hard
+
+"minipass-flush@npm:^1.0.5":
+ version: 1.0.5
+ resolution: "minipass-flush@npm:1.0.5"
+ dependencies:
+ minipass: "npm:^3.0.0"
+ checksum: 2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd
+ languageName: node
+ linkType: hard
+
+"minipass-pipeline@npm:^1.2.4":
+ version: 1.2.4
+ resolution: "minipass-pipeline@npm:1.2.4"
+ dependencies:
+ minipass: "npm:^3.0.0"
+ checksum: cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2
+ languageName: node
+ linkType: hard
+
+"minipass-sized@npm:^1.0.3":
+ version: 1.0.3
+ resolution: "minipass-sized@npm:1.0.3"
+ dependencies:
+ minipass: "npm:^3.0.0"
+ checksum: 298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb
+ languageName: node
+ linkType: hard
+
+"minipass@npm:^3.0.0":
+ version: 3.3.6
+ resolution: "minipass@npm:3.3.6"
+ dependencies:
+ yallist: "npm:^4.0.0"
+ checksum: a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c
+ languageName: node
+ linkType: hard
+
+"minipass@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "minipass@npm:5.0.0"
+ checksum: a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462
+ languageName: node
+ linkType: hard
+
+"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3":
+ version: 7.0.4
+ resolution: "minipass@npm:7.0.4"
+ checksum: 6c7370a6dfd257bf18222da581ba89a5eaedca10e158781232a8b5542a90547540b4b9b7e7f490e4cda43acfbd12e086f0453728ecf8c19e0ef6921bc5958ac5
+ languageName: node
+ linkType: hard
+
+"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2":
+ version: 2.1.2
+ resolution: "minizlib@npm:2.1.2"
+ dependencies:
+ minipass: "npm:^3.0.0"
+ yallist: "npm:^4.0.0"
+ checksum: 64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78
+ languageName: node
+ linkType: hard
+
+"mkdirp@npm:^1.0.3":
+ version: 1.0.4
+ resolution: "mkdirp@npm:1.0.4"
+ bin:
+ mkdirp: bin/cmd.js
+ checksum: 46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf
+ languageName: node
+ linkType: hard
+
+"ms@npm:2.1.2":
+ version: 2.1.2
+ resolution: "ms@npm:2.1.2"
+ checksum: a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc
+ languageName: node
+ linkType: hard
+
+"ms@npm:^2.1.1":
+ version: 2.1.3
+ resolution: "ms@npm:2.1.3"
+ checksum: d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48
+ languageName: node
+ linkType: hard
+
+"natural-compare@npm:^1.4.0":
+ version: 1.4.0
+ resolution: "natural-compare@npm:1.4.0"
+ checksum: f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447
+ languageName: node
+ linkType: hard
+
+"negotiator@npm:^0.6.3":
+ version: 0.6.3
+ resolution: "negotiator@npm:0.6.3"
+ checksum: 3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2
+ languageName: node
+ linkType: hard
+
+"node-addon-api@npm:^1.3.0":
+ version: 1.7.2
+ resolution: "node-addon-api@npm:1.7.2"
+ dependencies:
+ node-gyp: "npm:latest"
+ checksum: bcf526f2ce788182730d3c3df5206585873d1e837a6e1378ff84abccf2f19cf3f93a8274f9c1245af0de63a0dbd1bb95ca2f767ecf5c678d6930326aaf396c4e
+ languageName: node
+ linkType: hard
+
+"node-fetch@npm:^2.6.1":
+ version: 2.7.0
+ resolution: "node-fetch@npm:2.7.0"
+ dependencies:
+ whatwg-url: "npm:^5.0.0"
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+ checksum: b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8
+ languageName: node
+ linkType: hard
+
+"node-gyp@npm:latest":
+ version: 10.0.1
+ resolution: "node-gyp@npm:10.0.1"
+ dependencies:
+ env-paths: "npm:^2.2.0"
+ exponential-backoff: "npm:^3.1.1"
+ glob: "npm:^10.3.10"
+ graceful-fs: "npm:^4.2.6"
+ make-fetch-happen: "npm:^13.0.0"
+ nopt: "npm:^7.0.0"
+ proc-log: "npm:^3.0.0"
+ semver: "npm:^7.3.5"
+ tar: "npm:^6.1.2"
+ which: "npm:^4.0.0"
+ bin:
+ node-gyp: bin/node-gyp.js
+ checksum: abddfff7d873312e4ed4a5fb75ce893a5c4fb69e7fcb1dfa71c28a6b92a7f1ef6b62790dffb39181b5a82728ba8f2f32d229cf8cbe66769fe02cea7db4a555aa
+ languageName: node
+ linkType: hard
+
+"nopt@npm:^7.0.0":
+ version: 7.2.0
+ resolution: "nopt@npm:7.2.0"
+ dependencies:
+ abbrev: "npm:^2.0.0"
+ bin:
+ nopt: bin/nopt.js
+ checksum: 9bd7198df6f16eb29ff16892c77bcf7f0cc41f9fb5c26280ac0def2cf8cf319f3b821b3af83eba0e74c85807cc430a16efe0db58fe6ae1f41e69519f585b6aff
+ languageName: node
+ linkType: hard
+
+"normalize-url@npm:^6.0.1":
+ version: 6.1.0
+ resolution: "normalize-url@npm:6.1.0"
+ checksum: 95d948f9bdd2cfde91aa786d1816ae40f8262946e13700bf6628105994fe0ff361662c20af3961161c38a119dc977adeb41fc0b41b1745eb77edaaf9cb22db23
+ languageName: node
+ linkType: hard
+
+"object-inspect@npm:^1.13.1, object-inspect@npm:^1.9.0":
+ version: 1.13.1
+ resolution: "object-inspect@npm:1.13.1"
+ checksum: fad603f408e345c82e946abdf4bfd774260a5ed3e5997a0b057c44153ac32c7271ff19e3a5ae39c858da683ba045ccac2f65245c12763ce4e8594f818f4a648d
+ languageName: node
+ linkType: hard
+
+"object-keys@npm:^1.1.1":
+ version: 1.1.1
+ resolution: "object-keys@npm:1.1.1"
+ checksum: b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d
+ languageName: node
+ linkType: hard
+
+"object.assign@npm:^4.1.2, object.assign@npm:^4.1.4":
+ version: 4.1.5
+ resolution: "object.assign@npm:4.1.5"
+ dependencies:
+ call-bind: "npm:^1.0.5"
+ define-properties: "npm:^1.2.1"
+ has-symbols: "npm:^1.0.3"
+ object-keys: "npm:^1.1.1"
+ checksum: 60108e1fa2706f22554a4648299b0955236c62b3685c52abf4988d14fffb0e7731e00aa8c6448397e3eb63d087dcc124a9f21e1980f36d0b2667f3c18bacd469
+ languageName: node
+ linkType: hard
+
+"object.entries@npm:^1.1.5":
+ version: 1.1.7
+ resolution: "object.entries@npm:1.1.7"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ define-properties: "npm:^1.2.0"
+ es-abstract: "npm:^1.22.1"
+ checksum: 3ad1899cc7bf14546bf28f4a9b363ae8690b90948fcfbcac4c808395435d760f26193d9cae95337ce0e3c1e5c1f4fa45f7b46b31b68d389e9e117fce38775d86
+ languageName: node
+ linkType: hard
+
+"object.fromentries@npm:^2.0.7":
+ version: 2.0.7
+ resolution: "object.fromentries@npm:2.0.7"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ define-properties: "npm:^1.2.0"
+ es-abstract: "npm:^1.22.1"
+ checksum: 071745c21f6fc9e6c914691f2532c1fb60ad967e5ddc52801d09958b5de926566299d07ae14466452a7efd29015f9145d6c09c573d93a0dc6f1683ee0ec2b93b
+ languageName: node
+ linkType: hard
+
+"object.groupby@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "object.groupby@npm:1.0.1"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ define-properties: "npm:^1.2.0"
+ es-abstract: "npm:^1.22.1"
+ get-intrinsic: "npm:^1.2.1"
+ checksum: 61e41fbf08cc04ed860363db9629eedeaa590fce243c0960e948fd7b11f78a9d4350065c339936d118a2dd8775d7259e26207340cc8ce688bec66cb615fec6fe
+ languageName: node
+ linkType: hard
+
+"object.values@npm:^1.1.7":
+ version: 1.1.7
+ resolution: "object.values@npm:1.1.7"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ define-properties: "npm:^1.2.0"
+ es-abstract: "npm:^1.22.1"
+ checksum: e869d6a37fb7afdd0054dea49036d6ccebb84854a8848a093bbd1bc516f53e690bba88f0bc3e83fdfa74c601469ee6989c9b13359cda9604144c6e732fad3b6b
+ 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"
+ dependencies:
+ wrappy: "npm:1"
+ checksum: 5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0
+ languageName: node
+ linkType: hard
+
+"optionator@npm:^0.9.3":
+ version: 0.9.3
+ resolution: "optionator@npm:0.9.3"
+ dependencies:
+ "@aashutoshrathi/word-wrap": "npm:^1.2.3"
+ deep-is: "npm:^0.1.3"
+ fast-levenshtein: "npm:^2.0.6"
+ levn: "npm:^0.4.1"
+ prelude-ls: "npm:^1.2.1"
+ type-check: "npm:^0.4.0"
+ checksum: 66fba794d425b5be51353035cf3167ce6cfa049059cbb93229b819167687e0f48d2bc4603fcb21b091c99acb516aae1083624675b15c4765b2e4693a085e959c
+ languageName: node
+ linkType: hard
+
+"p-cancelable@npm:^2.0.0":
+ version: 2.1.1
+ resolution: "p-cancelable@npm:2.1.1"
+ checksum: 8c6dc1f8dd4154fd8b96a10e55a3a832684c4365fb9108056d89e79fbf21a2465027c04a59d0d797b5ffe10b54a61a32043af287d5c4860f1e996cbdbc847f01
+ languageName: node
+ linkType: hard
+
+"p-limit@npm:^3.0.2":
+ version: 3.1.0
+ resolution: "p-limit@npm:3.1.0"
+ dependencies:
+ yocto-queue: "npm:^0.1.0"
+ checksum: 9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a
+ languageName: node
+ linkType: hard
+
+"p-locate@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "p-locate@npm:5.0.0"
+ dependencies:
+ p-limit: "npm:^3.0.2"
+ checksum: 2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a
+ languageName: node
+ linkType: hard
+
+"p-map@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "p-map@npm:4.0.0"
+ dependencies:
+ aggregate-error: "npm:^3.0.0"
+ checksum: 592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75
+ languageName: node
+ linkType: hard
+
+"parent-module@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "parent-module@npm:1.0.1"
+ dependencies:
+ callsites: "npm:^3.0.0"
+ checksum: c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556
+ languageName: node
+ linkType: hard
+
+"parse-ms@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "parse-ms@npm:3.0.0"
+ checksum: 056b4a32a9d3749f3f4cfffefb45c45540491deaa8e1d8ad43c2ddde7ba04edd076bd1b298f521238bb5fb084a9b2c4a2ebb78aefa651afbc4c2b0af4232fc54
+ languageName: node
+ linkType: hard
+
+"path-exists@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "path-exists@npm:4.0.0"
+ checksum: 8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b
+ languageName: node
+ linkType: hard
+
+"path-is-absolute@npm:^1.0.0":
+ version: 1.0.1
+ resolution: "path-is-absolute@npm:1.0.1"
+ checksum: 127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078
+ languageName: node
+ linkType: hard
+
+"path-key@npm:^3.1.0":
+ version: 3.1.1
+ resolution: "path-key@npm:3.1.1"
+ checksum: 748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c
+ languageName: node
+ linkType: hard
+
+"path-parse@npm:^1.0.7":
+ version: 1.0.7
+ resolution: "path-parse@npm:1.0.7"
+ checksum: 11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1
+ languageName: node
+ linkType: hard
+
+"path-scurry@npm:^1.10.1":
+ version: 1.10.1
+ resolution: "path-scurry@npm:1.10.1"
+ dependencies:
+ lru-cache: "npm:^9.1.1 || ^10.0.0"
+ minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0"
+ checksum: e5dc78a7348d25eec61ab166317e9e9c7b46818aa2c2b9006c507a6ff48c672d011292d9662527213e558f5652ce0afcc788663a061d8b59ab495681840c0c1e
+ languageName: node
+ linkType: hard
+
+"path-type@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "path-type@npm:4.0.0"
+ checksum: 666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c
+ languageName: node
+ linkType: hard
+
+"picomatch@npm:^2.3.1":
+ version: 2.3.1
+ resolution: "picomatch@npm:2.3.1"
+ checksum: 26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be
+ languageName: node
+ linkType: hard
+
+"prelude-ls@npm:^1.2.1":
+ version: 1.2.1
+ resolution: "prelude-ls@npm:1.2.1"
+ checksum: b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd
+ languageName: node
+ linkType: hard
+
+"pretty-ms@npm:^8.0.0":
+ version: 8.0.0
+ resolution: "pretty-ms@npm:8.0.0"
+ dependencies:
+ parse-ms: "npm:^3.0.0"
+ checksum: e960d633ecca45445cf5c6dffc0f5e4bef6744c92449ab0e8c6c704800675ab71e181c5e02ece5265e02137a33e313d3f3e355fbf8ea30b4b5b23de423329f8d
+ languageName: node
+ linkType: hard
+
+"proc-log@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "proc-log@npm:3.0.0"
+ checksum: f66430e4ff947dbb996058f6fd22de2c66612ae1a89b097744e17fb18a4e8e7a86db99eda52ccf15e53f00b63f4ec0b0911581ff2aac0355b625c8eac509b0dc
+ languageName: node
+ linkType: hard
+
+"promise-retry@npm:^2.0.1":
+ version: 2.0.1
+ resolution: "promise-retry@npm:2.0.1"
+ dependencies:
+ err-code: "npm:^2.0.2"
+ retry: "npm:^0.12.0"
+ checksum: 9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96
+ languageName: node
+ linkType: hard
+
+"pump@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "pump@npm:3.0.0"
+ dependencies:
+ end-of-stream: "npm:^1.1.0"
+ once: "npm:^1.3.1"
+ checksum: bbdeda4f747cdf47db97428f3a135728669e56a0ae5f354a9ac5b74556556f5446a46f720a8f14ca2ece5be9b4d5d23c346db02b555f46739934cc6c093a5478
+ languageName: node
+ linkType: hard
+
+"punycode@npm:^2.1.0":
+ version: 2.3.1
+ resolution: "punycode@npm:2.3.1"
+ checksum: 14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9
+ languageName: node
+ linkType: hard
+
+"queue-microtask@npm:^1.2.2":
+ version: 1.2.3
+ resolution: "queue-microtask@npm:1.2.3"
+ checksum: 900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102
+ languageName: node
+ linkType: hard
+
+"quick-lru@npm:^5.1.1":
+ version: 5.1.1
+ resolution: "quick-lru@npm:5.1.1"
+ checksum: a24cba5da8cec30d70d2484be37622580f64765fb6390a928b17f60cd69e8dbd32a954b3ff9176fa1b86d86ff2ba05252fae55dc4d40d0291c60412b0ad096da
+ languageName: node
+ linkType: hard
+
+"regexp.prototype.flags@npm:^1.5.1":
+ version: 1.5.1
+ resolution: "regexp.prototype.flags@npm:1.5.1"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ define-properties: "npm:^1.2.0"
+ set-function-name: "npm:^2.0.0"
+ checksum: 1de7d214c0a726c7c874a7023e47b0e27b9f7fdb64175bfe1861189de1704aaeca05c3d26c35aa375432289b99946f3cf86651a92a8f7601b90d8c226a23bcd8
+ languageName: node
+ linkType: hard
+
+"register-scheme@github:devsnek/node-register-scheme":
+ version: 0.0.2
+ resolution: "register-scheme@https://github.com/devsnek/node-register-scheme.git#commit=e7cc9a63a1f512565da44cb57316d9fb10750e17"
+ dependencies:
+ bindings: "npm:^1.3.0"
+ node-addon-api: "npm:^1.3.0"
+ checksum: a73a5ea3f07fc9a916329b7c304ee891eff7bd3e24d2f00be3e775743423c47a1281de12874308f39fa05ebefee825c99467f465817872f4e09d35634fc50104
+ languageName: node
+ linkType: hard
+
+"require-from-string@npm:^2.0.2":
+ version: 2.0.2
+ resolution: "require-from-string@npm:2.0.2"
+ checksum: aaa267e0c5b022fc5fd4eef49d8285086b15f2a1c54b28240fdf03599cbd9c26049fee3eab894f2e1f6ca65e513b030a7c264201e3f005601e80c49fb2937ce2
+ languageName: node
+ linkType: hard
+
+"resolve-alpn@npm:^1.0.0":
+ version: 1.2.1
+ resolution: "resolve-alpn@npm:1.2.1"
+ checksum: b70b29c1843bc39781ef946c8cd4482e6d425976599c0f9c138cec8209e4e0736161bf39319b01676a847000085dfdaf63583c6fb4427bf751a10635bd2aa0c4
+ languageName: node
+ linkType: hard
+
+"resolve-from@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "resolve-from@npm:4.0.0"
+ checksum: 8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190
+ languageName: node
+ linkType: hard
+
+"resolve@npm:^1.22.4":
+ version: 1.22.8
+ resolution: "resolve@npm:1.22.8"
+ dependencies:
+ is-core-module: "npm:^2.13.0"
+ path-parse: "npm:^1.0.7"
+ supports-preserve-symlinks-flag: "npm:^1.0.0"
+ bin:
+ resolve: bin/resolve
+ checksum: 07e179f4375e1fd072cfb72ad66d78547f86e6196c4014b31cb0b8bb1db5f7ca871f922d08da0fbc05b94e9fd42206f819648fa3b5b873ebbc8e1dc68fec433a
+ languageName: node
+ linkType: hard
+
+"resolve@patch:resolve@npm%3A^1.22.4#optional!builtin":
+ version: 1.22.8
+ resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d"
+ dependencies:
+ is-core-module: "npm:^2.13.0"
+ path-parse: "npm:^1.0.7"
+ supports-preserve-symlinks-flag: "npm:^1.0.0"
+ bin:
+ resolve: bin/resolve
+ checksum: 0446f024439cd2e50c6c8fa8ba77eaa8370b4180f401a96abf3d1ebc770ac51c1955e12764cde449fde3fff480a61f84388e3505ecdbab778f4bef5f8212c729
+ languageName: node
+ linkType: hard
+
+"responselike@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "responselike@npm:2.0.1"
+ dependencies:
+ lowercase-keys: "npm:^2.0.0"
+ checksum: 360b6deb5f101a9f8a4174f7837c523c3ec78b7ca8a7c1d45a1062b303659308a23757e318b1e91ed8684ad1205721142dd664d94771cd63499353fd4ee732b5
+ languageName: node
+ linkType: hard
+
+"retry@npm:^0.12.0":
+ version: 0.12.0
+ resolution: "retry@npm:0.12.0"
+ checksum: 59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe
+ languageName: node
+ linkType: hard
+
+"reusify@npm:^1.0.4":
+ version: 1.0.4
+ resolution: "reusify@npm:1.0.4"
+ checksum: c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107
+ languageName: node
+ linkType: hard
+
+"rimraf@npm:^3.0.2":
+ version: 3.0.2
+ resolution: "rimraf@npm:3.0.2"
+ dependencies:
+ glob: "npm:^7.1.3"
+ bin:
+ rimraf: bin.js
+ checksum: 9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8
+ languageName: node
+ linkType: hard
+
+"run-parallel@npm:^1.1.9":
+ version: 1.2.0
+ resolution: "run-parallel@npm:1.2.0"
+ dependencies:
+ queue-microtask: "npm:^1.2.2"
+ checksum: 200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39
+ languageName: node
+ linkType: hard
+
+"safe-array-concat@npm:^1.0.1":
+ version: 1.0.1
+ resolution: "safe-array-concat@npm:1.0.1"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ get-intrinsic: "npm:^1.2.1"
+ has-symbols: "npm:^1.0.3"
+ isarray: "npm:^2.0.5"
+ checksum: 4b15ce5fce5ce4d7e744a63592cded88d2f27806ed229eadb2e42629cbcd40e770f7478608e75f455e7fe341acd8c0a01bdcd7146b10645ea7411c5e3c1d1dd8
+ languageName: node
+ linkType: hard
+
+"safe-regex-test@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "safe-regex-test@npm:1.0.0"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ get-intrinsic: "npm:^1.1.3"
+ is-regex: "npm:^1.1.4"
+ checksum: 14a81a7e683f97b2d6e9c8be61fddcf8ed7a02f4e64a825515f96bb1738eb007145359313741d2704d28b55b703a0f6300c749dde7c1dbc13952a2b85048ede2
+ languageName: node
+ linkType: hard
+
+"safer-buffer@npm:>= 2.1.2 < 3.0.0":
+ version: 2.1.2
+ resolution: "safer-buffer@npm:2.1.2"
+ checksum: 7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4
+ languageName: node
+ linkType: hard
+
+"semver@npm:^6.3.0, semver@npm:^6.3.1":
+ version: 6.3.1
+ resolution: "semver@npm:6.3.1"
+ bin:
+ semver: bin/semver.js
+ checksum: e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d
+ languageName: node
+ linkType: hard
+
+"semver@npm:^7.3.5, semver@npm:^7.5.4":
+ version: 7.5.4
+ resolution: "semver@npm:7.5.4"
+ dependencies:
+ lru-cache: "npm:^6.0.0"
+ bin:
+ semver: bin/semver.js
+ checksum: 5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e
+ languageName: node
+ linkType: hard
+
+"set-function-length@npm:^1.1.1":
+ version: 1.1.1
+ resolution: "set-function-length@npm:1.1.1"
+ dependencies:
+ define-data-property: "npm:^1.1.1"
+ get-intrinsic: "npm:^1.2.1"
+ gopd: "npm:^1.0.1"
+ has-property-descriptors: "npm:^1.0.0"
+ checksum: a29e255c116c29e3323b851c4f46c58c91be9bb8b065f191e2ea1807cb2c839df56e3175732a498e0c6d54626ba6b6fef896bf699feb7ab70c42dc47eb247c95
+ languageName: node
+ linkType: hard
+
+"set-function-name@npm:^2.0.0":
+ version: 2.0.1
+ resolution: "set-function-name@npm:2.0.1"
+ dependencies:
+ define-data-property: "npm:^1.0.1"
+ functions-have-names: "npm:^1.2.3"
+ has-property-descriptors: "npm:^1.0.0"
+ checksum: 6be7d3e15be47f4db8a5a563a35c60b5e7c4af91cc900e8972ffad33d3aaa227900faa55f60121cdb04b85866a734bb7fe4cd91f654c632861cc86121a48312a
+ languageName: node
+ linkType: hard
+
+"shebang-command@npm:^2.0.0":
+ version: 2.0.0
+ resolution: "shebang-command@npm:2.0.0"
+ dependencies:
+ shebang-regex: "npm:^3.0.0"
+ checksum: a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e
+ languageName: node
+ linkType: hard
+
+"shebang-regex@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "shebang-regex@npm:3.0.0"
+ checksum: 1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690
+ languageName: node
+ linkType: hard
+
+"side-channel@npm:^1.0.4":
+ version: 1.0.4
+ resolution: "side-channel@npm:1.0.4"
+ dependencies:
+ call-bind: "npm:^1.0.0"
+ get-intrinsic: "npm:^1.0.2"
+ object-inspect: "npm:^1.9.0"
+ checksum: 054a5d23ee35054b2c4609b9fd2a0587760737782b5d765a9c7852264710cc39c6dcb56a9bbd6c12cd84071648aea3edb2359d2f6e560677eedadce511ac1da5
+ languageName: node
+ linkType: hard
+
+"signal-exit@npm:^4.0.1":
+ version: 4.1.0
+ resolution: "signal-exit@npm:4.1.0"
+ checksum: 41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83
+ languageName: node
+ linkType: hard
+
+"slash@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "slash@npm:3.0.0"
+ checksum: e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b
+ languageName: node
+ linkType: hard
+
+"slice-ansi@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "slice-ansi@npm:4.0.0"
+ dependencies:
+ ansi-styles: "npm:^4.0.0"
+ astral-regex: "npm:^2.0.0"
+ is-fullwidth-code-point: "npm:^3.0.0"
+ checksum: 6c25678db1270d4793e0327620f1e0f9f5bea4630123f51e9e399191bc52c87d6e6de53ed33538609e5eacbd1fab769fae00f3705d08d029f02102a540648918
+ languageName: node
+ linkType: hard
+
+"smart-buffer@npm:^4.2.0":
+ version: 4.2.0
+ resolution: "smart-buffer@npm:4.2.0"
+ checksum: a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539
+ languageName: node
+ linkType: hard
+
+"socks-proxy-agent@npm:^8.0.1":
+ version: 8.0.2
+ resolution: "socks-proxy-agent@npm:8.0.2"
+ dependencies:
+ agent-base: "npm:^7.0.2"
+ debug: "npm:^4.3.4"
+ socks: "npm:^2.7.1"
+ checksum: a842402fc9b8848a31367f2811ca3cd14c4106588b39a0901cd7a69029998adfc6456b0203617c18ed090542ad0c24ee4e9d4c75a0c4b75071e214227c177eb7
+ languageName: node
+ linkType: hard
+
+"socks@npm:^2.7.1":
+ version: 2.7.1
+ resolution: "socks@npm:2.7.1"
+ dependencies:
+ ip: "npm:^2.0.0"
+ smart-buffer: "npm:^4.2.0"
+ checksum: 43f69dbc9f34fc8220bc51c6eea1c39715ab3cfdb115d6e3285f6c7d1a603c5c75655668a5bbc11e3c7e2c99d60321fb8d7ab6f38cda6a215fadd0d6d0b52130
+ languageName: node
+ linkType: hard
+
+"ssri@npm:^10.0.0":
+ version: 10.0.5
+ resolution: "ssri@npm:10.0.5"
+ dependencies:
+ minipass: "npm:^7.0.3"
+ checksum: b091f2ae92474183c7ac5ed3f9811457e1df23df7a7e70c9476eaa9a0c4a0c8fc190fb45acefbf023ca9ee864dd6754237a697dc52a0fb182afe65d8e77443d8
+ languageName: node
+ linkType: hard
+
+"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.3":
+ version: 4.2.3
+ resolution: "string-width@npm:4.2.3"
+ dependencies:
+ emoji-regex: "npm:^8.0.0"
+ is-fullwidth-code-point: "npm:^3.0.0"
+ strip-ansi: "npm:^6.0.1"
+ checksum: 1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b
+ languageName: node
+ linkType: hard
+
+"string-width@npm:^5.0.1, string-width@npm:^5.1.2":
+ version: 5.1.2
+ resolution: "string-width@npm:5.1.2"
+ dependencies:
+ eastasianwidth: "npm:^0.2.0"
+ emoji-regex: "npm:^9.2.2"
+ strip-ansi: "npm:^7.0.1"
+ checksum: ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca
+ languageName: node
+ linkType: hard
+
+"string.prototype.trim@npm:^1.2.8":
+ version: 1.2.8
+ resolution: "string.prototype.trim@npm:1.2.8"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ define-properties: "npm:^1.2.0"
+ es-abstract: "npm:^1.22.1"
+ checksum: 4f76c583908bcde9a71208ddff38f67f24c9ec8093631601666a0df8b52fad44dad2368c78895ce83eb2ae8e7068294cc96a02fc971ab234e4d5c9bb61ea4e34
+ languageName: node
+ linkType: hard
+
+"string.prototype.trimend@npm:^1.0.7":
+ version: 1.0.7
+ resolution: "string.prototype.trimend@npm:1.0.7"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ define-properties: "npm:^1.2.0"
+ es-abstract: "npm:^1.22.1"
+ checksum: 53c24911c7c4d8d65f5ef5322de23a3d5b6b4db73273e05871d5ab4571ae5638f38f7f19d71d09116578fb060e5a145cc6a208af2d248c8baf7a34f44d32ce57
+ languageName: node
+ linkType: hard
+
+"string.prototype.trimstart@npm:^1.0.7":
+ version: 1.0.7
+ resolution: "string.prototype.trimstart@npm:1.0.7"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ define-properties: "npm:^1.2.0"
+ es-abstract: "npm:^1.22.1"
+ checksum: 0bcf391b41ea16d4fda9c9953d0a7075171fe090d33b4cf64849af94944c50862995672ac03e0c5dba2940a213ad7f53515a668dac859ce22a0276289ae5cf4f
+ languageName: node
+ linkType: hard
+
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1":
+ version: 6.0.1
+ resolution: "strip-ansi@npm:6.0.1"
+ dependencies:
+ ansi-regex: "npm:^5.0.1"
+ checksum: 1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952
+ languageName: node
+ linkType: hard
+
+"strip-ansi@npm:^7.0.1":
+ version: 7.1.0
+ resolution: "strip-ansi@npm:7.1.0"
+ dependencies:
+ ansi-regex: "npm:^6.0.1"
+ checksum: a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4
+ languageName: node
+ linkType: hard
+
+"strip-bom@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "strip-bom@npm:3.0.0"
+ checksum: 51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1
+ languageName: node
+ linkType: hard
+
+"strip-json-comments@npm:^3.1.1":
+ version: 3.1.1
+ resolution: "strip-json-comments@npm:3.1.1"
+ checksum: 9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd
+ languageName: node
+ linkType: hard
+
+"supports-color@npm:^7.1.0":
+ version: 7.2.0
+ resolution: "supports-color@npm:7.2.0"
+ dependencies:
+ has-flag: "npm:^4.0.0"
+ checksum: afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124
+ languageName: node
+ linkType: hard
+
+"supports-preserve-symlinks-flag@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "supports-preserve-symlinks-flag@npm:1.0.0"
+ checksum: 6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39
+ languageName: node
+ linkType: hard
+
+"table@npm:^6.0.9":
+ version: 6.8.1
+ resolution: "table@npm:6.8.1"
+ dependencies:
+ ajv: "npm:^8.0.1"
+ lodash.truncate: "npm:^4.4.2"
+ slice-ansi: "npm:^4.0.0"
+ string-width: "npm:^4.2.3"
+ strip-ansi: "npm:^6.0.1"
+ checksum: 591ed84b2438b01c9bc02248e2238e21e8bfb73654bc5acca0d469053eb39be3db2f57d600dcf08ac983b6f50f80842c44612c03877567c2afee3aec4a033e5f
+ languageName: node
+ linkType: hard
+
+"tar@npm:^6.1.11, tar@npm:^6.1.2":
+ version: 6.2.0
+ resolution: "tar@npm:6.2.0"
+ dependencies:
+ chownr: "npm:^2.0.0"
+ fs-minipass: "npm:^2.0.0"
+ minipass: "npm:^5.0.0"
+ minizlib: "npm:^2.1.1"
+ mkdirp: "npm:^1.0.3"
+ yallist: "npm:^4.0.0"
+ checksum: 02ca064a1a6b4521fef88c07d389ac0936730091f8c02d30ea60d472e0378768e870769ab9e986d87807bfee5654359cf29ff4372746cc65e30cbddc352660d8
+ languageName: node
+ linkType: hard
+
+"text-table@npm:^0.2.0":
+ version: 0.2.0
+ resolution: "text-table@npm:0.2.0"
+ checksum: 02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c
+ languageName: node
+ linkType: hard
+
+"to-regex-range@npm:^5.0.1":
+ version: 5.0.1
+ resolution: "to-regex-range@npm:5.0.1"
+ dependencies:
+ is-number: "npm:^7.0.0"
+ checksum: 487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892
+ languageName: node
+ linkType: hard
+
+"tr46@npm:~0.0.3":
+ version: 0.0.3
+ resolution: "tr46@npm:0.0.3"
+ checksum: 047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11
+ languageName: node
+ linkType: hard
+
+"trakt.tv@npm:^8.2.0":
+ version: 8.2.0
+ resolution: "trakt.tv@npm:8.2.0"
+ dependencies:
+ got: "npm:11.8.6"
+ checksum: 27d8b0f9f82c990cef9aed9d9a4e834f61db315fb0d0395cc4a2c14f79f4b8dc9e9df13d5fddbbc566b58f37f934113db26f75a98bbbbd7566b636aa93158276
+ languageName: node
+ linkType: hard
+
+"traktdiscordpresence@workspace:.":
+ version: 0.0.0-use.local
+ resolution: "traktdiscordpresence@workspace:."
+ dependencies:
+ "@types/cli-progress": "npm:^3.11.5"
+ "@types/discord-rpc": "npm:^4.0.8"
+ "@types/luxon": "npm:^3.3.7"
+ "@types/node": "npm:^20.10.5"
+ "@typescript-eslint/eslint-plugin": "npm:^6.14.0"
+ "@typescript-eslint/parser": "npm:^6.14.0"
+ cli-progress: "npm:^3.12.0"
+ colors: "npm:^1.4.0"
+ discord-rpc: "npm:^4.0.1"
+ enquirer: "npm:^2.4.1"
+ eslint: "npm:^8.56.0"
+ eslint-config-airbnb: "npm:^19.0.4"
+ eslint-formatter-table: "npm:^7.32.1"
+ eslint-plugin-import: "npm:^2.29.1"
+ luxon: "npm:^3.4.4"
+ pretty-ms: "npm:^8.0.0"
+ trakt.tv: "npm:^8.2.0"
+ ts-node: "npm:^10.9.2"
+ typescript: "npm:^5.3.3"
+ languageName: unknown
+ linkType: soft
+
+"ts-api-utils@npm:^1.0.1":
+ version: 1.0.3
+ resolution: "ts-api-utils@npm:1.0.3"
+ peerDependencies:
+ typescript: ">=4.2.0"
+ checksum: 9408338819c3aca2a709f0bc54e3f874227901506cacb1163612a6c8a43df224174feb965a5eafdae16f66fc68fd7bfee8d3275d0fa73fbb8699e03ed26520c9
+ languageName: node
+ linkType: hard
+
+"ts-node@npm:^10.9.2":
+ version: 10.9.2
+ resolution: "ts-node@npm:10.9.2"
+ dependencies:
+ "@cspotcode/source-map-support": "npm:^0.8.0"
+ "@tsconfig/node10": "npm:^1.0.7"
+ "@tsconfig/node12": "npm:^1.0.7"
+ "@tsconfig/node14": "npm:^1.0.0"
+ "@tsconfig/node16": "npm:^1.0.2"
+ acorn: "npm:^8.4.1"
+ acorn-walk: "npm:^8.1.1"
+ arg: "npm:^4.1.0"
+ create-require: "npm:^1.1.0"
+ diff: "npm:^4.0.1"
+ make-error: "npm:^1.1.1"
+ v8-compile-cache-lib: "npm:^3.0.1"
+ yn: "npm:3.1.1"
+ peerDependencies:
+ "@swc/core": ">=1.2.50"
+ "@swc/wasm": ">=1.2.50"
+ "@types/node": "*"
+ typescript: ">=2.7"
+ peerDependenciesMeta:
+ "@swc/core":
+ optional: true
+ "@swc/wasm":
+ optional: true
+ bin:
+ ts-node: dist/bin.js
+ ts-node-cwd: dist/bin-cwd.js
+ ts-node-esm: dist/bin-esm.js
+ ts-node-script: dist/bin-script.js
+ ts-node-transpile-only: dist/bin-transpile.js
+ ts-script: dist/bin-script-deprecated.js
+ checksum: 5f29938489f96982a25ba650b64218e83a3357d76f7bede80195c65ab44ad279c8357264639b7abdd5d7e75fc269a83daa0e9c62fd8637a3def67254ecc9ddc2
+ languageName: node
+ linkType: hard
+
+"tsconfig-paths@npm:^3.15.0":
+ version: 3.15.0
+ resolution: "tsconfig-paths@npm:3.15.0"
+ dependencies:
+ "@types/json5": "npm:^0.0.29"
+ json5: "npm:^1.0.2"
+ minimist: "npm:^1.2.6"
+ strip-bom: "npm:^3.0.0"
+ checksum: 5b4f301a2b7a3766a986baf8fc0e177eb80bdba6e396792ff92dc23b5bca8bb279fc96517dcaaef63a3b49bebc6c4c833653ec58155780bc906bdbcf7dda0ef5
+ languageName: node
+ linkType: hard
+
+"type-check@npm:^0.4.0, type-check@npm:~0.4.0":
+ version: 0.4.0
+ resolution: "type-check@npm:0.4.0"
+ dependencies:
+ prelude-ls: "npm:^1.2.1"
+ checksum: 7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58
+ languageName: node
+ linkType: hard
+
+"type-fest@npm:^0.20.2":
+ version: 0.20.2
+ resolution: "type-fest@npm:0.20.2"
+ checksum: dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3
+ languageName: node
+ linkType: hard
+
+"typed-array-buffer@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "typed-array-buffer@npm:1.0.0"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ get-intrinsic: "npm:^1.2.1"
+ is-typed-array: "npm:^1.1.10"
+ checksum: ebad66cdf00c96b1395dffc7873169cf09801fca5954507a484f41f253feb1388d815db297b0b3bb8ce7421eac6f7ff45e2ec68450a3d68408aa4ae02fcf3a6c
+ languageName: node
+ linkType: hard
+
+"typed-array-byte-length@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "typed-array-byte-length@npm:1.0.0"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ for-each: "npm:^0.3.3"
+ has-proto: "npm:^1.0.1"
+ is-typed-array: "npm:^1.1.10"
+ checksum: 6696435d53ce0e704ff6760c57ccc35138aec5f87859e03eb2a3246336d546feae367952dbc918116f3f0dffbe669734e3cbd8960283c2fa79aac925db50d888
+ languageName: node
+ linkType: hard
+
+"typed-array-byte-offset@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "typed-array-byte-offset@npm:1.0.0"
+ dependencies:
+ available-typed-arrays: "npm:^1.0.5"
+ call-bind: "npm:^1.0.2"
+ for-each: "npm:^0.3.3"
+ has-proto: "npm:^1.0.1"
+ is-typed-array: "npm:^1.1.10"
+ checksum: 4036ce007ae9752931bed3dd61e0d6de2a3e5f6a5a85a05f3adb35388d2c0728f9b1a1e638d75579f168e49c289bfb5417f00e96d4ab081f38b647fc854ff7a5
+ languageName: node
+ linkType: hard
+
+"typed-array-length@npm:^1.0.4":
+ version: 1.0.4
+ resolution: "typed-array-length@npm:1.0.4"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ for-each: "npm:^0.3.3"
+ is-typed-array: "npm:^1.1.9"
+ checksum: c5163c0103d07fefc8a2ad0fc151f9ca9a1f6422098c00f695d55f9896e4d63614cd62cf8d8a031c6cee5f418e8980a533796597174da4edff075b3d275a7e23
+ languageName: node
+ linkType: hard
+
+"typescript@npm:^5.3.3":
+ version: 5.3.3
+ resolution: "typescript@npm:5.3.3"
+ bin:
+ tsc: bin/tsc
+ tsserver: bin/tsserver
+ checksum: e33cef99d82573624fc0f854a2980322714986bc35b9cb4d1ce736ed182aeab78e2cb32b385efa493b2a976ef52c53e20d6c6918312353a91850e2b76f1ea44f
+ languageName: node
+ linkType: hard
+
+"typescript@patch:typescript@npm%3A^5.3.3#optional!builtin":
+ version: 5.3.3
+ resolution: "typescript@patch:typescript@npm%3A5.3.3#optional!builtin::version=5.3.3&hash=e012d7"
+ bin:
+ tsc: bin/tsc
+ tsserver: bin/tsserver
+ checksum: 1d0a5f4ce496c42caa9a30e659c467c5686eae15d54b027ee7866744952547f1be1262f2d40de911618c242b510029d51d43ff605dba8fb740ec85ca2d3f9500
+ languageName: node
+ linkType: hard
+
+"unbox-primitive@npm:^1.0.2":
+ version: 1.0.2
+ resolution: "unbox-primitive@npm:1.0.2"
+ dependencies:
+ call-bind: "npm:^1.0.2"
+ has-bigints: "npm:^1.0.2"
+ has-symbols: "npm:^1.0.3"
+ which-boxed-primitive: "npm:^1.0.2"
+ checksum: 81ca2e81134167cc8f75fa79fbcc8a94379d6c61de67090986a2273850989dd3bae8440c163121b77434b68263e34787a675cbdcb34bb2f764c6b9c843a11b66
+ languageName: node
+ linkType: hard
+
+"undici-types@npm:~5.26.4":
+ version: 5.26.5
+ resolution: "undici-types@npm:5.26.5"
+ checksum: bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501
+ languageName: node
+ linkType: hard
+
+"unique-filename@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "unique-filename@npm:3.0.0"
+ dependencies:
+ unique-slug: "npm:^4.0.0"
+ checksum: 6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f
+ languageName: node
+ linkType: hard
+
+"unique-slug@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "unique-slug@npm:4.0.0"
+ dependencies:
+ imurmurhash: "npm:^0.1.4"
+ checksum: cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635
+ languageName: node
+ linkType: hard
+
+"uri-js@npm:^4.2.2":
+ version: 4.4.1
+ resolution: "uri-js@npm:4.4.1"
+ dependencies:
+ punycode: "npm:^2.1.0"
+ checksum: 4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c
+ languageName: node
+ linkType: hard
+
+"v8-compile-cache-lib@npm:^3.0.1":
+ version: 3.0.1
+ resolution: "v8-compile-cache-lib@npm:3.0.1"
+ checksum: bdc36fb8095d3b41df197f5fb6f11e3a26adf4059df3213e3baa93810d8f0cc76f9a74aaefc18b73e91fe7e19154ed6f134eda6fded2e0f1c8d2272ed2d2d391
+ languageName: node
+ linkType: hard
+
+"webidl-conversions@npm:^3.0.0":
+ version: 3.0.1
+ resolution: "webidl-conversions@npm:3.0.1"
+ checksum: 5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db
+ languageName: node
+ linkType: hard
+
+"whatwg-url@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "whatwg-url@npm:5.0.0"
+ dependencies:
+ tr46: "npm:~0.0.3"
+ webidl-conversions: "npm:^3.0.0"
+ checksum: 1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5
+ 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: "npm:^1.0.1"
+ is-boolean-object: "npm:^1.1.0"
+ is-number-object: "npm:^1.0.4"
+ is-string: "npm:^1.0.5"
+ is-symbol: "npm:^1.0.3"
+ checksum: 0a62a03c00c91dd4fb1035b2f0733c341d805753b027eebd3a304b9cb70e8ce33e25317add2fe9b5fea6f53a175c0633ae701ff812e604410ddd049777cd435e
+ languageName: node
+ linkType: hard
+
+"which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.13":
+ version: 1.1.13
+ resolution: "which-typed-array@npm:1.1.13"
+ dependencies:
+ available-typed-arrays: "npm:^1.0.5"
+ call-bind: "npm:^1.0.4"
+ for-each: "npm:^0.3.3"
+ gopd: "npm:^1.0.1"
+ has-tostringtag: "npm:^1.0.0"
+ checksum: 9f5f1c42918df3d5b91c4315ed0051d5d874370998bf095c9ae0df374f0881f85094e3c384b8fb08ab7b4d4f54ba81c0aff75da6226e7c0589b83dfbec1cd4c9
+ languageName: node
+ linkType: hard
+
+"which@npm:^2.0.1":
+ version: 2.0.2
+ resolution: "which@npm:2.0.2"
+ dependencies:
+ isexe: "npm:^2.0.0"
+ bin:
+ node-which: ./bin/node-which
+ checksum: 66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f
+ languageName: node
+ linkType: hard
+
+"which@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "which@npm:4.0.0"
+ dependencies:
+ isexe: "npm:^3.1.1"
+ bin:
+ node-which: bin/which.js
+ checksum: 449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a
+ languageName: node
+ linkType: hard
+
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
+ version: 7.0.0
+ resolution: "wrap-ansi@npm:7.0.0"
+ dependencies:
+ ansi-styles: "npm:^4.0.0"
+ string-width: "npm:^4.1.0"
+ strip-ansi: "npm:^6.0.0"
+ checksum: d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da
+ languageName: node
+ linkType: hard
+
+"wrap-ansi@npm:^8.1.0":
+ version: 8.1.0
+ resolution: "wrap-ansi@npm:8.1.0"
+ dependencies:
+ ansi-styles: "npm:^6.1.0"
+ string-width: "npm:^5.0.1"
+ strip-ansi: "npm:^7.0.1"
+ checksum: 138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60
+ languageName: node
+ linkType: hard
+
+"wrappy@npm:1":
+ version: 1.0.2
+ resolution: "wrappy@npm:1.0.2"
+ checksum: 56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0
+ languageName: node
+ linkType: hard
+
+"ws@npm:^7.3.1":
+ version: 7.5.9
+ resolution: "ws@npm:7.5.9"
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: ^5.0.2
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+ checksum: aec4ef4eb65821a7dde7b44790f8699cfafb7978c9b080f6d7a98a7f8fc0ce674c027073a78574c94786ba7112cc90fa2cc94fc224ceba4d4b1030cff9662494
+ languageName: node
+ linkType: hard
+
+"yallist@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "yallist@npm:4.0.0"
+ checksum: 2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a
+ languageName: node
+ linkType: hard
+
+"yn@npm:3.1.1":
+ version: 3.1.1
+ resolution: "yn@npm:3.1.1"
+ checksum: 0732468dd7622ed8a274f640f191f3eaf1f39d5349a1b72836df484998d7d9807fbea094e2f5486d6b0cd2414aad5775972df0e68f8604db89a239f0f4bf7443
+ languageName: node
+ linkType: hard
+
+"yocto-queue@npm:^0.1.0":
+ version: 0.1.0
+ resolution: "yocto-queue@npm:0.1.0"
+ checksum: dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f
+ languageName: node
+ linkType: hard