From 2d461c93e90d9c00f33de558a4572c0b661dceb0 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Mon, 21 Nov 2022 17:05:12 +1300 Subject: [PATCH 01/35] Add project_token --- src/classes/Project.ts | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/classes/Project.ts b/src/classes/Project.ts index cd8fd22..a38f307 100644 --- a/src/classes/Project.ts +++ b/src/classes/Project.ts @@ -53,6 +53,7 @@ interface ProjectAPIResponse { parent: null | number; root: null | number; }; + project_token: string; } interface ProjectComment { @@ -91,7 +92,6 @@ interface ProjectCommentReply { class Project { id: number; session: Session; - scratchProjectAPI: ProjectAPIResponse; constructor({ id, session }: { id: number; session: Session }) { this.id = id; this.session = session; @@ -101,7 +101,6 @@ class Project { * Gets the api.scratch.mit.edu response of the project */ async getAPIData(): Promise { - if (typeof this.scratchProjectAPI === "undefined") { const apiFetch = await fetch( `https://api.scratch.mit.edu/projects/${this.id}`, { @@ -113,9 +112,7 @@ class Project { if (!apiFetch.ok) { throw new Error("Cannot find project."); } - this.scratchProjectAPI = await apiFetch.json(); - } - return this.scratchProjectAPI; + return await apiFetch.json(); } /** @@ -197,7 +194,6 @@ class Project { if (!setFetch.ok) { throw new Error(`Error in setting title. ${setFetch.status}`); } - this.scratchProjectAPI = undefined; // this is to reset it } /** * Sets the instructions of the project (requires ownership of the project) @@ -225,7 +221,6 @@ class Project { if (!setFetch.ok) { throw new Error(`Error in setting instructions. ${setFetch.status}`); } - this.scratchProjectAPI = undefined; // this is to reset it } /** @@ -254,7 +249,6 @@ class Project { if (!setFetch.ok) { throw new Error(`Error in setting Notes and Credits. ${setFetch.status}`); } - this.scratchProjectAPI = undefined; // this is to reset it } /** From 3dfda097b4b9935cee8a33fa5cf7b0bbb65d0d43 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Fri, 25 Nov 2022 11:55:18 +1300 Subject: [PATCH 02/35] Fix readme --- README.md | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 5d187f3..5d2c06b 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Meowclient [![Test](https://github.com/webdev03/meowclient/actions/workflows/test.yml/badge.svg)](https://github.com/webdev03/meowclient/actions/workflows/test.yml) -

A very cool library to connect to Scratch.

+

A feature-rich library to connect to Scratch.

## Getting Started @@ -9,15 +9,12 @@ Follow the steps below: ### âŗ Installation -Install Meowclient with this **Quickstart** command to install the latest version of meowclient in your `package.json`. +If you run this install command you will get the latest version of meowclient in your `package.json`. ```bash npm install meowclient ``` -This command generates a brand new project with the default features. -#### The library supports both CJS and ESM. - ## Example (async) ```javascript @@ -29,7 +26,7 @@ const me = session.getProfile(session.username); console.log("My status is " + (await me.getStatus())); ``` -You might be able to use this **without even logging in by not running .init** on the session. +Some features are available without logging in if you don't run the `session.init` function. ### The CJS way (if you still use it) @@ -38,22 +35,13 @@ const { ScratchSession } = require("meowclient"); const session = new ScratchSession(); await session.init("user", "pass"); const me = session.getProfile(session.username); -// next line gets html and stores it so only 1 fetch request and no .init function - recreate the object to reset it +// User.getStatus gets the status of the user, either "New Scratcher", "Scratcher" or "Scratch Team" console.log("My status is " + (await me.getStatus())); ``` -## Awesome features - -CJS **and** ESM support powered by tsup package! -This is made with _typescript_ so you will also get .d.ts definition file and I will try my best to make good documentation! Some JSDoc comments are there too. - -## Why not _insert library name here_? - -ESM support, typescript, comments parsing - -## Extra things +## Note -I will not add any social actions to the library because then less chance of people getting banned from Scratch. +Automating social actions such as loving, favouriting, commenting, or following users is not allowed in the Scratch Terms of Use so I won't add those features to meowclient unless you have a good reason, although if you know how to use the Scratch API you can definitely make your own fetch requests with the session. ## Thanks From 1071aeef78203de817e736caa1b68685804d4e88 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Fri, 25 Nov 2022 11:55:36 +1300 Subject: [PATCH 03/35] Remove unnecessary properties --- src/classes/Profile.ts | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/classes/Profile.ts b/src/classes/Profile.ts index 711da03..7ec95da 100644 --- a/src/classes/Profile.ts +++ b/src/classes/Profile.ts @@ -41,8 +41,6 @@ interface ProfileComment { class Profile { user: string; - status: string; - private scratchUserHTML: string; session: Session; scratchUserAPI: UserAPIResponse; constructor({ username, session }: { username: string; session: Session }) { @@ -94,16 +92,13 @@ class Profile { } private async getUserHTML() { - if (!(typeof this.scratchUserHTML === "string")) { const scratchUserFetch = await fetch( `https://scratch.mit.edu/users/${this.user}` ); if (!scratchUserFetch.ok) { throw new Error("Cannot find user."); } - this.scratchUserHTML = await scratchUserFetch.text(); - } - return this.scratchUserHTML; + return await scratchUserFetch.text(); } /** @@ -111,7 +106,6 @@ class Profile { * @returns The API response of the user */ async getUserAPI() { - if (typeof this.scratchUserAPI === "undefined") { const scratchUserFetch = await fetch( `https://api.scratch.mit.edu/users/${this.user}` ); @@ -119,8 +113,6 @@ class Profile { throw new Error("Cannot find user."); } this.scratchUserAPI = await scratchUserFetch.json(); - } - return this.scratchUserAPI; } /** From 28a982c01b47e137b7a19c2bdec49cd6c7110166 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Fri, 25 Nov 2022 12:01:07 +1300 Subject: [PATCH 04/35] Remove unnecessary properties 2 --- src/classes/Studio.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/classes/Studio.ts b/src/classes/Studio.ts index 0fee5a9..46e077c 100644 --- a/src/classes/Studio.ts +++ b/src/classes/Studio.ts @@ -43,14 +43,12 @@ interface StudioAPIResponse { class Studio { id: number; session: Session; - scratchStudioAPI: StudioAPIResponse; constructor({ id, session }: { id: number; session: Session }) { this.id = id; this.session = session; } async getAPIData(): Promise { - if (typeof this.scratchStudioAPI === "undefined") { const response = await fetch( `https://api.scratch.mit.edu/studios/${this.id}/`, { @@ -59,9 +57,7 @@ class Studio { } } ); - this.scratchStudioAPI = await response.json(); - } - return this.scratchStudioAPI; + return await response.json(); } /** From a51a301dedb35f6dbb432e20bb7ad523892fb35c Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Fri, 25 Nov 2022 12:22:44 +1300 Subject: [PATCH 05/35] Format --- .github/workflows/codeql-analysis.yml | 65 +++++++++++++-------------- README.md | 9 ++-- src/classes/Profile.ts | 28 ++++++------ src/classes/Project.ts | 20 ++++----- src/classes/Studio.ts | 16 +++---- 5 files changed, 67 insertions(+), 71 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index ab9b63f..c7dad92 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -13,12 +13,12 @@ name: "CodeQL" on: push: - branches: [ "main" ] + branches: ["main"] pull_request: # The branches below must be a subset of the branches above - branches: [ "main" ] + branches: ["main"] schedule: - - cron: '19 6 * * 1' + - cron: "19 6 * * 1" jobs: analyze: @@ -32,43 +32,42 @@ jobs: strategy: fail-fast: false matrix: - language: [ 'javascript' ] + language: ["javascript"] # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support steps: - - name: Checkout repository - uses: actions/checkout@v3 + - name: Checkout repository + uses: actions/checkout@v3 - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - - # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs - # queries: security-extended,security-and-quality + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v2 + # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs + # queries: security-extended,security-and-quality - # â„šī¸ Command-line programs to run using the OS shell. - # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v2 - # If the Autobuild fails above, remove it and uncomment the following three lines. - # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. + # â„šī¸ Command-line programs to run using the OS shell. + # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun - # - run: | - # echo "Run, Build Application using script" - # ./location_of_script_within_repo/buildscript.sh + # If the Autobuild fails above, remove it and uncomment the following three lines. + # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 - with: - category: "/language:${{matrix.language}}" + # - run: | + # echo "Run, Build Application using script" + # ./location_of_script_within_repo/buildscript.sh + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 + with: + category: "/language:${{matrix.language}}" diff --git a/README.md b/README.md index 5d2c06b..8a24adf 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,12 @@ - # Meowclient [![Test](https://github.com/webdev03/meowclient/actions/workflows/test.yml/badge.svg)](https://github.com/webdev03/meowclient/actions/workflows/test.yml) - +

A feature-rich library to connect to Scratch.

-## Getting Started +## Getting Started Follow the steps below: -### âŗ Installation +### âŗ Installation If you run this install command you will get the latest version of meowclient in your `package.json`. @@ -46,5 +45,3 @@ Automating social actions such as loving, favouriting, commenting, or following ## Thanks Thanks to [Scratchclient](https://github.com/CubeyTheCube/scratchclient) and Raihan142857 ([CubeyTheCube](https://github.com/CubeyTheCube)) for a lot of the login stuff! - - diff --git a/src/classes/Profile.ts b/src/classes/Profile.ts index 7ec95da..ba8977e 100644 --- a/src/classes/Profile.ts +++ b/src/classes/Profile.ts @@ -92,13 +92,13 @@ class Profile { } private async getUserHTML() { - const scratchUserFetch = await fetch( - `https://scratch.mit.edu/users/${this.user}` - ); - if (!scratchUserFetch.ok) { - throw new Error("Cannot find user."); - } - return await scratchUserFetch.text(); + const scratchUserFetch = await fetch( + `https://scratch.mit.edu/users/${this.user}` + ); + if (!scratchUserFetch.ok) { + throw new Error("Cannot find user."); + } + return await scratchUserFetch.text(); } /** @@ -106,13 +106,13 @@ class Profile { * @returns The API response of the user */ async getUserAPI() { - const scratchUserFetch = await fetch( - `https://api.scratch.mit.edu/users/${this.user}` - ); - if (!scratchUserFetch.ok) { - throw new Error("Cannot find user."); - } - this.scratchUserAPI = await scratchUserFetch.json(); + const scratchUserFetch = await fetch( + `https://api.scratch.mit.edu/users/${this.user}` + ); + if (!scratchUserFetch.ok) { + throw new Error("Cannot find user."); + } + this.scratchUserAPI = await scratchUserFetch.json(); } /** diff --git a/src/classes/Project.ts b/src/classes/Project.ts index a38f307..5a39a7e 100644 --- a/src/classes/Project.ts +++ b/src/classes/Project.ts @@ -101,18 +101,18 @@ class Project { * Gets the api.scratch.mit.edu response of the project */ async getAPIData(): Promise { - const apiFetch = await fetch( - `https://api.scratch.mit.edu/projects/${this.id}`, - { - headers: { - "User-Agent": UserAgent - } + const apiFetch = await fetch( + `https://api.scratch.mit.edu/projects/${this.id}`, + { + headers: { + "User-Agent": UserAgent } - ); - if (!apiFetch.ok) { - throw new Error("Cannot find project."); } - return await apiFetch.json(); + ); + if (!apiFetch.ok) { + throw new Error("Cannot find project."); + } + return await apiFetch.json(); } /** diff --git a/src/classes/Studio.ts b/src/classes/Studio.ts index 46e077c..62209ee 100644 --- a/src/classes/Studio.ts +++ b/src/classes/Studio.ts @@ -49,15 +49,15 @@ class Studio { } async getAPIData(): Promise { - const response = await fetch( - `https://api.scratch.mit.edu/studios/${this.id}/`, - { - headers: { - "User-Agent": UserAgent - } + const response = await fetch( + `https://api.scratch.mit.edu/studios/${this.id}/`, + { + headers: { + "User-Agent": UserAgent } - ); - return await response.json(); + } + ); + return await response.json(); } /** From 1a31930dc451b4db6e71ad1db7d26ecccfc14bcb Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Fri, 25 Nov 2022 17:52:46 +1300 Subject: [PATCH 06/35] Add ability to upload to assets --- src/ScratchSession.ts | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/src/ScratchSession.ts b/src/ScratchSession.ts index ff25fe1..6563396 100644 --- a/src/ScratchSession.ts +++ b/src/ScratchSession.ts @@ -3,10 +3,9 @@ import Profile from "./classes/Profile"; import Project from "./classes/Project"; import Studio from "./classes/Studio"; import Forum from "./classes/forums/Forum"; - import { SessionJSON, UserAgent } from "./Consts"; import fetch from "cross-fetch"; - +import { createHash } from "node:crypto"; /** * Logs into Scratch */ @@ -111,6 +110,37 @@ class ScratchSession { return new Forum({ id: id, session: this }); } + /** + * Uploads a file to assets.scratch.mit.edu. + * This can be used for adding images to be used in a forum post or signature. + * @param buffer The buffer of the file you want to upload + * @param fileExtension The extension of the file you have uploaded, for example "png" + * @returns The URL to access the file you have uploaded + * @example + * await session.uploadToAssets(fs.readFileSync("photo.png"), "png"); // returns URL to image + */ + async uploadToAssets(buffer: Buffer, fileExtension: string) { + const md5hash = createHash("md5").update(buffer).digest("hex"); + const upload = await fetch(`https://assets.scratch.mit.edu/${md5hash}.${fileExtension}`, { + method: "POST", + body: buffer, + headers: { + Cookie: this.cookieSet, + "User-Agent": UserAgent, + Referer: "https://scratch.mit.edu/", + Host: "assets.scratch.mit.edu", + "Cache-Control": "no-cache", + Pragma: "no-cache", + Accept: "*/*", + "Accept-Encoding": "gzip, deflate, br" + } + }); + if(!upload.ok) { + throw new Error("Upload failed"); + } + return `https://assets.scratch.mit.edu/${md5hash}.${fileExtension}`; + } + /** * Logs out of Scratch */ From f573fa7b3ce97ed3f0b4686e2fa9ca35d11ff037 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Fri, 25 Nov 2022 17:57:05 +1300 Subject: [PATCH 07/35] fix README --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 8a24adf..f6a4b21 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Meowclient [![Test](https://github.com/webdev03/meowclient/actions/workflows/test.yml/badge.svg)](https://github.com/webdev03/meowclient/actions/workflows/test.yml) -

A feature-rich library to connect to Scratch.

+

A feature-rich library to connect to Scratch.

## Getting Started @@ -21,7 +21,6 @@ import { ScratchSession } from "meowclient"; const session = new ScratchSession(); await session.init("user", "pass"); const me = session.getProfile(session.username); -// next line gets html and stores it so only 1 fetch request and no .init function - recreate the object to reset it console.log("My status is " + (await me.getStatus())); ``` From 8e5435ea58a19e02c3281e66b24375a29f8b72a9 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Fri, 25 Nov 2022 18:00:14 +1300 Subject: [PATCH 08/35] Format --- src/ScratchSession.ts | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/ScratchSession.ts b/src/ScratchSession.ts index 6563396..3214901 100644 --- a/src/ScratchSession.ts +++ b/src/ScratchSession.ts @@ -121,21 +121,24 @@ class ScratchSession { */ async uploadToAssets(buffer: Buffer, fileExtension: string) { const md5hash = createHash("md5").update(buffer).digest("hex"); - const upload = await fetch(`https://assets.scratch.mit.edu/${md5hash}.${fileExtension}`, { - method: "POST", - body: buffer, - headers: { - Cookie: this.cookieSet, - "User-Agent": UserAgent, - Referer: "https://scratch.mit.edu/", - Host: "assets.scratch.mit.edu", - "Cache-Control": "no-cache", - Pragma: "no-cache", - Accept: "*/*", - "Accept-Encoding": "gzip, deflate, br" + const upload = await fetch( + `https://assets.scratch.mit.edu/${md5hash}.${fileExtension}`, + { + method: "POST", + body: buffer, + headers: { + Cookie: this.cookieSet, + "User-Agent": UserAgent, + Referer: "https://scratch.mit.edu/", + Host: "assets.scratch.mit.edu", + "Cache-Control": "no-cache", + Pragma: "no-cache", + Accept: "*/*", + "Accept-Encoding": "gzip, deflate, br" + } } - }); - if(!upload.ok) { + ); + if (!upload.ok) { throw new Error("Upload failed"); } return `https://assets.scratch.mit.edu/${md5hash}.${fileExtension}`; From 9f3320a1679548095adf2313e5e5b09237170e09 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Fri, 25 Nov 2022 21:51:56 +1300 Subject: [PATCH 09/35] change docs --- docs/pages/classes/CloudConnection.md | 4 ++-- docs/pages/index.md | 10 ++++------ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/docs/pages/classes/CloudConnection.md b/docs/pages/classes/CloudConnection.md index 6990132..fdb7e97 100644 --- a/docs/pages/classes/CloudConnection.md +++ b/docs/pages/classes/CloudConnection.md @@ -8,7 +8,7 @@ The class to use cloud variables. Accessible through `Project.createCloudConnect ### setVariable -Sets a cloud variable +Sets a cloud variable. #### Parameters @@ -17,7 +17,7 @@ Sets a cloud variable ### getVariable -Gets a cloud variable +Gets a cloud variable. #### Parameters diff --git a/docs/pages/index.md b/docs/pages/index.md index c03b468..2b0ba64 100644 --- a/docs/pages/index.md +++ b/docs/pages/index.md @@ -24,12 +24,10 @@ A basic starter program: ```js import { ScratchSession } from "meowclient"; -(async () => { - const session = new ScratchSession(); - await session.init("user", "pass"); // change these to your scratch login credentials - const me = session.getProfile(session.username); - console.log("My status is " + (await me.getStatus())); -})(); +const session = new ScratchSession(); +await session.init("user", "pass"); // change these to your scratch login credentials +const me = session.getProfile(session.username); +console.log("My status is " + (await me.getStatus())); ``` Documentation is **work in progress** and not all things have been added yet. From 5ae8b5269e546665fa273c681b94f5699fa60985 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Sat, 26 Nov 2022 09:18:07 +1300 Subject: [PATCH 10/35] Refactor types --- src/classes/Profile.ts | 6 +++--- src/classes/Project.ts | 18 +++++++----------- src/classes/Studio.ts | 25 ++++++++----------------- 3 files changed, 18 insertions(+), 31 deletions(-) diff --git a/src/classes/Profile.ts b/src/classes/Profile.ts index ba8977e..57f67f7 100644 --- a/src/classes/Profile.ts +++ b/src/classes/Profile.ts @@ -53,7 +53,7 @@ class Profile { * Can either be Scratcher, New Scratcher, or Scratch Team. * @returns {string} The status of the user. */ - async getStatus(): Promise<"Scratcher" | "New Scratcher" | "Scratch Team"> { + async getStatus() { const dom = parse(await this.getUserHTML()); return dom.querySelector(".group").innerHTML.trim() as | "Scratcher" @@ -118,10 +118,10 @@ class Profile { /** * Gets comments on the user's profile * @param page The page to look at. - * @returns {Array} An array of comments. + * @returns An array of comments. * apiID is used to input into deleteComment */ - async getComments(page: number = 1): Promise { + async getComments(page: number = 1) { const commentFetch = await fetch( `https://scratch.mit.edu/site-api/comments/user/${this.user}/?page=${page}` ); diff --git a/src/classes/Project.ts b/src/classes/Project.ts index 5a39a7e..87abf8e 100644 --- a/src/classes/Project.ts +++ b/src/classes/Project.ts @@ -100,7 +100,7 @@ class Project { /** * Gets the api.scratch.mit.edu response of the project */ - async getAPIData(): Promise { + async getAPIData() { const apiFetch = await fetch( `https://api.scratch.mit.edu/projects/${this.id}`, { @@ -112,7 +112,7 @@ class Project { if (!apiFetch.ok) { throw new Error("Cannot find project."); } - return await apiFetch.json(); + return (await apiFetch.json()) as ProjectAPIResponse; } /** @@ -121,7 +121,7 @@ class Project { * @param limit The limit of comments to return * @returns The API response */ - async getComments(offset = 0, limit = 20): Promise { + async getComments(offset = 0, limit = 20) { const apiData = await this.getAPIData(); const commentFetch = await fetch( `https://api.scratch.mit.edu/users/${apiData.author.username}/projects/${this.id}/comments?offset=${offset}&limit=${limit}`, @@ -136,21 +136,17 @@ class Project { `Comments returned status ${commentFetch.status} - ${commentFetch.statusText}` ); } - return await commentFetch.json(); + return (await commentFetch.json()) as ProjectComment[]; } /** - * Gets the comment replies to a comment + * Gets the replies to a comment * @param offset The offset of comments * @param limit The limit of comments to return * @param id The id of the comment to get * @returns The comment replies */ - async getCommentReplies( - offset = 0, - limit = 20, - id: number | string - ): Promise { + async getCommentReplies(id: number | string, offset = 0, limit = 20) { const apiData = await this.getAPIData(); const commentFetch = await fetch( `https://api.scratch.mit.edu/users/${apiData.author.username}/projects/${this.id}/comments/${id}/replies?offset=${offset}&limit=${limit}`, @@ -165,7 +161,7 @@ class Project { `Comments returned status ${commentFetch.status} - ${commentFetch.statusText}` ); } - return await commentFetch.json(); + return (await commentFetch.json()) as ProjectCommentReply[]; } /** diff --git a/src/classes/Studio.ts b/src/classes/Studio.ts index 62209ee..dfb4bbb 100644 --- a/src/classes/Studio.ts +++ b/src/classes/Studio.ts @@ -48,7 +48,7 @@ class Studio { this.session = session; } - async getAPIData(): Promise { + async getAPIData() { const response = await fetch( `https://api.scratch.mit.edu/studios/${this.id}/`, { @@ -57,7 +57,7 @@ class Studio { } } ); - return await response.json(); + return (await response.json()) as StudioAPIResponse; } /** @@ -202,10 +202,7 @@ class Studio { * @param offset The offset of the curators to return * @returns An array of curators */ - async getCurators( - limit: number = 24, - offset: number = 0 - ): Promise { + async getCurators(limit: number = 24, offset: number = 0) { const getFetch = await fetch( `https://api.scratch.mit.edu/studios/${this.id}/curators/?limit=${limit}&offset=${offset}`, { @@ -217,7 +214,7 @@ class Studio { if (!getFetch.ok) { throw new Error(`Could not get curators - ${getFetch.statusText}`); } - return await getFetch.json(); + return (await getFetch.json()) as UserAPIResponse[]; } /** @@ -226,10 +223,7 @@ class Studio { * @param offset The offset of the managers to return * @returns An array of managers */ - async getManagers( - limit: number = 24, - offset: number = 0 - ): Promise { + async getManagers(limit: number = 24, offset: number = 0) { const getFetch = await fetch( `https://api.scratch.mit.edu/studios/${this.id}/managers/?limit=${limit}&offset=${offset}`, { @@ -241,7 +235,7 @@ class Studio { if (!getFetch.ok) { throw new Error(`Could not get managers - ${getFetch.statusText}`); } - return await getFetch.json(); + return (await getFetch.json()) as UserAPIResponse[]; } /** @@ -250,10 +244,7 @@ class Studio { * @param offset The offset of the projects to return * @returns An array of users */ - async getProjects( - limit: number = 24, - offset: number = 0 - ): Promise { + async getProjects(limit: number = 24, offset: number = 0) { const getFetch = await fetch( `https://api.scratch.mit.edu/studios/${this.id}/projects/?limit=${limit}&offset=${offset}`, { @@ -265,7 +256,7 @@ class Studio { if (!getFetch.ok) { throw new Error(`Could not get projects - ${getFetch.statusText}`); } - return await getFetch.json(); + return (await getFetch.json()) as OldProjectResponse[]; } } From a85ae3320606e42cbda1a2a2a61f812b2f411887 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Sat, 26 Nov 2022 11:20:07 +1300 Subject: [PATCH 11/35] Fix tests --- tests/project.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/project.spec.js b/tests/project.spec.js index 9852fc7..4eeebd9 100644 --- a/tests/project.spec.js +++ b/tests/project.spec.js @@ -29,7 +29,7 @@ tap.test("make sure project comments are iterable", (t) => { tap.test("make sure project comment replies work", async (t) => { const id = comments[0].id; - const replies = await project.getCommentReplies(0, 20, id); + const replies = await project.getCommentReplies(id, 0, 20); const reply = replies[0]; t.type(reply, "object"); t.end(); From 938120f5970e8331604a195736aca92f76285b67 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Sat, 26 Nov 2022 15:52:51 +1300 Subject: [PATCH 12/35] Add TS tests --- package.json | 4 +- pnpm-lock.yaml | 110 +++++++++++++++++++-- tests/{profile.spec.js => profile.spec.ts} | 9 +- tests/{project.spec.js => project.spec.ts} | 2 +- tests/{studio.spec.js => studio.spec.ts} | 2 +- tsconfig.json | 8 +- 6 files changed, 117 insertions(+), 18 deletions(-) rename tests/{profile.spec.js => profile.spec.ts} (85%) rename tests/{project.spec.js => project.spec.ts} (94%) rename tests/{studio.spec.js => studio.spec.ts} (96%) diff --git a/package.json b/package.json index f1f11d6..0790822 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "build": "tsup src/index.ts --format cjs,esm --minify --dts", "build:watch": "tsup src/index.ts --format cjs,esm --minify --dts --watch", "prepublish": "tsup src/index.ts --format cjs,esm --minify --dts", - "test": "tsup src/index.ts --format cjs,esm --minify && tap", + "test": "tap --no-coverage --node-arg=--loader=ts-node/esm --node-arg=--experimental-specifier-resolution=node", "lint": "prettier --check .", "format": "prettier --write ." }, @@ -20,9 +20,11 @@ "license": "MIT", "devDependencies": { "@types/node": "^17.0.14", + "@types/tap": "^15.0.7", "@types/ws": "^8.2.2", "prettier": "^2.5.1", "tap": "^16.1.0", + "ts-node": "^10.9.1", "tsup": "^5.11.13", "typescript": "^4.5.5" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b2525db..d60d7e8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2,11 +2,13 @@ lockfileVersion: 5.4 specifiers: '@types/node': ^17.0.14 + '@types/tap': ^15.0.7 '@types/ws': ^8.2.2 cross-fetch: ^3.1.5 node-html-parser: ^5.2.0 prettier: ^2.5.1 tap: ^16.1.0 + ts-node: ^10.9.1 tsup: ^5.11.13 typescript: ^4.5.5 ws: ^8.4.2 @@ -18,10 +20,12 @@ dependencies: devDependencies: '@types/node': 17.0.14 + '@types/tap': 15.0.7 '@types/ws': 8.2.2 prettier: 2.5.1 - tap: 16.1.0_typescript@4.5.5 - tsup: 5.11.13_typescript@4.5.5 + tap: 16.1.0_m7b2umgpdlo7valsqrwayzc5jy + ts-node: 10.9.1_ipjagzjez2l2vadwzzudid5j5q + tsup: 5.11.13_m7b2umgpdlo7valsqrwayzc5jy typescript: 4.5.5 packages: @@ -222,6 +226,13 @@ packages: to-fast-properties: 2.0.0 dev: true + /@cspotcode/source-map-support/0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true + /@istanbuljs/load-nyc-config/1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -275,16 +286,49 @@ packages: fastq: 1.13.0 dev: true + /@tsconfig/node10/1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + dev: true + + /@tsconfig/node12/1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true + + /@tsconfig/node14/1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true + + /@tsconfig/node16/1.0.3: + resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} + dev: true + /@types/node/17.0.14: resolution: {integrity: sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==} dev: true + /@types/tap/15.0.7: + resolution: {integrity: sha512-TTMajw4gxQfFgYbhXhy/Tb2OiNcwS+4oP/9yp1/GdU0pFJo3wtnkYhRgmQy39ksh+rnoa0VrPHJ4Tuv2cLNQ5A==} + dependencies: + '@types/node': 17.0.14 + dev: true + /@types/ws/8.2.2: resolution: {integrity: sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==} dependencies: '@types/node': 17.0.14 dev: true + /acorn-walk/8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn/8.8.1: + resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /aggregate-error/3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} @@ -340,6 +384,10 @@ packages: resolution: {integrity: sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=} dev: true + /arg/4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true + /argparse/1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: @@ -528,6 +576,10 @@ packages: safe-buffer: 5.1.2 dev: true + /create-require/1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true + /cross-fetch/3.1.5: resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} dependencies: @@ -1260,6 +1312,10 @@ packages: semver: 6.3.0 dev: true + /make-error/1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + /merge-stream/2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true @@ -1507,7 +1563,7 @@ packages: find-up: 4.1.0 dev: true - /postcss-load-config/3.1.1: + /postcss-load-config/3.1.1_ts-node@10.9.1: resolution: {integrity: sha512-c/9XYboIbSEUZpiD1UQD0IKiUe8n9WHYV7YFe7X7J+ZwCsEKkUJSFWjS9hBU1RR9THR7jMXst8sxiqP0jjo2mg==} engines: {node: '>= 10'} peerDependencies: @@ -1517,6 +1573,7 @@ packages: optional: true dependencies: lilconfig: 2.0.4 + ts-node: 10.9.1_ipjagzjez2l2vadwzzudid5j5q yaml: 1.10.2 dev: true @@ -1768,7 +1825,7 @@ packages: yaml: 1.10.2 dev: true - /tap/16.1.0_typescript@4.5.5: + /tap/16.1.0_m7b2umgpdlo7valsqrwayzc5jy: resolution: {integrity: sha512-EFERYEEDCLjvsT+B+z/qAVuxh5JPEmtn0aGh1ZT/2BN5nVLm6VbcL9fR/Y2FtsxvHuEC3Q2xLc1n1h7mnWVP9w==} engines: {node: '>=12'} hasBin: true @@ -1807,6 +1864,7 @@ packages: tap-parser: 11.0.1 tap-yaml: 1.0.0 tcompare: 5.0.7 + ts-node: 10.9.1_ipjagzjez2l2vadwzzudid5j5q typescript: 4.5.5 which: 2.0.2 transitivePeerDependencies: @@ -1877,7 +1935,38 @@ packages: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: true - /tsup/5.11.13_typescript@4.5.5: + /ts-node/10.9.1_ipjagzjez2l2vadwzzudid5j5q: + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + 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 + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 17.0.14 + acorn: 8.8.1 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.5.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /tsup/5.11.13_m7b2umgpdlo7valsqrwayzc5jy: resolution: {integrity: sha512-NVMK01gVmojZn7+iZwxRK1CzW2BIabaVMyEjs7Nm9lm4DrSf7IAqs2F3fg0vT7rH72x1cIBsW9U/TlWrCvHVQQ==} hasBin: true peerDependencies: @@ -1894,7 +1983,7 @@ packages: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 3.1.1 + postcss-load-config: 3.1.1_ts-node@10.9.1 resolve-from: 5.0.0 rollup: 2.67.0 source-map: 0.7.3 @@ -1936,6 +2025,10 @@ packages: hasBin: true dev: true + /v8-compile-cache-lib/3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true + /webidl-conversions/3.0.1: resolution: {integrity: sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=} dev: false @@ -2040,3 +2133,8 @@ packages: y18n: 4.0.3 yargs-parser: 18.1.3 dev: true + + /yn/3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true diff --git a/tests/profile.spec.js b/tests/profile.spec.ts similarity index 85% rename from tests/profile.spec.js rename to tests/profile.spec.ts index 31f4b19..d5b34ce 100644 --- a/tests/profile.spec.js +++ b/tests/profile.spec.ts @@ -1,5 +1,5 @@ import tap from "tap"; -import { ScratchSession } from "../dist/index.js"; +import { ScratchSession } from "../src"; const session = new ScratchSession(); @@ -12,13 +12,6 @@ tap.test("make sure status is string", async (t) => { t.end(); }); -tap.test("make sure status is not empty", async (t) => { - if ((await user.getStatus()) === "") { - throw new Error("Status is empty"); - } - t.end(); -}); - // profile comments const profileComments = await user.getComments(); diff --git a/tests/project.spec.js b/tests/project.spec.ts similarity index 94% rename from tests/project.spec.js rename to tests/project.spec.ts index 4eeebd9..7db6bf6 100644 --- a/tests/project.spec.js +++ b/tests/project.spec.ts @@ -1,5 +1,5 @@ import tap from "tap"; -import { ScratchSession } from "../dist/index.js"; +import { ScratchSession } from "../src"; const session = new ScratchSession(); diff --git a/tests/studio.spec.js b/tests/studio.spec.ts similarity index 96% rename from tests/studio.spec.js rename to tests/studio.spec.ts index 7e550e8..72260cb 100644 --- a/tests/studio.spec.js +++ b/tests/studio.spec.ts @@ -1,5 +1,5 @@ import tap from "tap"; -import { ScratchSession } from "../dist/index.js"; +import { ScratchSession } from "../src"; const session = new ScratchSession(); diff --git a/tsconfig.json b/tsconfig.json index dd32e4e..d529880 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,6 +3,12 @@ "exclude": ["node_modules", "**/*.spec.ts", "dist"], "compilerOptions": { "moduleResolution": "node", - "allowSyntheticDefaultImports": true + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "module": "es2022", + "target": "es2020" + }, + "ts-node": { + "esm": true } } From 5f84cfdc2cb2b34c212020938cdadea46c5a1df5 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Sat, 26 Nov 2022 15:57:39 +1300 Subject: [PATCH 13/35] Remove unnecessary lines --- tsconfig.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index d529880..528b04b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,8 +7,5 @@ "esModuleInterop": true, "module": "es2022", "target": "es2020" - }, - "ts-node": { - "esm": true } } From c204524e43a63e841fb2d413b06d66f677af3365 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Sun, 27 Nov 2022 14:28:40 +1300 Subject: [PATCH 14/35] Fix some types --- src/classes/CloudConnection.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/classes/CloudConnection.ts b/src/classes/CloudConnection.ts index 633efa5..515f154 100644 --- a/src/classes/CloudConnection.ts +++ b/src/classes/CloudConnection.ts @@ -15,10 +15,12 @@ class CloudConnection extends events.EventEmitter { user: string; method: string; name: string; - value: string | number; + value: string; project_id: number; }> = []; - variables: object = {}; + variables: { + [name: string]: string + } = {}; disconnected: boolean = false; constructor({ id, @@ -93,11 +95,11 @@ class CloudConnection extends events.EventEmitter { * @param variable The variable name to set * @param value The value to set the variable to */ - setVariable(variable: string, value: string | number) { + setVariable(variable: string, value: number | string) { const varname = variable.startsWith("☁ ") ? variable.substring(2) : variable; - this.variables[`☁ ${varname}`] = value; + this.variables[`☁ ${varname}`] = value.toString(); if (!this.open) { this.queue.push({ user: this.session.sessionJSON.user.username, From 821e20da3c04a0c113e96f93ed5b5643c2ce50f8 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Sun, 27 Nov 2022 14:30:06 +1300 Subject: [PATCH 15/35] format --- src/classes/CloudConnection.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/classes/CloudConnection.ts b/src/classes/CloudConnection.ts index 515f154..78f86fe 100644 --- a/src/classes/CloudConnection.ts +++ b/src/classes/CloudConnection.ts @@ -19,7 +19,7 @@ class CloudConnection extends events.EventEmitter { project_id: number; }> = []; variables: { - [name: string]: string + [name: string]: string; } = {}; disconnected: boolean = false; constructor({ From f524babd832947cc91028efa1b840ec91bb8c0b8 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Sun, 27 Nov 2022 14:34:28 +1300 Subject: [PATCH 16/35] Update dependencies --- package.json | 16 +- pnpm-lock.yaml | 1068 +++++++++++++++++++++++++----------------------- 2 files changed, 565 insertions(+), 519 deletions(-) diff --git a/package.json b/package.json index 0790822..f109354 100644 --- a/package.json +++ b/package.json @@ -19,19 +19,19 @@ "author": "", "license": "MIT", "devDependencies": { - "@types/node": "^17.0.14", + "@types/node": "^17.0.45", "@types/tap": "^15.0.7", - "@types/ws": "^8.2.2", - "prettier": "^2.5.1", - "tap": "^16.1.0", + "@types/ws": "^8.5.3", + "prettier": "^2.8.0", + "tap": "^16.3.2", "ts-node": "^10.9.1", - "tsup": "^5.11.13", - "typescript": "^4.5.5" + "typescript": "^4.9.3" }, "dependencies": { "cross-fetch": "^3.1.5", - "node-html-parser": "^5.2.0", - "ws": "^8.4.2" + "node-html-parser": "^5.4.2", + "tsup": "^6.5.0", + "ws": "^8.11.0" }, "exports": { ".": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d60d7e8..5eb90a0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,70 +1,71 @@ lockfileVersion: 5.4 specifiers: - '@types/node': ^17.0.14 + '@types/node': ^17.0.45 '@types/tap': ^15.0.7 - '@types/ws': ^8.2.2 + '@types/ws': ^8.5.3 cross-fetch: ^3.1.5 - node-html-parser: ^5.2.0 - prettier: ^2.5.1 - tap: ^16.1.0 + node-html-parser: ^5.4.2 + prettier: ^2.8.0 + tap: ^16.3.2 ts-node: ^10.9.1 - tsup: ^5.11.13 - typescript: ^4.5.5 - ws: ^8.4.2 + tsup: ^6.5.0 + typescript: ^4.9.3 + ws: ^8.11.0 dependencies: cross-fetch: 3.1.5 - node-html-parser: 5.2.0 - ws: 8.4.2 + node-html-parser: 5.4.2 + tsup: 6.5.0_2dtigtkb225m7ii7q45utxqwgi + ws: 8.11.0 devDependencies: - '@types/node': 17.0.14 + '@types/node': 17.0.45 '@types/tap': 15.0.7 - '@types/ws': 8.2.2 - prettier: 2.5.1 - tap: 16.1.0_m7b2umgpdlo7valsqrwayzc5jy - ts-node: 10.9.1_ipjagzjez2l2vadwzzudid5j5q - tsup: 5.11.13_m7b2umgpdlo7valsqrwayzc5jy - typescript: 4.5.5 + '@types/ws': 8.5.3 + prettier: 2.8.0 + tap: 16.3.2_2dtigtkb225m7ii7q45utxqwgi + ts-node: 10.9.1_7cep2inysldxstbcrxlp3njwym + typescript: 4.9.3 packages: - /@ampproject/remapping/2.1.2: - resolution: {integrity: sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==} + /@ampproject/remapping/2.2.0: + resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.9 + '@jridgewell/gen-mapping': 0.1.1 + '@jridgewell/trace-mapping': 0.3.17 dev: true - /@babel/code-frame/7.16.7: - resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} + /@babel/code-frame/7.18.6: + resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.17.9 + '@babel/highlight': 7.18.6 dev: true - /@babel/compat-data/7.17.7: - resolution: {integrity: sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==} + /@babel/compat-data/7.20.1: + resolution: {integrity: sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/core/7.17.9: - resolution: {integrity: sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==} + /@babel/core/7.20.2: + resolution: {integrity: sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==} engines: {node: '>=6.9.0'} dependencies: - '@ampproject/remapping': 2.1.2 - '@babel/code-frame': 7.16.7 - '@babel/generator': 7.17.9 - '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.17.9 - '@babel/helper-module-transforms': 7.17.7 - '@babel/helpers': 7.17.9 - '@babel/parser': 7.17.9 - '@babel/template': 7.16.7 - '@babel/traverse': 7.17.9 - '@babel/types': 7.17.0 - convert-source-map: 1.8.0 - debug: 4.3.3 + '@ampproject/remapping': 2.2.0 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.20.4 + '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.2 + '@babel/helper-module-transforms': 7.20.2 + '@babel/helpers': 7.20.1 + '@babel/parser': 7.20.3 + '@babel/template': 7.18.10 + '@babel/traverse': 7.20.1 + '@babel/types': 7.20.2 + convert-source-map: 1.9.0 + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.1 semver: 6.3.0 @@ -72,157 +73,161 @@ packages: - supports-color dev: true - /@babel/generator/7.17.9: - resolution: {integrity: sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==} + /@babel/generator/7.20.4: + resolution: {integrity: sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.20.2 + '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 - source-map: 0.5.7 dev: true - /@babel/helper-compilation-targets/7.17.7_@babel+core@7.17.9: - resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} + /@babel/helper-compilation-targets/7.20.0_@babel+core@7.20.2: + resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.17.7 - '@babel/core': 7.17.9 - '@babel/helper-validator-option': 7.16.7 - browserslist: 4.20.3 + '@babel/compat-data': 7.20.1 + '@babel/core': 7.20.2 + '@babel/helper-validator-option': 7.18.6 + browserslist: 4.21.4 semver: 6.3.0 dev: true - /@babel/helper-environment-visitor/7.16.7: - resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} + /@babel/helper-environment-visitor/7.18.9: + resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.17.0 dev: true - /@babel/helper-function-name/7.17.9: - resolution: {integrity: sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==} + /@babel/helper-function-name/7.19.0: + resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.16.7 - '@babel/types': 7.17.0 + '@babel/template': 7.18.10 + '@babel/types': 7.20.2 dev: true - /@babel/helper-hoist-variables/7.16.7: - resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} + /@babel/helper-hoist-variables/7.18.6: + resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.20.2 dev: true - /@babel/helper-module-imports/7.16.7: - resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} + /@babel/helper-module-imports/7.18.6: + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.20.2 dev: true - /@babel/helper-module-transforms/7.17.7: - resolution: {integrity: sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==} + /@babel/helper-module-transforms/7.20.2: + resolution: {integrity: sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-environment-visitor': 7.16.7 - '@babel/helper-module-imports': 7.16.7 - '@babel/helper-simple-access': 7.17.7 - '@babel/helper-split-export-declaration': 7.16.7 - '@babel/helper-validator-identifier': 7.16.7 - '@babel/template': 7.16.7 - '@babel/traverse': 7.17.9 - '@babel/types': 7.17.0 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-simple-access': 7.20.2 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-validator-identifier': 7.19.1 + '@babel/template': 7.18.10 + '@babel/traverse': 7.20.1 + '@babel/types': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-simple-access/7.17.7: - resolution: {integrity: sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==} + /@babel/helper-simple-access/7.20.2: + resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.20.2 dev: true - /@babel/helper-split-export-declaration/7.16.7: - resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} + /@babel/helper-split-export-declaration/7.18.6: + resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.20.2 + dev: true + + /@babel/helper-string-parser/7.19.4: + resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} + engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-identifier/7.16.7: - resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} + /@babel/helper-validator-identifier/7.19.1: + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-option/7.16.7: - resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} + /@babel/helper-validator-option/7.18.6: + resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helpers/7.17.9: - resolution: {integrity: sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==} + /@babel/helpers/7.20.1: + resolution: {integrity: sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.16.7 - '@babel/traverse': 7.17.9 - '@babel/types': 7.17.0 + '@babel/template': 7.18.10 + '@babel/traverse': 7.20.1 + '@babel/types': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/highlight/7.17.9: - resolution: {integrity: sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==} + /@babel/highlight/7.18.6: + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.16.7 + '@babel/helper-validator-identifier': 7.19.1 chalk: 2.4.2 js-tokens: 4.0.0 dev: true - /@babel/parser/7.17.9: - resolution: {integrity: sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==} + /@babel/parser/7.20.3: + resolution: {integrity: sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.20.2 dev: true - /@babel/template/7.16.7: - resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} + /@babel/template/7.18.10: + resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.16.7 - '@babel/parser': 7.17.9 - '@babel/types': 7.17.0 + '@babel/code-frame': 7.18.6 + '@babel/parser': 7.20.3 + '@babel/types': 7.20.2 dev: true - /@babel/traverse/7.17.9: - resolution: {integrity: sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==} + /@babel/traverse/7.20.1: + resolution: {integrity: sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.16.7 - '@babel/generator': 7.17.9 - '@babel/helper-environment-visitor': 7.16.7 - '@babel/helper-function-name': 7.17.9 - '@babel/helper-hoist-variables': 7.16.7 - '@babel/helper-split-export-declaration': 7.16.7 - '@babel/parser': 7.17.9 - '@babel/types': 7.17.0 - debug: 4.3.3 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.20.4 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.20.3 + '@babel/types': 7.20.2 + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types/7.17.0: - resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} + /@babel/types/7.20.2: + resolution: {integrity: sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.16.7 + '@babel/helper-string-parser': 7.19.4 + '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 dev: true @@ -231,7 +236,24 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/trace-mapping': 0.3.9 - dev: true + + /@esbuild/android-arm/0.15.15: + resolution: {integrity: sha512-JJjZjJi2eBL01QJuWjfCdZxcIgot+VoK6Fq7eKF9w4YHm9hwl7nhBR1o2Wnt/WcANk5l9SkpvrldW1PLuXxcbw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-loong64/0.15.15: + resolution: {integrity: sha512-lhz6UNPMDXUhtXSulw8XlFAtSYO26WmHQnCi2Lg2p+/TMiJKNLtZCYUxV4wG6rZMzXmr8InGpNwk+DLT2Hm0PA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: false + optional: true /@istanbuljs/load-nyc-config/1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} @@ -249,21 +271,47 @@ packages: engines: {node: '>=8'} dev: true - /@jridgewell/resolve-uri/3.0.6: - resolution: {integrity: sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==} + /@jridgewell/gen-mapping/0.1.1: + resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@jridgewell/sourcemap-codec/1.4.11: - resolution: {integrity: sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==} + /@jridgewell/gen-mapping/0.3.2: + resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/trace-mapping': 0.3.17 + dev: true + + /@jridgewell/resolve-uri/3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + + /@jridgewell/set-array/1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec/1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + + /@jridgewell/trace-mapping/0.3.17: + resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 dev: true /@jridgewell/trace-mapping/0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: - '@jridgewell/resolve-uri': 3.0.6 - '@jridgewell/sourcemap-codec': 1.4.11 - dev: true + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 /@nodelib/fs.scandir/2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -271,12 +319,12 @@ packages: dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - dev: true + dev: false /@nodelib/fs.stat/2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - dev: true + dev: false /@nodelib/fs.walk/1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} @@ -284,50 +332,43 @@ packages: dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.13.0 - dev: true + dev: false /@tsconfig/node10/1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - dev: true /@tsconfig/node12/1.0.11: resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: true /@tsconfig/node14/1.0.3: resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: true /@tsconfig/node16/1.0.3: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} - dev: true - /@types/node/17.0.14: - resolution: {integrity: sha512-SbjLmERksKOGzWzPNuW7fJM7fk3YXVTFiZWB/Hs99gwhk+/dnrQRPBQjPW9aO+fi1tAffi9PrwFvsmOKmDTyng==} - dev: true + /@types/node/17.0.45: + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} /@types/tap/15.0.7: resolution: {integrity: sha512-TTMajw4gxQfFgYbhXhy/Tb2OiNcwS+4oP/9yp1/GdU0pFJo3wtnkYhRgmQy39ksh+rnoa0VrPHJ4Tuv2cLNQ5A==} dependencies: - '@types/node': 17.0.14 + '@types/node': 17.0.45 dev: true - /@types/ws/8.2.2: - resolution: {integrity: sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==} + /@types/ws/8.5.3: + resolution: {integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==} dependencies: - '@types/node': 17.0.14 + '@types/node': 17.0.45 dev: true /acorn-walk/8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - dev: true /acorn/8.8.1: resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} engines: {node: '>=0.4.0'} hasBin: true - dev: true /aggregate-error/3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} @@ -337,11 +378,6 @@ packages: indent-string: 4.0.0 dev: true - /ansi-regex/2.1.1: - resolution: {integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8=} - engines: {node: '>=0.10.0'} - dev: true - /ansi-regex/5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -362,31 +398,29 @@ packages: dev: true /any-promise/1.3.0: - resolution: {integrity: sha1-q8av7tzqUugJzcA3au0845Y10X8=} - dev: true + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: false - /anymatch/3.1.2: - resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} + /anymatch/3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - dev: true /append-transform/2.0.0: resolution: {integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==} engines: {node: '>=8'} dependencies: - default-require-extensions: 3.0.0 + default-require-extensions: 3.0.1 dev: true /archy/1.0.0: - resolution: {integrity: sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=} + resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} dev: true /arg/4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true /argparse/1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -397,7 +431,7 @@ packages: /array-union/2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - dev: true + dev: false /async-hook-domain/2.0.4: resolution: {integrity: sha512-14LjCmlK1PK8eDtTezR6WX8TMaYNIzBIsd2D1sGoGjgx0BuNMMoSdk7i/drlbtamy0AWv9yv2tkB+ASdmeqFIw==} @@ -406,12 +440,10 @@ packages: /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true /binary-extensions/2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - dev: true /bind-obj-methods/3.0.0: resolution: {integrity: sha512-nLEaaz3/sEzNSyPWRsN9HNsqwk1AUyECtGj+XwGdIi3xABnEqecvXtIJ0wehQXuuER5uZ/5fTs2usONgYjG+iw==} @@ -419,7 +451,7 @@ packages: dev: true /boolbase/1.0.0: - resolution: {integrity: sha1-aN/1++YMUes3cl6p4+0xDcwed24=} + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} dev: false /brace-expansion/1.1.11: @@ -427,45 +459,42 @@ packages: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - dev: true /braces/3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - dev: true - /browserslist/4.20.3: - resolution: {integrity: sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==} + /browserslist/4.21.4: + resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001332 - electron-to-chromium: 1.4.118 - escalade: 3.1.1 - node-releases: 2.0.3 - picocolors: 1.0.0 + caniuse-lite: 1.0.30001434 + electron-to-chromium: 1.4.284 + node-releases: 2.0.6 + update-browserslist-db: 1.0.10_browserslist@4.21.4 dev: true /buffer-from/1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true - /bundle-require/3.0.4_esbuild@0.14.18: - resolution: {integrity: sha512-VXG6epB1yrLAvWVQpl92qF347/UXmncQj7J3U8kZEbdVZ1ZkQyr4hYeL/9RvcE8vVVdp53dY78Fd/3pqfRqI1A==} + /bundle-require/3.1.2_esbuild@0.15.15: + resolution: {integrity: sha512-Of6l6JBAxiyQ5axFxUM6dYeP/W7X2Sozeo/4EYB9sJhL+dqL7TKjg+shwxp6jlu/6ZSERfsYtIpSJ1/x3XkAEA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: esbuild: '>=0.13' dependencies: - esbuild: 0.14.18 + esbuild: 0.15.15 load-tsconfig: 0.2.3 - dev: true + dev: false - /cac/6.7.12: - resolution: {integrity: sha512-rM7E2ygtMkJqD9c7WnFU6fruFcN3xe4FM5yUmgxhZzIKJk4uHl9U/fhwdajGFQbQuv43FAUo1Fe8gX/oIKDeSA==} + /cac/6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - dev: true + dev: false /caching-transform/4.0.0: resolution: {integrity: sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==} @@ -482,8 +511,8 @@ packages: engines: {node: '>=6'} dev: true - /caniuse-lite/1.0.30001332: - resolution: {integrity: sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==} + /caniuse-lite/1.0.30001434: + resolution: {integrity: sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==} dev: true /chalk/2.4.2: @@ -499,7 +528,7 @@ packages: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} dependencies: - anymatch: 3.1.2 + anymatch: 3.1.3 braces: 3.0.2 glob-parent: 5.1.2 is-binary-path: 2.1.0 @@ -508,7 +537,6 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.2 - dev: true /clean-stack/2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} @@ -545,7 +573,7 @@ packages: dev: true /color-name/1.1.3: - resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} dev: true /color-name/1.1.4: @@ -560,25 +588,21 @@ packages: /commander/4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} - dev: true + dev: false /commondir/1.0.1: - resolution: {integrity: sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=} + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} dev: true /concat-map/0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} - dev: true - /convert-source-map/1.8.0: - resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} - dependencies: - safe-buffer: 5.1.2 + /convert-source-map/1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} dev: true /create-require/1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: true /cross-fetch/3.1.5: resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} @@ -595,25 +619,24 @@ packages: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - dev: true - /css-select/4.2.1: - resolution: {integrity: sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==} + /css-select/4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} dependencies: boolbase: 1.0.0 - css-what: 5.1.0 - domhandler: 4.3.0 + css-what: 6.1.0 + domhandler: 4.3.1 domutils: 2.8.0 - nth-check: 2.0.1 + nth-check: 2.1.1 dev: false - /css-what/5.1.0: - resolution: {integrity: sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==} + /css-what/6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} dev: false - /debug/4.3.3: - resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -622,15 +645,14 @@ packages: optional: true dependencies: ms: 2.1.2 - dev: true /decamelize/1.2.0: - resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=} + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} dev: true - /default-require-extensions/3.0.0: - resolution: {integrity: sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==} + /default-require-extensions/3.0.1: + resolution: {integrity: sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==} engines: {node: '>=8'} dependencies: strip-bom: 4.0.0 @@ -639,44 +661,43 @@ packages: /diff/4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - dev: true /dir-glob/3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 - dev: true + dev: false - /dom-serializer/1.3.2: - resolution: {integrity: sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==} + /dom-serializer/1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} dependencies: - domelementtype: 2.2.0 - domhandler: 4.3.0 + domelementtype: 2.3.0 + domhandler: 4.3.1 entities: 2.2.0 dev: false - /domelementtype/2.2.0: - resolution: {integrity: sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==} + /domelementtype/2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: false - /domhandler/4.3.0: - resolution: {integrity: sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==} + /domhandler/4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} engines: {node: '>= 4'} dependencies: - domelementtype: 2.2.0 + domelementtype: 2.3.0 dev: false /domutils/2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} dependencies: - dom-serializer: 1.3.2 - domelementtype: 2.2.0 - domhandler: 4.3.0 + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 dev: false - /electron-to-chromium/1.4.118: - resolution: {integrity: sha512-maZIKjnYDvF7Fs35nvVcyr44UcKNwybr93Oba2n3HkKDFAtk0svERkLN/HyczJDS3Fo4wU9th9fUQd09ZLtj1w==} + /electron-to-chromium/1.4.284: + resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} dev: true /emoji-regex/8.0.0: @@ -691,193 +712,215 @@ packages: resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} dev: true - /esbuild-android-arm64/0.14.18: - resolution: {integrity: sha512-AuE8vIwc6QLquwykyscFk0Ji3RFczoOvjka64FJlcjLLhD6VsS584RYlQrSnPpRkv69PunUvyrBoEF7JFTJijg==} + /esbuild-android-64/0.15.15: + resolution: {integrity: sha512-F+WjjQxO+JQOva3tJWNdVjouFMLK6R6i5gjDvgUthLYJnIZJsp1HlF523k73hELY20WPyEO8xcz7aaYBVkeg5Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /esbuild-android-arm64/0.15.15: + resolution: {integrity: sha512-attlyhD6Y22jNyQ0fIIQ7mnPvDWKw7k6FKnsXlBvQE6s3z6s6cuEHcSgoirquQc7TmZgVCK5fD/2uxmRN+ZpcQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] requiresBuild: true - dev: true + dev: false optional: true - /esbuild-darwin-64/0.14.18: - resolution: {integrity: sha512-nN1XziZtDy8QYOggaXC3zu0vVh8YJpS8Bol7bHaxx0enTLDSFBCXUUJEKYpmAAJ4OZRPgjXv8NzEHHQWQvLzXg==} + /esbuild-darwin-64/0.15.15: + resolution: {integrity: sha512-ohZtF8W1SHJ4JWldsPVdk8st0r9ExbAOSrBOh5L+Mq47i696GVwv1ab/KlmbUoikSTNoXEhDzVpxUR/WIO19FQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] requiresBuild: true - dev: true + dev: false optional: true - /esbuild-darwin-arm64/0.14.18: - resolution: {integrity: sha512-v0i2n6TCsbxco/W1fN8RgQt3RW00Q9zJO2eqiAdmLWg6Hx0HNHloZyfhF11i7nMUUgW8r5n++ZweIXjAFPE/gQ==} + /esbuild-darwin-arm64/0.15.15: + resolution: {integrity: sha512-P8jOZ5zshCNIuGn+9KehKs/cq5uIniC+BeCykvdVhx/rBXSxmtj3CUIKZz4sDCuESMbitK54drf/2QX9QHG5Ag==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] requiresBuild: true - dev: true + dev: false optional: true - /esbuild-freebsd-64/0.14.18: - resolution: {integrity: sha512-XLyJZTWbSuQJOqw867tBxvto6GjxULvWZYKs6RFHYQPCqgQ0ODLRtBmp4Fqqpde52yOe45npaaoup9IXNfr32A==} + /esbuild-freebsd-64/0.15.15: + resolution: {integrity: sha512-KkTg+AmDXz1IvA9S1gt8dE24C8Thx0X5oM0KGF322DuP+P3evwTL9YyusHAWNsh4qLsR80nvBr/EIYs29VSwuA==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] requiresBuild: true - dev: true + dev: false optional: true - /esbuild-freebsd-arm64/0.14.18: - resolution: {integrity: sha512-0ItfrR8hePnDcUXxUQxY+VfICcBfeMJCdK6mcNUXnXw6LyHjyUYXWpFXF+J18pg1/YUWRWO1HbsJ7FEwELcQIA==} + /esbuild-freebsd-arm64/0.15.15: + resolution: {integrity: sha512-FUcML0DRsuyqCMfAC+HoeAqvWxMeq0qXvclZZ/lt2kLU6XBnDA5uKTLUd379WYEyVD4KKFctqWd9tTuk8C/96g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] requiresBuild: true - dev: true + dev: false optional: true - /esbuild-linux-32/0.14.18: - resolution: {integrity: sha512-mnG84D9NsEsoQdBpBT0IsFjm5iAwnd81SP4tRMXZLl09lPvIWjHHSq6LDlb4+L5H5K5y68WC//X5Dr2MtNY3DQ==} + /esbuild-linux-32/0.15.15: + resolution: {integrity: sha512-q28Qn5pZgHNqug02aTkzw5sW9OklSo96b5nm17Mq0pDXrdTBcQ+M6Q9A1B+dalFeynunwh/pvfrNucjzwDXj+Q==} engines: {node: '>=12'} cpu: [ia32] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /esbuild-linux-64/0.14.18: - resolution: {integrity: sha512-HvExRtkeA8l/p+7Lf6aBrnLH+jTCFJTUMJxGKExh2RD8lCXGTeDJFyP+BOEetP80fuuH+Syj79+LVQ9MihdBsg==} + /esbuild-linux-64/0.15.15: + resolution: {integrity: sha512-217KPmWMirkf8liO+fj2qrPwbIbhNTGNVtvqI1TnOWJgcMjUWvd677Gq3fTzXEjilkx2yWypVnTswM2KbXgoAg==} engines: {node: '>=12'} cpu: [x64] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /esbuild-linux-arm/0.14.18: - resolution: {integrity: sha512-+ZL8xfXVNaeaZ2Kxqlw2VYZWRDZ7NSK4zOV9GKNAtkkWURLsPUU84aUOBatRe9BH1O5FDo3LLQSlaA04ed6lhA==} + /esbuild-linux-arm/0.15.15: + resolution: {integrity: sha512-RYVW9o2yN8yM7SB1yaWr378CwrjvGCyGybX3SdzPHpikUHkME2AP55Ma20uNwkNyY2eSYFX9D55kDrfQmQBR4w==} engines: {node: '>=12'} cpu: [arm] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /esbuild-linux-arm64/0.14.18: - resolution: {integrity: sha512-CCWmilODE1ckw+M7RVqoqKWA4UB0alCyK2bv0ikEeEAwkzinlJeoe94t9CnT/ECSQ2sL+C16idsr+aUviGp7sg==} + /esbuild-linux-arm64/0.15.15: + resolution: {integrity: sha512-/ltmNFs0FivZkYsTzAsXIfLQX38lFnwJTWCJts0IbCqWZQe+jjj0vYBNbI0kmXLb3y5NljiM5USVAO1NVkdh2g==} engines: {node: '>=12'} cpu: [arm64] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /esbuild-linux-mips64le/0.14.18: - resolution: {integrity: sha512-8LjO4+6Vxz5gbyCHO4OONYMF689nLderCtzb8lG1Bncs4ZXHpo6bjvuWeTMRbGUkvAhp+P6hMTzia7RHOC53wQ==} + /esbuild-linux-mips64le/0.15.15: + resolution: {integrity: sha512-PksEPb321/28GFFxtvL33yVPfnMZihxkEv5zME2zapXGp7fA1X2jYeiTUK+9tJ/EGgcNWuwvtawPxJG7Mmn86A==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /esbuild-linux-ppc64le/0.14.18: - resolution: {integrity: sha512-0OJk/6iYEmF1J7LXY6+cqf6Ga5vG4an7n1nubTKce7kYqaTyNGfYcTjDZce6lnDVlZTJtwntIMszq1+ZX7Kenw==} + /esbuild-linux-ppc64le/0.15.15: + resolution: {integrity: sha512-ek8gJBEIhcpGI327eAZigBOHl58QqrJrYYIZBWQCnH3UnXoeWMrMZLeeZL8BI2XMBhP+sQ6ERctD5X+ajL/AIA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /esbuild-linux-s390x/0.14.18: - resolution: {integrity: sha512-UNY7YKZHjY31KcNanJK4QaT2/aoIQyS+jViP3QuDRIoYAogRnc6WydylzIkkEzGMaC4fzaXOmQ8fxwpLAXK4Yg==} + /esbuild-linux-riscv64/0.15.15: + resolution: {integrity: sha512-H5ilTZb33/GnUBrZMNJtBk7/OXzDHDXjIzoLXHSutwwsLxSNaLxzAaMoDGDd/keZoS+GDBqNVxdCkpuiRW4OSw==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /esbuild-linux-s390x/0.15.15: + resolution: {integrity: sha512-jKaLUg78mua3rrtrkpv4Or2dNTJU7bgHN4bEjT4OX4GR7nLBSA9dfJezQouTxMmIW7opwEC5/iR9mpC18utnxQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] requiresBuild: true - dev: true + dev: false optional: true - /esbuild-netbsd-64/0.14.18: - resolution: {integrity: sha512-wE/2xT9KNzLCfEBw24YbVmMmXH92cFIzrRPUlwWH9dIizjvEYYcyQ+peTMVkqzUum7pdlVLZ2CDDqAaZo/nW/w==} + /esbuild-netbsd-64/0.15.15: + resolution: {integrity: sha512-aOvmF/UkjFuW6F36HbIlImJTTx45KUCHJndtKo+KdP8Dhq3mgLRKW9+6Ircpm8bX/RcS3zZMMmaBLkvGY06Gvw==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] requiresBuild: true - dev: true + dev: false optional: true - /esbuild-openbsd-64/0.14.18: - resolution: {integrity: sha512-vdymE2jyuH/FRmTvrguCYSrq81/rUwuhMYyvt/6ibv9ac7xQ674c8qTdT+RH73sR9/2WUD/NsYxrBA/wUVTxcg==} + /esbuild-openbsd-64/0.15.15: + resolution: {integrity: sha512-HFFX+WYedx1w2yJ1VyR1Dfo8zyYGQZf1cA69bLdrHzu9svj6KH6ZLK0k3A1/LFPhcEY9idSOhsB2UyU0tHPxgQ==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] requiresBuild: true - dev: true + dev: false optional: true - /esbuild-sunos-64/0.14.18: - resolution: {integrity: sha512-X/Tesy6K1MdJF1d5cbzFDxrIMMn0ye+VgTQRI8P5Vo2CcKxOdckwsKUwpRAvg+VDZ6MxrSOTYS9OOoggPUjxTg==} + /esbuild-sunos-64/0.15.15: + resolution: {integrity: sha512-jOPBudffG4HN8yJXcK9rib/ZTFoTA5pvIKbRrt3IKAGMq1EpBi4xoVoSRrq/0d4OgZLaQbmkHp8RO9eZIn5atA==} engines: {node: '>=12'} cpu: [x64] os: [sunos] requiresBuild: true - dev: true + dev: false optional: true - /esbuild-windows-32/0.14.18: - resolution: {integrity: sha512-glG23I/JzCL4lu7DWFUtVwqFwNwlL0g+ks+mcjjUisHcINoSXTeCNToUN0bHhzn6IlXXnggNQ38Ew/idHPM8+g==} + /esbuild-windows-32/0.15.15: + resolution: {integrity: sha512-MDkJ3QkjnCetKF0fKxCyYNBnOq6dmidcwstBVeMtXSgGYTy8XSwBeIE4+HuKiSsG6I/mXEb++px3IGSmTN0XiA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] requiresBuild: true - dev: true + dev: false optional: true - /esbuild-windows-64/0.14.18: - resolution: {integrity: sha512-zEiFKHgV/3z14wsVamV98/5mxeOwz+ecyg0pD3fWcBz9j4EOIT1Tg47axypD4QLwiKFvve9mUBYX1cD99qxOyw==} + /esbuild-windows-64/0.15.15: + resolution: {integrity: sha512-xaAUIB2qllE888SsMU3j9nrqyLbkqqkpQyWVkfwSil6BBPgcPk3zOFitTTncEKCLTQy3XV9RuH7PDj3aJDljWA==} engines: {node: '>=12'} cpu: [x64] os: [win32] requiresBuild: true - dev: true + dev: false optional: true - /esbuild-windows-arm64/0.14.18: - resolution: {integrity: sha512-Mh8lZFcPLat13dABN7lZThGUOn9YxoH5RYkhBq0U3WqQohHzKRhllYh7ibFixnkpMLnv8OZEbl8bGLMy03MpfA==} + /esbuild-windows-arm64/0.15.15: + resolution: {integrity: sha512-ttuoCYCIJAFx4UUKKWYnFdrVpoXa3+3WWkXVI6s09U+YjhnyM5h96ewTq/WgQj9LFSIlABQvadHSOQyAVjW5xQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] requiresBuild: true - dev: true + dev: false optional: true - /esbuild/0.14.18: - resolution: {integrity: sha512-vCUoISSltnX7ax01w70pWOSQT+e55o+2P/a+A9MSTukJAt3T4aDZajcjeG4fnZbkvOEv+dkKgdkvljz6vVQD4A==} + /esbuild/0.15.15: + resolution: {integrity: sha512-TEw/lwK4Zzld9x3FedV6jy8onOUHqcEX3ADFk4k+gzPUwrxn8nWV62tH0udo8jOtjFodlEfc4ypsqX3e+WWO6w==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - esbuild-android-arm64: 0.14.18 - esbuild-darwin-64: 0.14.18 - esbuild-darwin-arm64: 0.14.18 - esbuild-freebsd-64: 0.14.18 - esbuild-freebsd-arm64: 0.14.18 - esbuild-linux-32: 0.14.18 - esbuild-linux-64: 0.14.18 - esbuild-linux-arm: 0.14.18 - esbuild-linux-arm64: 0.14.18 - esbuild-linux-mips64le: 0.14.18 - esbuild-linux-ppc64le: 0.14.18 - esbuild-linux-s390x: 0.14.18 - esbuild-netbsd-64: 0.14.18 - esbuild-openbsd-64: 0.14.18 - esbuild-sunos-64: 0.14.18 - esbuild-windows-32: 0.14.18 - esbuild-windows-64: 0.14.18 - esbuild-windows-arm64: 0.14.18 - dev: true + '@esbuild/android-arm': 0.15.15 + '@esbuild/linux-loong64': 0.15.15 + esbuild-android-64: 0.15.15 + esbuild-android-arm64: 0.15.15 + esbuild-darwin-64: 0.15.15 + esbuild-darwin-arm64: 0.15.15 + esbuild-freebsd-64: 0.15.15 + esbuild-freebsd-arm64: 0.15.15 + esbuild-linux-32: 0.15.15 + esbuild-linux-64: 0.15.15 + esbuild-linux-arm: 0.15.15 + esbuild-linux-arm64: 0.15.15 + esbuild-linux-mips64le: 0.15.15 + esbuild-linux-ppc64le: 0.15.15 + esbuild-linux-riscv64: 0.15.15 + esbuild-linux-s390x: 0.15.15 + esbuild-netbsd-64: 0.15.15 + esbuild-openbsd-64: 0.15.15 + esbuild-sunos-64: 0.15.15 + esbuild-windows-32: 0.15.15 + esbuild-windows-64: 0.15.15 + esbuild-windows-arm64: 0.15.15 + dev: false /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -885,7 +928,7 @@ packages: dev: true /escape-string-regexp/1.0.5: - resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} dev: true @@ -901,7 +944,7 @@ packages: dev: true /events-to-array/1.1.2: - resolution: {integrity: sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y=} + resolution: {integrity: sha512-inRWzRY7nG+aXZxBzEqYKB3HPgwflZRopAjDCHv0whhRx+MTUr1ei0ICZUypdyE0HRm4L2d5VEcIqLD6yl+BFA==} dev: true /execa/5.1.1: @@ -915,33 +958,32 @@ packages: merge-stream: 2.0.0 npm-run-path: 4.0.1 onetime: 5.1.2 - signal-exit: 3.0.6 + signal-exit: 3.0.7 strip-final-newline: 2.0.0 - dev: true + dev: false - /fast-glob/3.2.11: - resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} + /fast-glob/3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.4 - dev: true + micromatch: 4.0.5 + dev: false /fastq/1.13.0: resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} dependencies: reusify: 1.0.4 - dev: true + dev: false /fill-range/7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - dev: true /find-cache-dir/3.3.2: resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} @@ -961,7 +1003,7 @@ packages: dev: true /findit/2.0.0: - resolution: {integrity: sha1-ZQnwEmr0wXhVHPqZOU4DLhOk1W4=} + resolution: {integrity: sha512-ENZS237/Hr8bjczn5eKuBohLgaD0JyUd0arxretR1f9RO46vZHA1b2y0VorgGV3WaOT3c+78P8h7v4JGJ1i/rg==} dev: true /foreground-child/2.0.0: @@ -969,7 +1011,7 @@ packages: engines: {node: '>=8.0.0'} dependencies: cross-spawn: 7.0.3 - signal-exit: 3.0.6 + signal-exit: 3.0.7 dev: true /fromentries/1.3.2: @@ -977,19 +1019,17 @@ packages: dev: true /fs-exists-cached/1.0.0: - resolution: {integrity: sha1-zyVVTKBQ3EmuZla0HeQiWJidy84=} + resolution: {integrity: sha512-kSxoARUDn4F2RPXX48UXnaFKwVU7Ivd/6qpzZL29MCDmr9sTvybv4gFCp+qaI4fM9m0z9fgz/yJvi56GAz+BZg==} dev: true /fs.realpath/1.0.0: - resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} - dev: true + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} /fsevents/2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true - dev: true optional: true /function-loop/2.0.1: @@ -1014,14 +1054,13 @@ packages: /get-stream/6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - dev: true + dev: false /glob-parent/5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - dev: true /glob/7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} @@ -1029,7 +1068,18 @@ packages: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + + /glob/7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 dev: true @@ -1045,18 +1095,18 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.11 + fast-glob: 3.2.12 ignore: 5.2.0 merge2: 1.4.1 slash: 3.0.0 - dev: true + dev: false /graceful-fs/4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} dev: true /has-flag/3.0.0: - resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} dev: true @@ -1085,15 +1135,15 @@ packages: /human-signals/2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - dev: true + dev: false /ignore/5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} - dev: true + dev: false /imurmurhash/0.1.4: - resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} dev: true @@ -1103,27 +1153,23 @@ packages: dev: true /inflight/1.0.6: - resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 - dev: true /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true /is-binary-path/2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 - dev: true /is-extglob/2.1.1: - resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - dev: true /is-fullwidth-code-point/3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} @@ -1135,20 +1181,17 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - dev: true /is-number/7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - dev: true /is-stream/2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - dev: true /is-typedarray/1.0.0: - resolution: {integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=} + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} dev: true /is-windows/1.0.2: @@ -1157,8 +1200,7 @@ packages: dev: true /isexe/2.0.0: - resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} - dev: true + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} /istanbul-lib-coverage/3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} @@ -1176,7 +1218,7 @@ packages: resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.17.9 + '@babel/core': 7.20.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -1184,17 +1226,16 @@ packages: - supports-color dev: true - /istanbul-lib-processinfo/2.0.2: - resolution: {integrity: sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==} + /istanbul-lib-processinfo/2.0.3: + resolution: {integrity: sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==} engines: {node: '>=8'} dependencies: archy: 1.0.0 cross-spawn: 7.0.3 istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 p-map: 3.0.0 rimraf: 3.0.2 - uuid: 3.4.0 + uuid: 8.3.2 dev: true /istanbul-lib-report/3.0.0: @@ -1210,23 +1251,23 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.3 + debug: 4.3.4 istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: - supports-color dev: true - /istanbul-reports/3.1.4: - resolution: {integrity: sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==} + /istanbul-reports/3.1.5: + resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.0 dev: true - /jackspeak/1.4.1: - resolution: {integrity: sha512-npN8f+M4+IQ8xD3CcWi3U62VQwKlT3Tj4GxbdT/fYTmeogD9eBF9OFdpoFG/VPNoshRjPUijdkp/p2XrzUHaVg==} + /jackspeak/1.4.2: + resolution: {integrity: sha512-GHeGTmnuaHnvS+ZctRB01bfxARuu9wW83ENbuiweu07SFcVlZrJpcshSre/keGT7YGBhLHg/+rXCNSrsEHKU4Q==} engines: {node: '>=8'} dependencies: cliui: 7.0.4 @@ -1235,7 +1276,7 @@ packages: /joycon/3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} - dev: true + dev: false /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -1269,30 +1310,30 @@ packages: bind-obj-methods: 3.0.0 diff: 4.0.2 function-loop: 2.0.1 - minipass: 3.1.6 + minipass: 3.3.6 own-or: 1.0.0 own-or-env: 1.0.2 - signal-exit: 3.0.6 - stack-utils: 2.0.5 - tap-parser: 11.0.1 - tap-yaml: 1.0.0 + signal-exit: 3.0.7 + stack-utils: 2.0.6 + tap-parser: 11.0.2 + tap-yaml: 1.0.2 tcompare: 5.0.7 trivial-deferred: 1.0.1 dev: true - /lilconfig/2.0.4: - resolution: {integrity: sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==} + /lilconfig/2.0.6: + resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} engines: {node: '>=10'} - dev: true + dev: false /lines-and-columns/1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true + dev: false /load-tsconfig/0.2.3: resolution: {integrity: sha512-iyT2MXws+dc2Wi6o3grCFtGXpeMvHmJqS27sMPGtV2eUu4PeFnG+33I8BlFK1t1NWMjOpcx9bridn5yxLDX2gQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true + dev: false /locate-path/5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} @@ -1302,9 +1343,13 @@ packages: dev: true /lodash.flattendeep/4.4.0: - resolution: {integrity: sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=} + resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==} dev: true + /lodash.sortby/4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + dev: false + /make-dir/3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} @@ -1314,38 +1359,36 @@ packages: /make-error/1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true /merge-stream/2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true + dev: false /merge2/1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - dev: true + dev: false - /micromatch/4.0.4: - resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} + /micromatch/4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: braces: 3.0.2 picomatch: 2.3.1 - dev: true + dev: false /mimic-fn/2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - dev: true + dev: false - /minimatch/3.0.4: - resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} + /minimatch/3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - dev: true - /minipass/3.1.6: - resolution: {integrity: sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==} + /minipass/3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} dependencies: yallist: 4.0.0 @@ -1359,7 +1402,6 @@ packages: /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true /mz/2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -1367,7 +1409,7 @@ packages: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 - dev: true + dev: false /node-fetch/2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} @@ -1381,10 +1423,10 @@ packages: whatwg-url: 5.0.0 dev: false - /node-html-parser/5.2.0: - resolution: {integrity: sha512-fmiwLfQu+J2A0zjwSEkztSHexAf5qq/WoiL/Hgo1K7JpfEP+OGWY5maG0kGaM+IFVdixF/1QbyXaQ3h4cGfeLw==} + /node-html-parser/5.4.2: + resolution: {integrity: sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw==} dependencies: - css-select: 4.2.1 + css-select: 4.3.0 he: 1.2.0 dev: false @@ -1395,24 +1437,23 @@ packages: process-on-spawn: 1.0.0 dev: true - /node-releases/2.0.3: - resolution: {integrity: sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==} + /node-releases/2.0.6: + resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} dev: true /normalize-path/3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - dev: true /npm-run-path/4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} dependencies: path-key: 3.1.1 - dev: true + dev: false - /nth-check/2.0.1: - resolution: {integrity: sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==} + /nth-check/2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: boolbase: 1.0.0 dev: false @@ -1425,27 +1466,27 @@ packages: '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 caching-transform: 4.0.0 - convert-source-map: 1.8.0 + convert-source-map: 1.9.0 decamelize: 1.2.0 find-cache-dir: 3.3.2 find-up: 4.1.0 foreground-child: 2.0.0 get-package-type: 0.1.0 - glob: 7.1.6 + glob: 7.2.3 istanbul-lib-coverage: 3.2.0 istanbul-lib-hook: 3.0.0 istanbul-lib-instrument: 4.0.3 - istanbul-lib-processinfo: 2.0.2 + istanbul-lib-processinfo: 2.0.3 istanbul-lib-report: 3.0.0 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.4 + istanbul-reports: 3.1.5 make-dir: 3.1.0 node-preload: 0.2.1 p-map: 3.0.0 process-on-spawn: 1.0.0 resolve-from: 5.0.0 rimraf: 3.0.2 - signal-exit: 3.0.6 + signal-exit: 3.0.7 spawn-wrap: 2.0.0 test-exclude: 6.0.0 yargs: 15.4.1 @@ -1454,22 +1495,21 @@ packages: dev: true /object-assign/4.1.1: - resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - dev: true + dev: false /once/1.4.0: - resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - dev: true /onetime/5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 - dev: true + dev: false /opener/1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} @@ -1483,7 +1523,7 @@ packages: dev: true /own-or/1.0.0: - resolution: {integrity: sha1-Tod/vtqaLsgAD7wLyuOWRe6L+Nw=} + resolution: {integrity: sha512-NfZr5+Tdf6MB8UI9GLvKRs4cXY8/yB0w3xtt84xFdWy8hkGjn+JFc60VhzS/hFRfbyxFcGYMTjnF4Me+RbbqrA==} dev: true /p-limit/2.3.0: @@ -1528,19 +1568,17 @@ packages: dev: true /path-is-absolute/1.0.1: - resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - dev: true /path-key/3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - dev: true /path-type/4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - dev: true + dev: false /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -1549,12 +1587,11 @@ packages: /picomatch/2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - dev: true /pirates/4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} engines: {node: '>= 6'} - dev: true + dev: false /pkg-dir/4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} @@ -1563,22 +1600,25 @@ packages: find-up: 4.1.0 dev: true - /postcss-load-config/3.1.1_ts-node@10.9.1: - resolution: {integrity: sha512-c/9XYboIbSEUZpiD1UQD0IKiUe8n9WHYV7YFe7X7J+ZwCsEKkUJSFWjS9hBU1RR9THR7jMXst8sxiqP0jjo2mg==} + /postcss-load-config/3.1.4_ts-node@10.9.1: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: + postcss: '>=8.0.9' ts-node: '>=9.0.0' peerDependenciesMeta: + postcss: + optional: true ts-node: optional: true dependencies: - lilconfig: 2.0.4 - ts-node: 10.9.1_ipjagzjez2l2vadwzzudid5j5q + lilconfig: 2.0.6 + ts-node: 10.9.1_7cep2inysldxstbcrxlp3njwym yaml: 1.10.2 - dev: true + dev: false - /prettier/2.5.1: - resolution: {integrity: sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==} + /prettier/2.8.0: + resolution: {integrity: sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==} engines: {node: '>=10.13.0'} hasBin: true dev: true @@ -1593,28 +1633,26 @@ packages: /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} - dev: true /queue-microtask/1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true + dev: false /readdirp/3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - dev: true /release-zalgo/1.0.0: - resolution: {integrity: sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=} + resolution: {integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==} engines: {node: '>=4'} dependencies: es6-error: 4.1.1 dev: true /require-directory/2.1.1: - resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} dev: true @@ -1625,37 +1663,32 @@ packages: /resolve-from/5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - dev: true /reusify/1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true + dev: false /rimraf/3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: - glob: 7.1.6 + glob: 7.2.3 dev: true - /rollup/2.67.0: - resolution: {integrity: sha512-W83AaERwvDiHwHEF/dfAfS3z1Be5wf7n+pO3ZAO5IQadCT2lBTr7WQ2MwZZe+nodbD+n3HtC4OCOAdsOPPcKZQ==} - engines: {node: '>=10.0.0'} + /rollup/3.4.0: + resolution: {integrity: sha512-4g8ZrEFK7UbDvy3JF+d5bLiC8UKkS3n/27/cnVeESwB1LVPl6MoPL32/6+SCQ1vHTp6Mvp2veIHtwELhi+uXEw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.2 - dev: true + dev: false /run-parallel/1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - dev: true - - /safe-buffer/5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true + dev: false /semver/6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} @@ -1663,7 +1696,7 @@ packages: dev: true /set-blocking/2.0.0: - resolution: {integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc=} + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: true /shebang-command/2.0.0: @@ -1671,21 +1704,18 @@ packages: engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - dev: true /shebang-regex/3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - dev: true - /signal-exit/3.0.6: - resolution: {integrity: sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==} - dev: true + /signal-exit/3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} /slash/3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - dev: true + dev: false /source-map-support/0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} @@ -1694,20 +1724,17 @@ packages: source-map: 0.6.1 dev: true - /source-map/0.5.7: - resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} - engines: {node: '>=0.10.0'} - dev: true - /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} dev: true - /source-map/0.7.3: - resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} + /source-map/0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} engines: {node: '>= 8'} - dev: true + dependencies: + whatwg-url: 7.1.0 + dev: false /spawn-wrap/2.0.0: resolution: {integrity: sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==} @@ -1717,16 +1744,16 @@ packages: is-windows: 1.0.2 make-dir: 3.1.0 rimraf: 3.0.2 - signal-exit: 3.0.6 + signal-exit: 3.0.7 which: 2.0.2 dev: true /sprintf-js/1.0.3: - resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true - /stack-utils/2.0.5: - resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} + /stack-utils/2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 @@ -1741,13 +1768,6 @@ packages: strip-ansi: 6.0.1 dev: true - /strip-ansi/3.0.1: - resolution: {integrity: sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=} - engines: {node: '>=0.10.0'} - dependencies: - ansi-regex: 2.1.1 - dev: true - /strip-ansi/6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -1763,10 +1783,10 @@ packages: /strip-final-newline/2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - dev: true + dev: false - /sucrase/3.20.3: - resolution: {integrity: sha512-azqwq0/Bs6RzLAdb4dXxsCgMtAaD2hzmUr4UhSfsxO46JFPAwMnnb441B/qsudZiS6Ylea3JXZe3Q497lsgXzQ==} + /sucrase/3.29.0: + resolution: {integrity: sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A==} engines: {node: '>=8'} hasBin: true dependencies: @@ -1776,7 +1796,7 @@ packages: mz: 2.7.0 pirates: 4.0.5 ts-interface-checker: 0.1.13 - dev: true + dev: false /supports-color/5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} @@ -1798,35 +1818,35 @@ packages: hasBin: true dependencies: color-support: 1.1.3 - debug: 4.3.3 + debug: 4.3.4 diff: 4.0.2 escape-string-regexp: 2.0.0 - glob: 7.1.6 - tap-parser: 11.0.1 - tap-yaml: 1.0.0 - unicode-length: 2.0.2 + glob: 7.2.3 + tap-parser: 11.0.2 + tap-yaml: 1.0.2 + unicode-length: 2.1.0 transitivePeerDependencies: - supports-color dev: true - /tap-parser/11.0.1: - resolution: {integrity: sha512-5ow0oyFOnXVSALYdidMX94u0GEjIlgc/BPFYLx0yRh9hb8+cFGNJqJzDJlUqbLOwx8+NBrIbxCWkIQi7555c0w==} + /tap-parser/11.0.2: + resolution: {integrity: sha512-6qGlC956rcORw+fg7Fv1iCRAY8/bU9UabUAhs3mXRH6eRmVZcNPLheSXCYaVaYeSwx5xa/1HXZb1537YSvwDZg==} engines: {node: '>= 8'} hasBin: true dependencies: events-to-array: 1.1.2 - minipass: 3.1.6 - tap-yaml: 1.0.0 + minipass: 3.3.6 + tap-yaml: 1.0.2 dev: true - /tap-yaml/1.0.0: - resolution: {integrity: sha512-Rxbx4EnrWkYk0/ztcm5u3/VznbyFJpyXO12dDBHKWiDVxy7O2Qw6MRrwO5H6Ww0U5YhRY/4C/VzWmFPhBQc4qQ==} + /tap-yaml/1.0.2: + resolution: {integrity: sha512-GegASpuqBnRNdT1U+yuUPZ8rEU64pL35WPBpCISWwff4dErS2/438barz7WFJl4Nzh3Y05tfPidZnH+GaV1wMg==} dependencies: yaml: 1.10.2 dev: true - /tap/16.1.0_m7b2umgpdlo7valsqrwayzc5jy: - resolution: {integrity: sha512-EFERYEEDCLjvsT+B+z/qAVuxh5JPEmtn0aGh1ZT/2BN5nVLm6VbcL9fR/Y2FtsxvHuEC3Q2xLc1n1h7mnWVP9w==} + /tap/16.3.2_2dtigtkb225m7ii7q45utxqwgi: + resolution: {integrity: sha512-4MWMObR8unbv5gAHHVW9F0MNk3opQMnLusSWvt4KBAnKmkwpBRKIfNF64fimQbcR4y9a7U9ISV7pCldlV3J8Pw==} engines: {node: '>=12'} hasBin: true peerDependencies: @@ -1848,24 +1868,24 @@ packages: findit: 2.0.0 foreground-child: 2.0.0 fs-exists-cached: 1.0.0 - glob: 7.1.6 + glob: 7.2.3 isexe: 2.0.0 - istanbul-lib-processinfo: 2.0.2 - jackspeak: 1.4.1 + istanbul-lib-processinfo: 2.0.3 + jackspeak: 1.4.2 libtap: 1.4.0 - minipass: 3.1.6 + minipass: 3.3.6 mkdirp: 1.0.4 nyc: 15.1.0 opener: 1.5.2 rimraf: 3.0.2 - signal-exit: 3.0.6 + signal-exit: 3.0.7 source-map-support: 0.5.21 tap-mocha-reporter: 5.0.3 - tap-parser: 11.0.1 - tap-yaml: 1.0.0 + tap-parser: 11.0.2 + tap-yaml: 1.0.2 tcompare: 5.0.7 - ts-node: 10.9.1_ipjagzjez2l2vadwzzudid5j5q - typescript: 4.5.5 + ts-node: 10.9.1_7cep2inysldxstbcrxlp3njwym + typescript: 4.9.3 which: 2.0.2 transitivePeerDependencies: - supports-color @@ -1889,25 +1909,25 @@ packages: engines: {node: '>=8'} dependencies: '@istanbuljs/schema': 0.1.3 - glob: 7.1.6 - minimatch: 3.0.4 + glob: 7.2.3 + minimatch: 3.1.2 dev: true /thenify-all/1.6.0: - resolution: {integrity: sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=} + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 - dev: true + dev: false /thenify/3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: any-promise: 1.3.0 - dev: true + dev: false /to-fast-properties/2.0.0: - resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} dev: true @@ -1916,26 +1936,31 @@ packages: engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - dev: true /tr46/0.0.3: - resolution: {integrity: sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=} + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false + + /tr46/1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + dependencies: + punycode: 2.1.1 dev: false /tree-kill/1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true - dev: true + dev: false /trivial-deferred/1.0.1: - resolution: {integrity: sha1-N21NKdlR1jaKb3oK6FwvTV4GWPM=} + resolution: {integrity: sha512-dagAKX7vaesNNAwOc9Np9C2mJ+7YopF4lk+jE2JML9ta4kZ91Y6UruJNH65bLRYoUROD8EY+Pmi44qQWwXR7sw==} dev: true /ts-interface-checker/0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - dev: true + dev: false - /ts-node/10.9.1_ipjagzjez2l2vadwzzudid5j5q: + /ts-node/10.9.1_7cep2inysldxstbcrxlp3njwym: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -1954,46 +1979,52 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 17.0.14 + '@types/node': 17.0.45 acorn: 8.8.1 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.5.5 + typescript: 4.9.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - dev: true - /tsup/5.11.13_m7b2umgpdlo7valsqrwayzc5jy: - resolution: {integrity: sha512-NVMK01gVmojZn7+iZwxRK1CzW2BIabaVMyEjs7Nm9lm4DrSf7IAqs2F3fg0vT7rH72x1cIBsW9U/TlWrCvHVQQ==} + /tsup/6.5.0_2dtigtkb225m7ii7q45utxqwgi: + resolution: {integrity: sha512-36u82r7rYqRHFkD15R20Cd4ercPkbYmuvRkz3Q1LCm5BsiFNUgpo36zbjVhCOgvjyxNBWNKHsaD5Rl8SykfzNA==} + engines: {node: '>=14'} hasBin: true peerDependencies: + '@swc/core': ^1 + postcss: ^8.4.12 typescript: ^4.1.0 peerDependenciesMeta: + '@swc/core': + optional: true + postcss: + optional: true typescript: optional: true dependencies: - bundle-require: 3.0.4_esbuild@0.14.18 - cac: 6.7.12 + bundle-require: 3.1.2_esbuild@0.15.15 + cac: 6.7.14 chokidar: 3.5.3 - debug: 4.3.3 - esbuild: 0.14.18 + debug: 4.3.4 + esbuild: 0.15.15 execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 3.1.1_ts-node@10.9.1 + postcss-load-config: 3.1.4_ts-node@10.9.1 resolve-from: 5.0.0 - rollup: 2.67.0 - source-map: 0.7.3 - sucrase: 3.20.3 + rollup: 3.4.0 + source-map: 0.8.0-beta.0 + sucrase: 3.29.0 tree-kill: 1.2.2 - typescript: 4.5.5 + typescript: 4.9.3 transitivePeerDependencies: - supports-color - ts-node - dev: true + dev: false /type-fest/0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} @@ -2006,42 +2037,61 @@ packages: is-typedarray: 1.0.0 dev: true - /typescript/4.5.5: - resolution: {integrity: sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==} + /typescript/4.9.3: + resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==} engines: {node: '>=4.2.0'} hasBin: true - dev: true - /unicode-length/2.0.2: - resolution: {integrity: sha512-Ph/j1VbS3/r77nhoY2WU0GWGjVYOHL3xpKp0y/Eq2e5r0mT/6b649vm7KFO6RdAdrZkYLdxphYVgvODxPB+Ebg==} + /unicode-length/2.1.0: + resolution: {integrity: sha512-4bV582zTV9Q02RXBxSUMiuN/KHo5w4aTojuKTNT96DIKps/SIawFp7cS5Mu25VuY1AioGXrmYyzKZUzh8OqoUw==} dependencies: punycode: 2.1.1 - strip-ansi: 3.0.1 dev: true - /uuid/3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + /update-browserslist-db/1.0.10_browserslist@4.21.4: + resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.4 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /uuid/8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true dev: true /v8-compile-cache-lib/3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: true /webidl-conversions/3.0.1: - resolution: {integrity: sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=} + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false + + /webidl-conversions/4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} dev: false /whatwg-url/5.0.0: - resolution: {integrity: sha1-lmRU6HZUYuN2RNNib2dCzotwll0=} + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 dev: false + /whatwg-url/7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + dev: false + /which-module/2.0.0: - resolution: {integrity: sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=} + resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} dev: true /which/2.0.2: @@ -2050,7 +2100,6 @@ packages: hasBin: true dependencies: isexe: 2.0.0 - dev: true /wrap-ansi/6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} @@ -2071,20 +2120,19 @@ packages: dev: true /wrappy/1.0.2: - resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} - dev: true + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} /write-file-atomic/3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} dependencies: imurmurhash: 0.1.4 is-typedarray: 1.0.0 - signal-exit: 3.0.6 + signal-exit: 3.0.7 typedarray-to-buffer: 3.1.5 dev: true - /ws/8.4.2: - resolution: {integrity: sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==} + /ws/8.11.0: + resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -2107,7 +2155,6 @@ packages: /yaml/1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - dev: true /yargs-parser/18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} @@ -2137,4 +2184,3 @@ packages: /yn/3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} - dev: true From ec76c25b876908de088cff1c2f309105e85added Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Sun, 27 Nov 2022 14:35:06 +1300 Subject: [PATCH 17/35] Accidentally put in dependencies list --- package.json | 2 +- pnpm-lock.yaml | 203 +++++++++++++++++++++++++++++++------------------ 2 files changed, 131 insertions(+), 74 deletions(-) diff --git a/package.json b/package.json index f109354..960ce8d 100644 --- a/package.json +++ b/package.json @@ -25,12 +25,12 @@ "prettier": "^2.8.0", "tap": "^16.3.2", "ts-node": "^10.9.1", + "tsup": "^6.5.0", "typescript": "^4.9.3" }, "dependencies": { "cross-fetch": "^3.1.5", "node-html-parser": "^5.4.2", - "tsup": "^6.5.0", "ws": "^8.11.0" }, "exports": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5eb90a0..4f0b071 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,7 +16,6 @@ specifiers: dependencies: cross-fetch: 3.1.5 node-html-parser: 5.4.2 - tsup: 6.5.0_2dtigtkb225m7ii7q45utxqwgi ws: 8.11.0 devDependencies: @@ -26,6 +25,7 @@ devDependencies: prettier: 2.8.0 tap: 16.3.2_2dtigtkb225m7ii7q45utxqwgi ts-node: 10.9.1_7cep2inysldxstbcrxlp3njwym + tsup: 6.5.0_2dtigtkb225m7ii7q45utxqwgi typescript: 4.9.3 packages: @@ -236,6 +236,7 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/trace-mapping': 0.3.9 + dev: true /@esbuild/android-arm/0.15.15: resolution: {integrity: sha512-JJjZjJi2eBL01QJuWjfCdZxcIgot+VoK6Fq7eKF9w4YHm9hwl7nhBR1o2Wnt/WcANk5l9SkpvrldW1PLuXxcbw==} @@ -243,7 +244,7 @@ packages: cpu: [arm] os: [android] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/linux-loong64/0.15.15: @@ -252,7 +253,7 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true - dev: false + dev: true optional: true /@istanbuljs/load-nyc-config/1.1.0: @@ -291,6 +292,7 @@ packages: /@jridgewell/resolve-uri/3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} + dev: true /@jridgewell/set-array/1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} @@ -299,6 +301,7 @@ packages: /@jridgewell/sourcemap-codec/1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: true /@jridgewell/trace-mapping/0.3.17: resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} @@ -312,6 +315,7 @@ packages: dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 + dev: true /@nodelib/fs.scandir/2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -319,12 +323,12 @@ packages: dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - dev: false + dev: true /@nodelib/fs.stat/2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - dev: false + dev: true /@nodelib/fs.walk/1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} @@ -332,22 +336,27 @@ packages: dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.13.0 - dev: false + dev: true /@tsconfig/node10/1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + dev: true /@tsconfig/node12/1.0.11: resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true /@tsconfig/node14/1.0.3: resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true /@tsconfig/node16/1.0.3: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} + dev: true /@types/node/17.0.45: resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + dev: true /@types/tap/15.0.7: resolution: {integrity: sha512-TTMajw4gxQfFgYbhXhy/Tb2OiNcwS+4oP/9yp1/GdU0pFJo3wtnkYhRgmQy39ksh+rnoa0VrPHJ4Tuv2cLNQ5A==} @@ -364,11 +373,13 @@ packages: /acorn-walk/8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} + dev: true /acorn/8.8.1: resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} engines: {node: '>=0.4.0'} hasBin: true + dev: true /aggregate-error/3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} @@ -399,7 +410,7 @@ packages: /any-promise/1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - dev: false + dev: true /anymatch/3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} @@ -407,6 +418,7 @@ packages: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 + dev: true /append-transform/2.0.0: resolution: {integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==} @@ -421,6 +433,7 @@ packages: /arg/4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true /argparse/1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -431,7 +444,7 @@ packages: /array-union/2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - dev: false + dev: true /async-hook-domain/2.0.4: resolution: {integrity: sha512-14LjCmlK1PK8eDtTezR6WX8TMaYNIzBIsd2D1sGoGjgx0BuNMMoSdk7i/drlbtamy0AWv9yv2tkB+ASdmeqFIw==} @@ -440,10 +453,12 @@ packages: /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true /binary-extensions/2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} + dev: true /bind-obj-methods/3.0.0: resolution: {integrity: sha512-nLEaaz3/sEzNSyPWRsN9HNsqwk1AUyECtGj+XwGdIi3xABnEqecvXtIJ0wehQXuuER5uZ/5fTs2usONgYjG+iw==} @@ -459,12 +474,14 @@ packages: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 + dev: true /braces/3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 + dev: true /browserslist/4.21.4: resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} @@ -489,12 +506,12 @@ packages: dependencies: esbuild: 0.15.15 load-tsconfig: 0.2.3 - dev: false + dev: true /cac/6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - dev: false + dev: true /caching-transform/4.0.0: resolution: {integrity: sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==} @@ -537,6 +554,7 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.2 + dev: true /clean-stack/2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} @@ -588,7 +606,7 @@ packages: /commander/4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} - dev: false + dev: true /commondir/1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} @@ -596,6 +614,7 @@ packages: /concat-map/0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + dev: true /convert-source-map/1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} @@ -603,6 +622,7 @@ packages: /create-require/1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true /cross-fetch/3.1.5: resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} @@ -619,6 +639,7 @@ packages: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 + dev: true /css-select/4.3.0: resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} @@ -645,6 +666,7 @@ packages: optional: true dependencies: ms: 2.1.2 + dev: true /decamelize/1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} @@ -661,13 +683,14 @@ packages: /diff/4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} + dev: true /dir-glob/3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 - dev: false + dev: true /dom-serializer/1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} @@ -718,7 +741,7 @@ packages: cpu: [x64] os: [android] requiresBuild: true - dev: false + dev: true optional: true /esbuild-android-arm64/0.15.15: @@ -727,7 +750,7 @@ packages: cpu: [arm64] os: [android] requiresBuild: true - dev: false + dev: true optional: true /esbuild-darwin-64/0.15.15: @@ -736,7 +759,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: false + dev: true optional: true /esbuild-darwin-arm64/0.15.15: @@ -745,7 +768,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: false + dev: true optional: true /esbuild-freebsd-64/0.15.15: @@ -754,7 +777,7 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true - dev: false + dev: true optional: true /esbuild-freebsd-arm64/0.15.15: @@ -763,7 +786,7 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true - dev: false + dev: true optional: true /esbuild-linux-32/0.15.15: @@ -772,7 +795,7 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true - dev: false + dev: true optional: true /esbuild-linux-64/0.15.15: @@ -781,7 +804,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: false + dev: true optional: true /esbuild-linux-arm/0.15.15: @@ -790,7 +813,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: false + dev: true optional: true /esbuild-linux-arm64/0.15.15: @@ -799,7 +822,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: false + dev: true optional: true /esbuild-linux-mips64le/0.15.15: @@ -808,7 +831,7 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true - dev: false + dev: true optional: true /esbuild-linux-ppc64le/0.15.15: @@ -817,7 +840,7 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true - dev: false + dev: true optional: true /esbuild-linux-riscv64/0.15.15: @@ -826,7 +849,7 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true - dev: false + dev: true optional: true /esbuild-linux-s390x/0.15.15: @@ -835,7 +858,7 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true - dev: false + dev: true optional: true /esbuild-netbsd-64/0.15.15: @@ -844,7 +867,7 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true - dev: false + dev: true optional: true /esbuild-openbsd-64/0.15.15: @@ -853,7 +876,7 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true - dev: false + dev: true optional: true /esbuild-sunos-64/0.15.15: @@ -862,7 +885,7 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true - dev: false + dev: true optional: true /esbuild-windows-32/0.15.15: @@ -871,7 +894,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: false + dev: true optional: true /esbuild-windows-64/0.15.15: @@ -880,7 +903,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: false + dev: true optional: true /esbuild-windows-arm64/0.15.15: @@ -889,7 +912,7 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: false + dev: true optional: true /esbuild/0.15.15: @@ -920,7 +943,7 @@ packages: esbuild-windows-32: 0.15.15 esbuild-windows-64: 0.15.15 esbuild-windows-arm64: 0.15.15 - dev: false + dev: true /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -960,7 +983,7 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 - dev: false + dev: true /fast-glob/3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} @@ -971,19 +994,20 @@ packages: glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 - dev: false + dev: true /fastq/1.13.0: resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} dependencies: reusify: 1.0.4 - dev: false + dev: true /fill-range/7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 + dev: true /find-cache-dir/3.3.2: resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} @@ -1024,12 +1048,14 @@ packages: /fs.realpath/1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true /fsevents/2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true + dev: true optional: true /function-loop/2.0.1: @@ -1054,13 +1080,14 @@ packages: /get-stream/6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - dev: false + dev: true /glob-parent/5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 + dev: true /glob/7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} @@ -1071,7 +1098,7 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: false + dev: true /glob/7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} @@ -1099,7 +1126,7 @@ packages: ignore: 5.2.0 merge2: 1.4.1 slash: 3.0.0 - dev: false + dev: true /graceful-fs/4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} @@ -1135,12 +1162,12 @@ packages: /human-signals/2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - dev: false + dev: true /ignore/5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} - dev: false + dev: true /imurmurhash/0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} @@ -1157,19 +1184,23 @@ packages: dependencies: once: 1.4.0 wrappy: 1.0.2 + dev: true /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true /is-binary-path/2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 + dev: true /is-extglob/2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + dev: true /is-fullwidth-code-point/3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} @@ -1181,14 +1212,17 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 + dev: true /is-number/7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + dev: true /is-stream/2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + dev: true /is-typedarray/1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} @@ -1201,6 +1235,7 @@ packages: /isexe/2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true /istanbul-lib-coverage/3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} @@ -1276,7 +1311,7 @@ packages: /joycon/3.1.1: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} - dev: false + dev: true /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -1324,16 +1359,16 @@ packages: /lilconfig/2.0.6: resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} engines: {node: '>=10'} - dev: false + dev: true /lines-and-columns/1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: false + dev: true /load-tsconfig/0.2.3: resolution: {integrity: sha512-iyT2MXws+dc2Wi6o3grCFtGXpeMvHmJqS27sMPGtV2eUu4PeFnG+33I8BlFK1t1NWMjOpcx9bridn5yxLDX2gQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false + dev: true /locate-path/5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} @@ -1348,7 +1383,7 @@ packages: /lodash.sortby/4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - dev: false + dev: true /make-dir/3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} @@ -1359,15 +1394,16 @@ packages: /make-error/1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true /merge-stream/2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: false + dev: true /merge2/1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - dev: false + dev: true /micromatch/4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} @@ -1375,17 +1411,18 @@ packages: dependencies: braces: 3.0.2 picomatch: 2.3.1 - dev: false + dev: true /mimic-fn/2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - dev: false + dev: true /minimatch/3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 + dev: true /minipass/3.3.6: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} @@ -1402,6 +1439,7 @@ packages: /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true /mz/2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -1409,7 +1447,7 @@ packages: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 - dev: false + dev: true /node-fetch/2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} @@ -1444,13 +1482,14 @@ packages: /normalize-path/3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + dev: true /npm-run-path/4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} dependencies: path-key: 3.1.1 - dev: false + dev: true /nth-check/2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -1497,19 +1536,20 @@ packages: /object-assign/4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - dev: false + dev: true /once/1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 + dev: true /onetime/5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 - dev: false + dev: true /opener/1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} @@ -1570,15 +1610,17 @@ packages: /path-is-absolute/1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + dev: true /path-key/3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + dev: true /path-type/4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - dev: false + dev: true /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -1587,11 +1629,12 @@ packages: /picomatch/2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + dev: true /pirates/4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} engines: {node: '>= 6'} - dev: false + dev: true /pkg-dir/4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} @@ -1615,7 +1658,7 @@ packages: lilconfig: 2.0.6 ts-node: 10.9.1_7cep2inysldxstbcrxlp3njwym yaml: 1.10.2 - dev: false + dev: true /prettier/2.8.0: resolution: {integrity: sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==} @@ -1633,16 +1676,18 @@ packages: /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} + dev: true /queue-microtask/1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: false + dev: true /readdirp/3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 + dev: true /release-zalgo/1.0.0: resolution: {integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==} @@ -1663,11 +1708,12 @@ packages: /resolve-from/5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + dev: true /reusify/1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: false + dev: true /rimraf/3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} @@ -1682,13 +1728,13 @@ packages: hasBin: true optionalDependencies: fsevents: 2.3.2 - dev: false + dev: true /run-parallel/1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - dev: false + dev: true /semver/6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} @@ -1704,18 +1750,21 @@ packages: engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 + dev: true /shebang-regex/3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + dev: true /signal-exit/3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true /slash/3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - dev: false + dev: true /source-map-support/0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} @@ -1734,7 +1783,7 @@ packages: engines: {node: '>= 8'} dependencies: whatwg-url: 7.1.0 - dev: false + dev: true /spawn-wrap/2.0.0: resolution: {integrity: sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==} @@ -1783,7 +1832,7 @@ packages: /strip-final-newline/2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - dev: false + dev: true /sucrase/3.29.0: resolution: {integrity: sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A==} @@ -1796,7 +1845,7 @@ packages: mz: 2.7.0 pirates: 4.0.5 ts-interface-checker: 0.1.13 - dev: false + dev: true /supports-color/5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} @@ -1918,13 +1967,13 @@ packages: engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 - dev: false + dev: true /thenify/3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: any-promise: 1.3.0 - dev: false + dev: true /to-fast-properties/2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} @@ -1936,6 +1985,7 @@ packages: engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 + dev: true /tr46/0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -1945,12 +1995,12 @@ packages: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} dependencies: punycode: 2.1.1 - dev: false + dev: true /tree-kill/1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true - dev: false + dev: true /trivial-deferred/1.0.1: resolution: {integrity: sha512-dagAKX7vaesNNAwOc9Np9C2mJ+7YopF4lk+jE2JML9ta4kZ91Y6UruJNH65bLRYoUROD8EY+Pmi44qQWwXR7sw==} @@ -1958,7 +2008,7 @@ packages: /ts-interface-checker/0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - dev: false + dev: true /ts-node/10.9.1_7cep2inysldxstbcrxlp3njwym: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} @@ -1989,6 +2039,7 @@ packages: typescript: 4.9.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + dev: true /tsup/6.5.0_2dtigtkb225m7ii7q45utxqwgi: resolution: {integrity: sha512-36u82r7rYqRHFkD15R20Cd4ercPkbYmuvRkz3Q1LCm5BsiFNUgpo36zbjVhCOgvjyxNBWNKHsaD5Rl8SykfzNA==} @@ -2024,7 +2075,7 @@ packages: transitivePeerDependencies: - supports-color - ts-node - dev: false + dev: true /type-fest/0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} @@ -2041,6 +2092,7 @@ packages: resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==} engines: {node: '>=4.2.0'} hasBin: true + dev: true /unicode-length/2.1.0: resolution: {integrity: sha512-4bV582zTV9Q02RXBxSUMiuN/KHo5w4aTojuKTNT96DIKps/SIawFp7cS5Mu25VuY1AioGXrmYyzKZUzh8OqoUw==} @@ -2066,6 +2118,7 @@ packages: /v8-compile-cache-lib/3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true /webidl-conversions/3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -2073,7 +2126,7 @@ packages: /webidl-conversions/4.0.2: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - dev: false + dev: true /whatwg-url/5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -2088,7 +2141,7 @@ packages: lodash.sortby: 4.7.0 tr46: 1.0.1 webidl-conversions: 4.0.2 - dev: false + dev: true /which-module/2.0.0: resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} @@ -2100,6 +2153,7 @@ packages: hasBin: true dependencies: isexe: 2.0.0 + dev: true /wrap-ansi/6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} @@ -2121,6 +2175,7 @@ packages: /wrappy/1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true /write-file-atomic/3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} @@ -2155,6 +2210,7 @@ packages: /yaml/1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} + dev: true /yargs-parser/18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} @@ -2184,3 +2240,4 @@ packages: /yn/3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} + dev: true From 48e1c2bd8ed794237f083fd924601aa45094b47a Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Sun, 27 Nov 2022 16:00:13 +1300 Subject: [PATCH 18/35] Try to test on latest version --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index dba760b..18e9b7f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,7 @@ jobs: name: Test code strategy: matrix: - version: [18.x, 16.x, 14.x] + version: [latest, 18.x, 16.x, 14.x] runs-on: ubuntu-latest steps: From 06966c7baed8e07b543e1e5f7ed3271db96c46f2 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Sun, 27 Nov 2022 16:01:28 +1300 Subject: [PATCH 19/35] attempt 2 --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 18e9b7f..ed70dc5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,7 @@ jobs: name: Test code strategy: matrix: - version: [latest, 18.x, 16.x, 14.x] + version: [19.x, 18.x, 16.x, 14.x] runs-on: ubuntu-latest steps: From 00d200f5573bc57b492330f5b3f1ab5aaa555947 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Sun, 27 Nov 2022 18:33:44 +1300 Subject: [PATCH 20/35] Stop returning requests --- src/classes/Profile.ts | 1 - src/classes/Studio.ts | 7 +------ src/classes/forums/Forum.ts | 2 -- src/classes/forums/Post.ts | 2 -- src/classes/forums/Topic.ts | 4 ---- 5 files changed, 1 insertion(+), 15 deletions(-) diff --git a/src/classes/Profile.ts b/src/classes/Profile.ts index 57f67f7..51fd165 100644 --- a/src/classes/Profile.ts +++ b/src/classes/Profile.ts @@ -88,7 +88,6 @@ class Profile { console.log(delFetch.status, await delFetch.text()); throw new Error("Error deleting comment."); } - return delFetch; } private async getUserHTML() { diff --git a/src/classes/Studio.ts b/src/classes/Studio.ts index dfb4bbb..c64884f 100644 --- a/src/classes/Studio.ts +++ b/src/classes/Studio.ts @@ -82,7 +82,6 @@ class Studio { if (!setFetch.ok) { throw new Error(`Could not set title - ${setFetch.statusText}`); } - return setFetch; } /** @@ -107,7 +106,6 @@ class Studio { if (!setFetch.ok) { throw new Error(`Could not set description - ${setFetch.statusText}`); } - return setFetch; } /** @@ -129,7 +127,6 @@ class Studio { if (!inviteFetch.ok) { throw new Error(`Could not invite curator - ${inviteFetch.statusText}`); } - return inviteFetch; } /** @@ -151,7 +148,7 @@ class Studio { if (!removeFetch.ok) { throw new Error(`Could not remove curator - ${removeFetch.statusText}`); } - return removeFetch; + } /** @@ -172,7 +169,6 @@ class Studio { if (!addFetch.ok) { throw new Error(`Could not add project - ${addFetch.statusText}`); } - return addFetch; } /** @@ -193,7 +189,6 @@ class Studio { if (!removeFetch.ok) { throw new Error(`Could not remove project - ${removeFetch.statusText}`); } - return removeFetch; } /** diff --git a/src/classes/forums/Forum.ts b/src/classes/forums/Forum.ts index 2051e48..d0c8baa 100644 --- a/src/classes/forums/Forum.ts +++ b/src/classes/forums/Forum.ts @@ -72,7 +72,6 @@ class Forum { /** * Sets the currently logged in user's signature * @param content The content to set the signature to - * @returns {Request} The request to set the signature */ async setSignature(content: string) { const editFetch = await fetch( @@ -101,7 +100,6 @@ class Forum { if (!editFetch.ok) { throw new Error(`Error editing signature - ${editFetch.statusText}`); } - return editFetch; } } diff --git a/src/classes/forums/Post.ts b/src/classes/forums/Post.ts index 548ff44..204af3b 100644 --- a/src/classes/forums/Post.ts +++ b/src/classes/forums/Post.ts @@ -35,7 +35,6 @@ class Post { /** * Edits the post (requires ownership of the post) * @param content The new content of the post - * @returns The API response */ async edit(content: string) { const editFetch = await fetch( @@ -66,7 +65,6 @@ class Post { `Error editing post ${this.id} - ${editFetch.statusText}` ); } - return editFetch; } } diff --git a/src/classes/forums/Topic.ts b/src/classes/forums/Topic.ts index 5a1cc4d..1ff7abd 100644 --- a/src/classes/forums/Topic.ts +++ b/src/classes/forums/Topic.ts @@ -78,7 +78,6 @@ class Topic { /** * Follows the topic - * @returns The request */ async follow() { const followFetch = await fetch( @@ -104,12 +103,10 @@ class Topic { `Error following topic ${this.id} - ${followFetch.statusText}` ); } - return followFetch; } /** * Unfollows the topic - * @returns The request */ async unfollow() { const unfollowFetch = await fetch( @@ -135,7 +132,6 @@ class Topic { `Error unfollowing topic ${this.id} - ${unfollowFetch.statusText}` ); } - return unfollowFetch; } } export default Topic; From b3d70f45bb95f0139016a093d851207699800b2d Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Sun, 27 Nov 2022 18:50:04 +1300 Subject: [PATCH 21/35] Fix mistake --- src/classes/Profile.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/classes/Profile.ts b/src/classes/Profile.ts index 51fd165..5a70eb5 100644 --- a/src/classes/Profile.ts +++ b/src/classes/Profile.ts @@ -42,7 +42,6 @@ interface ProfileComment { class Profile { user: string; session: Session; - scratchUserAPI: UserAPIResponse; constructor({ username, session }: { username: string; session: Session }) { this.user = username; this.session = session; @@ -111,7 +110,7 @@ class Profile { if (!scratchUserFetch.ok) { throw new Error("Cannot find user."); } - this.scratchUserAPI = await scratchUserFetch.json(); + return await scratchUserFetch.json(); } /** From 694a8b3bb6f0c1f3542aff100c4ebbf507880d78 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Sun, 27 Nov 2022 19:13:37 +1300 Subject: [PATCH 22/35] Remove unnecessary replace --- src/classes/forums/Post.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/classes/forums/Post.ts b/src/classes/forums/Post.ts index 204af3b..a82246f 100644 --- a/src/classes/forums/Post.ts +++ b/src/classes/forums/Post.ts @@ -55,9 +55,7 @@ class Post { method: "POST", body: `csrfmiddlewaretoken=${ this.session.csrfToken - }&body=${encodeURIComponent(content) - .replace("%20", "+") - .replace("\n", "\r\n")}` + }&body=${encodeURIComponent(content)}` } ); if (!editFetch.ok) { From 51a9198c5d81edda6e3c78adb7ce28597b999f54 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Sun, 27 Nov 2022 19:16:39 +1300 Subject: [PATCH 23/35] Format --- src/classes/Studio.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/classes/Studio.ts b/src/classes/Studio.ts index c64884f..74a8b13 100644 --- a/src/classes/Studio.ts +++ b/src/classes/Studio.ts @@ -148,7 +148,6 @@ class Studio { if (!removeFetch.ok) { throw new Error(`Could not remove curator - ${removeFetch.statusText}`); } - } /** From 9a19961db13f7f77d685808e8003482ade6f0193 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Sun, 27 Nov 2022 20:57:16 +1300 Subject: [PATCH 24/35] Same --- src/classes/forums/Forum.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/classes/forums/Forum.ts b/src/classes/forums/Forum.ts index d0c8baa..b45eeb6 100644 --- a/src/classes/forums/Forum.ts +++ b/src/classes/forums/Forum.ts @@ -92,9 +92,7 @@ class Forum { method: "POST", body: `csrfmiddlewaretoken=${ this.session.csrfToken - }&signature=${encodeURIComponent(content) - .replace("%20", "+") - .replace("\n", "\r\n")}&update=` + }&signature=${encodeURIComponent(content)}&update=` } ); if (!editFetch.ok) { From ff85368353c2b03a103917e004831d6cf906708e Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Mon, 28 Nov 2022 21:09:47 +1300 Subject: [PATCH 25/35] Switch to examples documentation --- docs/pages/ScratchSession.md | 51 ------- docs/pages/classes/CloudConnection.md | 59 -------- docs/pages/classes/Forums.md | 91 ------------ docs/pages/classes/Profile.md | 86 ----------- docs/pages/classes/Project.md | 133 ----------------- docs/pages/classes/Studio.md | 138 ------------------ docs/pages/examples/forums/changeSignature.md | 9 ++ docs/pages/examples/forums/topicsAndPosts.md | 15 ++ docs/pages/examples/getSessionJSON.md | 8 + docs/pages/index.md | 4 +- 10 files changed, 35 insertions(+), 559 deletions(-) delete mode 100644 docs/pages/ScratchSession.md delete mode 100644 docs/pages/classes/CloudConnection.md delete mode 100644 docs/pages/classes/Forums.md delete mode 100644 docs/pages/classes/Profile.md delete mode 100644 docs/pages/classes/Project.md delete mode 100644 docs/pages/classes/Studio.md create mode 100644 docs/pages/examples/forums/changeSignature.md create mode 100644 docs/pages/examples/forums/topicsAndPosts.md create mode 100644 docs/pages/examples/getSessionJSON.md diff --git a/docs/pages/ScratchSession.md b/docs/pages/ScratchSession.md deleted file mode 100644 index 8af28b8..0000000 --- a/docs/pages/ScratchSession.md +++ /dev/null @@ -1,51 +0,0 @@ -# ScratchSession - -The main part of meowclient. - -## Methods - -### init - -Initialises the `ScratchSession` to perform authenticated actions. You can perform limited actions without calling this method. - -#### Parameters - -- `user` (`string`) - The username of the user you want to log in to -- `pass` (`string`) - The password of the user you want to log in to - -### getProject - -Gets a project. - -#### Parameters - -- `id` (`number`) - The ID of the project you want to get. - -#### Returns - -This returns a `Project` class. - -### getProfile - -Gets a profile. - -#### Parameters - -- `username` (`string`) - The username of the profile you want to get. - -#### Returns - -This returns a `Profile` class. - -### getStudio - -Gets a studio. - -#### Parameters - -- `id` (`number`) - The ID of the studio you want to get. - -### logout - -Logs out of Scratch. -**Note:** Currently it still keeps `csrfToken`, `token`, and `sessionJSON` intact. If you want to re-login, use the `init` method or create a new `ScratchSession`. diff --git a/docs/pages/classes/CloudConnection.md b/docs/pages/classes/CloudConnection.md deleted file mode 100644 index fdb7e97..0000000 --- a/docs/pages/classes/CloudConnection.md +++ /dev/null @@ -1,59 +0,0 @@ -# CloudConnection - -The class to use cloud variables. Accessible through `Project.createCloudConnection`. - -**Note: This is also an EventEmitter!** - -## Methods - -### setVariable - -Sets a cloud variable. - -#### Parameters - -- `variable` (`string`) The variable name -- `value` (`string` | `number`) The value to set the variable to - -### getVariable - -Gets a cloud variable. - -#### Parameters - -- `variable` (`string`) The variable name - -#### Returns - -This returns a `string` containing the value of the variable. - -### close - -Closes the cloud connection. - -## Properties - -### variables - -Returns an object with the cloud variable data. - -### connection - -Returns a websocket connection. This uses the [ws](https://github.com/websockets/ws) library. - -## EventEmitter - -There are different events: - -- `set` (Set a variable) -- `connect` (Connect to cloud data) -- `reconnect` (Reconnect to cloud data) -- `error` (Error in WS connection) - -You can use it like this: - -```ts -CloudConnection.on("set", (data) => { - console.log(`Variable ${data.name} set to ${data.value}`); -}); -``` diff --git a/docs/pages/classes/Forums.md b/docs/pages/classes/Forums.md deleted file mode 100644 index 5a26841..0000000 --- a/docs/pages/classes/Forums.md +++ /dev/null @@ -1,91 +0,0 @@ -# Forums - -Access the Scratch forums through meowclient! - -## getForum - -Gets a forum. Accessible with `ScratchSession.getForum`. - -### Parameters - -- `id` (`number`): The id of the forum. If not provided, only a few options will work. - -### Returns - -A `Forum` object. - -## Forum - -### getTopics (Promise) - -Gets the topics in the forum. Only works when `id` is provided. - -#### Returns - -An array of `Topic` objects. - -### getTopic - -Gets a topic. - -#### Parameters - -- `id` (`number`): The id of the topic. - -#### Returns - -A `Topic` object. - -### setSignature - -Sets the user's signature - -#### Parameters - -- `content` (`string`): The content to set the signature to. - -#### Returns - -A `Topic` object. - -## Topic - -### getPosts (Promise) - -Gets the posts in the topic. - -#### Returns - -An array of `Post` objects. - -### follow (Promise) - -Follows the topic. - -#### Returns - -A `Response` object. - -### unfollow (Promise) - -Unfollows the topic. - -#### Returns - -A `Response` object. - -## Post - -- `id` (`number`): The id of the post. -- `author` (`string`): The author of the post. -- `content` (`string`): The content of the post. -- `parsableContent` (`HTMLElement`): Parsable content with `node-html-parser`. -- `time` (`Date`): The time the post was created. - -### edit (Promise) - -Edits the post. - -#### Returns - -A `Response` object. diff --git a/docs/pages/classes/Profile.md b/docs/pages/classes/Profile.md deleted file mode 100644 index f02a2e7..0000000 --- a/docs/pages/classes/Profile.md +++ /dev/null @@ -1,86 +0,0 @@ -# Profile - -The class to get and set a user's Scratch profile data. Accessible through `ScratchSession.getProfile`. - -## Functions - -### getStatus - -Gets the current status of the user. - -#### Returns - -Returns either `Scratcher`, `New Scratcher`, or `Scratch Team`. - -### getComments - -Gets the comments on the user's profile. - -#### Parameters - -- `page` (`number`) The page of comments to view - -#### Returns - -This returns an Array of `ProfileComment`s. - -```ts -[ - { - id: string, - username: string, - content: string, - apiID: string, - replies: [ - { - id: string, - username: string, - content: string, - apiID: string - }, - { - id: string, - username: string, - content: string, - apiID: string - } - ] - } -]; -``` - -### deleteComment - -Deletes a comment from the user's profile page. - -#### Parameters - -- `id` (`string` or `number`) The ID of the comment to delete. Must be `12345`, **not** `comment-12345`. - -### getUserAPI - -Gets the response from `https://api.scratch.mit.edu/users/:user`. - -#### Returns - -```ts -id: number, -username: string, -scratchteam: boolean, -history: { - joined: string -}, -profile: { - id: number, - images: { - '90x90': string, - '60x60': string, - '55x55': string, - '50x50': string, - '32x32': string - }, - status: string, - bio: string, - country: string -} -``` diff --git a/docs/pages/classes/Project.md b/docs/pages/classes/Project.md deleted file mode 100644 index e49743e..0000000 --- a/docs/pages/classes/Project.md +++ /dev/null @@ -1,133 +0,0 @@ -# Project - -Used for Scratch projects. Accessible through `ScratchSession.getProject`. - -## Methods - -### getAPIData - -Gets the API data of the project. - -#### Returns - -```ts -id: number, -title: string, -description: string, -instructions: string, -visibility: string, -public: boolean, -comments_allowed: boolean, -is_published: boolean, -author: { - id: number, - username: string, - scratchteam: boolean, - history: { - joined: string - }, - profile: { - id: null | number, // unsure about this one - images: { - '90x90': string, - '60x60': string, - '55x55': string, - '50x50': string, - '32x32': string - } - } -} -image: string, -images: { - '282x218': string, - '216x163': string, - '200x200': string, - '144x108': string, - '135x102': string, - '100x80': string -}, -history: { - created: string, - modified: string, - shared: string -}, -stats: { - views: number, - loves: number, - favorites: number, - remixes: number -}, -remix: { - parent: null | number, - root: null | number -} -``` - -### getComments - -Gets the comments on the project. - -#### Parameters - -- `offset` (`number`) The offset of comments to return -- `limit` (`number`) The limit of comments to return - -#### Returns - -An array of - -```ts -id: number; -parent_id: null | number; -commentee_id: null | number; -content: string; -datetime_created: string; -datetime_modified: string; -visibility: "visible" | "hidden"; -author: { - id: number; - username: string; - scratchteam: boolean; - image: string; -} -``` - -### setTitle - -Sets the project title (requires you to own the project). - -#### Parameters - -- `value` (`string`) The value to set the title to - -### setInstructions - -Sets the project instructions (requires you to own the project). - -#### Parameters - -- `value` (`string`) The value to set the instructions to - -### setNotesAndCredits - -Sets the project Notes and Credits (requires you to own the project). - -#### Parameters - -- `value` (`string`) The value to set the Notes and Credits to - -### unshare - -Unshares the project (requires you to own the project). - -### share - -Shares the project (requires you to own the project). - -### createCloudConnection - -Creates a cloud connection - -#### Returns - -This returns a CloudConnection class. diff --git a/docs/pages/classes/Studio.md b/docs/pages/classes/Studio.md deleted file mode 100644 index 929db9c..0000000 --- a/docs/pages/classes/Studio.md +++ /dev/null @@ -1,138 +0,0 @@ -# Studio - -Gets a studio. Accessible through `ScratchSession.getStudio`. - -## Functions - -### getAPIData - -Gets the API data for the studio. - -### setTitle - -Sets the title of the studio. - -#### Parameters - -- `value` (`string`) The value to set the title to. - -#### Returns - -A `Response` object. - -### setDescription - -Sets the description of the studio. - -#### Parameters - -- `value` (`string`) The value to set the description to. - -#### Returns - -A `Response` object. - -### inviteCurator - -Invites a user to be a curator of the studio. - -#### Parameters - -- `username` (`string`) The username of the user to invite. - -#### Returns - -A `Response` object. - -### removeCurator - -Removes a user from the studio. - -#### Parameters - -- `username` (`string`) The username of the user to remove. - -#### Returns - -A `Response` object. - -### addProject - -Adds a project to the studio. - -#### Parameters - -- `project` (`number`) The ID of the project to add. - -#### Returns - -A `Response` object. - -### removeProject - -Removes a project from the studio. - -#### Parameters - -- `project` (`number`) The ID of the project to remove. - -#### Returns - -A `Response` object. - -### getCurators - -Gets the curators of the studio. - -#### Parameters - -- `limit` (`number`) The maximum number of curators to return. -- `offset` (`number`) The offset of the curators to return. - -#### Returns - -A `Promise` that resolves to an array of `User` objects (which are curators). - -### getManagers - -Gets the managers of the studio. - -#### Parameters - -- `limit` (`number`) The maximum number of managers to return. -- `offset` (`number`) The offset of the managers to return. - -### Returns - -A `Promise` that resolves to an array of `User` objects (which are managers). - -### getProjects - -Gets the projects in the studio. - -#### Parameters - -- `limit` (`number`) The maximum number of projects to return. -- `offset` (`number`) The offset of the projects to return. - -#### Returns - -A `Promise` that resolves to an array containing: - -```ts -interface OldProjectResponse { - id: number; - title: string; - image: string; - creator_id: number; - username: string; - avatar: { - "90x90": string; - "60x60": string; - "55x55": string; - "50x50": string; - "32x32": string; - }; - actor_id: number; -} -``` diff --git a/docs/pages/examples/forums/changeSignature.md b/docs/pages/examples/forums/changeSignature.md new file mode 100644 index 0000000..8c52e0f --- /dev/null +++ b/docs/pages/examples/forums/changeSignature.md @@ -0,0 +1,9 @@ +# Change Signature +This example shows how to change your forums signature with meowclient. +```ts +import { ScratchSession } from "meowclient"; +const session = new ScratchSession(); +await session.init("user", "pass"); +const forum = session.getForum(); +await forum.setSignature(`I am ${session.username}!`); +``` diff --git a/docs/pages/examples/forums/topicsAndPosts.md b/docs/pages/examples/forums/topicsAndPosts.md new file mode 100644 index 0000000..76bc703 --- /dev/null +++ b/docs/pages/examples/forums/topicsAndPosts.md @@ -0,0 +1,15 @@ +# Topics and Posts +This example shows how to get topics in a subforum. To get the subforum ID, go to the page of the subforum (for example, [https://scratch.mit.edu/discuss/31](https://scratch.mit.edu/discuss/31) for the Advanced Topics subforum) and get the numbers at the end of the URL (for the Advanced Topics it is 31). + +```ts +import { ScratchSession } from "meowclient"; +const session = new ScratchSession(); +await session.init("user", "pass"); + +const subforumID = 31; +const forum = session.getForum(subforumID); +const topics = await forum.getTopics(); +for(const topic of topics) { + console.log(``) // Has multiple properties +} +``` diff --git a/docs/pages/examples/getSessionJSON.md b/docs/pages/examples/getSessionJSON.md new file mode 100644 index 0000000..49f8170 --- /dev/null +++ b/docs/pages/examples/getSessionJSON.md @@ -0,0 +1,8 @@ +# Get Session JSON +This example shows how to get your session JSON. +```ts +import { ScratchSession } from "meowclient"; +const session = new ScratchSession(); +await session.init("user", "pass"); +console.log(session.sessionJSON); +``` diff --git a/docs/pages/index.md b/docs/pages/index.md index 2b0ba64..c9a0a4f 100644 --- a/docs/pages/index.md +++ b/docs/pages/index.md @@ -30,4 +30,6 @@ const me = session.getProfile(session.username); console.log("My status is " + (await me.getStatus())); ``` -Documentation is **work in progress** and not all things have been added yet. +If you use VS Code, you should be able to use the JSDoc documentation. If you use TypeScript you can also take full advantage of the types. + +This will soon be a collection of examples for using meowclient. If you cannot find what you want, you can go through the [source code](https://github.com/webdev03/meowclient) or you can ask for help in the [official meowclient forum topic](https://scratch.mit.edu/discuss/topic/574321). From 23939ffec1111ec09fceb6fa39c48171c2f7e9a7 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Mon, 28 Nov 2022 21:17:09 +1300 Subject: [PATCH 26/35] Add examples --- docs/pages/examples/forums/changeSignature.md | 2 ++ docs/pages/examples/forums/topicsAndPosts.md | 5 +++-- docs/pages/examples/getSessionJSON.md | 2 ++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/pages/examples/forums/changeSignature.md b/docs/pages/examples/forums/changeSignature.md index 8c52e0f..92c7f62 100644 --- a/docs/pages/examples/forums/changeSignature.md +++ b/docs/pages/examples/forums/changeSignature.md @@ -1,5 +1,7 @@ # Change Signature + This example shows how to change your forums signature with meowclient. + ```ts import { ScratchSession } from "meowclient"; const session = new ScratchSession(); diff --git a/docs/pages/examples/forums/topicsAndPosts.md b/docs/pages/examples/forums/topicsAndPosts.md index 76bc703..8ce99cf 100644 --- a/docs/pages/examples/forums/topicsAndPosts.md +++ b/docs/pages/examples/forums/topicsAndPosts.md @@ -1,4 +1,5 @@ # Topics and Posts + This example shows how to get topics in a subforum. To get the subforum ID, go to the page of the subforum (for example, [https://scratch.mit.edu/discuss/31](https://scratch.mit.edu/discuss/31) for the Advanced Topics subforum) and get the numbers at the end of the URL (for the Advanced Topics it is 31). ```ts @@ -9,7 +10,7 @@ await session.init("user", "pass"); const subforumID = 31; const forum = session.getForum(subforumID); const topics = await forum.getTopics(); -for(const topic of topics) { - console.log(``) // Has multiple properties +for (const topic of topics) { + console.log(``); // Has multiple properties } ``` diff --git a/docs/pages/examples/getSessionJSON.md b/docs/pages/examples/getSessionJSON.md index 49f8170..a4afc74 100644 --- a/docs/pages/examples/getSessionJSON.md +++ b/docs/pages/examples/getSessionJSON.md @@ -1,5 +1,7 @@ # Get Session JSON + This example shows how to get your session JSON. + ```ts import { ScratchSession } from "meowclient"; const session = new ScratchSession(); From cfe14d938023fe45ccf2b000a44fb17ae696df2b Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Tue, 29 Nov 2022 17:36:58 +1300 Subject: [PATCH 27/35] more docs --- docs/pages/examples/forums/topicsAndPosts.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/docs/pages/examples/forums/topicsAndPosts.md b/docs/pages/examples/forums/topicsAndPosts.md index 8ce99cf..5998f82 100644 --- a/docs/pages/examples/forums/topicsAndPosts.md +++ b/docs/pages/examples/forums/topicsAndPosts.md @@ -11,6 +11,23 @@ const subforumID = 31; const forum = session.getForum(subforumID); const topics = await forum.getTopics(); for (const topic of topics) { - console.log(``); // Has multiple properties + topic.title; // The title of the topic + topic.id; // The ID of the topic + topic.replyCount; // The number of replies in the topic + + await topic.follow(); // Follow the topic + await topic.unfollow(); // Unfollow the topic + + const posts = await topic.getPosts(); + for(const post of posts) { + post.id; // The ID of the post + post.content; // The content of the post + post.parsableContent; // The content of the post that can be parsed (uses node-html-parser) + post.author; // The username of the post author + post.time; // The time when the post was made + + await post.edit(`This is a post by ${post.author}!`) // Edits the post + } } ``` + From dc98c0d47cb90472ccd3bc4257088e178b509e6d Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Tue, 29 Nov 2022 17:39:15 +1300 Subject: [PATCH 28/35] Format --- docs/pages/examples/forums/topicsAndPosts.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/pages/examples/forums/topicsAndPosts.md b/docs/pages/examples/forums/topicsAndPosts.md index 5998f82..6ef8769 100644 --- a/docs/pages/examples/forums/topicsAndPosts.md +++ b/docs/pages/examples/forums/topicsAndPosts.md @@ -14,20 +14,19 @@ for (const topic of topics) { topic.title; // The title of the topic topic.id; // The ID of the topic topic.replyCount; // The number of replies in the topic - + await topic.follow(); // Follow the topic await topic.unfollow(); // Unfollow the topic const posts = await topic.getPosts(); - for(const post of posts) { + for (const post of posts) { post.id; // The ID of the post post.content; // The content of the post post.parsableContent; // The content of the post that can be parsed (uses node-html-parser) post.author; // The username of the post author post.time; // The time when the post was made - await post.edit(`This is a post by ${post.author}!`) // Edits the post + await post.edit(`This is a post by ${post.author}!`); // Edits the post } } ``` - From e201fe8796365ea4a372754578df6182664808d9 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Wed, 30 Nov 2022 16:54:21 +1300 Subject: [PATCH 29/35] Switch system --- src/ScratchSession.ts | 41 ---------------------------------- src/classes/CloudConnection.ts | 21 +++++++---------- src/classes/Profile.ts | 8 +++++-- src/classes/Project.ts | 10 ++++++--- src/classes/Studio.ts | 8 +++++-- src/classes/forums/Forum.ts | 8 +++++-- src/index.ts | 7 +++++- tests/profile.spec.ts | 4 ++-- tests/project.spec.ts | 4 ++-- tests/studio.spec.ts | 4 ++-- 10 files changed, 45 insertions(+), 70 deletions(-) diff --git a/src/ScratchSession.ts b/src/ScratchSession.ts index 3214901..9693d61 100644 --- a/src/ScratchSession.ts +++ b/src/ScratchSession.ts @@ -1,8 +1,3 @@ -// manages authentication, and is the main handler of every other function -import Profile from "./classes/Profile"; -import Project from "./classes/Project"; -import Studio from "./classes/Studio"; -import Forum from "./classes/forums/Forum"; import { SessionJSON, UserAgent } from "./Consts"; import fetch from "cross-fetch"; import { createHash } from "node:crypto"; @@ -74,42 +69,6 @@ class ScratchSession { this.sessionJSON = await sessionFetch.json(); } - /** - * Gets a profile - * @param username The username of the profile you want to get - * @returns {Profile} The profile of the user - */ - getProfile(username: string): Profile { - return new Profile({ username: username, session: this }); - } - - /** - * Gets a project - * @param id The project ID - * @returns {Project} The project - */ - getProject(id: number): Project { - return new Project({ id: id, session: this }); - } - - /** - * Gets a studio - * @param id The studio ID - * @returns {Studio} The studio - */ - getStudio(id: number): Studio { - return new Studio({ id: id, session: this }); - } - - /** - * Gets a forum - * @param id (optional) The ID of the forum you want to get (for example, 31 for the "Advanced Topics" forum) - * @returns {Forum} The forum - */ - getForum(id?: number): Forum { - return new Forum({ id: id, session: this }); - } - /** * Uploads a file to assets.scratch.mit.edu. * This can be used for adding images to be used in a forum post or signature. diff --git a/src/classes/CloudConnection.ts b/src/classes/CloudConnection.ts index 78f86fe..4e2d27b 100644 --- a/src/classes/CloudConnection.ts +++ b/src/classes/CloudConnection.ts @@ -3,9 +3,13 @@ import { WebSocket } from "ws"; import { Session } from "../Consts"; import events from "events"; - +/** + * Class for cloud connections + * @param session The ScratchSession that will be used + * @param id The id of the project to connect to + * @returns {Profile} The profile of the user +*/ class CloudConnection extends events.EventEmitter { - creator: string; id: number; session: Session; server: string; @@ -22,26 +26,17 @@ class CloudConnection extends events.EventEmitter { [name: string]: string; } = {}; disconnected: boolean = false; - constructor({ - id, - session, - server = "wss://clouddata.scratch.mit.edu" - }: { - id: number; - session: Session; - server?: string; - }) { + constructor(session: Session, id: number) { super(); this.id = id; this.session = session; - this.server = server; this.connect(); } private connect() { this.open = false; - this.connection = new WebSocket(this.server, { + this.connection = new WebSocket("wss://clouddata.scratch.mit.edu", { headers: { Cookie: this.session.cookieSet, Origin: "https://scratch.mit.edu" diff --git a/src/classes/Profile.ts b/src/classes/Profile.ts index 5a70eb5..b8955fc 100644 --- a/src/classes/Profile.ts +++ b/src/classes/Profile.ts @@ -38,11 +38,15 @@ interface ProfileComment { apiID: string; replies: ProfileCommentReply[]; } - +/** + * Class for profiles + * @param session The ScratchSession that will be used + * @param username The username of the profile you want to get +*/ class Profile { user: string; session: Session; - constructor({ username, session }: { username: string; session: Session }) { + constructor(session: Session, username: string) { this.user = username; this.session = session; } diff --git a/src/classes/Project.ts b/src/classes/Project.ts index 87abf8e..9ae9a3f 100644 --- a/src/classes/Project.ts +++ b/src/classes/Project.ts @@ -88,11 +88,15 @@ interface ProjectCommentReply { }; reply_count: number; } - +/** + * Class for projects + * @param session The ScratchSession that will be used + * @param id The id of the project you want to get +*/ class Project { id: number; session: Session; - constructor({ id, session }: { id: number; session: Session }) { + constructor(session: Session, id: number) { this.id = id; this.session = session; } @@ -312,7 +316,7 @@ class Project { * TurboWarp support may be added in the future */ createCloudConnection(): CloudConnection { - return new CloudConnection({ id: this.id, session: this.session }); + return new CloudConnection(this.session, this.id); } } diff --git a/src/classes/Studio.ts b/src/classes/Studio.ts index 74a8b13..f50e41f 100644 --- a/src/classes/Studio.ts +++ b/src/classes/Studio.ts @@ -39,11 +39,15 @@ interface StudioAPIResponse { projects: number; }; } - +/** + * Class for studios + * @param session The ScratchSession that will be used + * @param id The id of the studio you want to get +*/ class Studio { id: number; session: Session; - constructor({ id, session }: { id: number; session: Session }) { + constructor(session: Session, id: number) { this.id = id; this.session = session; } diff --git a/src/classes/forums/Forum.ts b/src/classes/forums/Forum.ts index b45eeb6..dd85264 100644 --- a/src/classes/forums/Forum.ts +++ b/src/classes/forums/Forum.ts @@ -2,11 +2,15 @@ import fetch from "cross-fetch"; import Topic from "./Topic"; import { parse } from "node-html-parser"; import { Session, UserAgent } from "../../Consts"; - +/** + * Class for profiles + * @param session The ScratchSession that will be used + * @param [id] The username of the profile you want to get +*/ class Forum { id?: number; session: Session; - constructor({ id, session }: { id?: number; session: Session }) { + constructor(session: Session, id?: number) { this.id = id; this.session = session; } diff --git a/src/index.ts b/src/index.ts index 8be205b..bb23796 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,2 +1,7 @@ import ScratchSession from "./ScratchSession"; -export { ScratchSession }; +import Profile from "./classes/Profile"; +import Studio from "./classes/Studio"; +import Project from "./classes/Project"; +import CloudConnection from "./classes/CloudConnection"; +import Forum from "./classes/forums/Forum"; +export { ScratchSession, Profile, Studio, Project, CloudConnection, Forum }; diff --git a/tests/profile.spec.ts b/tests/profile.spec.ts index d5b34ce..ec1080d 100644 --- a/tests/profile.spec.ts +++ b/tests/profile.spec.ts @@ -1,11 +1,11 @@ import tap from "tap"; -import { ScratchSession } from "../src"; +import { ScratchSession, Profile } from "../src"; const session = new ScratchSession(); // basic variables const username = "-Akroation-"; -const user = session.getProfile(username); +const user = new Profile(session, username); tap.test("make sure status is string", async (t) => { t.type(await user.getStatus(), "string"); diff --git a/tests/project.spec.ts b/tests/project.spec.ts index 7db6bf6..1fe4f68 100644 --- a/tests/project.spec.ts +++ b/tests/project.spec.ts @@ -1,11 +1,11 @@ import tap from "tap"; -import { ScratchSession } from "../src"; +import { ScratchSession, Project } from "../src"; const session = new ScratchSession(); // basic variables const projectID = 601968190; -const project = session.getProject(projectID); +const project = new Project(session, projectID); const apiData = await project.getAPIData(); const comments = await project.getComments(); diff --git a/tests/studio.spec.ts b/tests/studio.spec.ts index 72260cb..3ec3cbf 100644 --- a/tests/studio.spec.ts +++ b/tests/studio.spec.ts @@ -1,10 +1,10 @@ import tap from "tap"; -import { ScratchSession } from "../src"; +import { ScratchSession, Studio } from "../src"; const session = new ScratchSession(); // get studio -const studio = session.getStudio(30136012); +const studio = new Studio(session, 30136012); const apiData = await studio.getAPIData(); // main tests tap.test("make sure api data has correct types", (t) => { From b0a97db81a620a47255e375cadca9eb509b37a65 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Wed, 30 Nov 2022 16:57:39 +1300 Subject: [PATCH 30/35] Switch to export statements --- src/index.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/index.ts b/src/index.ts index bb23796..c036d5c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,6 @@ -import ScratchSession from "./ScratchSession"; -import Profile from "./classes/Profile"; -import Studio from "./classes/Studio"; -import Project from "./classes/Project"; -import CloudConnection from "./classes/CloudConnection"; -import Forum from "./classes/forums/Forum"; -export { ScratchSession, Profile, Studio, Project, CloudConnection, Forum }; +export { default as ScratchSession } from "./ScratchSession"; +export { default as Profile } from "./classes/Profile"; +export { default as Studio } from "./classes/Studio"; +export { default as Project } from "./classes/Project"; +export { default as CloudConnection } from "./classes/CloudConnection"; +export { default as Forum } from "./classes/forums/Forum"; From 8332f405908f44ca31330d193a66e5fad9b35676 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Wed, 30 Nov 2022 16:59:59 +1300 Subject: [PATCH 31/35] Fix project type --- src/classes/Project.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/classes/Project.ts b/src/classes/Project.ts index 9ae9a3f..8d447ea 100644 --- a/src/classes/Project.ts +++ b/src/classes/Project.ts @@ -19,7 +19,7 @@ interface ProjectAPIResponse { joined: string; }; profile: { - id: null | number; // unsure about this one + id: number; images: { "90x90": string; "60x60": string; From 030da4f2c9946ca325968655f942ff39bae9e99f Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Wed, 30 Nov 2022 17:04:50 +1300 Subject: [PATCH 32/35] Add dots --- src/ScratchSession.ts | 16 +++++------ src/classes/CloudConnection.ts | 23 +++++++-------- src/classes/Profile.ts | 20 ++++++------- src/classes/Project.ts | 51 ++++++++++++++-------------------- src/classes/Studio.ts | 36 ++++++++++++------------ src/classes/forums/Forum.ts | 24 ++++------------ src/classes/forums/Topic.ts | 8 +++--- 7 files changed, 78 insertions(+), 100 deletions(-) diff --git a/src/ScratchSession.ts b/src/ScratchSession.ts index 9693d61..79b37eb 100644 --- a/src/ScratchSession.ts +++ b/src/ScratchSession.ts @@ -2,7 +2,7 @@ import { SessionJSON, UserAgent } from "./Consts"; import fetch from "cross-fetch"; import { createHash } from "node:crypto"; /** - * Logs into Scratch + * Manages a Scratch session. */ class ScratchSession { username: string; @@ -12,9 +12,9 @@ class ScratchSession { sessionJSON: SessionJSON; /** - * Sets up the ScratchSession to use authenticated functions - * @param user The username of the user you want to log in to - * @param pass The password of the user you want to log in to + * Sets up the ScratchSession to use authenticated functions. + * @param user The username of the user you want to log in to. + * @param pass The password of the user you want to log in to. */ async init(user: string, pass: string) { this.username = user; @@ -72,9 +72,9 @@ class ScratchSession { /** * Uploads a file to assets.scratch.mit.edu. * This can be used for adding images to be used in a forum post or signature. - * @param buffer The buffer of the file you want to upload - * @param fileExtension The extension of the file you have uploaded, for example "png" - * @returns The URL to access the file you have uploaded + * @param buffer The buffer of the file you want to upload. + * @param fileExtension The extension of the file you want to upload, for example "png". + * @returns The URL to access the file you have uploaded. * @example * await session.uploadToAssets(fs.readFileSync("photo.png"), "png"); // returns URL to image */ @@ -104,7 +104,7 @@ class ScratchSession { } /** - * Logs out of Scratch + * Logs out of Scratch. */ async logout() { if (!this.csrfToken || !this.token) return; diff --git a/src/classes/CloudConnection.ts b/src/classes/CloudConnection.ts index 4e2d27b..bf5f503 100644 --- a/src/classes/CloudConnection.ts +++ b/src/classes/CloudConnection.ts @@ -3,11 +3,12 @@ import { WebSocket } from "ws"; import { Session } from "../Consts"; import events from "events"; + /** - * Class for cloud connections - * @param session The ScratchSession that will be used - * @param id The id of the project to connect to - * @returns {Profile} The profile of the user + * Class for cloud connections. + * @param session The ScratchSession that will be used. + * @param id The id of the project to connect to. + * @returns {Profile} The profile of the user. */ class CloudConnection extends events.EventEmitter { id: number; @@ -78,7 +79,7 @@ class CloudConnection extends events.EventEmitter { } /** - * Sends a packet through cloud + * Sends a packet through cloud. */ private send(data) { this.emit("internal-send", data); @@ -86,9 +87,9 @@ class CloudConnection extends events.EventEmitter { } /** - * Sets a cloud variable - * @param variable The variable name to set - * @param value The value to set the variable to + * Sets a cloud variable. + * @param variable The variable name to set. + * @param value The value to set the variable to. */ setVariable(variable: string, value: number | string) { const varname = variable.startsWith("☁ ") @@ -115,8 +116,8 @@ class CloudConnection extends events.EventEmitter { } /** - * Gets a cloud variable - * @param variable The variable name to get + * Gets a cloud variable. + * @param variable The variable name to get. * @returns {string} The value of the variable in string format. */ getVariable(variable: string): string { @@ -127,7 +128,7 @@ class CloudConnection extends events.EventEmitter { } /** - * Closes the cloud connection + * Closes the cloud connection. */ close() { this.emit("close", null); diff --git a/src/classes/Profile.ts b/src/classes/Profile.ts index b8955fc..3ce7d0d 100644 --- a/src/classes/Profile.ts +++ b/src/classes/Profile.ts @@ -39,9 +39,9 @@ interface ProfileComment { replies: ProfileCommentReply[]; } /** - * Class for profiles - * @param session The ScratchSession that will be used - * @param username The username of the profile you want to get + * Class for profiles. + * @param session The ScratchSession that will be used. + * @param username The username of the profile you want to get. */ class Profile { user: string; @@ -52,7 +52,7 @@ class Profile { } /** - * Gets the status of the user + * Gets the status of the user. * Can either be Scratcher, New Scratcher, or Scratch Team. * @returns {string} The status of the user. */ @@ -65,8 +65,8 @@ class Profile { } /** - * Deletes a comment - * @param id The comment ID, for example 12345, *not* comment-12345 + * Deletes a comment. + * @param id The comment ID, for example 12345, *not* comment-12345. */ async deleteComment(id: string | number) { const delFetch = await fetch( @@ -104,8 +104,8 @@ class Profile { } /** - * Gets the API response of the user in the Profile - * @returns The API response of the user + * Gets the API response of the user in the Profile. + * @returns The API response of the user. */ async getUserAPI() { const scratchUserFetch = await fetch( @@ -118,10 +118,10 @@ class Profile { } /** - * Gets comments on the user's profile + * Gets comments on the user's profile. * @param page The page to look at. * @returns An array of comments. - * apiID is used to input into deleteComment + * apiID is used to input into deleteComment. */ async getComments(page: number = 1) { const commentFetch = await fetch( diff --git a/src/classes/Project.ts b/src/classes/Project.ts index 8d447ea..359f2ae 100644 --- a/src/classes/Project.ts +++ b/src/classes/Project.ts @@ -89,9 +89,9 @@ interface ProjectCommentReply { reply_count: number; } /** - * Class for projects - * @param session The ScratchSession that will be used - * @param id The id of the project you want to get + * Class for projects. + * @param session The ScratchSession that will be used. + * @param id The id of the project you want to get. */ class Project { id: number; @@ -102,7 +102,7 @@ class Project { } /** - * Gets the api.scratch.mit.edu response of the project + * Gets the api.scratch.mit.edu response of the project. */ async getAPIData() { const apiFetch = await fetch( @@ -120,10 +120,10 @@ class Project { } /** - * Gets comments in the project - * @param offset The offset of comments - * @param limit The limit of comments to return - * @returns The API response + * Gets comments in the project. + * @param offset The offset of comments. + * @param limit The limit of comments to return. + * @returns The comments. */ async getComments(offset = 0, limit = 20) { const apiData = await this.getAPIData(); @@ -144,11 +144,11 @@ class Project { } /** - * Gets the replies to a comment - * @param offset The offset of comments - * @param limit The limit of comments to return - * @param id The id of the comment to get - * @returns The comment replies + * Gets the replies to a comment. + * @param offset The offset of comments. + * @param limit The limit of comments to return. + * @param id The id of the comment to get. + * @returns The comment replies. */ async getCommentReplies(id: number | string, offset = 0, limit = 20) { const apiData = await this.getAPIData(); @@ -169,8 +169,8 @@ class Project { } /** - * Sets the title of the project (requires ownership of the project) - * @param value The value you want to set the title to + * Sets the title of the project (requires ownership of the project). + * @param value The value you want to set the title to. */ async setTitle(value: string) { const setFetch = await fetch( @@ -196,8 +196,8 @@ class Project { } } /** - * Sets the instructions of the project (requires ownership of the project) - * @param value The value you want to set the instructions to + * Sets the instructions of the project (requires ownership of the project). + * @param value The value you want to set the instructions to. */ async setInstructions(value: string) { const setFetch = await fetch( @@ -224,8 +224,8 @@ class Project { } /** - * Sets the Notes and Credits of the project (requires ownership of the project) - * @param value The value you want to set the Notes and Credits to + * Sets the Notes and Credits of the project (requires ownership of the project). + * @param value The value you want to set the Notes and Credits to. */ async setNotesAndCredits(value: string) { const setFetch = await fetch( @@ -252,7 +252,7 @@ class Project { } /** - * Unshares the project (requires ownership of the project) + * Unshares the project (requires ownership of the project). */ async unshare() { const setFetch = await fetch( @@ -280,7 +280,7 @@ class Project { } /** - * Shares the project (requires ownership of the project) + * Shares the project (requires ownership of the project). */ async share() { const setFetch = await fetch( @@ -309,15 +309,6 @@ class Project { throw new Error(`Error in sharing. ${setFetch.status}`); } } - - /** - * Creates a cloud connection with the project - * @returns {CloudConnection} The cloud connection for the project - * TurboWarp support may be added in the future - */ - createCloudConnection(): CloudConnection { - return new CloudConnection(this.session, this.id); - } } export default Project; diff --git a/src/classes/Studio.ts b/src/classes/Studio.ts index f50e41f..f4b6471 100644 --- a/src/classes/Studio.ts +++ b/src/classes/Studio.ts @@ -40,9 +40,9 @@ interface StudioAPIResponse { }; } /** - * Class for studios - * @param session The ScratchSession that will be used - * @param id The id of the studio you want to get + * Class for studios. + * @param session The ScratchSession that will be used. + * @param id The id of the studio you want to get. */ class Studio { id: number; @@ -66,7 +66,7 @@ class Studio { /** * Sets the title of the studio. - * @param value The value to set the title to + * @param value The value to set the title to. */ async setTitle(value: string) { const setFetch = await fetch( @@ -90,7 +90,7 @@ class Studio { /** * Sets the description of the studio. - * @param value The value to set the description to + * @param value The value to set the description to. */ async setDescription(value: string) { const setFetch = await fetch( @@ -114,7 +114,7 @@ class Studio { /** * Invites a curator to the studio. - * @param username The username of the user to add + * @param username The username of the user to add. */ async inviteCurator(username: string) { const inviteFetch = await fetch( @@ -135,7 +135,7 @@ class Studio { /** * Removes a curator from the studio. - * @param username The username of the user to remove + * @param username The username of the user to remove. */ async removeCurator(username: string) { const removeFetch = await fetch( @@ -156,7 +156,7 @@ class Studio { /** * Adds a project to the studio. - * @param project The project ID to add to the studio + * @param project The project ID to add to the studio. */ async addProject(project: number) { const addFetch = await fetch( @@ -176,7 +176,7 @@ class Studio { /** * Removes a project from the studio. - * @param project The project ID to remove from the studio + * @param project The project ID to remove from the studio. */ async removeProject(project: number) { const removeFetch = await fetch( @@ -196,9 +196,9 @@ class Studio { /** * Gets the curators in a studio. - * @param limit The limit of curators to return - * @param offset The offset of the curators to return - * @returns An array of curators + * @param limit The limit of curators to return. + * @param offset The offset of the curators to return. + * @returns An array of curators. */ async getCurators(limit: number = 24, offset: number = 0) { const getFetch = await fetch( @@ -217,9 +217,9 @@ class Studio { /** * Gets the managers in a studio. - * @param limit The limit of managers to return - * @param offset The offset of the managers to return - * @returns An array of managers + * @param limit The limit of managers to return. + * @param offset The offset of the managers to return. + * @returns An array of managers. */ async getManagers(limit: number = 24, offset: number = 0) { const getFetch = await fetch( @@ -238,9 +238,9 @@ class Studio { /** * Gets the projects in a studio. - * @param limit The limit of projects to return - * @param offset The offset of the projects to return - * @returns An array of users + * @param limit The limit of projects to return. + * @param offset The offset of the projects to return. + * @returns An array of users. */ async getProjects(limit: number = 24, offset: number = 0) { const getFetch = await fetch( diff --git a/src/classes/forums/Forum.ts b/src/classes/forums/Forum.ts index dd85264..f384a30 100644 --- a/src/classes/forums/Forum.ts +++ b/src/classes/forums/Forum.ts @@ -3,9 +3,9 @@ import Topic from "./Topic"; import { parse } from "node-html-parser"; import { Session, UserAgent } from "../../Consts"; /** - * Class for profiles - * @param session The ScratchSession that will be used - * @param [id] The username of the profile you want to get + * Class for profiles. + * @param session The ScratchSession that will be used. + * @param [id] The ID of the forum you want to get. */ class Forum { id?: number; @@ -16,8 +16,8 @@ class Forum { } /** - * Gets a list of topics - * @returns An array of topics + * Gets a list of topics. + * @returns An array of topics. */ async getTopics() { let topics: Topic[] = []; @@ -59,20 +59,6 @@ class Forum { return topics; } - /** - * Gets a topic - * - * Note: Topic.sticky, Topic.title, and Topic.replyCount give undefined when using this! - * @param id The ID of the topic - * @returns {Topic} The topic - */ - getTopic(id: number): Topic { - return new Topic({ - id: id, - session: this.session - }); - } - /** * Sets the currently logged in user's signature * @param content The content to set the signature to diff --git a/src/classes/forums/Topic.ts b/src/classes/forums/Topic.ts index 1ff7abd..2ab4128 100644 --- a/src/classes/forums/Topic.ts +++ b/src/classes/forums/Topic.ts @@ -30,8 +30,8 @@ class Topic { } /** - * Gets the posts in the topic - * @returns An array of posts in the topic + * Gets the posts in the topic. + * @returns An array of posts in the topic. */ async getPosts() { let posts = []; @@ -77,7 +77,7 @@ class Topic { } /** - * Follows the topic + * Follows the topic. */ async follow() { const followFetch = await fetch( @@ -106,7 +106,7 @@ class Topic { } /** - * Unfollows the topic + * Unfollows the topic. */ async unfollow() { const unfollowFetch = await fetch( From d3f849e211e9a74bf8553c3fd949891df8838497 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Wed, 30 Nov 2022 17:57:06 +1300 Subject: [PATCH 33/35] docs --- README.md | 6 +++--- docs/pages/index.md | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f6a4b21..89ff802 100644 --- a/README.md +++ b/README.md @@ -17,10 +17,10 @@ If you run this install command you will get the latest version of meowclient in ## Example (async) ```javascript -import { ScratchSession } from "meowclient"; +import { ScratchSession, Profile } from "meowclient"; const session = new ScratchSession(); await session.init("user", "pass"); -const me = session.getProfile(session.username); +const me = new Profile(session, session.username); console.log("My status is " + (await me.getStatus())); ``` @@ -32,7 +32,7 @@ Some features are available without logging in if you don't run the `session.ini const { ScratchSession } = require("meowclient"); const session = new ScratchSession(); await session.init("user", "pass"); -const me = session.getProfile(session.username); +const me = new Profile(session, session.username); // User.getStatus gets the status of the user, either "New Scratcher", "Scratcher" or "Scratch Team" console.log("My status is " + (await me.getStatus())); ``` diff --git a/docs/pages/index.md b/docs/pages/index.md index c9a0a4f..8f60523 100644 --- a/docs/pages/index.md +++ b/docs/pages/index.md @@ -23,10 +23,10 @@ const { ScratchSession } = require("meowclient"); A basic starter program: ```js -import { ScratchSession } from "meowclient"; +import { ScratchSession, Profile } from "meowclient"; const session = new ScratchSession(); await session.init("user", "pass"); // change these to your scratch login credentials -const me = session.getProfile(session.username); +const me = new Profile(session, session.username); console.log("My status is " + (await me.getStatus())); ``` From 5c4d9d567a15d77f96ff5cd728fb9bd87bece52e Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Wed, 30 Nov 2022 19:37:02 +1300 Subject: [PATCH 34/35] Disable side effects --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 960ce8d..22d1150 100644 --- a/package.json +++ b/package.json @@ -44,5 +44,6 @@ "engines": { "node": ">13" }, - "engineStrict": true + "engineStrict": true, + "sideEffects": false } From d10e2ae1ed7305e602f04b81678dca0cf0b4c537 Mon Sep 17 00:00:00 2001 From: webdev03 <75148774+webdev03@users.noreply.github.com> Date: Wed, 30 Nov 2022 19:37:14 +1300 Subject: [PATCH 35/35] Format --- src/classes/CloudConnection.ts | 10 +++++----- src/classes/Profile.ts | 8 ++++---- src/classes/Project.ts | 8 ++++---- src/classes/Studio.ts | 8 ++++---- src/classes/forums/Forum.ts | 8 ++++---- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/classes/CloudConnection.ts b/src/classes/CloudConnection.ts index bf5f503..ea48764 100644 --- a/src/classes/CloudConnection.ts +++ b/src/classes/CloudConnection.ts @@ -5,11 +5,11 @@ import { Session } from "../Consts"; import events from "events"; /** - * Class for cloud connections. - * @param session The ScratchSession that will be used. - * @param id The id of the project to connect to. - * @returns {Profile} The profile of the user. -*/ + * Class for cloud connections. + * @param session The ScratchSession that will be used. + * @param id The id of the project to connect to. + * @returns {Profile} The profile of the user. + */ class CloudConnection extends events.EventEmitter { id: number; session: Session; diff --git a/src/classes/Profile.ts b/src/classes/Profile.ts index 3ce7d0d..9de6f4a 100644 --- a/src/classes/Profile.ts +++ b/src/classes/Profile.ts @@ -39,10 +39,10 @@ interface ProfileComment { replies: ProfileCommentReply[]; } /** - * Class for profiles. - * @param session The ScratchSession that will be used. - * @param username The username of the profile you want to get. -*/ + * Class for profiles. + * @param session The ScratchSession that will be used. + * @param username The username of the profile you want to get. + */ class Profile { user: string; session: Session; diff --git a/src/classes/Project.ts b/src/classes/Project.ts index 359f2ae..e1320a7 100644 --- a/src/classes/Project.ts +++ b/src/classes/Project.ts @@ -89,10 +89,10 @@ interface ProjectCommentReply { reply_count: number; } /** - * Class for projects. - * @param session The ScratchSession that will be used. - * @param id The id of the project you want to get. -*/ + * Class for projects. + * @param session The ScratchSession that will be used. + * @param id The id of the project you want to get. + */ class Project { id: number; session: Session; diff --git a/src/classes/Studio.ts b/src/classes/Studio.ts index f4b6471..975cbf3 100644 --- a/src/classes/Studio.ts +++ b/src/classes/Studio.ts @@ -40,10 +40,10 @@ interface StudioAPIResponse { }; } /** - * Class for studios. - * @param session The ScratchSession that will be used. - * @param id The id of the studio you want to get. -*/ + * Class for studios. + * @param session The ScratchSession that will be used. + * @param id The id of the studio you want to get. + */ class Studio { id: number; session: Session; diff --git a/src/classes/forums/Forum.ts b/src/classes/forums/Forum.ts index f384a30..df71300 100644 --- a/src/classes/forums/Forum.ts +++ b/src/classes/forums/Forum.ts @@ -3,10 +3,10 @@ import Topic from "./Topic"; import { parse } from "node-html-parser"; import { Session, UserAgent } from "../../Consts"; /** - * Class for profiles. - * @param session The ScratchSession that will be used. - * @param [id] The ID of the forum you want to get. -*/ + * Class for profiles. + * @param session The ScratchSession that will be used. + * @param [id] The ID of the forum you want to get. + */ class Forum { id?: number; session: Session;