From 3d0e7aa957b0dab231c20f459671062d9a70f1e6 Mon Sep 17 00:00:00 2001
From: James Cook
Date: Wed, 14 Jun 2023 09:40:40 +0100
Subject: [PATCH 01/36] chore: declare no sideeffects
---
.changeset/thirty-baboons-clean.md | 5 +++++
package.json | 3 ++-
2 files changed, 7 insertions(+), 1 deletion(-)
create mode 100644 .changeset/thirty-baboons-clean.md
diff --git a/.changeset/thirty-baboons-clean.md b/.changeset/thirty-baboons-clean.md
new file mode 100644
index 0000000..e16dc76
--- /dev/null
+++ b/.changeset/thirty-baboons-clean.md
@@ -0,0 +1,5 @@
+---
+"classcharts-api": patch
+---
+
+Declare no side effects
diff --git a/package.json b/package.json
index f956301..ee6b589 100644
--- a/package.json
+++ b/package.json
@@ -60,5 +60,6 @@
],
"engines": {
"node": ">=18"
- }
+ },
+ "sideEffects": false
}
From f2981dd167e6afb1d264a774ce03d67c1a9afb79 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed, 14 Jun 2023 09:42:51 +0100
Subject: [PATCH 02/36] chore: Version Packages (#31)
Co-authored-by: github-actions[bot]
---
.changeset/red-lobsters-destroy.md | 5 -----
.changeset/thirty-baboons-clean.md | 5 -----
CHANGELOG.md | 7 +++++++
package.json | 2 +-
4 files changed, 8 insertions(+), 11 deletions(-)
delete mode 100644 .changeset/red-lobsters-destroy.md
delete mode 100644 .changeset/thirty-baboons-clean.md
diff --git a/.changeset/red-lobsters-destroy.md b/.changeset/red-lobsters-destroy.md
deleted file mode 100644
index 9bf5e97..0000000
--- a/.changeset/red-lobsters-destroy.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"classcharts-api": patch
----
-
-Export types first
diff --git a/.changeset/thirty-baboons-clean.md b/.changeset/thirty-baboons-clean.md
deleted file mode 100644
index e16dc76..0000000
--- a/.changeset/thirty-baboons-clean.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"classcharts-api": patch
----
-
-Declare no side effects
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1d7abb6..38714e2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,12 @@
# classcharts-api
+## 2.3.1
+
+### Patch Changes
+
+- 40b1683: Export types first
+- 3d0e7aa: Declare no side effects
+
## 2.3.0
### Minor Changes
diff --git a/package.json b/package.json
index ee6b589..cf7d8d3 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "classcharts-api",
"type": "module",
- "version": "2.3.0",
+ "version": "2.3.1",
"license": "ISC",
"author": {
"name": "James Cook",
From f86ded2ae35abebc380961e54079d77922b9e2af Mon Sep 17 00:00:00 2001
From: James Cook
Date: Wed, 30 Aug 2023 12:28:49 +0100
Subject: [PATCH 03/36] feat: denoify (#33)
---
.changeset/README.md | 8 -
.changeset/config.json | 11 -
.eslintignore | 5 -
.eslintrc.cjs | 10 -
.github/workflows/docs.yml | 43 -
.github/workflows/release.yml | 40 +-
.gitignore | 124 +-
.prettierignore | 6 -
.prettierrc.json | 1 -
.vscode/extensions.json | 3 -
.vscode/settings.json | 4 +
CHANGELOG.md | 38 -
deno.jsonc | 6 +
deno.lock | 121 +
docs/README.md | 29 +-
jest.config.cjs | 199 --
src/index.ts => mod.ts | 16 +-
package.json | 65 -
pnpm-lock.yaml | 4274 --------------------------------
readme.md | 15 +-
scripts/build_npm.ts | 49 +
src/core/baseClient.ts | 16 +-
src/core/parentClient.ts | 18 +-
src/core/studentClient.ts | 16 +-
src/core/studentClient_test.ts | 25 +
src/types.ts | 13 +-
src/utils/utils.ts | 3 +-
src/utils/utils_test.ts | 41 +
tests/baseClient.test.ts | 46 -
tests/config.example.json | 4 -
tsconfig.json | 22 -
31 files changed, 331 insertions(+), 4940 deletions(-)
delete mode 100644 .changeset/README.md
delete mode 100644 .changeset/config.json
delete mode 100644 .eslintignore
delete mode 100644 .eslintrc.cjs
delete mode 100644 .github/workflows/docs.yml
delete mode 100644 .prettierignore
delete mode 100644 .prettierrc.json
delete mode 100644 .vscode/extensions.json
create mode 100644 .vscode/settings.json
delete mode 100644 CHANGELOG.md
create mode 100644 deno.jsonc
create mode 100644 deno.lock
delete mode 100644 jest.config.cjs
rename src/index.ts => mod.ts (56%)
delete mode 100644 package.json
delete mode 100644 pnpm-lock.yaml
create mode 100644 scripts/build_npm.ts
create mode 100644 src/core/studentClient_test.ts
create mode 100644 src/utils/utils_test.ts
delete mode 100644 tests/baseClient.test.ts
delete mode 100644 tests/config.example.json
delete mode 100644 tsconfig.json
diff --git a/.changeset/README.md b/.changeset/README.md
deleted file mode 100644
index e5b6d8d..0000000
--- a/.changeset/README.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# Changesets
-
-Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
-with multi-package repos, or single-package repos to help you version and publish your code. You can
-find the full documentation for it [in our repository](https://github.com/changesets/changesets)
-
-We have a quick list of common questions to get you started engaging with this project in
-[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
diff --git a/.changeset/config.json b/.changeset/config.json
deleted file mode 100644
index cee6df8..0000000
--- a/.changeset/config.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "$schema": "https://unpkg.com/@changesets/config@2.3.0/schema.json",
- "changelog": "@changesets/cli/changelog",
- "commit": false,
- "fixed": [],
- "linked": [],
- "access": "public",
- "baseBranch": "main",
- "updateInternalDependencies": "patch",
- "ignore": []
-}
diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index 2e37f93..0000000
--- a/.eslintignore
+++ /dev/null
@@ -1,5 +0,0 @@
-dist/
-docs/
-node_modules/
-.eslintrc.cjs
-tsconfig.json
\ No newline at end of file
diff --git a/.eslintrc.cjs b/.eslintrc.cjs
deleted file mode 100644
index 51bade8..0000000
--- a/.eslintrc.cjs
+++ /dev/null
@@ -1,10 +0,0 @@
-module.exports = {
- root: true,
- parser: "@typescript-eslint/parser",
- plugins: ["@typescript-eslint"],
- extends: [
- "eslint:recommended",
- "plugin:@typescript-eslint/recommended",
- "prettier",
- ],
-};
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
deleted file mode 100644
index dc0f84e..0000000
--- a/.github/workflows/docs.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-name: Docs
-
-on:
- push:
- branches:
- - main
-
-jobs:
- build-docs:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout the repository
- uses: actions/checkout@v3
-
- - name: Setup Node.js
- uses: actions/setup-node@v3
- with:
- node-version: 18
- - uses: pnpm/action-setup@v2
- with:
- version: 8.2.0
- - name: Retrieve the cache
- uses: actions/cache@v3
- id: node-cache
- with:
- path: node_modules
- key: node-modules-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
-
- - name: Install dependencies
- if: steps.node-cache.outputs.cache-hit != 'true'
- run: pnpm install
-
- - name: Build
- run: pnpm run build
-
- - name: Generate typedoc
- run: pnpm generateDocs
-
- - name: Deploy 🚀
- uses: JamesIves/github-pages-deploy-action@v4
- with:
- branch: gh-pages
- folder: docs
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 32c36b6..c52e8b8 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -2,9 +2,8 @@ name: Release
on:
push:
- branches:
- - main
-
+ tags:
+ - "*"
concurrency: ${{ github.workflow }}-${{ github.ref }}
jobs:
@@ -14,26 +13,21 @@ jobs:
steps:
- name: Checkout Repo
uses: actions/checkout@v3
-
- - name: Setup Node.js 18.x
- uses: actions/setup-node@v3
+ - uses: denoland/setup-deno@v1
with:
- node-version: 18.x
-
- - name: Install Dependencies
- run: npm install -g pnpm && pnpm install
-
- - name: Create Release Pull Request or Publish to npm
- id: changesets
- uses: changesets/action@v1
+ deno-version: v1.36.x
+ - name: Get tag version
+ if: startsWith(github.ref, 'refs/tags/')
+ id: get_tag_version
+ run: echo TAG_VERSION=${GITHUB_REF/refs\/tags\//} >> $GITHUB_OUTPUT
+ - uses: actions/setup-node@v3
with:
- # This expects you to have a script called release which does a build for your packages and calls changeset publish
- publish: pnpm release
+ node-version: "18.x"
+ registry-url: "https://registry.npmjs.org"
+ - name: npm build
+ run: deno run -A npm ${{steps.get_tag_version.outputs.TAG_VERSION}}
+ - name: npm publish
+ if: startsWith(github.ref, 'refs/tags/')
env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
-
- # - name: Send a Slack notification if a publish happens
- # if: steps.changesets.outputs.published == 'true'
- # # You can do something when a publish happens.
- # run: my-slack-bot send-notification --message "A new version of ${GITHUB_REPOSITORY} was published!"
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
+ run: cd npm && npm publish
diff --git a/.gitignore b/.gitignore
index 2b61141..4e34073 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,122 +1,2 @@
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-lerna-debug.log*
-.pnpm-debug.log*
-
-# Diagnostic reports (https://nodejs.org/api/report.html)
-report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
-
-# Runtime data
-pids
-*.pid
-*.seed
-*.pid.lock
-
-# Directory for instrumented libs generated by jscoverage/JSCover
-lib-cov
-
-# Coverage directory used by tools like istanbul
-coverage
-*.lcov
-
-# nyc test coverage
-.nyc_output
-
-# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
-.grunt
-
-# Bower dependency directory (https://bower.io/)
-bower_components
-
-# node-waf configuration
-.lock-wscript
-
-# Compiled binary addons (https://nodejs.org/api/addons.html)
-build/Release
-
-# Dependency directories
-node_modules/
-jspm_packages/
-
-# Snowpack dependency directory (https://snowpack.dev/)
-web_modules/
-
-# TypeScript cache
-*.tsbuildinfo
-
-# Optional npm cache directory
-.npm
-
-# Optional eslint cache
-.eslintcache
-
-# Microbundle cache
-.rpt2_cache/
-.rts2_cache_cjs/
-.rts2_cache_es/
-.rts2_cache_umd/
-
-# Optional REPL history
-.node_repl_history
-
-# Output of 'npm pack'
-*.tgz
-
-# Yarn Integrity file
-.yarn-integrity
-
-# dotenv environment variables file
-.env
-.env.test
-.env.production
-
-# parcel-bundler cache (https://parceljs.org/)
-.cache
-.parcel-cache
-
-# Next.js build output
-.next
-out
-
-# Nuxt.js build / generate output
-.nuxt
-dist
-
-# Gatsby files
-.cache/
-# Comment in the public line in if your project uses Gatsby and not Next.js
-# https://nextjs.org/blog/next-9-1#public-directory-support
-# public
-
-# vuepress build output
-.vuepress/dist
-
-# Serverless directories
-.serverless/
-
-# FuseBox cache
-.fusebox/
-
-# DynamoDB Local files
-.dynamodb/
-
-# TernJS port file
-.tern-port
-
-# Stores VSCode versions used for testing VSCode extensions
-.vscode-test
-
-# yarn v2
-.yarn/cache
-.yarn/unplugged
-.yarn/build-state.yml
-.yarn/install-state.gz
-.pnp.*
-
-tests/config.json
-
-docs/typedoc
\ No newline at end of file
+npm/
+.cov/
\ No newline at end of file
diff --git a/.prettierignore b/.prettierignore
deleted file mode 100644
index 16ac6bc..0000000
--- a/.prettierignore
+++ /dev/null
@@ -1,6 +0,0 @@
-dist/
-node_modules/
-pnpm-lock.yaml
-.prettierrc.json
-.eslint.js
-CHANGELOG.md
\ No newline at end of file
diff --git a/.prettierrc.json b/.prettierrc.json
deleted file mode 100644
index 0967ef4..0000000
--- a/.prettierrc.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
deleted file mode 100644
index 1d7ac85..0000000
--- a/.vscode/extensions.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "recommendations": ["dbaeumer.vscode-eslint", "esbenp.prettier-vscode"]
-}
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..e1533c2
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,4 @@
+{
+ "deno.enable": true,
+ "deno.lint": true
+}
diff --git a/CHANGELOG.md b/CHANGELOG.md
deleted file mode 100644
index 38714e2..0000000
--- a/CHANGELOG.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# classcharts-api
-
-## 2.3.1
-
-### Patch Changes
-
-- 40b1683: Export types first
-- 3d0e7aa: Declare no side effects
-
-## 2.3.0
-
-### Minor Changes
-
-- 6552c28: Migrate to native fetch
-
-## 2.2.0
-
-### Minor Changes
-
-- a3e078b: Throw more description JSON parsing errors
-
-### Patch Changes
-
-- 350878c: Fixed internal typing typo
-- 451f800: Specify the required node version
-
-## 2.1.3
-
-### Patch Changes
-
-- 9452422: Require getLesson options argument
-- 9452422: Tidy up code
-
-## 2.1.2
-
-### Patch Changes
-
-- 0d555e8: Improve documentation
diff --git a/deno.jsonc b/deno.jsonc
new file mode 100644
index 0000000..175e392
--- /dev/null
+++ b/deno.jsonc
@@ -0,0 +1,6 @@
+{
+ "tasks": {
+ "npm": "deno run -A scripts/build_npm.ts"
+ },
+ "exclude": ["npm"]
+}
diff --git a/deno.lock b/deno.lock
new file mode 100644
index 0000000..f44f1e6
--- /dev/null
+++ b/deno.lock
@@ -0,0 +1,121 @@
+{
+ "version": "2",
+ "remote": {
+ "https://deno.land/std@0.140.0/_util/assert.ts": "e94f2eb37cebd7f199952e242c77654e43333c1ac4c5c700e929ea3aa5489f74",
+ "https://deno.land/std@0.140.0/_util/os.ts": "3b4c6e27febd119d36a416d7a97bd3b0251b77c88942c8f16ee5953ea13e2e49",
+ "https://deno.land/std@0.140.0/bytes/bytes_list.ts": "67eb118e0b7891d2f389dad4add35856f4ad5faab46318ff99653456c23b025d",
+ "https://deno.land/std@0.140.0/bytes/equals.ts": "fc16dff2090cced02497f16483de123dfa91e591029f985029193dfaa9d894c9",
+ "https://deno.land/std@0.140.0/bytes/mod.ts": "763f97d33051cc3f28af1a688dfe2830841192a9fea0cbaa55f927b49d49d0bf",
+ "https://deno.land/std@0.140.0/fmt/colors.ts": "30455035d6d728394781c10755351742dd731e3db6771b1843f9b9e490104d37",
+ "https://deno.land/std@0.140.0/fs/_util.ts": "0fb24eb4bfebc2c194fb1afdb42b9c3dda12e368f43e8f2321f84fc77d42cb0f",
+ "https://deno.land/std@0.140.0/fs/ensure_dir.ts": "9dc109c27df4098b9fc12d949612ae5c9c7169507660dcf9ad90631833209d9d",
+ "https://deno.land/std@0.140.0/io/buffer.ts": "bd0c4bf53db4b4be916ca5963e454bddfd3fcd45039041ea161dbf826817822b",
+ "https://deno.land/std@0.140.0/path/_constants.ts": "df1db3ffa6dd6d1252cc9617e5d72165cd2483df90e93833e13580687b6083c3",
+ "https://deno.land/std@0.140.0/path/_interface.ts": "ee3b431a336b80cf445441109d089b70d87d5e248f4f90ff906820889ecf8d09",
+ "https://deno.land/std@0.140.0/path/_util.ts": "c1e9686d0164e29f7d880b2158971d805b6e0efc3110d0b3e24e4b8af2190d2b",
+ "https://deno.land/std@0.140.0/path/common.ts": "bee563630abd2d97f99d83c96c2fa0cca7cee103e8cb4e7699ec4d5db7bd2633",
+ "https://deno.land/std@0.140.0/path/glob.ts": "cb5255638de1048973c3e69e420c77dc04f75755524cb3b2e160fe9277d939ee",
+ "https://deno.land/std@0.140.0/path/mod.ts": "d3e68d0abb393fb0bf94a6d07c46ec31dc755b544b13144dee931d8d5f06a52d",
+ "https://deno.land/std@0.140.0/path/posix.ts": "293cdaec3ecccec0a9cc2b534302dfe308adb6f10861fa183275d6695faace44",
+ "https://deno.land/std@0.140.0/path/separator.ts": "fe1816cb765a8068afb3e8f13ad272351c85cbc739af56dacfc7d93d710fe0f9",
+ "https://deno.land/std@0.140.0/path/win32.ts": "31811536855e19ba37a999cd8d1b62078235548d67902ece4aa6b814596dd757",
+ "https://deno.land/std@0.140.0/streams/conversion.ts": "712585bfa0172a97fb68dd46e784ae8ad59d11b88079d6a4ab098ff42e697d21",
+ "https://deno.land/std@0.181.0/_util/asserts.ts": "178dfc49a464aee693a7e285567b3d0b555dc805ff490505a8aae34f9cfb1462",
+ "https://deno.land/std@0.181.0/_util/os.ts": "d932f56d41e4f6a6093d56044e29ce637f8dcc43c5a90af43504a889cf1775e3",
+ "https://deno.land/std@0.181.0/fs/_util.ts": "65381f341af1ff7f40198cee15c20f59951ac26e51ddc651c5293e24f9ce6f32",
+ "https://deno.land/std@0.181.0/fs/ensure_dir.ts": "dc64c4c75c64721d4e3fb681f1382f803ff3d2868f08563ff923fdd20d071c40",
+ "https://deno.land/std@0.181.0/fs/expand_glob.ts": "e4f56259a0a70fe23f05215b00de3ac5e6ba46646ab2a06ebbe9b010f81c972a",
+ "https://deno.land/std@0.181.0/fs/walk.ts": "ea95ffa6500c1eda6b365be488c056edc7c883a1db41ef46ec3bf057b1c0fe32",
+ "https://deno.land/std@0.181.0/path/_constants.ts": "e49961f6f4f48039c0dfed3c3f93e963ca3d92791c9d478ac5b43183413136e0",
+ "https://deno.land/std@0.181.0/path/_interface.ts": "6471159dfbbc357e03882c2266d21ef9afdb1e4aa771b0545e90db58a0ba314b",
+ "https://deno.land/std@0.181.0/path/_util.ts": "d7abb1e0dea065f427b89156e28cdeb32b045870acdf865833ba808a73b576d0",
+ "https://deno.land/std@0.181.0/path/common.ts": "ee7505ab01fd22de3963b64e46cff31f40de34f9f8de1fff6a1bd2fe79380000",
+ "https://deno.land/std@0.181.0/path/glob.ts": "d479e0a695621c94d3fd7fe7abd4f9499caf32a8de13f25073451c6ef420a4e1",
+ "https://deno.land/std@0.181.0/path/mod.ts": "bf718f19a4fdd545aee1b06409ca0805bd1b68ecf876605ce632e932fe54510c",
+ "https://deno.land/std@0.181.0/path/posix.ts": "8b7c67ac338714b30c816079303d0285dd24af6b284f7ad63da5b27372a2c94d",
+ "https://deno.land/std@0.181.0/path/separator.ts": "0fb679739d0d1d7bf45b68dacfb4ec7563597a902edbaf3c59b50d5bcadd93b1",
+ "https://deno.land/std@0.181.0/path/win32.ts": "d186344e5583bcbf8b18af416d13d82b35a317116e6460a5a3953508c3de5bba",
+ "https://deno.land/std@0.182.0/_util/asserts.ts": "178dfc49a464aee693a7e285567b3d0b555dc805ff490505a8aae34f9cfb1462",
+ "https://deno.land/std@0.182.0/_util/os.ts": "d932f56d41e4f6a6093d56044e29ce637f8dcc43c5a90af43504a889cf1775e3",
+ "https://deno.land/std@0.182.0/fmt/colors.ts": "d67e3cd9f472535241a8e410d33423980bec45047e343577554d3356e1f0ef4e",
+ "https://deno.land/std@0.182.0/fs/_util.ts": "65381f341af1ff7f40198cee15c20f59951ac26e51ddc651c5293e24f9ce6f32",
+ "https://deno.land/std@0.182.0/fs/empty_dir.ts": "c3d2da4c7352fab1cf144a1ecfef58090769e8af633678e0f3fabaef98594688",
+ "https://deno.land/std@0.182.0/fs/expand_glob.ts": "e4f56259a0a70fe23f05215b00de3ac5e6ba46646ab2a06ebbe9b010f81c972a",
+ "https://deno.land/std@0.182.0/fs/walk.ts": "920be35a7376db6c0b5b1caf1486fb962925e38c9825f90367f8f26b5e5d0897",
+ "https://deno.land/std@0.182.0/path/_constants.ts": "e49961f6f4f48039c0dfed3c3f93e963ca3d92791c9d478ac5b43183413136e0",
+ "https://deno.land/std@0.182.0/path/_interface.ts": "6471159dfbbc357e03882c2266d21ef9afdb1e4aa771b0545e90db58a0ba314b",
+ "https://deno.land/std@0.182.0/path/_util.ts": "d7abb1e0dea065f427b89156e28cdeb32b045870acdf865833ba808a73b576d0",
+ "https://deno.land/std@0.182.0/path/common.ts": "ee7505ab01fd22de3963b64e46cff31f40de34f9f8de1fff6a1bd2fe79380000",
+ "https://deno.land/std@0.182.0/path/glob.ts": "d479e0a695621c94d3fd7fe7abd4f9499caf32a8de13f25073451c6ef420a4e1",
+ "https://deno.land/std@0.182.0/path/mod.ts": "bf718f19a4fdd545aee1b06409ca0805bd1b68ecf876605ce632e932fe54510c",
+ "https://deno.land/std@0.182.0/path/posix.ts": "8b7c67ac338714b30c816079303d0285dd24af6b284f7ad63da5b27372a2c94d",
+ "https://deno.land/std@0.182.0/path/separator.ts": "0fb679739d0d1d7bf45b68dacfb4ec7563597a902edbaf3c59b50d5bcadd93b1",
+ "https://deno.land/std@0.182.0/path/win32.ts": "d186344e5583bcbf8b18af416d13d82b35a317116e6460a5a3953508c3de5bba",
+ "https://deno.land/std@0.200.0/assert/_constants.ts": "8a9da298c26750b28b326b297316cdde860bc237533b07e1337c021379e6b2a9",
+ "https://deno.land/std@0.200.0/assert/_diff.ts": "1a3c044aedf77647d6cac86b798c6417603361b66b54c53331b312caeb447aea",
+ "https://deno.land/std@0.200.0/assert/_format.ts": "a69126e8a469009adf4cf2a50af889aca364c349797e63174884a52ff75cf4c7",
+ "https://deno.land/std@0.200.0/assert/assert.ts": "9a97dad6d98c238938e7540736b826440ad8c1c1e54430ca4c4e623e585607ee",
+ "https://deno.land/std@0.200.0/assert/assert_almost_equals.ts": "e15ca1f34d0d5e0afae63b3f5d975cbd18335a132e42b0c747d282f62ad2cd6c",
+ "https://deno.land/std@0.200.0/assert/assert_array_includes.ts": "6856d7f2c3544bc6e62fb4646dfefa3d1df5ff14744d1bca19f0cbaf3b0d66c9",
+ "https://deno.land/std@0.200.0/assert/assert_equals.ts": "d8ec8a22447fbaf2fc9d7c3ed2e66790fdb74beae3e482855d75782218d68227",
+ "https://deno.land/std@0.200.0/assert/assert_exists.ts": "407cb6b9fb23a835cd8d5ad804e2e2edbbbf3870e322d53f79e1c7a512e2efd7",
+ "https://deno.land/std@0.200.0/assert/assert_false.ts": "a9962749f4bf5844e3fa494257f1de73d69e4fe0e82c34d0099287552163a2dc",
+ "https://deno.land/std@0.200.0/assert/assert_instance_of.ts": "09fd297352a5b5bbb16da2b5e1a0d8c6c44da5447772648622dcc7df7af1ddb8",
+ "https://deno.land/std@0.200.0/assert/assert_is_error.ts": "b4eae4e5d182272efc172bf28e2e30b86bb1650cd88aea059e5d2586d4160fb9",
+ "https://deno.land/std@0.200.0/assert/assert_match.ts": "c4083f80600bc190309903c95e397a7c9257ff8b5ae5c7ef91e834704e672e9b",
+ "https://deno.land/std@0.200.0/assert/assert_not_equals.ts": "9f1acab95bd1f5fc9a1b17b8027d894509a745d91bac1718fdab51dc76831754",
+ "https://deno.land/std@0.200.0/assert/assert_not_instance_of.ts": "0c14d3dfd9ab7a5276ed8ed0b18c703d79a3d106102077ec437bfe7ed912bd22",
+ "https://deno.land/std@0.200.0/assert/assert_not_match.ts": "3796a5b0c57a1ce6c1c57883dd4286be13a26f715ea662318ab43a8491a13ab0",
+ "https://deno.land/std@0.200.0/assert/assert_not_strict_equals.ts": "ca6c6d645e95fbc873d25320efeb8c4c6089a9a5e09f92d7c1c4b6e935c2a6ad",
+ "https://deno.land/std@0.200.0/assert/assert_object_match.ts": "d8fc2867cfd92eeacf9cea621e10336b666de1874a6767b5ec48988838370b54",
+ "https://deno.land/std@0.200.0/assert/assert_rejects.ts": "45c59724de2701e3b1f67c391d6c71c392363635aad3f68a1b3408f9efca0057",
+ "https://deno.land/std@0.200.0/assert/assert_strict_equals.ts": "b1f538a7ea5f8348aeca261d4f9ca603127c665e0f2bbfeb91fa272787c87265",
+ "https://deno.land/std@0.200.0/assert/assert_string_includes.ts": "b821d39ebf5cb0200a348863c86d8c4c4b398e02012ce74ad15666fc4b631b0c",
+ "https://deno.land/std@0.200.0/assert/assert_throws.ts": "63784e951475cb7bdfd59878cd25a0931e18f6dc32a6077c454b2cd94f4f4bcd",
+ "https://deno.land/std@0.200.0/assert/assertion_error.ts": "4d0bde9b374dfbcbe8ac23f54f567b77024fb67dbb1906a852d67fe050d42f56",
+ "https://deno.land/std@0.200.0/assert/equal.ts": "9f1a46d5993966d2596c44e5858eec821859b45f783a5ee2f7a695dfc12d8ece",
+ "https://deno.land/std@0.200.0/assert/fail.ts": "c36353d7ae6e1f7933d45f8ea51e358c8c4b67d7e7502028598fe1fea062e278",
+ "https://deno.land/std@0.200.0/assert/mod.ts": "08d55a652c22c5da0215054b21085cec25a5da47ce4a6f9de7d9ad36df35bdee",
+ "https://deno.land/std@0.200.0/assert/unimplemented.ts": "d56fbeecb1f108331a380f72e3e010a1f161baa6956fd0f7cf3e095ae1a4c75a",
+ "https://deno.land/std@0.200.0/assert/unreachable.ts": "4600dc0baf7d9c15a7f7d234f00c23bca8f3eba8b140286aaca7aa998cf9a536",
+ "https://deno.land/std@0.200.0/fmt/colors.ts": "a7eecffdf3d1d54db890723b303847b6e0a1ab4b528ba6958b8f2e754cf1b3bc",
+ "https://deno.land/x/code_block_writer@12.0.0/mod.ts": "2c3448060e47c9d08604c8f40dee34343f553f33edcdfebbf648442be33205e5",
+ "https://deno.land/x/code_block_writer@12.0.0/utils/string_utils.ts": "60cb4ec8bd335bf241ef785ccec51e809d576ff8e8d29da43d2273b69ce2a6ff",
+ "https://deno.land/x/deno_cache@0.5.2/auth_tokens.ts": "5d1d56474c54a9d152e44d43ea17c2e6a398dd1e9682c69811a313567c01ee1e",
+ "https://deno.land/x/deno_cache@0.5.2/cache.ts": "92ce8511e1e5c00fdf53a41619aa77d632ea8e0fc711324322e4d5ebf8133911",
+ "https://deno.land/x/deno_cache@0.5.2/deno_dir.ts": "1ea355b8ba11c630d076b222b197cfc937dd81e5a4a260938997da99e8ff93a0",
+ "https://deno.land/x/deno_cache@0.5.2/deps.ts": "26a75905652510b76e54b6d5ef3cf824d1062031e00782efcd768978419224e7",
+ "https://deno.land/x/deno_cache@0.5.2/dirs.ts": "009c6f54e0b610914d6ce9f72f6f6ccfffd2d47a79a19061e0a9eb4253836069",
+ "https://deno.land/x/deno_cache@0.5.2/disk_cache.ts": "66a1e604a8d564b6dd0500326cac33d08b561d331036bf7272def80f2f7952aa",
+ "https://deno.land/x/deno_cache@0.5.2/file_fetcher.ts": "89616c50b6df73fb04e73d0b7cd99e5f2ed7967386913d65b9e8baa4238501f7",
+ "https://deno.land/x/deno_cache@0.5.2/http_cache.ts": "407135eaf2802809ed373c230d57da7ef8dff923c4abf205410b9b99886491fd",
+ "https://deno.land/x/deno_cache@0.5.2/lib/deno_cache_dir.generated.js": "18b6526d0c50791a73dd0eb894e99de1ac05ee79dcbd53298ff5b5b6b0757fe6",
+ "https://deno.land/x/deno_cache@0.5.2/lib/snippets/deno_cache_dir-77bed54ace8005e0/fs.js": "cbe3a976ed63c72c7cb34ef845c27013033a3b11f9d8d3e2c4aa5dda2c0c7af6",
+ "https://deno.land/x/deno_cache@0.5.2/mod.ts": "0b4d071ad095128bdc2b1bc6e5d2095222dcbae08287261690ee9757e6300db6",
+ "https://deno.land/x/deno_cache@0.5.2/util.ts": "f3f5a0cfc60051f09162942fb0ee87a0e27b11a12aec4c22076e3006be4cc1e2",
+ "https://deno.land/x/dir@1.5.1/data_local_dir/mod.ts": "91eb1c4bfadfbeda30171007bac6d85aadacd43224a5ed721bbe56bc64e9eb66",
+ "https://deno.land/x/dnt@0.38.1/lib/compiler.ts": "209ad2e1b294f93f87ec02ade9a0821f942d2e524104552d0aa8ff87021050a5",
+ "https://deno.land/x/dnt@0.38.1/lib/compiler_transforms.ts": "f21aba052f5dcf0b0595c734450842855c7f572e96165d3d34f8fed2fc1f7ba1",
+ "https://deno.land/x/dnt@0.38.1/lib/mod.deps.ts": "30367fc68bcd2acf3b7020cf5cdd26f817f7ac9ac35c4bfb6c4551475f91bc3e",
+ "https://deno.land/x/dnt@0.38.1/lib/npm_ignore.ts": "57fbb7e7b935417d225eec586c6aa240288905eb095847d3f6a88e290209df4e",
+ "https://deno.land/x/dnt@0.38.1/lib/package_json.ts": "61f35b06e374ed39ca776d29d67df4be7ee809d0bca29a8239687556c6d027c2",
+ "https://deno.land/x/dnt@0.38.1/lib/pkg/dnt_wasm.generated.js": "cfb352ae839865f5698c9b35099d4c783510195a1e3c9f9b04d94fac86394ed9",
+ "https://deno.land/x/dnt@0.38.1/lib/pkg/snippets/dnt-wasm-a15ef721fa5290c5/helpers.js": "45f74f00472b3a399bc16e5dc056966b55dcdd8fa2bd61505c6dfd2f5d33b9f4",
+ "https://deno.land/x/dnt@0.38.1/lib/shims.ts": "df1bd4d9a196dca4b2d512b1564fff64ac6c945189a273d706391f87f210d7e6",
+ "https://deno.land/x/dnt@0.38.1/lib/test_runner/get_test_runner_code.ts": "4dc7a73a13b027341c0688df2b29a4ef102f287c126f134c33f69f0339b46968",
+ "https://deno.land/x/dnt@0.38.1/lib/test_runner/test_runner.ts": "4d0da0500ec427d5f390d9a8d42fb882fbeccc92c92d66b6f2e758606dbd40e6",
+ "https://deno.land/x/dnt@0.38.1/lib/transform.deps.ts": "e42f2bdef46d098453bdba19261a67cf90b583f5d868f7fe83113c1380d9b85c",
+ "https://deno.land/x/dnt@0.38.1/lib/types.ts": "b8e228b2fac44c2ae902fbb73b1689f6ab889915bd66486c8a85c0c24255f5fb",
+ "https://deno.land/x/dnt@0.38.1/lib/utils.ts": "878b7ac7003a10c16e6061aa49dbef9b42bd43174853ebffc9b67ea47eeb11d8",
+ "https://deno.land/x/dnt@0.38.1/mod.ts": "b13349fe77847cf58e26b40bcd58797a8cec5d71b31a1ca567071329c8489de1",
+ "https://deno.land/x/dnt@0.38.1/transform.ts": "f68743a14cf9bf53bfc9c81073871d69d447a7f9e3453e0447ca2fb78926bb1d",
+ "https://deno.land/x/ts_morph@18.0.0/bootstrap/mod.ts": "b53aad517f106c4079971fcd4a81ab79fadc40b50061a3ab2b741a09119d51e9",
+ "https://deno.land/x/ts_morph@18.0.0/bootstrap/ts_morph_bootstrap.js": "6645ac03c5e6687dfa8c78109dc5df0250b811ecb3aea2d97c504c35e8401c06",
+ "https://deno.land/x/ts_morph@18.0.0/common/DenoRuntime.ts": "6a7180f0c6e90dcf23ccffc86aa8271c20b1c4f34c570588d08a45880b7e172d",
+ "https://deno.land/x/ts_morph@18.0.0/common/mod.ts": "01985d2ee7da8d1caee318a9d07664774fbee4e31602bc2bb6bb62c3489555ed",
+ "https://deno.land/x/ts_morph@18.0.0/common/ts_morph_common.js": "845671ca951073400ce142f8acefa2d39ea9a51e29ca80928642f3f8cf2b7700",
+ "https://deno.land/x/ts_morph@18.0.0/common/typescript.js": "d5c598b6a2db2202d0428fca5fd79fc9a301a71880831a805d778797d2413c59",
+ "https://deno.land/x/wasmbuild@0.15.0/cache.ts": "89eea5f3ce6035a1164b3e655c95f21300498920575ade23161421f5b01967f4",
+ "https://deno.land/x/wasmbuild@0.15.0/loader.ts": "d98d195a715f823151cbc8baa3f32127337628379a02d9eb2a3c5902dbccfc02"
+ }
+}
diff --git a/docs/README.md b/docs/README.md
index 4af083e..8f9131c 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -13,18 +13,20 @@
•
Discord
•
- TypeDoc
- •
API Docs
# Introduction
-The ClassCharts API is a typescript wrapper around the ClassCharts API. It allows you to easily make requests to the ClassCharts API without having to worry about the underlying implementation of making requests.
+The ClassCharts API is a typescript wrapper around the ClassCharts API. It
+allows you to easily make requests to the ClassCharts API without having to
+worry about the underlying implementation of making requests.
## Help
-For any help with the library, please join the [discord](https://discord.gg/DTcwugcgZ2) where you can ask questions and get help from the community.
+For any help with the library, please join the
+[discord](https://discord.gg/DTcwugcgZ2) where you can ask questions and get
+help from the community.
# Installation
@@ -48,7 +50,8 @@ pnpm add classcharts-api # pnpm
# Logging In
-Before making any requests, you must login to the client. This will get you a session ID which will be used for all requests.
+Before making any requests, you must login to the client. This will get you a
+session ID which will be used for all requests.
## Student Client
@@ -71,7 +74,8 @@ await client.login();
# Universal Methods
-All the following methods can be used on both the student and parent client. Each example expects the client to be already logged in.
+All the following methods can be used on both the student and parent client.
+Each example expects the client to be already logged in.
## `.getStudentInfo`
@@ -176,7 +180,6 @@ console.log(homeworks);
...
}
}
-
```
## `.getLessons`
@@ -236,7 +239,9 @@ console.log(badges);
## `.getAnnouncements`
-?> This method does not include `meta` in the response, since I do not have access to this endpoint to test it. If you have access to this endpoint, please open a PR to add the `meta` response. Thanks!
+?> This method does not include `meta` in the response, since I do not have
+access to this endpoint to test it. If you have access to this endpoint, please
+open a PR to add the `meta` response. Thanks!
Gets all announcements.
@@ -247,7 +252,9 @@ console.log(announcements);
## `.getDetentions`
-?> This method does not include `meta` in the response, since I do not have access to this endpoint to test it. If you have access to this endpoint, please open a PR to add the `meta` response. Thanks!
+?> This method does not include `meta` in the response, since I do not have
+access to this endpoint to test it. If you have access to this endpoint, please
+open a PR to add the `meta` response. Thanks!
Gets all detentions.
@@ -258,7 +265,9 @@ console.log(detentions);
## `.getAttendance`
-?> This method does not include `meta` in the response, since I do not have access to this endpoint to test it. If you have access to this endpoint, please open a PR to add the `meta` response. Thanks!
+?> This method does not include `meta` in the response, since I do not have
+access to this endpoint to test it. If you have access to this endpoint, please
+open a PR to add the `meta` response. Thanks!
Gets attendance.
diff --git a/jest.config.cjs b/jest.config.cjs
deleted file mode 100644
index 17b6341..0000000
--- a/jest.config.cjs
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * For a detailed explanation regarding each configuration property and type check, visit:
- * https://jestjs.io/docs/configuration
- */
-
-// eslint-disable-next-line no-undef
-module.exports = {
- // All imported modules in your tests should be mocked automatically
- // automock: false,
-
- // Stop running tests after `n` failures
- // bail: 0,
-
- // The directory where Jest should store its cached dependency information
- // cacheDirectory: "C:\\Users\\User\\AppData\\Local\\Temp\\jest",
-
- // Automatically clear mock calls, instances and results before every test
- // clearMocks: false,
-
- // Indicates whether the coverage information should be collected while executing the test
- collectCoverage: false,
-
- // An array of glob patterns indicating a set of files for which coverage information should be collected
- // collectCoverageFrom: undefined,
-
- // The directory where Jest should output its coverage files
- coverageDirectory: "coverage",
-
- // An array of regexp pattern strings used to skip coverage collection
- // coveragePathIgnorePatterns: [
- // "\\\\node_modules\\\\"
- // ],
-
- // Indicates which provider should be used to instrument code for coverage
- coverageProvider: "v8",
-
- // A list of reporter names that Jest uses when writing coverage reports
- // coverageReporters: [
- // "json",
- // "text",
- // "lcov",
- // "clover"
- // ],
-
- // An object that configures minimum threshold enforcement for coverage results
- // coverageThreshold: undefined,
-
- // A path to a custom dependency extractor
- // dependencyExtractor: undefined,
-
- // Make calling deprecated APIs throw helpful error messages
- // errorOnDeprecated: false,
-
- // Force coverage collection from ignored files using an array of glob patterns
- // forceCoverageMatch: [],
-
- // A path to a module which exports an async function that is triggered once before all test suites
- // globalSetup: undefined,
-
- // A path to a module which exports an async function that is triggered once after all test suites
- // globalTeardown: undefined,
-
- // A set of global variables that need to be available in all test environments
- // globals: {},
-
- // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers.
- // maxWorkers: "50%",
-
- // An array of directory names to be searched recursively up from the requiring module's location
- // moduleDirectories: [
- // "node_modules"
- // ],
-
- // An array of file extensions your modules use
- // moduleFileExtensions: [
- // "js",
- // "jsx",
- // "ts",
- // "tsx",
- // "json",
- // "node"
- // ],
-
- // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module
- // moduleNameMapper: {},
-
- // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader
- // modulePathIgnorePatterns: [],
-
- // Activates notifications for test results
- // notify: false,
-
- // An enum that specifies notification mode. Requires { notify: true }
- // notifyMode: "failure-change",
-
- // A preset that is used as a base for Jest's configuration
- // preset: undefined,
-
- // Run tests from one or more projects
- // projects: undefined,
-
- // Use this configuration option to add custom reporters to Jest
- // reporters: undefined,
-
- // Automatically reset mock state before every test
- // resetMocks: false,
-
- // Reset the module registry before running each individual test
- // resetModules: false,
-
- // A path to a custom resolver
- // resolver: undefined,
-
- // Automatically restore mock state and implementation before every test
- // restoreMocks: false,
-
- // The root directory that Jest should scan for tests and modules within
- // rootDir: undefined,
-
- // A list of paths to directories that Jest should use to search for files in
- // roots: [
- // ""
- // ],
-
- // Allows you to use a custom runner instead of Jest's default test runner
- // runner: "jest-runner",
-
- // The paths to modules that run some code to configure or set up the testing environment before each test
- // setupFiles: [],
-
- // A list of paths to modules that run some code to configure or set up the testing framework before each test
- // setupFilesAfterEnv: [],
-
- // The number of seconds after which a test is considered as slow and reported as such in the results.
- // slowTestThreshold: 5,
-
- // A list of paths to snapshot serializer modules Jest should use for snapshot testing
- // snapshotSerializers: [],
-
- // The test environment that will be used for testing
- // testEnvironment: "jest-environment-node",
-
- // Options that will be passed to the testEnvironment
- // testEnvironmentOptions: {},
-
- // Adds a location field to test results
- // testLocationInResults: false,
-
- // The glob patterns Jest uses to detect test files
- // testMatch: [
- // "**/__tests__/**/*.[jt]s?(x)",
- // "**/?(*.)+(spec|test).[tj]s?(x)"
- // ],
-
- // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped
- // testPathIgnorePatterns: [
- // "\\\\node_modules\\\\"
- // ],
-
- // The regexp pattern or array of patterns that Jest uses to detect test files
- // testRegex: [],
-
- // This option allows the use of a custom results processor
- // testResultsProcessor: undefined,
-
- // This option allows use of a custom test runner
- // testRunner: "jest-circus/runner",
-
- // This option sets the URL for the jsdom environment. It is reflected in properties such as location.href
- // testURL: "http://localhost",
-
- // Setting this value to "fake" allows the use of fake timers for functions such as "setTimeout"
- // timers: "real",
-
- // A map from regular expressions to paths to transformers
- // transform: undefined,
-
- // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation
- // transformIgnorePatterns: [
- // "\\\\node_modules\\\\",
- // "\\.pnp\\.[^\\\\]+$"
- // ],
-
- // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them
- // unmockedModulePathPatterns: undefined,
-
- // Indicates whether each individual test should be reported during the run
- // verbose: undefined,
-
- // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode
- // watchPathIgnorePatterns: [],
-
- // Whether to use watchman for file crawling
- // watchman: true,
- transform: {
- "^.+\\.(ts|tsx)$": "ts-jest",
- },
- setupFilesAfterEnv: ["jest-extended/all"],
-};
diff --git a/src/index.ts b/mod.ts
similarity index 56%
rename from src/index.ts
rename to mod.ts
index 2e1bbfb..32eb371 100644
--- a/src/index.ts
+++ b/mod.ts
@@ -1,13 +1,13 @@
-export * from "./core/studentClient.js";
-export * from "./core/parentClient.js";
+export * from "./src/core/studentClient.ts";
+export * from "./src/core/parentClient.ts";
export type {
- Student,
ActivityPoint,
+ Announcement,
+ AttendanceDate,
+ Badge,
BehaviourTimelinePoint,
+ Detention,
Homework,
Lesson,
- Badge,
- Announcement,
- Detention,
- AttendanceDate,
-} from "./types.js";
+ Student,
+} from "./src/types.ts";
diff --git a/package.json b/package.json
deleted file mode 100644
index cf7d8d3..0000000
--- a/package.json
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- "name": "classcharts-api",
- "type": "module",
- "version": "2.3.1",
- "license": "ISC",
- "author": {
- "name": "James Cook",
- "email": "james@jaminit.co.uk"
- },
- "description": "A Typescript wrapper for getting information from the ClassCharts API",
- "keywords": [
- "node",
- "typescript",
- "classcharts",
- "class charts"
- ],
- "bugs": {
- "url": "https://github.com/classchartsapi/classcharts-api-js/issues"
- },
- "repository": {
- "type": "git",
- "url": "https://github.com/classchartsapi/classcharts-api-js.git"
- },
- "homepage": "https://classchartsapi.github.io/classcharts-api-js/",
- "scripts": {
- "build": "tsc",
- "generateDocs": "typedoc --options typedoc.config.cjs",
- "test": "jest",
- "release": "pnpm run build && changeset publish"
- },
- "devDependencies": {
- "@changesets/cli": "^2.26.1",
- "@types/jest": "^29.5.1",
- "@types/node": "^18.16.3",
- "@typescript-eslint/eslint-plugin": "^5.59.1",
- "@typescript-eslint/parser": "^5.59.1",
- "eslint": "^8.39.0",
- "eslint-config-prettier": "^8.8.0",
- "jest": "^29.5.0",
- "jest-extended": "^3.2.4",
- "prettier": "^2.8.8",
- "ts-jest": "^29.1.0",
- "typedoc": "^0.24.6",
- "typedoc-plugin-umami": "^1.2.0",
- "typescript": "^5.0.4"
- },
- "main": "./dist/index.js",
- "types": "./dist/index.d.ts",
- "exports": {
- ".": {
- "types": "./dist/index.d.ts",
- "import": "./dist/index.js",
- "require": "./dist/index.js"
- },
- "./types": "./dist/index.d.ts",
- "./package.json": "./package.json"
- },
- "files": [
- "dist/**"
- ],
- "engines": {
- "node": ">=18"
- },
- "sideEffects": false
-}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
deleted file mode 100644
index 577c3d9..0000000
--- a/pnpm-lock.yaml
+++ /dev/null
@@ -1,4274 +0,0 @@
-lockfileVersion: '6.0'
-
-devDependencies:
- '@changesets/cli':
- specifier: ^2.26.1
- version: 2.26.1
- '@types/jest':
- specifier: ^29.5.1
- version: 29.5.1
- '@types/node':
- specifier: ^18.16.3
- version: 18.16.3
- '@typescript-eslint/eslint-plugin':
- specifier: ^5.59.1
- version: 5.59.1(@typescript-eslint/parser@5.59.1)(eslint@8.39.0)(typescript@5.0.4)
- '@typescript-eslint/parser':
- specifier: ^5.59.1
- version: 5.59.1(eslint@8.39.0)(typescript@5.0.4)
- eslint:
- specifier: ^8.39.0
- version: 8.39.0
- eslint-config-prettier:
- specifier: ^8.8.0
- version: 8.8.0(eslint@8.39.0)
- jest:
- specifier: ^29.5.0
- version: 29.5.0(@types/node@18.16.3)
- jest-extended:
- specifier: ^3.2.4
- version: 3.2.4(jest@29.5.0)
- prettier:
- specifier: ^2.8.8
- version: 2.8.8
- ts-jest:
- specifier: ^29.1.0
- version: 29.1.0(@babel/core@7.21.4)(jest@29.5.0)(typescript@5.0.4)
- typedoc:
- specifier: ^0.24.6
- version: 0.24.6(typescript@5.0.4)
- typedoc-plugin-umami:
- specifier: ^1.2.0
- version: 1.2.0(typedoc@0.24.6)
- typescript:
- specifier: ^5.0.4
- version: 5.0.4
-
-packages:
-
- /@ampproject/remapping@2.2.1:
- resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
- engines: {node: '>=6.0.0'}
- dependencies:
- '@jridgewell/gen-mapping': 0.3.3
- '@jridgewell/trace-mapping': 0.3.18
- dev: true
-
- /@babel/code-frame@7.21.4:
- resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/highlight': 7.18.6
- dev: true
-
- /@babel/compat-data@7.21.4:
- resolution: {integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==}
- engines: {node: '>=6.9.0'}
- dev: true
-
- /@babel/core@7.21.4:
- resolution: {integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@ampproject/remapping': 2.2.1
- '@babel/code-frame': 7.21.4
- '@babel/generator': 7.21.4
- '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4)
- '@babel/helper-module-transforms': 7.21.2
- '@babel/helpers': 7.21.0
- '@babel/parser': 7.21.4
- '@babel/template': 7.20.7
- '@babel/traverse': 7.21.4
- '@babel/types': 7.21.4
- convert-source-map: 1.9.0
- debug: 4.3.4
- gensync: 1.0.0-beta.2
- json5: 2.2.3
- semver: 6.3.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@babel/generator@7.21.4:
- resolution: {integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.21.4
- '@jridgewell/gen-mapping': 0.3.3
- '@jridgewell/trace-mapping': 0.3.18
- jsesc: 2.5.2
- dev: true
-
- /@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.4):
- resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0
- dependencies:
- '@babel/compat-data': 7.21.4
- '@babel/core': 7.21.4
- '@babel/helper-validator-option': 7.21.0
- browserslist: 4.21.5
- lru-cache: 5.1.1
- semver: 6.3.0
- dev: true
-
- /@babel/helper-environment-visitor@7.18.9:
- resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==}
- engines: {node: '>=6.9.0'}
- dev: true
-
- /@babel/helper-function-name@7.21.0:
- resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/template': 7.20.7
- '@babel/types': 7.21.4
- dev: true
-
- /@babel/helper-hoist-variables@7.18.6:
- resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.21.4
- dev: true
-
- /@babel/helper-module-imports@7.21.4:
- resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.21.4
- dev: true
-
- /@babel/helper-module-transforms@7.21.2:
- resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/helper-environment-visitor': 7.18.9
- '@babel/helper-module-imports': 7.21.4
- '@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.20.7
- '@babel/traverse': 7.21.4
- '@babel/types': 7.21.4
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@babel/helper-plugin-utils@7.20.2:
- resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==}
- engines: {node: '>=6.9.0'}
- dev: true
-
- /@babel/helper-simple-access@7.20.2:
- resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/types': 7.21.4
- dev: true
-
- /@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.21.4
- 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.19.1:
- resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==}
- engines: {node: '>=6.9.0'}
- dev: true
-
- /@babel/helper-validator-option@7.21.0:
- resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==}
- engines: {node: '>=6.9.0'}
- dev: true
-
- /@babel/helpers@7.21.0:
- resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/template': 7.20.7
- '@babel/traverse': 7.21.4
- '@babel/types': 7.21.4
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@babel/highlight@7.18.6:
- resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/helper-validator-identifier': 7.19.1
- chalk: 2.4.2
- js-tokens: 4.0.0
- dev: true
-
- /@babel/parser@7.21.4:
- resolution: {integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==}
- engines: {node: '>=6.0.0'}
- hasBin: true
- dependencies:
- '@babel/types': 7.21.4
- dev: true
-
- /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.4):
- resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.4
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.21.4):
- resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.4
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.4):
- resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.4
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.4):
- resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.4
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.4):
- resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.4
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.21.4):
- resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.4
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.4):
- resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.4
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.4):
- resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.4
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.4):
- resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.4
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.4):
- resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.4
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.4):
- resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.4
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.4):
- resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.4
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.4):
- resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.4
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.21.4):
- resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
- dependencies:
- '@babel/core': 7.21.4
- '@babel/helper-plugin-utils': 7.20.2
- dev: true
-
- /@babel/runtime@7.21.0:
- resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==}
- engines: {node: '>=6.9.0'}
- dependencies:
- regenerator-runtime: 0.13.11
- dev: true
-
- /@babel/template@7.20.7:
- resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/code-frame': 7.21.4
- '@babel/parser': 7.21.4
- '@babel/types': 7.21.4
- dev: true
-
- /@babel/traverse@7.21.4:
- resolution: {integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/code-frame': 7.21.4
- '@babel/generator': 7.21.4
- '@babel/helper-environment-visitor': 7.18.9
- '@babel/helper-function-name': 7.21.0
- '@babel/helper-hoist-variables': 7.18.6
- '@babel/helper-split-export-declaration': 7.18.6
- '@babel/parser': 7.21.4
- '@babel/types': 7.21.4
- debug: 4.3.4
- globals: 11.12.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@babel/types@7.21.4:
- resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/helper-string-parser': 7.19.4
- '@babel/helper-validator-identifier': 7.19.1
- to-fast-properties: 2.0.0
- dev: true
-
- /@bcoe/v8-coverage@0.2.3:
- resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
- dev: true
-
- /@changesets/apply-release-plan@6.1.3:
- resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==}
- dependencies:
- '@babel/runtime': 7.21.0
- '@changesets/config': 2.3.0
- '@changesets/get-version-range-type': 0.3.2
- '@changesets/git': 2.0.0
- '@changesets/types': 5.2.1
- '@manypkg/get-packages': 1.1.3
- detect-indent: 6.1.0
- fs-extra: 7.0.1
- lodash.startcase: 4.4.0
- outdent: 0.5.0
- prettier: 2.8.8
- resolve-from: 5.0.0
- semver: 5.7.1
- dev: true
-
- /@changesets/assemble-release-plan@5.2.3:
- resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==}
- dependencies:
- '@babel/runtime': 7.21.0
- '@changesets/errors': 0.1.4
- '@changesets/get-dependents-graph': 1.3.5
- '@changesets/types': 5.2.1
- '@manypkg/get-packages': 1.1.3
- semver: 5.7.1
- dev: true
-
- /@changesets/changelog-git@0.1.14:
- resolution: {integrity: sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==}
- dependencies:
- '@changesets/types': 5.2.1
- dev: true
-
- /@changesets/cli@2.26.1:
- resolution: {integrity: sha512-XnTa+b51vt057fyAudvDKGB0Sh72xutQZNAdXkCqPBKO2zvs2yYZx5hFZj1u9cbtpwM6Sxtcr02/FQJfZOzemQ==}
- hasBin: true
- dependencies:
- '@babel/runtime': 7.21.0
- '@changesets/apply-release-plan': 6.1.3
- '@changesets/assemble-release-plan': 5.2.3
- '@changesets/changelog-git': 0.1.14
- '@changesets/config': 2.3.0
- '@changesets/errors': 0.1.4
- '@changesets/get-dependents-graph': 1.3.5
- '@changesets/get-release-plan': 3.0.16
- '@changesets/git': 2.0.0
- '@changesets/logger': 0.0.5
- '@changesets/pre': 1.0.14
- '@changesets/read': 0.5.9
- '@changesets/types': 5.2.1
- '@changesets/write': 0.2.3
- '@manypkg/get-packages': 1.1.3
- '@types/is-ci': 3.0.0
- '@types/semver': 6.2.3
- ansi-colors: 4.1.3
- chalk: 2.4.2
- enquirer: 2.3.6
- external-editor: 3.1.0
- fs-extra: 7.0.1
- human-id: 1.0.2
- is-ci: 3.0.1
- meow: 6.1.1
- outdent: 0.5.0
- p-limit: 2.3.0
- preferred-pm: 3.0.3
- resolve-from: 5.0.0
- semver: 5.7.1
- spawndamnit: 2.0.0
- term-size: 2.2.1
- tty-table: 4.2.1
- dev: true
-
- /@changesets/config@2.3.0:
- resolution: {integrity: sha512-EgP/px6mhCx8QeaMAvWtRrgyxW08k/Bx2tpGT+M84jEdX37v3VKfh4Cz1BkwrYKuMV2HZKeHOh8sHvja/HcXfQ==}
- dependencies:
- '@changesets/errors': 0.1.4
- '@changesets/get-dependents-graph': 1.3.5
- '@changesets/logger': 0.0.5
- '@changesets/types': 5.2.1
- '@manypkg/get-packages': 1.1.3
- fs-extra: 7.0.1
- micromatch: 4.0.5
- dev: true
-
- /@changesets/errors@0.1.4:
- resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==}
- dependencies:
- extendable-error: 0.1.7
- dev: true
-
- /@changesets/get-dependents-graph@1.3.5:
- resolution: {integrity: sha512-w1eEvnWlbVDIY8mWXqWuYE9oKhvIaBhzqzo4ITSJY9hgoqQ3RoBqwlcAzg11qHxv/b8ReDWnMrpjpKrW6m1ZTA==}
- dependencies:
- '@changesets/types': 5.2.1
- '@manypkg/get-packages': 1.1.3
- chalk: 2.4.2
- fs-extra: 7.0.1
- semver: 5.7.1
- dev: true
-
- /@changesets/get-release-plan@3.0.16:
- resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==}
- dependencies:
- '@babel/runtime': 7.21.0
- '@changesets/assemble-release-plan': 5.2.3
- '@changesets/config': 2.3.0
- '@changesets/pre': 1.0.14
- '@changesets/read': 0.5.9
- '@changesets/types': 5.2.1
- '@manypkg/get-packages': 1.1.3
- dev: true
-
- /@changesets/get-version-range-type@0.3.2:
- resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==}
- dev: true
-
- /@changesets/git@2.0.0:
- resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==}
- dependencies:
- '@babel/runtime': 7.21.0
- '@changesets/errors': 0.1.4
- '@changesets/types': 5.2.1
- '@manypkg/get-packages': 1.1.3
- is-subdir: 1.2.0
- micromatch: 4.0.5
- spawndamnit: 2.0.0
- dev: true
-
- /@changesets/logger@0.0.5:
- resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==}
- dependencies:
- chalk: 2.4.2
- dev: true
-
- /@changesets/parse@0.3.16:
- resolution: {integrity: sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==}
- dependencies:
- '@changesets/types': 5.2.1
- js-yaml: 3.14.1
- dev: true
-
- /@changesets/pre@1.0.14:
- resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==}
- dependencies:
- '@babel/runtime': 7.21.0
- '@changesets/errors': 0.1.4
- '@changesets/types': 5.2.1
- '@manypkg/get-packages': 1.1.3
- fs-extra: 7.0.1
- dev: true
-
- /@changesets/read@0.5.9:
- resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==}
- dependencies:
- '@babel/runtime': 7.21.0
- '@changesets/git': 2.0.0
- '@changesets/logger': 0.0.5
- '@changesets/parse': 0.3.16
- '@changesets/types': 5.2.1
- chalk: 2.4.2
- fs-extra: 7.0.1
- p-filter: 2.1.0
- dev: true
-
- /@changesets/types@4.1.0:
- resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==}
- dev: true
-
- /@changesets/types@5.2.1:
- resolution: {integrity: sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==}
- dev: true
-
- /@changesets/write@0.2.3:
- resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==}
- dependencies:
- '@babel/runtime': 7.21.0
- '@changesets/types': 5.2.1
- fs-extra: 7.0.1
- human-id: 1.0.2
- prettier: 2.8.8
- dev: true
-
- /@eslint-community/eslint-utils@4.4.0(eslint@8.39.0):
- resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
- dependencies:
- eslint: 8.39.0
- eslint-visitor-keys: 3.4.0
- dev: true
-
- /@eslint-community/regexpp@4.5.0:
- resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==}
- engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
- dev: true
-
- /@eslint/eslintrc@2.0.2:
- resolution: {integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dependencies:
- ajv: 6.12.6
- debug: 4.3.4
- espree: 9.5.1
- globals: 13.20.0
- ignore: 5.2.4
- import-fresh: 3.3.0
- js-yaml: 4.1.0
- minimatch: 3.1.2
- strip-json-comments: 3.1.1
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@eslint/js@8.39.0:
- resolution: {integrity: sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dev: true
-
- /@humanwhocodes/config-array@0.11.8:
- resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==}
- engines: {node: '>=10.10.0'}
- dependencies:
- '@humanwhocodes/object-schema': 1.2.1
- debug: 4.3.4
- minimatch: 3.1.2
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@humanwhocodes/module-importer@1.0.1:
- resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
- engines: {node: '>=12.22'}
- dev: true
-
- /@humanwhocodes/object-schema@1.2.1:
- resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
- dev: true
-
- /@istanbuljs/load-nyc-config@1.1.0:
- resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
- engines: {node: '>=8'}
- dependencies:
- camelcase: 5.3.1
- find-up: 4.1.0
- get-package-type: 0.1.0
- js-yaml: 3.14.1
- resolve-from: 5.0.0
- dev: true
-
- /@istanbuljs/schema@0.1.3:
- resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
- engines: {node: '>=8'}
- dev: true
-
- /@jest/console@29.5.0:
- resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/types': 29.5.0
- '@types/node': 18.16.3
- chalk: 4.1.2
- jest-message-util: 29.5.0
- jest-util: 29.5.0
- slash: 3.0.0
- dev: true
-
- /@jest/core@29.5.0:
- resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- peerDependencies:
- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
- peerDependenciesMeta:
- node-notifier:
- optional: true
- dependencies:
- '@jest/console': 29.5.0
- '@jest/reporters': 29.5.0
- '@jest/test-result': 29.5.0
- '@jest/transform': 29.5.0
- '@jest/types': 29.5.0
- '@types/node': 18.16.3
- ansi-escapes: 4.3.2
- chalk: 4.1.2
- ci-info: 3.8.0
- exit: 0.1.2
- graceful-fs: 4.2.11
- jest-changed-files: 29.5.0
- jest-config: 29.5.0(@types/node@18.16.3)
- jest-haste-map: 29.5.0
- jest-message-util: 29.5.0
- jest-regex-util: 29.4.3
- jest-resolve: 29.5.0
- jest-resolve-dependencies: 29.5.0
- jest-runner: 29.5.0
- jest-runtime: 29.5.0
- jest-snapshot: 29.5.0
- jest-util: 29.5.0
- jest-validate: 29.5.0
- jest-watcher: 29.5.0
- micromatch: 4.0.5
- pretty-format: 29.5.0
- slash: 3.0.0
- strip-ansi: 6.0.1
- transitivePeerDependencies:
- - supports-color
- - ts-node
- dev: true
-
- /@jest/environment@29.5.0:
- resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/fake-timers': 29.5.0
- '@jest/types': 29.5.0
- '@types/node': 18.16.3
- jest-mock: 29.5.0
- dev: true
-
- /@jest/expect-utils@29.5.0:
- resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- jest-get-type: 29.4.3
- dev: true
-
- /@jest/expect@29.5.0:
- resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- expect: 29.5.0
- jest-snapshot: 29.5.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@jest/fake-timers@29.5.0:
- resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/types': 29.5.0
- '@sinonjs/fake-timers': 10.0.2
- '@types/node': 18.16.3
- jest-message-util: 29.5.0
- jest-mock: 29.5.0
- jest-util: 29.5.0
- dev: true
-
- /@jest/globals@29.5.0:
- resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/environment': 29.5.0
- '@jest/expect': 29.5.0
- '@jest/types': 29.5.0
- jest-mock: 29.5.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@jest/reporters@29.5.0:
- resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- peerDependencies:
- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
- peerDependenciesMeta:
- node-notifier:
- optional: true
- dependencies:
- '@bcoe/v8-coverage': 0.2.3
- '@jest/console': 29.5.0
- '@jest/test-result': 29.5.0
- '@jest/transform': 29.5.0
- '@jest/types': 29.5.0
- '@jridgewell/trace-mapping': 0.3.18
- '@types/node': 18.16.3
- chalk: 4.1.2
- collect-v8-coverage: 1.0.1
- exit: 0.1.2
- glob: 7.2.3
- graceful-fs: 4.2.11
- istanbul-lib-coverage: 3.2.0
- istanbul-lib-instrument: 5.2.1
- istanbul-lib-report: 3.0.0
- istanbul-lib-source-maps: 4.0.1
- istanbul-reports: 3.1.5
- jest-message-util: 29.5.0
- jest-util: 29.5.0
- jest-worker: 29.5.0
- slash: 3.0.0
- string-length: 4.0.2
- strip-ansi: 6.0.1
- v8-to-istanbul: 9.1.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@jest/schemas@29.4.3:
- resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@sinclair/typebox': 0.25.24
- dev: true
-
- /@jest/source-map@29.4.3:
- resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jridgewell/trace-mapping': 0.3.18
- callsites: 3.1.0
- graceful-fs: 4.2.11
- dev: true
-
- /@jest/test-result@29.5.0:
- resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/console': 29.5.0
- '@jest/types': 29.5.0
- '@types/istanbul-lib-coverage': 2.0.4
- collect-v8-coverage: 1.0.1
- dev: true
-
- /@jest/test-sequencer@29.5.0:
- resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/test-result': 29.5.0
- graceful-fs: 4.2.11
- jest-haste-map: 29.5.0
- slash: 3.0.0
- dev: true
-
- /@jest/transform@29.5.0:
- resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@babel/core': 7.21.4
- '@jest/types': 29.5.0
- '@jridgewell/trace-mapping': 0.3.18
- babel-plugin-istanbul: 6.1.1
- chalk: 4.1.2
- convert-source-map: 2.0.0
- fast-json-stable-stringify: 2.1.0
- graceful-fs: 4.2.11
- jest-haste-map: 29.5.0
- jest-regex-util: 29.4.3
- jest-util: 29.5.0
- micromatch: 4.0.5
- pirates: 4.0.5
- slash: 3.0.0
- write-file-atomic: 4.0.2
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@jest/types@29.5.0:
- resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/schemas': 29.4.3
- '@types/istanbul-lib-coverage': 2.0.4
- '@types/istanbul-reports': 3.0.1
- '@types/node': 18.16.3
- '@types/yargs': 17.0.24
- chalk: 4.1.2
- dev: true
-
- /@jridgewell/gen-mapping@0.3.3:
- resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
- engines: {node: '>=6.0.0'}
- dependencies:
- '@jridgewell/set-array': 1.1.2
- '@jridgewell/sourcemap-codec': 1.4.15
- '@jridgewell/trace-mapping': 0.3.18
- dev: true
-
- /@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==}
- engines: {node: '>=6.0.0'}
- dev: true
-
- /@jridgewell/sourcemap-codec@1.4.14:
- resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
- dev: true
-
- /@jridgewell/sourcemap-codec@1.4.15:
- resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
- dev: true
-
- /@jridgewell/trace-mapping@0.3.18:
- resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==}
- dependencies:
- '@jridgewell/resolve-uri': 3.1.0
- '@jridgewell/sourcemap-codec': 1.4.14
- dev: true
-
- /@manypkg/find-root@1.1.0:
- resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==}
- dependencies:
- '@babel/runtime': 7.21.0
- '@types/node': 12.20.55
- find-up: 4.1.0
- fs-extra: 8.1.0
- dev: true
-
- /@manypkg/get-packages@1.1.3:
- resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==}
- dependencies:
- '@babel/runtime': 7.21.0
- '@changesets/types': 4.1.0
- '@manypkg/find-root': 1.1.0
- fs-extra: 8.1.0
- globby: 11.1.0
- read-yaml-file: 1.1.0
- dev: true
-
- /@nodelib/fs.scandir@2.1.5:
- resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
- engines: {node: '>= 8'}
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- run-parallel: 1.2.0
- dev: true
-
- /@nodelib/fs.stat@2.0.5:
- resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
- engines: {node: '>= 8'}
- dev: true
-
- /@nodelib/fs.walk@1.2.8:
- resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
- engines: {node: '>= 8'}
- dependencies:
- '@nodelib/fs.scandir': 2.1.5
- fastq: 1.15.0
- dev: true
-
- /@sinclair/typebox@0.25.24:
- resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==}
- dev: true
-
- /@sinonjs/commons@2.0.0:
- resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==}
- dependencies:
- type-detect: 4.0.8
- dev: true
-
- /@sinonjs/fake-timers@10.0.2:
- resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==}
- dependencies:
- '@sinonjs/commons': 2.0.0
- dev: true
-
- /@types/babel__core@7.20.0:
- resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==}
- dependencies:
- '@babel/parser': 7.21.4
- '@babel/types': 7.21.4
- '@types/babel__generator': 7.6.4
- '@types/babel__template': 7.4.1
- '@types/babel__traverse': 7.18.3
- dev: true
-
- /@types/babel__generator@7.6.4:
- resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==}
- dependencies:
- '@babel/types': 7.21.4
- dev: true
-
- /@types/babel__template@7.4.1:
- resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==}
- dependencies:
- '@babel/parser': 7.21.4
- '@babel/types': 7.21.4
- dev: true
-
- /@types/babel__traverse@7.18.3:
- resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==}
- dependencies:
- '@babel/types': 7.21.4
- dev: true
-
- /@types/graceful-fs@4.1.6:
- resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==}
- dependencies:
- '@types/node': 18.16.3
- dev: true
-
- /@types/is-ci@3.0.0:
- resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==}
- dependencies:
- ci-info: 3.8.0
- dev: true
-
- /@types/istanbul-lib-coverage@2.0.4:
- resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==}
- dev: true
-
- /@types/istanbul-lib-report@3.0.0:
- resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==}
- dependencies:
- '@types/istanbul-lib-coverage': 2.0.4
- dev: true
-
- /@types/istanbul-reports@3.0.1:
- resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==}
- dependencies:
- '@types/istanbul-lib-report': 3.0.0
- dev: true
-
- /@types/jest@29.5.1:
- resolution: {integrity: sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==}
- dependencies:
- expect: 29.5.0
- pretty-format: 29.5.0
- dev: true
-
- /@types/json-schema@7.0.11:
- resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==}
- dev: true
-
- /@types/minimist@1.2.2:
- resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==}
- dev: true
-
- /@types/node@12.20.55:
- resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
- dev: true
-
- /@types/node@18.16.3:
- resolution: {integrity: sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==}
- dev: true
-
- /@types/normalize-package-data@2.4.1:
- resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
- dev: true
-
- /@types/prettier@2.7.2:
- resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==}
- dev: true
-
- /@types/semver@6.2.3:
- resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==}
- dev: true
-
- /@types/semver@7.3.13:
- resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==}
- dev: true
-
- /@types/stack-utils@2.0.1:
- resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==}
- dev: true
-
- /@types/yargs-parser@21.0.0:
- resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==}
- dev: true
-
- /@types/yargs@17.0.24:
- resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==}
- dependencies:
- '@types/yargs-parser': 21.0.0
- dev: true
-
- /@typescript-eslint/eslint-plugin@5.59.1(@typescript-eslint/parser@5.59.1)(eslint@8.39.0)(typescript@5.0.4):
- resolution: {integrity: sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- '@typescript-eslint/parser': ^5.0.0
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@eslint-community/regexpp': 4.5.0
- '@typescript-eslint/parser': 5.59.1(eslint@8.39.0)(typescript@5.0.4)
- '@typescript-eslint/scope-manager': 5.59.1
- '@typescript-eslint/type-utils': 5.59.1(eslint@8.39.0)(typescript@5.0.4)
- '@typescript-eslint/utils': 5.59.1(eslint@8.39.0)(typescript@5.0.4)
- debug: 4.3.4
- eslint: 8.39.0
- grapheme-splitter: 1.0.4
- ignore: 5.2.4
- natural-compare-lite: 1.4.0
- semver: 7.4.0
- tsutils: 3.21.0(typescript@5.0.4)
- typescript: 5.0.4
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@typescript-eslint/parser@5.59.1(eslint@8.39.0)(typescript@5.0.4):
- resolution: {integrity: sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@typescript-eslint/scope-manager': 5.59.1
- '@typescript-eslint/types': 5.59.1
- '@typescript-eslint/typescript-estree': 5.59.1(typescript@5.0.4)
- debug: 4.3.4
- eslint: 8.39.0
- typescript: 5.0.4
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@typescript-eslint/scope-manager@5.59.1:
- resolution: {integrity: sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dependencies:
- '@typescript-eslint/types': 5.59.1
- '@typescript-eslint/visitor-keys': 5.59.1
- dev: true
-
- /@typescript-eslint/type-utils@5.59.1(eslint@8.39.0)(typescript@5.0.4):
- resolution: {integrity: sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: '*'
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@typescript-eslint/typescript-estree': 5.59.1(typescript@5.0.4)
- '@typescript-eslint/utils': 5.59.1(eslint@8.39.0)(typescript@5.0.4)
- debug: 4.3.4
- eslint: 8.39.0
- tsutils: 3.21.0(typescript@5.0.4)
- typescript: 5.0.4
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@typescript-eslint/types@5.59.1:
- resolution: {integrity: sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dev: true
-
- /@typescript-eslint/typescript-estree@5.59.1(typescript@5.0.4):
- resolution: {integrity: sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
- dependencies:
- '@typescript-eslint/types': 5.59.1
- '@typescript-eslint/visitor-keys': 5.59.1
- debug: 4.3.4
- globby: 11.1.0
- is-glob: 4.0.3
- semver: 7.4.0
- tsutils: 3.21.0(typescript@5.0.4)
- typescript: 5.0.4
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /@typescript-eslint/utils@5.59.1(eslint@8.39.0)(typescript@5.0.4):
- resolution: {integrity: sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0)
- '@types/json-schema': 7.0.11
- '@types/semver': 7.3.13
- '@typescript-eslint/scope-manager': 5.59.1
- '@typescript-eslint/types': 5.59.1
- '@typescript-eslint/typescript-estree': 5.59.1(typescript@5.0.4)
- eslint: 8.39.0
- eslint-scope: 5.1.1
- semver: 7.4.0
- transitivePeerDependencies:
- - supports-color
- - typescript
- dev: true
-
- /@typescript-eslint/visitor-keys@5.59.1:
- resolution: {integrity: sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dependencies:
- '@typescript-eslint/types': 5.59.1
- eslint-visitor-keys: 3.4.0
- dev: true
-
- /acorn-jsx@5.3.2(acorn@8.8.2):
- resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
- peerDependencies:
- acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
- dependencies:
- acorn: 8.8.2
- dev: true
-
- /acorn@8.8.2:
- resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==}
- engines: {node: '>=0.4.0'}
- hasBin: true
- dev: true
-
- /ajv@6.12.6:
- resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
- dependencies:
- fast-deep-equal: 3.1.3
- fast-json-stable-stringify: 2.1.0
- json-schema-traverse: 0.4.1
- uri-js: 4.4.1
- dev: true
-
- /ansi-colors@4.1.3:
- resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
- engines: {node: '>=6'}
- dev: true
-
- /ansi-escapes@4.3.2:
- resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
- engines: {node: '>=8'}
- dependencies:
- type-fest: 0.21.3
- dev: true
-
- /ansi-regex@5.0.1:
- resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
- engines: {node: '>=8'}
- dev: true
-
- /ansi-sequence-parser@1.1.0:
- resolution: {integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==}
- dev: true
-
- /ansi-styles@3.2.1:
- resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
- engines: {node: '>=4'}
- dependencies:
- color-convert: 1.9.3
- dev: true
-
- /ansi-styles@4.3.0:
- resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
- engines: {node: '>=8'}
- dependencies:
- color-convert: 2.0.1
- dev: true
-
- /ansi-styles@5.2.0:
- resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
- engines: {node: '>=10'}
- dev: true
-
- /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
-
- /argparse@1.0.10:
- resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
- dependencies:
- sprintf-js: 1.0.3
- dev: true
-
- /argparse@2.0.1:
- resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
- dev: true
-
- /array-buffer-byte-length@1.0.0:
- resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==}
- dependencies:
- call-bind: 1.0.2
- is-array-buffer: 3.0.2
- dev: true
-
- /array-union@2.1.0:
- resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
- engines: {node: '>=8'}
- dev: true
-
- /array.prototype.flat@1.3.1:
- resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.2.0
- es-abstract: 1.21.2
- es-shim-unscopables: 1.0.0
- dev: true
-
- /arrify@1.0.1:
- resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /available-typed-arrays@1.0.5:
- resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
- engines: {node: '>= 0.4'}
- dev: true
-
- /babel-jest@29.5.0(@babel/core@7.21.4):
- resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- peerDependencies:
- '@babel/core': ^7.8.0
- dependencies:
- '@babel/core': 7.21.4
- '@jest/transform': 29.5.0
- '@types/babel__core': 7.20.0
- babel-plugin-istanbul: 6.1.1
- babel-preset-jest: 29.5.0(@babel/core@7.21.4)
- chalk: 4.1.2
- graceful-fs: 4.2.11
- slash: 3.0.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /babel-plugin-istanbul@6.1.1:
- resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==}
- engines: {node: '>=8'}
- dependencies:
- '@babel/helper-plugin-utils': 7.20.2
- '@istanbuljs/load-nyc-config': 1.1.0
- '@istanbuljs/schema': 0.1.3
- istanbul-lib-instrument: 5.2.1
- test-exclude: 6.0.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /babel-plugin-jest-hoist@29.5.0:
- resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@babel/template': 7.20.7
- '@babel/types': 7.21.4
- '@types/babel__core': 7.20.0
- '@types/babel__traverse': 7.18.3
- dev: true
-
- /babel-preset-current-node-syntax@1.0.1(@babel/core@7.21.4):
- resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==}
- peerDependencies:
- '@babel/core': ^7.0.0
- dependencies:
- '@babel/core': 7.21.4
- '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.4)
- '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.21.4)
- '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.4)
- '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.21.4)
- '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.4)
- '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.4)
- '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.4)
- '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.4)
- '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.4)
- '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.4)
- '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.4)
- '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.4)
- dev: true
-
- /babel-preset-jest@29.5.0(@babel/core@7.21.4):
- resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- peerDependencies:
- '@babel/core': ^7.0.0
- dependencies:
- '@babel/core': 7.21.4
- babel-plugin-jest-hoist: 29.5.0
- babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.4)
- dev: true
-
- /balanced-match@1.0.2:
- resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
- dev: true
-
- /better-path-resolve@1.0.0:
- resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==}
- engines: {node: '>=4'}
- dependencies:
- is-windows: 1.0.2
- dev: true
-
- /brace-expansion@1.1.11:
- resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
- dependencies:
- balanced-match: 1.0.2
- concat-map: 0.0.1
- dev: true
-
- /brace-expansion@2.0.1:
- resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
- dependencies:
- balanced-match: 1.0.2
- dev: true
-
- /braces@3.0.2:
- resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
- engines: {node: '>=8'}
- dependencies:
- fill-range: 7.0.1
- dev: true
-
- /breakword@1.0.5:
- resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==}
- dependencies:
- wcwidth: 1.0.1
- dev: true
-
- /browserslist@4.21.5:
- resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==}
- engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
- dependencies:
- caniuse-lite: 1.0.30001478
- electron-to-chromium: 1.4.365
- node-releases: 2.0.10
- update-browserslist-db: 1.0.11(browserslist@4.21.5)
- dev: true
-
- /bs-logger@0.2.6:
- resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==}
- engines: {node: '>= 6'}
- dependencies:
- fast-json-stable-stringify: 2.1.0
- dev: true
-
- /bser@2.1.1:
- resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
- dependencies:
- node-int64: 0.4.0
- dev: true
-
- /buffer-from@1.1.2:
- resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
- dev: true
-
- /call-bind@1.0.2:
- resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
- dependencies:
- function-bind: 1.1.1
- get-intrinsic: 1.2.0
- dev: true
-
- /callsites@3.1.0:
- resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
- engines: {node: '>=6'}
- dev: true
-
- /camelcase-keys@6.2.2:
- resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
- engines: {node: '>=8'}
- dependencies:
- camelcase: 5.3.1
- map-obj: 4.3.0
- quick-lru: 4.0.1
- dev: true
-
- /camelcase@5.3.1:
- resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
- engines: {node: '>=6'}
- dev: true
-
- /camelcase@6.3.0:
- resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
- engines: {node: '>=10'}
- dev: true
-
- /caniuse-lite@1.0.30001478:
- resolution: {integrity: sha512-gMhDyXGItTHipJj2ApIvR+iVB5hd0KP3svMWWXDvZOmjzJJassGLMfxRkQCSYgGd2gtdL/ReeiyvMSFD1Ss6Mw==}
- dev: true
-
- /chalk@2.4.2:
- resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
- engines: {node: '>=4'}
- dependencies:
- ansi-styles: 3.2.1
- escape-string-regexp: 1.0.5
- supports-color: 5.5.0
- dev: true
-
- /chalk@4.1.2:
- resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
- engines: {node: '>=10'}
- dependencies:
- ansi-styles: 4.3.0
- supports-color: 7.2.0
- dev: true
-
- /char-regex@1.0.2:
- resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
- engines: {node: '>=10'}
- dev: true
-
- /chardet@0.7.0:
- resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
- dev: true
-
- /ci-info@3.8.0:
- resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==}
- engines: {node: '>=8'}
- dev: true
-
- /cjs-module-lexer@1.2.2:
- resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==}
- dev: true
-
- /cliui@6.0.0:
- resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
- dependencies:
- string-width: 4.2.3
- strip-ansi: 6.0.1
- wrap-ansi: 6.2.0
- dev: true
-
- /cliui@8.0.1:
- resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
- engines: {node: '>=12'}
- dependencies:
- string-width: 4.2.3
- strip-ansi: 6.0.1
- wrap-ansi: 7.0.0
- dev: true
-
- /clone@1.0.4:
- resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
- engines: {node: '>=0.8'}
- dev: true
-
- /co@4.6.0:
- resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==}
- engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
- dev: true
-
- /collect-v8-coverage@1.0.1:
- resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==}
- dev: true
-
- /color-convert@1.9.3:
- resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
- dependencies:
- color-name: 1.1.3
- dev: true
-
- /color-convert@2.0.1:
- resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
- engines: {node: '>=7.0.0'}
- dependencies:
- color-name: 1.1.4
- dev: true
-
- /color-name@1.1.3:
- resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
- dev: true
-
- /color-name@1.1.4:
- resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
- dev: true
-
- /concat-map@0.0.1:
- resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
- dev: true
-
- /convert-source-map@1.9.0:
- resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
- dev: true
-
- /convert-source-map@2.0.0:
- resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
- dev: true
-
- /cross-spawn@5.1.0:
- resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==}
- dependencies:
- lru-cache: 4.1.5
- shebang-command: 1.2.0
- which: 1.3.1
- dev: true
-
- /cross-spawn@7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
- dev: true
-
- /csv-generate@3.4.3:
- resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==}
- dev: true
-
- /csv-parse@4.16.3:
- resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==}
- dev: true
-
- /csv-stringify@5.6.5:
- resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==}
- dev: true
-
- /csv@5.5.3:
- resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==}
- engines: {node: '>= 0.1.90'}
- dependencies:
- csv-generate: 3.4.3
- csv-parse: 4.16.3
- csv-stringify: 5.6.5
- stream-transform: 2.1.3
- dev: true
-
- /debug@4.3.4:
- resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
- dependencies:
- ms: 2.1.2
- dev: true
-
- /decamelize-keys@1.1.1:
- resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- decamelize: 1.2.0
- map-obj: 1.0.1
- dev: true
-
- /decamelize@1.2.0:
- resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /dedent@0.7.0:
- resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==}
- dev: true
-
- /deep-is@0.1.4:
- resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
- dev: true
-
- /deepmerge@4.3.1:
- resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /defaults@1.0.4:
- resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
- dependencies:
- clone: 1.0.4
- dev: true
-
- /define-properties@1.2.0:
- resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==}
- engines: {node: '>= 0.4'}
- dependencies:
- has-property-descriptors: 1.0.0
- object-keys: 1.1.1
- dev: true
-
- /detect-indent@6.1.0:
- resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
- engines: {node: '>=8'}
- dev: true
-
- /detect-newline@3.1.0:
- resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==}
- engines: {node: '>=8'}
- dev: true
-
- /diff-sequences@29.4.3:
- resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dev: true
-
- /dir-glob@3.0.1:
- resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
- engines: {node: '>=8'}
- dependencies:
- path-type: 4.0.0
- dev: true
-
- /doctrine@3.0.0:
- resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
- engines: {node: '>=6.0.0'}
- dependencies:
- esutils: 2.0.3
- dev: true
-
- /electron-to-chromium@1.4.365:
- resolution: {integrity: sha512-FRHZO+1tUNO4TOPXmlxetkoaIY8uwHzd1kKopK/Gx2SKn1L47wJXWD44wxP5CGRyyP98z/c8e1eBzJrgPeiBOg==}
- dev: true
-
- /emittery@0.13.1:
- resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
- engines: {node: '>=12'}
- dev: true
-
- /emoji-regex@8.0.0:
- resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
- dev: true
-
- /enquirer@2.3.6:
- resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==}
- engines: {node: '>=8.6'}
- dependencies:
- ansi-colors: 4.1.3
- dev: true
-
- /error-ex@1.3.2:
- resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
- dependencies:
- is-arrayish: 0.2.1
- dev: true
-
- /es-abstract@1.21.2:
- resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==}
- engines: {node: '>= 0.4'}
- dependencies:
- array-buffer-byte-length: 1.0.0
- available-typed-arrays: 1.0.5
- call-bind: 1.0.2
- es-set-tostringtag: 2.0.1
- es-to-primitive: 1.2.1
- function.prototype.name: 1.1.5
- get-intrinsic: 1.2.0
- get-symbol-description: 1.0.0
- globalthis: 1.0.3
- gopd: 1.0.1
- has: 1.0.3
- has-property-descriptors: 1.0.0
- has-proto: 1.0.1
- has-symbols: 1.0.3
- internal-slot: 1.0.5
- is-array-buffer: 3.0.2
- is-callable: 1.2.7
- is-negative-zero: 2.0.2
- is-regex: 1.1.4
- is-shared-array-buffer: 1.0.2
- is-string: 1.0.7
- is-typed-array: 1.1.10
- is-weakref: 1.0.2
- object-inspect: 1.12.3
- object-keys: 1.1.1
- object.assign: 4.1.4
- regexp.prototype.flags: 1.5.0
- safe-regex-test: 1.0.0
- string.prototype.trim: 1.2.7
- string.prototype.trimend: 1.0.6
- string.prototype.trimstart: 1.0.6
- typed-array-length: 1.0.4
- unbox-primitive: 1.0.2
- which-typed-array: 1.1.9
- dev: true
-
- /es-set-tostringtag@2.0.1:
- resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==}
- engines: {node: '>= 0.4'}
- dependencies:
- get-intrinsic: 1.2.0
- has: 1.0.3
- has-tostringtag: 1.0.0
- dev: true
-
- /es-shim-unscopables@1.0.0:
- resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==}
- dependencies:
- has: 1.0.3
- dev: true
-
- /es-to-primitive@1.2.1:
- resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
- engines: {node: '>= 0.4'}
- dependencies:
- is-callable: 1.2.7
- is-date-object: 1.0.5
- is-symbol: 1.0.4
- dev: true
-
- /escalade@3.1.1:
- resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
- engines: {node: '>=6'}
- dev: true
-
- /escape-string-regexp@1.0.5:
- resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
- engines: {node: '>=0.8.0'}
- dev: true
-
- /escape-string-regexp@2.0.0:
- resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
- engines: {node: '>=8'}
- dev: true
-
- /escape-string-regexp@4.0.0:
- resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
- engines: {node: '>=10'}
- dev: true
-
- /eslint-config-prettier@8.8.0(eslint@8.39.0):
- resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==}
- hasBin: true
- peerDependencies:
- eslint: '>=7.0.0'
- dependencies:
- eslint: 8.39.0
- dev: true
-
- /eslint-scope@5.1.1:
- resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
- engines: {node: '>=8.0.0'}
- dependencies:
- esrecurse: 4.3.0
- estraverse: 4.3.0
- dev: true
-
- /eslint-scope@7.2.0:
- resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dependencies:
- esrecurse: 4.3.0
- estraverse: 5.3.0
- dev: true
-
- /eslint-visitor-keys@3.4.0:
- resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dev: true
-
- /eslint@8.39.0:
- resolution: {integrity: sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- hasBin: true
- dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0)
- '@eslint-community/regexpp': 4.5.0
- '@eslint/eslintrc': 2.0.2
- '@eslint/js': 8.39.0
- '@humanwhocodes/config-array': 0.11.8
- '@humanwhocodes/module-importer': 1.0.1
- '@nodelib/fs.walk': 1.2.8
- ajv: 6.12.6
- chalk: 4.1.2
- cross-spawn: 7.0.3
- debug: 4.3.4
- doctrine: 3.0.0
- escape-string-regexp: 4.0.0
- eslint-scope: 7.2.0
- eslint-visitor-keys: 3.4.0
- espree: 9.5.1
- esquery: 1.5.0
- esutils: 2.0.3
- fast-deep-equal: 3.1.3
- file-entry-cache: 6.0.1
- find-up: 5.0.0
- glob-parent: 6.0.2
- globals: 13.20.0
- grapheme-splitter: 1.0.4
- ignore: 5.2.4
- import-fresh: 3.3.0
- imurmurhash: 0.1.4
- is-glob: 4.0.3
- is-path-inside: 3.0.3
- js-sdsl: 4.4.0
- js-yaml: 4.1.0
- json-stable-stringify-without-jsonify: 1.0.1
- levn: 0.4.1
- lodash.merge: 4.6.2
- minimatch: 3.1.2
- natural-compare: 1.4.0
- optionator: 0.9.1
- strip-ansi: 6.0.1
- strip-json-comments: 3.1.1
- text-table: 0.2.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /espree@9.5.1:
- resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- dependencies:
- acorn: 8.8.2
- acorn-jsx: 5.3.2(acorn@8.8.2)
- eslint-visitor-keys: 3.4.0
- dev: true
-
- /esprima@4.0.1:
- resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
- engines: {node: '>=4'}
- hasBin: true
- dev: true
-
- /esquery@1.5.0:
- resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
- engines: {node: '>=0.10'}
- dependencies:
- estraverse: 5.3.0
- dev: true
-
- /esrecurse@4.3.0:
- resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
- engines: {node: '>=4.0'}
- dependencies:
- estraverse: 5.3.0
- dev: true
-
- /estraverse@4.3.0:
- resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
- engines: {node: '>=4.0'}
- dev: true
-
- /estraverse@5.3.0:
- resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
- engines: {node: '>=4.0'}
- dev: true
-
- /esutils@2.0.3:
- resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /execa@5.1.1:
- resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
- engines: {node: '>=10'}
- dependencies:
- cross-spawn: 7.0.3
- get-stream: 6.0.1
- human-signals: 2.1.0
- is-stream: 2.0.1
- merge-stream: 2.0.0
- npm-run-path: 4.0.1
- onetime: 5.1.2
- signal-exit: 3.0.7
- strip-final-newline: 2.0.0
- dev: true
-
- /exit@0.1.2:
- resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==}
- engines: {node: '>= 0.8.0'}
- dev: true
-
- /expect@29.5.0:
- resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/expect-utils': 29.5.0
- jest-get-type: 29.4.3
- jest-matcher-utils: 29.5.0
- jest-message-util: 29.5.0
- jest-util: 29.5.0
- dev: true
-
- /extendable-error@0.1.7:
- resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==}
- dev: true
-
- /external-editor@3.1.0:
- resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
- engines: {node: '>=4'}
- dependencies:
- chardet: 0.7.0
- iconv-lite: 0.4.24
- tmp: 0.0.33
- dev: true
-
- /fast-deep-equal@3.1.3:
- resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
- dev: true
-
- /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.5
- dev: true
-
- /fast-json-stable-stringify@2.1.0:
- resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
- dev: true
-
- /fast-levenshtein@2.0.6:
- resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
- dev: true
-
- /fastq@1.15.0:
- resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
- dependencies:
- reusify: 1.0.4
- dev: true
-
- /fb-watchman@2.0.2:
- resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
- dependencies:
- bser: 2.1.1
- dev: true
-
- /file-entry-cache@6.0.1:
- resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
- engines: {node: ^10.12.0 || >=12.0.0}
- dependencies:
- flat-cache: 3.0.4
- 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-up@4.1.0:
- resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
- engines: {node: '>=8'}
- dependencies:
- locate-path: 5.0.0
- path-exists: 4.0.0
- dev: true
-
- /find-up@5.0.0:
- resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
- engines: {node: '>=10'}
- dependencies:
- locate-path: 6.0.0
- path-exists: 4.0.0
- dev: true
-
- /find-yarn-workspace-root2@1.2.16:
- resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==}
- dependencies:
- micromatch: 4.0.5
- pkg-dir: 4.2.0
- dev: true
-
- /flat-cache@3.0.4:
- resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
- engines: {node: ^10.12.0 || >=12.0.0}
- dependencies:
- flatted: 3.2.7
- rimraf: 3.0.2
- dev: true
-
- /flatted@3.2.7:
- resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
- dev: true
-
- /for-each@0.3.3:
- resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
- dependencies:
- is-callable: 1.2.7
- dev: true
-
- /fs-extra@7.0.1:
- resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
- engines: {node: '>=6 <7 || >=8'}
- dependencies:
- graceful-fs: 4.2.11
- jsonfile: 4.0.0
- universalify: 0.1.2
- dev: true
-
- /fs-extra@8.1.0:
- resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
- engines: {node: '>=6 <7 || >=8'}
- dependencies:
- graceful-fs: 4.2.11
- jsonfile: 4.0.0
- universalify: 0.1.2
- dev: true
-
- /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-bind@1.1.1:
- resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
- dev: true
-
- /function.prototype.name@1.1.5:
- resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.2.0
- es-abstract: 1.21.2
- functions-have-names: 1.2.3
- dev: true
-
- /functions-have-names@1.2.3:
- resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
- dev: true
-
- /gensync@1.0.0-beta.2:
- resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
- engines: {node: '>=6.9.0'}
- dev: true
-
- /get-caller-file@2.0.5:
- resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
- engines: {node: 6.* || 8.* || >= 10.*}
- dev: true
-
- /get-intrinsic@1.2.0:
- resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==}
- dependencies:
- function-bind: 1.1.1
- has: 1.0.3
- has-symbols: 1.0.3
- dev: true
-
- /get-package-type@0.1.0:
- resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
- engines: {node: '>=8.0.0'}
- dev: true
-
- /get-stream@6.0.1:
- resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
- engines: {node: '>=10'}
- dev: true
-
- /get-symbol-description@1.0.0:
- resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.0
- 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-parent@6.0.2:
- resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
- engines: {node: '>=10.13.0'}
- dependencies:
- is-glob: 4.0.3
- dev: true
-
- /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
-
- /globals@11.12.0:
- resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
- engines: {node: '>=4'}
- dev: true
-
- /globals@13.20.0:
- resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==}
- engines: {node: '>=8'}
- dependencies:
- type-fest: 0.20.2
- dev: true
-
- /globalthis@1.0.3:
- resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
- engines: {node: '>= 0.4'}
- dependencies:
- define-properties: 1.2.0
- dev: true
-
- /globby@11.1.0:
- resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
- engines: {node: '>=10'}
- dependencies:
- array-union: 2.1.0
- dir-glob: 3.0.1
- fast-glob: 3.2.12
- ignore: 5.2.4
- merge2: 1.4.1
- slash: 3.0.0
- dev: true
-
- /gopd@1.0.1:
- resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
- dependencies:
- get-intrinsic: 1.2.0
- dev: true
-
- /graceful-fs@4.2.11:
- resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
- dev: true
-
- /grapheme-splitter@1.0.4:
- resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
- dev: true
-
- /hard-rejection@2.1.0:
- resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==}
- engines: {node: '>=6'}
- dev: true
-
- /has-bigints@1.0.2:
- resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
- dev: true
-
- /has-flag@3.0.0:
- resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
- engines: {node: '>=4'}
- dev: true
-
- /has-flag@4.0.0:
- resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
- engines: {node: '>=8'}
- dev: true
-
- /has-property-descriptors@1.0.0:
- resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
- dependencies:
- get-intrinsic: 1.2.0
- dev: true
-
- /has-proto@1.0.1:
- resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
- engines: {node: '>= 0.4'}
- dev: true
-
- /has-symbols@1.0.3:
- resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
- engines: {node: '>= 0.4'}
- dev: true
-
- /has-tostringtag@1.0.0:
- resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- has-symbols: 1.0.3
- dev: true
-
- /has@1.0.3:
- resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
- engines: {node: '>= 0.4.0'}
- dependencies:
- function-bind: 1.1.1
- dev: true
-
- /hosted-git-info@2.8.9:
- resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
- dev: true
-
- /html-escaper@2.0.2:
- resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
- dev: true
-
- /human-id@1.0.2:
- resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==}
- dev: true
-
- /human-signals@2.1.0:
- resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
- engines: {node: '>=10.17.0'}
- dev: true
-
- /iconv-lite@0.4.24:
- resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
- engines: {node: '>=0.10.0'}
- dependencies:
- safer-buffer: 2.1.2
- dev: true
-
- /ignore@5.2.4:
- resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
- engines: {node: '>= 4'}
- dev: true
-
- /import-fresh@3.3.0:
- resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
- engines: {node: '>=6'}
- dependencies:
- parent-module: 1.0.1
- resolve-from: 4.0.0
- dev: true
-
- /import-local@3.1.0:
- resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==}
- engines: {node: '>=8'}
- hasBin: true
- dependencies:
- pkg-dir: 4.2.0
- resolve-cwd: 3.0.0
- dev: true
-
- /imurmurhash@0.1.4:
- resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
- engines: {node: '>=0.8.19'}
- dev: true
-
- /indent-string@4.0.0:
- resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
- engines: {node: '>=8'}
- dev: true
-
- /inflight@1.0.6:
- 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
-
- /internal-slot@1.0.5:
- resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- get-intrinsic: 1.2.0
- has: 1.0.3
- side-channel: 1.0.4
- dev: true
-
- /is-array-buffer@3.0.2:
- resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
- dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.0
- is-typed-array: 1.1.10
- dev: true
-
- /is-arrayish@0.2.1:
- resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
- dev: true
-
- /is-bigint@1.0.4:
- resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
- dependencies:
- has-bigints: 1.0.2
- dev: true
-
- /is-boolean-object@1.1.2:
- resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- has-tostringtag: 1.0.0
- dev: true
-
- /is-callable@1.2.7:
- resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
- engines: {node: '>= 0.4'}
- dev: true
-
- /is-ci@3.0.1:
- resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==}
- hasBin: true
- dependencies:
- ci-info: 3.8.0
- dev: true
-
- /is-core-module@2.12.0:
- resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==}
- dependencies:
- has: 1.0.3
- dev: true
-
- /is-date-object@1.0.5:
- resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- has-tostringtag: 1.0.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==}
- engines: {node: '>=8'}
- dev: true
-
- /is-generator-fn@2.1.0:
- resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==}
- engines: {node: '>=6'}
- dev: true
-
- /is-glob@4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- is-extglob: 2.1.1
- dev: true
-
- /is-negative-zero@2.0.2:
- resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
- engines: {node: '>= 0.4'}
- dev: true
-
- /is-number-object@1.0.7:
- resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- has-tostringtag: 1.0.0
- dev: true
-
- /is-number@7.0.0:
- resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
- engines: {node: '>=0.12.0'}
- dev: true
-
- /is-path-inside@3.0.3:
- resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
- engines: {node: '>=8'}
- dev: true
-
- /is-plain-obj@1.1.0:
- resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /is-regex@1.1.4:
- resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- has-tostringtag: 1.0.0
- dev: true
-
- /is-shared-array-buffer@1.0.2:
- resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
- dependencies:
- call-bind: 1.0.2
- dev: true
-
- /is-stream@2.0.1:
- resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
- engines: {node: '>=8'}
- dev: true
-
- /is-string@1.0.7:
- resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
- engines: {node: '>= 0.4'}
- dependencies:
- has-tostringtag: 1.0.0
- dev: true
-
- /is-subdir@1.2.0:
- resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==}
- engines: {node: '>=4'}
- dependencies:
- better-path-resolve: 1.0.0
- dev: true
-
- /is-symbol@1.0.4:
- resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
- engines: {node: '>= 0.4'}
- dependencies:
- has-symbols: 1.0.3
- dev: true
-
- /is-typed-array@1.1.10:
- resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==}
- engines: {node: '>= 0.4'}
- dependencies:
- available-typed-arrays: 1.0.5
- call-bind: 1.0.2
- for-each: 0.3.3
- gopd: 1.0.1
- has-tostringtag: 1.0.0
- dev: true
-
- /is-weakref@1.0.2:
- resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
- dependencies:
- call-bind: 1.0.2
- dev: true
-
- /is-windows@1.0.2:
- resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
- dev: true
-
- /istanbul-lib-coverage@3.2.0:
- resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==}
- engines: {node: '>=8'}
- dev: true
-
- /istanbul-lib-instrument@5.2.1:
- resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==}
- engines: {node: '>=8'}
- dependencies:
- '@babel/core': 7.21.4
- '@babel/parser': 7.21.4
- '@istanbuljs/schema': 0.1.3
- istanbul-lib-coverage: 3.2.0
- semver: 6.3.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /istanbul-lib-report@3.0.0:
- resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==}
- engines: {node: '>=8'}
- dependencies:
- istanbul-lib-coverage: 3.2.0
- make-dir: 3.1.0
- supports-color: 7.2.0
- dev: true
-
- /istanbul-lib-source-maps@4.0.1:
- resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==}
- engines: {node: '>=10'}
- dependencies:
- debug: 4.3.4
- istanbul-lib-coverage: 3.2.0
- source-map: 0.6.1
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /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
-
- /jest-changed-files@29.5.0:
- resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- execa: 5.1.1
- p-limit: 3.1.0
- dev: true
-
- /jest-circus@29.5.0:
- resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/environment': 29.5.0
- '@jest/expect': 29.5.0
- '@jest/test-result': 29.5.0
- '@jest/types': 29.5.0
- '@types/node': 18.16.3
- chalk: 4.1.2
- co: 4.6.0
- dedent: 0.7.0
- is-generator-fn: 2.1.0
- jest-each: 29.5.0
- jest-matcher-utils: 29.5.0
- jest-message-util: 29.5.0
- jest-runtime: 29.5.0
- jest-snapshot: 29.5.0
- jest-util: 29.5.0
- p-limit: 3.1.0
- pretty-format: 29.5.0
- pure-rand: 6.0.1
- slash: 3.0.0
- stack-utils: 2.0.6
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /jest-cli@29.5.0(@types/node@18.16.3):
- resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- hasBin: true
- peerDependencies:
- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
- peerDependenciesMeta:
- node-notifier:
- optional: true
- dependencies:
- '@jest/core': 29.5.0
- '@jest/test-result': 29.5.0
- '@jest/types': 29.5.0
- chalk: 4.1.2
- exit: 0.1.2
- graceful-fs: 4.2.11
- import-local: 3.1.0
- jest-config: 29.5.0(@types/node@18.16.3)
- jest-util: 29.5.0
- jest-validate: 29.5.0
- prompts: 2.4.2
- yargs: 17.7.1
- transitivePeerDependencies:
- - '@types/node'
- - supports-color
- - ts-node
- dev: true
-
- /jest-config@29.5.0(@types/node@18.16.3):
- resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- peerDependencies:
- '@types/node': '*'
- ts-node: '>=9.0.0'
- peerDependenciesMeta:
- '@types/node':
- optional: true
- ts-node:
- optional: true
- dependencies:
- '@babel/core': 7.21.4
- '@jest/test-sequencer': 29.5.0
- '@jest/types': 29.5.0
- '@types/node': 18.16.3
- babel-jest: 29.5.0(@babel/core@7.21.4)
- chalk: 4.1.2
- ci-info: 3.8.0
- deepmerge: 4.3.1
- glob: 7.2.3
- graceful-fs: 4.2.11
- jest-circus: 29.5.0
- jest-environment-node: 29.5.0
- jest-get-type: 29.4.3
- jest-regex-util: 29.4.3
- jest-resolve: 29.5.0
- jest-runner: 29.5.0
- jest-util: 29.5.0
- jest-validate: 29.5.0
- micromatch: 4.0.5
- parse-json: 5.2.0
- pretty-format: 29.5.0
- slash: 3.0.0
- strip-json-comments: 3.1.1
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /jest-diff@29.5.0:
- resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- chalk: 4.1.2
- diff-sequences: 29.4.3
- jest-get-type: 29.4.3
- pretty-format: 29.5.0
- dev: true
-
- /jest-docblock@29.4.3:
- resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- detect-newline: 3.1.0
- dev: true
-
- /jest-each@29.5.0:
- resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/types': 29.5.0
- chalk: 4.1.2
- jest-get-type: 29.4.3
- jest-util: 29.5.0
- pretty-format: 29.5.0
- dev: true
-
- /jest-environment-node@29.5.0:
- resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/environment': 29.5.0
- '@jest/fake-timers': 29.5.0
- '@jest/types': 29.5.0
- '@types/node': 18.16.3
- jest-mock: 29.5.0
- jest-util: 29.5.0
- dev: true
-
- /jest-extended@3.2.4(jest@29.5.0):
- resolution: {integrity: sha512-lSEYhSmvXZG/7YXI7KO3LpiUiQ90gi5giwCJNDMMsX5a+/NZhdbQF2G4ALOBN+KcXVT3H6FPVPohAuMXooaLTQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- peerDependencies:
- jest: '>=27.2.5'
- peerDependenciesMeta:
- jest:
- optional: true
- dependencies:
- jest: 29.5.0(@types/node@18.16.3)
- jest-diff: 29.5.0
- jest-get-type: 29.4.3
- dev: true
-
- /jest-get-type@29.4.3:
- resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dev: true
-
- /jest-haste-map@29.5.0:
- resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/types': 29.5.0
- '@types/graceful-fs': 4.1.6
- '@types/node': 18.16.3
- anymatch: 3.1.3
- fb-watchman: 2.0.2
- graceful-fs: 4.2.11
- jest-regex-util: 29.4.3
- jest-util: 29.5.0
- jest-worker: 29.5.0
- micromatch: 4.0.5
- walker: 1.0.8
- optionalDependencies:
- fsevents: 2.3.2
- dev: true
-
- /jest-leak-detector@29.5.0:
- resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- jest-get-type: 29.4.3
- pretty-format: 29.5.0
- dev: true
-
- /jest-matcher-utils@29.5.0:
- resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- chalk: 4.1.2
- jest-diff: 29.5.0
- jest-get-type: 29.4.3
- pretty-format: 29.5.0
- dev: true
-
- /jest-message-util@29.5.0:
- resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@babel/code-frame': 7.21.4
- '@jest/types': 29.5.0
- '@types/stack-utils': 2.0.1
- chalk: 4.1.2
- graceful-fs: 4.2.11
- micromatch: 4.0.5
- pretty-format: 29.5.0
- slash: 3.0.0
- stack-utils: 2.0.6
- dev: true
-
- /jest-mock@29.5.0:
- resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/types': 29.5.0
- '@types/node': 18.16.3
- jest-util: 29.5.0
- dev: true
-
- /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0):
- resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==}
- engines: {node: '>=6'}
- peerDependencies:
- jest-resolve: '*'
- peerDependenciesMeta:
- jest-resolve:
- optional: true
- dependencies:
- jest-resolve: 29.5.0
- dev: true
-
- /jest-regex-util@29.4.3:
- resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dev: true
-
- /jest-resolve-dependencies@29.5.0:
- resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- jest-regex-util: 29.4.3
- jest-snapshot: 29.5.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /jest-resolve@29.5.0:
- resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- chalk: 4.1.2
- graceful-fs: 4.2.11
- jest-haste-map: 29.5.0
- jest-pnp-resolver: 1.2.3(jest-resolve@29.5.0)
- jest-util: 29.5.0
- jest-validate: 29.5.0
- resolve: 1.22.3
- resolve.exports: 2.0.2
- slash: 3.0.0
- dev: true
-
- /jest-runner@29.5.0:
- resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/console': 29.5.0
- '@jest/environment': 29.5.0
- '@jest/test-result': 29.5.0
- '@jest/transform': 29.5.0
- '@jest/types': 29.5.0
- '@types/node': 18.16.3
- chalk: 4.1.2
- emittery: 0.13.1
- graceful-fs: 4.2.11
- jest-docblock: 29.4.3
- jest-environment-node: 29.5.0
- jest-haste-map: 29.5.0
- jest-leak-detector: 29.5.0
- jest-message-util: 29.5.0
- jest-resolve: 29.5.0
- jest-runtime: 29.5.0
- jest-util: 29.5.0
- jest-watcher: 29.5.0
- jest-worker: 29.5.0
- p-limit: 3.1.0
- source-map-support: 0.5.13
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /jest-runtime@29.5.0:
- resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/environment': 29.5.0
- '@jest/fake-timers': 29.5.0
- '@jest/globals': 29.5.0
- '@jest/source-map': 29.4.3
- '@jest/test-result': 29.5.0
- '@jest/transform': 29.5.0
- '@jest/types': 29.5.0
- '@types/node': 18.16.3
- chalk: 4.1.2
- cjs-module-lexer: 1.2.2
- collect-v8-coverage: 1.0.1
- glob: 7.2.3
- graceful-fs: 4.2.11
- jest-haste-map: 29.5.0
- jest-message-util: 29.5.0
- jest-mock: 29.5.0
- jest-regex-util: 29.4.3
- jest-resolve: 29.5.0
- jest-snapshot: 29.5.0
- jest-util: 29.5.0
- slash: 3.0.0
- strip-bom: 4.0.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /jest-snapshot@29.5.0:
- resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@babel/core': 7.21.4
- '@babel/generator': 7.21.4
- '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.4)
- '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.21.4)
- '@babel/traverse': 7.21.4
- '@babel/types': 7.21.4
- '@jest/expect-utils': 29.5.0
- '@jest/transform': 29.5.0
- '@jest/types': 29.5.0
- '@types/babel__traverse': 7.18.3
- '@types/prettier': 2.7.2
- babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.4)
- chalk: 4.1.2
- expect: 29.5.0
- graceful-fs: 4.2.11
- jest-diff: 29.5.0
- jest-get-type: 29.4.3
- jest-matcher-utils: 29.5.0
- jest-message-util: 29.5.0
- jest-util: 29.5.0
- natural-compare: 1.4.0
- pretty-format: 29.5.0
- semver: 7.4.0
- transitivePeerDependencies:
- - supports-color
- dev: true
-
- /jest-util@29.5.0:
- resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/types': 29.5.0
- '@types/node': 18.16.3
- chalk: 4.1.2
- ci-info: 3.8.0
- graceful-fs: 4.2.11
- picomatch: 2.3.1
- dev: true
-
- /jest-validate@29.5.0:
- resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/types': 29.5.0
- camelcase: 6.3.0
- chalk: 4.1.2
- jest-get-type: 29.4.3
- leven: 3.1.0
- pretty-format: 29.5.0
- dev: true
-
- /jest-watcher@29.5.0:
- resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/test-result': 29.5.0
- '@jest/types': 29.5.0
- '@types/node': 18.16.3
- ansi-escapes: 4.3.2
- chalk: 4.1.2
- emittery: 0.13.1
- jest-util: 29.5.0
- string-length: 4.0.2
- dev: true
-
- /jest-worker@29.5.0:
- resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@types/node': 18.16.3
- jest-util: 29.5.0
- merge-stream: 2.0.0
- supports-color: 8.1.1
- dev: true
-
- /jest@29.5.0(@types/node@18.16.3):
- resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- hasBin: true
- peerDependencies:
- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
- peerDependenciesMeta:
- node-notifier:
- optional: true
- dependencies:
- '@jest/core': 29.5.0
- '@jest/types': 29.5.0
- import-local: 3.1.0
- jest-cli: 29.5.0(@types/node@18.16.3)
- transitivePeerDependencies:
- - '@types/node'
- - supports-color
- - ts-node
- dev: true
-
- /js-sdsl@4.4.0:
- resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==}
- dev: true
-
- /js-tokens@4.0.0:
- resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
- dev: true
-
- /js-yaml@3.14.1:
- resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
- hasBin: true
- dependencies:
- argparse: 1.0.10
- esprima: 4.0.1
- dev: true
-
- /js-yaml@4.1.0:
- resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
- hasBin: true
- dependencies:
- argparse: 2.0.1
- dev: true
-
- /jsesc@2.5.2:
- resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
- engines: {node: '>=4'}
- hasBin: true
- dev: true
-
- /json-parse-even-better-errors@2.3.1:
- resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
- dev: true
-
- /json-schema-traverse@0.4.1:
- resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
- dev: true
-
- /json-stable-stringify-without-jsonify@1.0.1:
- resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
- dev: true
-
- /json5@2.2.3:
- resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
- engines: {node: '>=6'}
- hasBin: true
- dev: true
-
- /jsonc-parser@3.2.0:
- resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==}
- dev: true
-
- /jsonfile@4.0.0:
- resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
- optionalDependencies:
- graceful-fs: 4.2.11
- dev: true
-
- /kind-of@6.0.3:
- resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /kleur@3.0.3:
- resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
- engines: {node: '>=6'}
- dev: true
-
- /kleur@4.1.5:
- resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
- engines: {node: '>=6'}
- dev: true
-
- /leven@3.1.0:
- resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
- engines: {node: '>=6'}
- dev: true
-
- /levn@0.4.1:
- resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
- engines: {node: '>= 0.8.0'}
- dependencies:
- prelude-ls: 1.2.1
- type-check: 0.4.0
- dev: true
-
- /lines-and-columns@1.2.4:
- resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
- dev: true
-
- /load-yaml-file@0.2.0:
- resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==}
- engines: {node: '>=6'}
- dependencies:
- graceful-fs: 4.2.11
- js-yaml: 3.14.1
- pify: 4.0.1
- strip-bom: 3.0.0
- dev: true
-
- /locate-path@5.0.0:
- resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
- engines: {node: '>=8'}
- dependencies:
- p-locate: 4.1.0
- dev: true
-
- /locate-path@6.0.0:
- resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
- engines: {node: '>=10'}
- dependencies:
- p-locate: 5.0.0
- dev: true
-
- /lodash.memoize@4.1.2:
- resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
- dev: true
-
- /lodash.merge@4.6.2:
- resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
- dev: true
-
- /lodash.startcase@4.4.0:
- resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==}
- dev: true
-
- /lru-cache@4.1.5:
- resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==}
- dependencies:
- pseudomap: 1.0.2
- yallist: 2.1.2
- dev: true
-
- /lru-cache@5.1.1:
- resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
- dependencies:
- yallist: 3.1.1
- dev: true
-
- /lru-cache@6.0.0:
- resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
- engines: {node: '>=10'}
- dependencies:
- yallist: 4.0.0
- dev: true
-
- /lunr@2.3.9:
- resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==}
- dev: true
-
- /make-dir@3.1.0:
- resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
- engines: {node: '>=8'}
- dependencies:
- semver: 6.3.0
- dev: true
-
- /make-error@1.3.6:
- resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
- dev: true
-
- /makeerror@1.0.12:
- resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==}
- dependencies:
- tmpl: 1.0.5
- dev: true
-
- /map-obj@1.0.1:
- resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /map-obj@4.3.0:
- resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==}
- engines: {node: '>=8'}
- dev: true
-
- /marked@4.3.0:
- resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==}
- engines: {node: '>= 12'}
- hasBin: true
- dev: true
-
- /meow@6.1.1:
- resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==}
- engines: {node: '>=8'}
- dependencies:
- '@types/minimist': 1.2.2
- camelcase-keys: 6.2.2
- decamelize-keys: 1.1.1
- hard-rejection: 2.1.0
- minimist-options: 4.1.0
- normalize-package-data: 2.5.0
- read-pkg-up: 7.0.1
- redent: 3.0.0
- trim-newlines: 3.0.1
- type-fest: 0.13.1
- yargs-parser: 18.1.3
- dev: true
-
- /merge-stream@2.0.0:
- resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
- dev: true
-
- /merge2@1.4.1:
- resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
- engines: {node: '>= 8'}
- dev: true
-
- /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
-
- /mimic-fn@2.1.0:
- resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
- engines: {node: '>=6'}
- dev: true
-
- /min-indent@1.0.1:
- resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
- engines: {node: '>=4'}
- dev: true
-
- /minimatch@3.1.2:
- resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
- dependencies:
- brace-expansion: 1.1.11
- dev: true
-
- /minimatch@9.0.0:
- resolution: {integrity: sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==}
- engines: {node: '>=16 || 14 >=14.17'}
- dependencies:
- brace-expansion: 2.0.1
- dev: true
-
- /minimist-options@4.1.0:
- resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
- engines: {node: '>= 6'}
- dependencies:
- arrify: 1.0.1
- is-plain-obj: 1.1.0
- kind-of: 6.0.3
- dev: true
-
- /mixme@0.5.9:
- resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==}
- engines: {node: '>= 8.0.0'}
- dev: true
-
- /ms@2.1.2:
- resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
- dev: true
-
- /natural-compare-lite@1.4.0:
- resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
- dev: true
-
- /natural-compare@1.4.0:
- resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
- dev: true
-
- /node-int64@0.4.0:
- resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
- dev: true
-
- /node-releases@2.0.10:
- resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==}
- dev: true
-
- /normalize-package-data@2.5.0:
- resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
- dependencies:
- hosted-git-info: 2.8.9
- resolve: 1.22.3
- semver: 5.7.1
- validate-npm-package-license: 3.0.4
- 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
-
- /object-inspect@1.12.3:
- resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
- dev: true
-
- /object-keys@1.1.1:
- resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
- engines: {node: '>= 0.4'}
- dev: true
-
- /object.assign@4.1.4:
- resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.2.0
- has-symbols: 1.0.3
- object-keys: 1.1.1
- 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: true
-
- /optionator@0.9.1:
- resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==}
- engines: {node: '>= 0.8.0'}
- dependencies:
- deep-is: 0.1.4
- fast-levenshtein: 2.0.6
- levn: 0.4.1
- prelude-ls: 1.2.1
- type-check: 0.4.0
- word-wrap: 1.2.3
- dev: true
-
- /os-tmpdir@1.0.2:
- resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /outdent@0.5.0:
- resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==}
- dev: true
-
- /p-filter@2.1.0:
- resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==}
- engines: {node: '>=8'}
- dependencies:
- p-map: 2.1.0
- dev: true
-
- /p-limit@2.3.0:
- resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
- engines: {node: '>=6'}
- dependencies:
- p-try: 2.2.0
- dev: true
-
- /p-limit@3.1.0:
- resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
- engines: {node: '>=10'}
- dependencies:
- yocto-queue: 0.1.0
- dev: true
-
- /p-locate@4.1.0:
- resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
- engines: {node: '>=8'}
- dependencies:
- p-limit: 2.3.0
- dev: true
-
- /p-locate@5.0.0:
- resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
- engines: {node: '>=10'}
- dependencies:
- p-limit: 3.1.0
- dev: true
-
- /p-map@2.1.0:
- resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==}
- engines: {node: '>=6'}
- dev: true
-
- /p-try@2.2.0:
- resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
- engines: {node: '>=6'}
- dev: true
-
- /parent-module@1.0.1:
- resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
- engines: {node: '>=6'}
- dependencies:
- callsites: 3.1.0
- dev: true
-
- /parse-json@5.2.0:
- resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
- engines: {node: '>=8'}
- dependencies:
- '@babel/code-frame': 7.21.4
- error-ex: 1.3.2
- json-parse-even-better-errors: 2.3.1
- lines-and-columns: 1.2.4
- dev: true
-
- /path-exists@4.0.0:
- resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
- engines: {node: '>=8'}
- dev: true
-
- /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-parse@1.0.7:
- resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
- dev: true
-
- /path-type@4.0.0:
- resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
- engines: {node: '>=8'}
- dev: true
-
- /picocolors@1.0.0:
- resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
- dev: true
-
- /picomatch@2.3.1:
- resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
- engines: {node: '>=8.6'}
- dev: true
-
- /pify@4.0.1:
- resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
- engines: {node: '>=6'}
- dev: true
-
- /pirates@4.0.5:
- resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==}
- engines: {node: '>= 6'}
- dev: true
-
- /pkg-dir@4.2.0:
- resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
- engines: {node: '>=8'}
- dependencies:
- find-up: 4.1.0
- dev: true
-
- /preferred-pm@3.0.3:
- resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==}
- engines: {node: '>=10'}
- dependencies:
- find-up: 5.0.0
- find-yarn-workspace-root2: 1.2.16
- path-exists: 4.0.0
- which-pm: 2.0.0
- dev: true
-
- /prelude-ls@1.2.1:
- resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
- engines: {node: '>= 0.8.0'}
- dev: true
-
- /prettier@2.8.8:
- resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
- engines: {node: '>=10.13.0'}
- hasBin: true
- dev: true
-
- /pretty-format@29.5.0:
- resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- dependencies:
- '@jest/schemas': 29.4.3
- ansi-styles: 5.2.0
- react-is: 18.2.0
- dev: true
-
- /prompts@2.4.2:
- resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
- engines: {node: '>= 6'}
- dependencies:
- kleur: 3.0.3
- sisteransi: 1.0.5
- dev: true
-
- /pseudomap@1.0.2:
- resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==}
- dev: true
-
- /punycode@2.3.0:
- resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
- engines: {node: '>=6'}
- dev: true
-
- /pure-rand@6.0.1:
- resolution: {integrity: sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==}
- dev: true
-
- /queue-microtask@1.2.3:
- resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
- dev: true
-
- /quick-lru@4.0.1:
- resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==}
- engines: {node: '>=8'}
- dev: true
-
- /react-is@18.2.0:
- resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
- dev: true
-
- /read-pkg-up@7.0.1:
- resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
- engines: {node: '>=8'}
- dependencies:
- find-up: 4.1.0
- read-pkg: 5.2.0
- type-fest: 0.8.1
- dev: true
-
- /read-pkg@5.2.0:
- resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
- engines: {node: '>=8'}
- dependencies:
- '@types/normalize-package-data': 2.4.1
- normalize-package-data: 2.5.0
- parse-json: 5.2.0
- type-fest: 0.6.0
- dev: true
-
- /read-yaml-file@1.1.0:
- resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==}
- engines: {node: '>=6'}
- dependencies:
- graceful-fs: 4.2.11
- js-yaml: 3.14.1
- pify: 4.0.1
- strip-bom: 3.0.0
- dev: true
-
- /redent@3.0.0:
- resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
- engines: {node: '>=8'}
- dependencies:
- indent-string: 4.0.0
- strip-indent: 3.0.0
- dev: true
-
- /regenerator-runtime@0.13.11:
- resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
- dev: true
-
- /regexp.prototype.flags@1.5.0:
- resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.2.0
- functions-have-names: 1.2.3
- dev: true
-
- /require-directory@2.1.1:
- resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /require-main-filename@2.0.0:
- resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
- dev: true
-
- /resolve-cwd@3.0.0:
- resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
- engines: {node: '>=8'}
- dependencies:
- resolve-from: 5.0.0
- dev: true
-
- /resolve-from@4.0.0:
- resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
- engines: {node: '>=4'}
- dev: true
-
- /resolve-from@5.0.0:
- resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
- engines: {node: '>=8'}
- dev: true
-
- /resolve.exports@2.0.2:
- resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==}
- engines: {node: '>=10'}
- dev: true
-
- /resolve@1.22.3:
- resolution: {integrity: sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw==}
- hasBin: true
- dependencies:
- is-core-module: 2.12.0
- path-parse: 1.0.7
- supports-preserve-symlinks-flag: 1.0.0
- dev: true
-
- /reusify@1.0.4:
- resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
- engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
- dev: true
-
- /rimraf@3.0.2:
- resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
- hasBin: true
- dependencies:
- glob: 7.2.3
- dev: true
-
- /run-parallel@1.2.0:
- resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
- dependencies:
- queue-microtask: 1.2.3
- dev: true
-
- /safe-regex-test@1.0.0:
- resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
- dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.0
- is-regex: 1.1.4
- dev: true
-
- /safer-buffer@2.1.2:
- resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
- dev: true
-
- /semver@5.7.1:
- resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==}
- hasBin: true
- dev: true
-
- /semver@6.3.0:
- resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
- hasBin: true
- dev: true
-
- /semver@7.4.0:
- resolution: {integrity: sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==}
- engines: {node: '>=10'}
- hasBin: true
- dependencies:
- lru-cache: 6.0.0
- dev: true
-
- /set-blocking@2.0.0:
- resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
- dev: true
-
- /shebang-command@1.2.0:
- resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
- engines: {node: '>=0.10.0'}
- dependencies:
- shebang-regex: 1.0.0
- dev: true
-
- /shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
- dependencies:
- shebang-regex: 3.0.0
- dev: true
-
- /shebang-regex@1.0.0:
- resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
- dev: true
-
- /shiki@0.14.1:
- resolution: {integrity: sha512-+Jz4nBkCBe0mEDqo1eKRcCdjRtrCjozmcbTUjbPTX7OOJfEbTZzlUWlZtGe3Gb5oV1/jnojhG//YZc3rs9zSEw==}
- dependencies:
- ansi-sequence-parser: 1.1.0
- jsonc-parser: 3.2.0
- vscode-oniguruma: 1.7.0
- vscode-textmate: 8.0.0
- dev: true
-
- /side-channel@1.0.4:
- resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
- dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.0
- object-inspect: 1.12.3
- dev: true
-
- /signal-exit@3.0.7:
- resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
- dev: true
-
- /sisteransi@1.0.5:
- resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
- dev: true
-
- /slash@3.0.0:
- resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
- engines: {node: '>=8'}
- dev: true
-
- /smartwrap@2.0.2:
- resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==}
- engines: {node: '>=6'}
- hasBin: true
- dependencies:
- array.prototype.flat: 1.3.1
- breakword: 1.0.5
- grapheme-splitter: 1.0.4
- strip-ansi: 6.0.1
- wcwidth: 1.0.1
- yargs: 15.4.1
- dev: true
-
- /source-map-support@0.5.13:
- resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==}
- dependencies:
- buffer-from: 1.1.2
- source-map: 0.6.1
- dev: true
-
- /source-map@0.6.1:
- resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /spawndamnit@2.0.0:
- resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==}
- dependencies:
- cross-spawn: 5.1.0
- signal-exit: 3.0.7
- dev: true
-
- /spdx-correct@3.2.0:
- resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
- dependencies:
- spdx-expression-parse: 3.0.1
- spdx-license-ids: 3.0.13
- dev: true
-
- /spdx-exceptions@2.3.0:
- resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==}
- dev: true
-
- /spdx-expression-parse@3.0.1:
- resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
- dependencies:
- spdx-exceptions: 2.3.0
- spdx-license-ids: 3.0.13
- dev: true
-
- /spdx-license-ids@3.0.13:
- resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==}
- dev: true
-
- /sprintf-js@1.0.3:
- resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
- dev: true
-
- /stack-utils@2.0.6:
- resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
- engines: {node: '>=10'}
- dependencies:
- escape-string-regexp: 2.0.0
- dev: true
-
- /stream-transform@2.1.3:
- resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==}
- dependencies:
- mixme: 0.5.9
- dev: true
-
- /string-length@4.0.2:
- resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
- engines: {node: '>=10'}
- dependencies:
- char-regex: 1.0.2
- strip-ansi: 6.0.1
- dev: true
-
- /string-width@4.2.3:
- resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
- engines: {node: '>=8'}
- dependencies:
- emoji-regex: 8.0.0
- is-fullwidth-code-point: 3.0.0
- strip-ansi: 6.0.1
- dev: true
-
- /string.prototype.trim@1.2.7:
- resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.2.0
- es-abstract: 1.21.2
- dev: true
-
- /string.prototype.trimend@1.0.6:
- resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.2.0
- es-abstract: 1.21.2
- dev: true
-
- /string.prototype.trimstart@1.0.6:
- resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==}
- dependencies:
- call-bind: 1.0.2
- define-properties: 1.2.0
- es-abstract: 1.21.2
- dev: true
-
- /strip-ansi@6.0.1:
- resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
- engines: {node: '>=8'}
- dependencies:
- ansi-regex: 5.0.1
- dev: true
-
- /strip-bom@3.0.0:
- resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
- engines: {node: '>=4'}
- dev: true
-
- /strip-bom@4.0.0:
- resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==}
- engines: {node: '>=8'}
- dev: true
-
- /strip-final-newline@2.0.0:
- resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
- engines: {node: '>=6'}
- dev: true
-
- /strip-indent@3.0.0:
- resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
- engines: {node: '>=8'}
- dependencies:
- min-indent: 1.0.1
- dev: true
-
- /strip-json-comments@3.1.1:
- resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
- engines: {node: '>=8'}
- dev: true
-
- /supports-color@5.5.0:
- resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
- engines: {node: '>=4'}
- dependencies:
- has-flag: 3.0.0
- dev: true
-
- /supports-color@7.2.0:
- resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
- engines: {node: '>=8'}
- dependencies:
- has-flag: 4.0.0
- dev: true
-
- /supports-color@8.1.1:
- resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
- engines: {node: '>=10'}
- dependencies:
- has-flag: 4.0.0
- dev: true
-
- /supports-preserve-symlinks-flag@1.0.0:
- resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
- engines: {node: '>= 0.4'}
- dev: true
-
- /term-size@2.2.1:
- resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==}
- engines: {node: '>=8'}
- dev: true
-
- /test-exclude@6.0.0:
- resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
- engines: {node: '>=8'}
- dependencies:
- '@istanbuljs/schema': 0.1.3
- glob: 7.2.3
- minimatch: 3.1.2
- dev: true
-
- /text-table@0.2.0:
- resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
- dev: true
-
- /tmp@0.0.33:
- resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
- engines: {node: '>=0.6.0'}
- dependencies:
- os-tmpdir: 1.0.2
- dev: true
-
- /tmpl@1.0.5:
- resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==}
- dev: true
-
- /to-fast-properties@2.0.0:
- resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
- engines: {node: '>=4'}
- dev: true
-
- /to-regex-range@5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.0'}
- dependencies:
- is-number: 7.0.0
- dev: true
-
- /trim-newlines@3.0.1:
- resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==}
- engines: {node: '>=8'}
- dev: true
-
- /ts-jest@29.1.0(@babel/core@7.21.4)(jest@29.5.0)(typescript@5.0.4):
- resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- hasBin: true
- peerDependencies:
- '@babel/core': '>=7.0.0-beta.0 <8'
- '@jest/types': ^29.0.0
- babel-jest: ^29.0.0
- esbuild: '*'
- jest: ^29.0.0
- typescript: '>=4.3 <6'
- peerDependenciesMeta:
- '@babel/core':
- optional: true
- '@jest/types':
- optional: true
- babel-jest:
- optional: true
- esbuild:
- optional: true
- dependencies:
- '@babel/core': 7.21.4
- bs-logger: 0.2.6
- fast-json-stable-stringify: 2.1.0
- jest: 29.5.0(@types/node@18.16.3)
- jest-util: 29.5.0
- json5: 2.2.3
- lodash.memoize: 4.1.2
- make-error: 1.3.6
- semver: 7.4.0
- typescript: 5.0.4
- yargs-parser: 21.1.1
- dev: true
-
- /tslib@1.14.1:
- resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
- dev: true
-
- /tsutils@3.21.0(typescript@5.0.4):
- resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
- engines: {node: '>= 6'}
- peerDependencies:
- typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
- dependencies:
- tslib: 1.14.1
- typescript: 5.0.4
- dev: true
-
- /tty-table@4.2.1:
- resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==}
- engines: {node: '>=8.0.0'}
- hasBin: true
- dependencies:
- chalk: 4.1.2
- csv: 5.5.3
- kleur: 4.1.5
- smartwrap: 2.0.2
- strip-ansi: 6.0.1
- wcwidth: 1.0.1
- yargs: 17.7.1
- dev: true
-
- /type-check@0.4.0:
- resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
- engines: {node: '>= 0.8.0'}
- dependencies:
- prelude-ls: 1.2.1
- dev: true
-
- /type-detect@4.0.8:
- resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
- engines: {node: '>=4'}
- dev: true
-
- /type-fest@0.13.1:
- resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==}
- engines: {node: '>=10'}
- dev: true
-
- /type-fest@0.20.2:
- resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
- engines: {node: '>=10'}
- dev: true
-
- /type-fest@0.21.3:
- resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
- engines: {node: '>=10'}
- dev: true
-
- /type-fest@0.6.0:
- resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
- engines: {node: '>=8'}
- dev: true
-
- /type-fest@0.8.1:
- resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
- engines: {node: '>=8'}
- dev: true
-
- /typed-array-length@1.0.4:
- resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
- dependencies:
- call-bind: 1.0.2
- for-each: 0.3.3
- is-typed-array: 1.1.10
- dev: true
-
- /typedoc-plugin-umami@1.2.0(typedoc@0.24.6):
- resolution: {integrity: sha512-7W9AncsRi4MpkhkABi6jdM4jrZYBaKfPVeb8h6EJdlOLvXVasdZJK+40BjfFcCXSJj94Dr8G7Y3NFjd0ZHFtpw==}
- peerDependencies:
- typedoc: ^0.24.2
- dependencies:
- typedoc: 0.24.6(typescript@5.0.4)
- dev: true
-
- /typedoc@0.24.6(typescript@5.0.4):
- resolution: {integrity: sha512-c3y3h45xJv3qYwKDAwU6Cl+26CjT0ZvblHzfHJ+SjQDM4p1mZxtgHky4lhmG0+nNarRht8kADfZlbspJWdZarQ==}
- engines: {node: '>= 14.14'}
- hasBin: true
- peerDependencies:
- typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x
- dependencies:
- lunr: 2.3.9
- marked: 4.3.0
- minimatch: 9.0.0
- shiki: 0.14.1
- typescript: 5.0.4
- dev: true
-
- /typescript@5.0.4:
- resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==}
- engines: {node: '>=12.20'}
- hasBin: true
- dev: true
-
- /unbox-primitive@1.0.2:
- resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
- dependencies:
- call-bind: 1.0.2
- has-bigints: 1.0.2
- has-symbols: 1.0.3
- which-boxed-primitive: 1.0.2
- dev: true
-
- /universalify@0.1.2:
- resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
- engines: {node: '>= 4.0.0'}
- dev: true
-
- /update-browserslist-db@1.0.11(browserslist@4.21.5):
- resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
- hasBin: true
- peerDependencies:
- browserslist: '>= 4.21.0'
- dependencies:
- browserslist: 4.21.5
- escalade: 3.1.1
- picocolors: 1.0.0
- dev: true
-
- /uri-js@4.4.1:
- resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
- dependencies:
- punycode: 2.3.0
- dev: true
-
- /v8-to-istanbul@9.1.0:
- resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==}
- engines: {node: '>=10.12.0'}
- dependencies:
- '@jridgewell/trace-mapping': 0.3.18
- '@types/istanbul-lib-coverage': 2.0.4
- convert-source-map: 1.9.0
- dev: true
-
- /validate-npm-package-license@3.0.4:
- resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
- dependencies:
- spdx-correct: 3.2.0
- spdx-expression-parse: 3.0.1
- dev: true
-
- /vscode-oniguruma@1.7.0:
- resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==}
- dev: true
-
- /vscode-textmate@8.0.0:
- resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==}
- dev: true
-
- /walker@1.0.8:
- resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
- dependencies:
- makeerror: 1.0.12
- dev: true
-
- /wcwidth@1.0.1:
- resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
- dependencies:
- defaults: 1.0.4
- dev: true
-
- /which-boxed-primitive@1.0.2:
- resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
- dependencies:
- is-bigint: 1.0.4
- is-boolean-object: 1.1.2
- is-number-object: 1.0.7
- is-string: 1.0.7
- is-symbol: 1.0.4
- dev: true
-
- /which-module@2.0.1:
- resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
- dev: true
-
- /which-pm@2.0.0:
- resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==}
- engines: {node: '>=8.15'}
- dependencies:
- load-yaml-file: 0.2.0
- path-exists: 4.0.0
- dev: true
-
- /which-typed-array@1.1.9:
- resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==}
- engines: {node: '>= 0.4'}
- dependencies:
- available-typed-arrays: 1.0.5
- call-bind: 1.0.2
- for-each: 0.3.3
- gopd: 1.0.1
- has-tostringtag: 1.0.0
- is-typed-array: 1.1.10
- dev: true
-
- /which@1.3.1:
- resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
- hasBin: true
- dependencies:
- isexe: 2.0.0
- dev: true
-
- /which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
- dependencies:
- isexe: 2.0.0
- dev: true
-
- /word-wrap@1.2.3:
- resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
- engines: {node: '>=0.10.0'}
- dev: true
-
- /wrap-ansi@6.2.0:
- resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
- engines: {node: '>=8'}
- dependencies:
- ansi-styles: 4.3.0
- string-width: 4.2.3
- strip-ansi: 6.0.1
- dev: true
-
- /wrap-ansi@7.0.0:
- resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
- engines: {node: '>=10'}
- dependencies:
- ansi-styles: 4.3.0
- string-width: 4.2.3
- strip-ansi: 6.0.1
- dev: true
-
- /wrappy@1.0.2:
- resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
- dev: true
-
- /write-file-atomic@4.0.2:
- resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==}
- engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
- dependencies:
- imurmurhash: 0.1.4
- signal-exit: 3.0.7
- dev: true
-
- /y18n@4.0.3:
- resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
- dev: true
-
- /y18n@5.0.8:
- resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
- engines: {node: '>=10'}
- dev: true
-
- /yallist@2.1.2:
- resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==}
- dev: true
-
- /yallist@3.1.1:
- resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
- dev: true
-
- /yallist@4.0.0:
- resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
- dev: true
-
- /yargs-parser@18.1.3:
- resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==}
- engines: {node: '>=6'}
- dependencies:
- camelcase: 5.3.1
- decamelize: 1.2.0
- dev: true
-
- /yargs-parser@21.1.1:
- resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
- engines: {node: '>=12'}
- dev: true
-
- /yargs@15.4.1:
- resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
- engines: {node: '>=8'}
- dependencies:
- cliui: 6.0.0
- decamelize: 1.2.0
- find-up: 4.1.0
- get-caller-file: 2.0.5
- require-directory: 2.1.1
- require-main-filename: 2.0.0
- set-blocking: 2.0.0
- string-width: 4.2.3
- which-module: 2.0.1
- y18n: 4.0.3
- yargs-parser: 18.1.3
- dev: true
-
- /yargs@17.7.1:
- resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==}
- engines: {node: '>=12'}
- dependencies:
- cliui: 8.0.1
- escalade: 3.1.1
- get-caller-file: 2.0.5
- require-directory: 2.1.1
- string-width: 4.2.3
- y18n: 5.0.8
- yargs-parser: 21.1.1
- dev: true
-
- /yocto-queue@0.1.0:
- resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
- engines: {node: '>=10'}
- dev: true
diff --git a/readme.md b/readme.md
index 53c505e..dd0354f 100644
--- a/readme.md
+++ b/readme.md
@@ -1,9 +1,9 @@
Classcharts API JS
@@ -16,8 +16,13 @@
# Contributing
-Contributions are welcome! There are lots of API endpoints which we simply do not have access to to implement, so if you have access to them, please consider contributing! If you have any questions, feel free to ask in the [discord](https://discord.gg/DTcwugcgZ2).
+Contributions are welcome! There are lots of API endpoints which we simply do
+not have access to to implement, so if you have access to them, please consider
+contributing! If you have any questions, feel free to ask in the
+[discord](https://discord.gg/DTcwugcgZ2).
# Help
-For any help with the library, please join the [discord](https://discord.gg/DTcwugcgZ2) where you can ask questions and get help from the community.
+For any help with the library, please join the
+[discord](https://discord.gg/DTcwugcgZ2) where you can ask questions and get
+help from the community.
diff --git a/scripts/build_npm.ts b/scripts/build_npm.ts
new file mode 100644
index 0000000..bdc7c43
--- /dev/null
+++ b/scripts/build_npm.ts
@@ -0,0 +1,49 @@
+import { build, emptyDir } from "https://deno.land/x/dnt@0.38.1/mod.ts";
+
+if (!Deno.args[0]) throw new Error("No version specified");
+
+await emptyDir("./npm");
+
+await build({
+ entryPoints: ["./mod.ts"],
+ outDir: "./npm",
+ shims: {
+ deno: true,
+ },
+ packageManager: "pnpm",
+ compilerOptions: {
+ lib: ["DOM", "ESNext"],
+ },
+ typeCheck: "both",
+ package: {
+ // package.json properties
+ name: "classcharts-api",
+ author: {
+ name: "James Cook",
+ email: "james@jaminit.co.uk",
+ },
+ version: Deno.args[0],
+ description:
+ "A Typescript wrapper for getting information from the ClassCharts API",
+ license: "ISC",
+ keywords: ["node", "typescript", "classcharts", "class charts"],
+ bugs: {
+ url: "https://github.com/classchartsapi/classcharts-api-js/issues",
+ },
+ repository: {
+ type: "git",
+ url: "https://github.com/classchartsapi/classcharts-api-js.git",
+ },
+ homepage: "https://classchartsapi.github.io/classcharts-api-js/",
+ types: "./mod.ts",
+ engines: {
+ node: ">=18",
+ },
+ sideEffects: false,
+ },
+ postBuild() {
+ // steps to run after building and before running the tests
+ Deno.copyFileSync("LICENSE", "npm/LICENSE");
+ Deno.copyFileSync("readme.md", "npm/README.md");
+ },
+});
diff --git a/src/core/baseClient.ts b/src/core/baseClient.ts
index f89ccd3..7075527 100644
--- a/src/core/baseClient.ts
+++ b/src/core/baseClient.ts
@@ -15,8 +15,8 @@ import type {
GetStudentInfoResponse,
HomeworksResponse,
LessonsResponse,
-} from "../types.js";
-import { PING_INTERVAL } from "../utils/consts.js";
+} from "../types.ts";
+import { PING_INTERVAL } from "../utils/consts.ts";
/**
* Shared client for both parent and student. This is not exported and should not be used directly
@@ -46,7 +46,6 @@ export class BaseClient {
*/
protected API_BASE = "";
/**
- *
* @param API_BASE Base API URL, this is different depending on if its called as a parent or student
*/
constructor(API_BASE: string) {
@@ -113,7 +112,7 @@ export class BaseClient {
let responseJSON: ClassChartsResponse;
try {
responseJSON = await request.json();
- } catch (err) {
+ } catch {
throw new Error(
"Error parsing JSON. Returned response: " + (await request.text())
);
@@ -121,8 +120,8 @@ export class BaseClient {
if (responseJSON.success == 0) {
throw new Error(responseJSON.error);
}
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- return responseJSON as any;
+ // deno-lint-ignore no-explicit-any
+ return responseJSON as unknown as any;
}
/**
* Gets general information about the current student
@@ -150,7 +149,7 @@ export class BaseClient {
options?.from && params.append("from", options?.from);
options?.to && params.append("to", options?.to);
options?.last_id && params.append("last_id", options?.last_id);
- return this.makeAuthedRequest(
+ return await this.makeAuthedRequest(
this.API_BASE + "/activity/" + this.studentId + "?" + params.toString(),
{
method: "GET",
@@ -214,8 +213,9 @@ export class BaseClient {
*/
async getHomeworks(options?: GetHomeworkOptions): Promise {
const params = new URLSearchParams();
- if (options?.displayDate)
+ if (options?.displayDate) {
params.append("display_date", String(options?.displayDate));
+ }
options?.from && params.append("from", String(options?.from));
options?.to && params.append("to", String(options?.to));
diff --git a/src/core/parentClient.ts b/src/core/parentClient.ts
index dad9fa5..e87a6e8 100644
--- a/src/core/parentClient.ts
+++ b/src/core/parentClient.ts
@@ -1,8 +1,8 @@
-import type { GetPupilsResponse } from "../types.js";
+import type { GetPupilsResponse } from "../types.ts";
-import { BaseClient } from "./baseClient.js";
-import { API_BASE_PARENT, BASE_URL } from "../utils/consts.js";
-import { parseCookies } from "../utils/utils.js";
+import { BaseClient } from "./baseClient.ts";
+import { API_BASE_PARENT, BASE_URL } from "../utils/consts.ts";
+import { parseCookies } from "../utils/utils.ts";
/**
* Parent Client
*/
@@ -12,7 +12,6 @@ export class ParentClient extends BaseClient {
// @ts-expect-error Init in .login
public pupils: GetPupilsResponse;
/**
- *
* @param email Parent's email address
* @param password Parent's password
*/
@@ -26,7 +25,7 @@ export class ParentClient extends BaseClient {
* Authenticates with ClassCharts
*/
async login(): Promise {
- if (!this.email) throw new Error("Email not inputted");
+ if (!this.email) throw new Error("Email not provided");
const formData = new URLSearchParams();
formData.append("_method", "POST");
formData.append("email", this.email);
@@ -42,13 +41,14 @@ export class ParentClient extends BaseClient {
headers: headers,
credentials: undefined,
});
- if (response.status != 302 || !response.headers.get("set-cookie"))
+ if (response.status != 302 || !response.headers.get("set-cookie")) {
throw new Error(
"Unauthenticated: ClassCharts returned an error: " +
response.status +
" " +
response.statusText
);
+ }
const cookies = String(response.headers.get("set-cookie"));
// this.authCookies = cookies.split(";");
@@ -66,7 +66,7 @@ export class ParentClient extends BaseClient {
* @returns an array of Pupils connected to this parent's account
*/
async getPupils(): Promise {
- return super.makeAuthedRequest(super.API_BASE + "/pupils", {
+ return await super.makeAuthedRequest(super.API_BASE + "/pupils", {
method: "GET",
});
}
@@ -76,7 +76,7 @@ export class ParentClient extends BaseClient {
*
* @see getPupils
*/
- async selectPupil(pupilId: number): Promise {
+ selectPupil(pupilId: number) {
if (!pupilId) throw new Error("No pupil ID specified");
const pupils = this.pupils;
for (let i = 0; i < pupils.length; i++) {
diff --git a/src/core/studentClient.ts b/src/core/studentClient.ts
index d8d6747..5d2ac24 100644
--- a/src/core/studentClient.ts
+++ b/src/core/studentClient.ts
@@ -1,6 +1,6 @@
-import { API_BASE_STUDENT, BASE_URL } from "../utils/consts.js";
-import { BaseClient } from "./baseClient.js";
-import { parseCookies } from "../utils/utils.js";
+import { API_BASE_STUDENT, BASE_URL } from "../utils/consts.ts";
+import { BaseClient } from "./baseClient.ts";
+import { parseCookies } from "../utils/utils.ts";
/**
* Student Client
@@ -18,7 +18,6 @@ export class StudentClient extends BaseClient {
private dateOfBirth = "";
/**
- *
* @param studentCode ClassCharts student code
* @param dateOfBirth Student's date of birth
*/
@@ -32,7 +31,7 @@ export class StudentClient extends BaseClient {
* Authenticates with ClassCharts
*/
async login(): Promise {
- if (!this.studentCode) throw new Error("Student Code not inputted");
+ if (!this.studentCode) throw new Error("Student Code not provided");
const formData = new URLSearchParams();
formData.append("_method", "POST");
formData.append("code", this.studentCode.toUpperCase());
@@ -43,14 +42,11 @@ export class StudentClient extends BaseClient {
method: "POST",
body: formData,
redirect: "manual",
- credentials: undefined,
});
if (request.status != 302 || !request.headers.get("set-cookie")) {
+ await request.body?.cancel(); // Make deno tests happy by closing the body, unsure whether this is needed for the actual library
throw new Error(
- "Unauthenticated: ClassCharts returned an error: " +
- request.status +
- " " +
- request.statusText
+ "Unauthenticated: ClassCharts didn't return authentication cookies"
);
}
const cookies = String(request.headers.get("set-cookie"));
diff --git a/src/core/studentClient_test.ts b/src/core/studentClient_test.ts
new file mode 100644
index 0000000..1de98e5
--- /dev/null
+++ b/src/core/studentClient_test.ts
@@ -0,0 +1,25 @@
+import { assertRejects } from "https://deno.land/std@0.200.0/assert/mod.ts";
+
+import { StudentClient } from "./studentClient.ts";
+
+Deno.test("Throws when no student code is provided", async () => {
+ const client = new StudentClient("");
+ await assertRejects(
+ async () => {
+ await client.login();
+ },
+ Error,
+ "Student Code not provided"
+ );
+});
+
+Deno.test("Throws with invalid student code", async () => {
+ const client = new StudentClient("invalid");
+ await assertRejects(
+ async () => {
+ await client.login();
+ },
+ Error,
+ "Unauthenticated: ClassCharts didn't return authentication cookies"
+ );
+});
diff --git a/src/types.ts b/src/types.ts
index 53cd230..36542df 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -1,5 +1,3 @@
-/* eslint-disable @typescript-eslint/no-explicit-any */
-
/**
* Helper type to define response from ClassCharts
* @internal
@@ -157,7 +155,6 @@ export interface GetHomeworkOptions {
*
* Used to sort homeworks by when they are due or when they were issued
* @default "issue_date"
- *
*/
displayDate?: DisplayDate;
/**
@@ -193,16 +190,16 @@ export interface Homework {
status: {
id: number;
state: "not_completed" | "late" | "completed" | null;
- mark: any | null;
+ mark: unknown | null;
mark_relative: number;
ticked: "yes" | "no";
allow_attachments: "yes" | "no";
first_seen_date: string;
last_seen_date: string;
- attachments: Array;
+ attachments: Array;
has_feedback: boolean;
};
- validated_links: Array;
+ validated_links: Array;
validated_attachments: Array;
}
export type HomeworksResponseData = Array;
@@ -357,7 +354,7 @@ export interface Announcement {
filename: string;
url: string;
}>;
- for_pupils: Array;
+ for_pupils: Array;
comment_visibility: string;
allow_comments: "yes" | "no";
allow_reactions: "yes" | "no";
@@ -366,7 +363,7 @@ export interface Announcement {
requires_consent: "yes" | "no";
can_change_consent: boolean;
consent: string | null;
- pupil_consents: Array;
+ pupil_consents: Array;
}
// TODO: Update typings to include meta response. Currently not possible since I don't have access
diff --git a/src/utils/utils.ts b/src/utils/utils.ts
index cbe4d04..4ebf6d8 100644
--- a/src/utils/utils.ts
+++ b/src/utils/utils.ts
@@ -16,7 +16,6 @@ export function parseCookies(input: string) {
return output;
}
-function leftTrim(str: string) {
- if (!str) return str;
+export function leftTrim(str: string) {
return str.replace(/^\s+/g, "");
}
diff --git a/src/utils/utils_test.ts b/src/utils/utils_test.ts
new file mode 100644
index 0000000..7ecfdff
--- /dev/null
+++ b/src/utils/utils_test.ts
@@ -0,0 +1,41 @@
+import {
+ assertEquals,
+ assertExists,
+} from "https://deno.land/std@0.200.0/assert/mod.ts";
+
+import { parseCookies } from "./utils.ts";
+Deno.test("Parses simple cookie", () => {
+ const cookie =
+ "testCookie=Hello%20world!; expires=Tue, 28-Nov-2023 10:28:45 GMT; Max-Age=7776000; path=/";
+ const parsed = parseCookies(cookie);
+ assertEquals(parsed.testCookie, "Hello world!");
+});
+
+Deno.test("Parses multiple cookies", () => {
+ const cookies =
+ "firstCookie=I'm%20the%20first%20cookie; expires=Tue, 28-Nov-2023 10:28:45 GMT; Max-Age=7776000; path=/, secondCookie=I'm%20the%20second%20cookie; expires=Tue, 28-Nov-2023 10:28:45 GMT; Max-Age=7776000; path=/";
+ const parsed = parseCookies(cookies);
+ assertEquals(parsed.firstCookie, "I'm the first cookie");
+ assertEquals(parsed.secondCookie, "I'm the second cookie");
+});
+
+Deno.test("Parses cookie with no value", () => {
+ const cookie =
+ "cookieWithNoValue=; expires=Tue, 28-Nov-2023 10:28:45 GMT; Max-Age=7776000; path=/";
+ const parsed = parseCookies(cookie);
+ assertExists(parsed.cookieWithNoValue);
+ assertEquals(parsed.cookieWithNoValue, "");
+});
+
+import { leftTrim } from "./utils.ts";
+Deno.test("Trims left with spaces", () => {
+ const input = " Hello world!";
+ const output = leftTrim(input);
+ assertEquals(output, "Hello world!");
+});
+
+Deno.test("Trims left with no spaces", () => {
+ const input = "Hello world!";
+ const output = leftTrim(input);
+ assertEquals(output, "Hello world!");
+});
diff --git a/tests/baseClient.test.ts b/tests/baseClient.test.ts
deleted file mode 100644
index 189cb24..0000000
--- a/tests/baseClient.test.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import { StudentClient } from "../src";
-// eslint-disable-next-line @typescript-eslint/ban-ts-comment
-// @ts-ignore
-import { code, dob } from "./config.json";
-import "jest-extended";
-const client = new StudentClient(code, dob);
-jest.setTimeout(10000);
-
-test("client logs in with correct credentials", () => {
- return expect(client.login()).resolves.not.toThrow();
-});
-
-test("client fails to login with incorrect credentials", () => {
- const fakeClient = new StudentClient("rewrew", "123");
- return expect(fakeClient.login()).rejects.toThrowError();
-});
-
-test("client returns student data", () => {
- return expect(client.getStudentInfo()).resolves.toBeObject();
-});
-
-test("client returns activity data", () => {
- return expect(client.getActivity()).resolves.toBeObject();
-});
-
-test("client returns full activity", () => {
- return client
- .getFullActivity({ from: "2022-01-01", to: "2022-09-01" })
- .then((data) => {
- let valid = false;
- if (data.length > 0) valid = true;
- expect(valid).toBeTrue();
- });
-});
-
-test("client returns behaviour data", () => {
- return expect(client.getBehaviour()).resolves.toBeObject();
-});
-
-test("client returns homework data", () => {
- return expect(client.getHomeworks()).resolves.toBeObject();
-});
-
-test("client returns badges", () => {
- expect(client.getBadges()).resolves.toBeObject();
-});
diff --git a/tests/config.example.json b/tests/config.example.json
deleted file mode 100644
index 3d3aba6..0000000
--- a/tests/config.example.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "code": "",
- "dob": ""
-}
diff --git a/tsconfig.json b/tsconfig.json
deleted file mode 100644
index 8bc8621..0000000
--- a/tsconfig.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "compilerOptions": {
- "target": "es2021",
- "module": "ES2020",
- "moduleResolution": "node",
- "declaration": true,
- "sourceMap": true,
- "outDir": "dist",
- "allowSyntheticDefaultImports": true,
- "esModuleInterop": true,
- "forceConsistentCasingInFileNames": true,
- "strict": true,
- "noImplicitAny": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noUnusedLocals": true,
- "noUnusedParameters": true,
- "skipLibCheck": true,
- "isolatedModules": true,
- },
- "include": ["./src/**/*"]
-}
From 3be1064901a13f9713a197aadc89811803fcfd97 Mon Sep 17 00:00:00 2001
From: James Cook
Date: Wed, 30 Aug 2023 12:30:29 +0100
Subject: [PATCH 04/36] chore: fix release workflow
---
.github/workflows/release.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index c52e8b8..94d9c15 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -25,7 +25,7 @@ jobs:
node-version: "18.x"
registry-url: "https://registry.npmjs.org"
- name: npm build
- run: deno run -A npm ${{steps.get_tag_version.outputs.TAG_VERSION}}
+ run: deno task -A npm ${{steps.get_tag_version.outputs.TAG_VERSION}}
- name: npm publish
if: startsWith(github.ref, 'refs/tags/')
env:
From 0d9d64cb076ab2bd01852dca8e3b5e0dfe0082c3 Mon Sep 17 00:00:00 2001
From: James Cook
Date: Wed, 30 Aug 2023 13:09:14 +0100
Subject: [PATCH 05/36] docs: update docs to include deno
---
.github/workflows/release.yml | 2 +-
docs/README.md | 21 ++++++++++++++-------
readme.md | 2 +-
typedoc.config.cjs | 22 ----------------------
4 files changed, 16 insertions(+), 31 deletions(-)
delete mode 100644 typedoc.config.cjs
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 94d9c15..3d40b32 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -25,7 +25,7 @@ jobs:
node-version: "18.x"
registry-url: "https://registry.npmjs.org"
- name: npm build
- run: deno task -A npm ${{steps.get_tag_version.outputs.TAG_VERSION}}
+ run: deno task npm ${{steps.get_tag_version.outputs.TAG_VERSION}}
- name: npm publish
if: startsWith(github.ref, 'refs/tags/')
env:
diff --git a/docs/README.md b/docs/README.md
index 8f9131c..91f5d80 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,7 +1,7 @@
ClassCharts API JS
- A typescript wrapper for getting information from the Classcharts API
+ A Node.js and Deno Typescript wrapper for getting information from the Classcharts API.
@@ -10,6 +10,8 @@
Issues
•
NPM
+ •
+ Deno
•
Discord
•
@@ -33,6 +35,7 @@ help from the community.
## Requirements
- Node.js 18 or newer
+- Deno
## NPM
@@ -40,12 +43,16 @@ help from the community.
npm install classcharts-api # npm
```
-```bash
-yarn add classcharts-api # yarn
-```
+## Deno
-```bash
-pnpm add classcharts-api # pnpm
+The imports in the examples are for Node.js, but can easily be substituted for
+Deno.
+
+```typescript
+import {
+ ParentClient,
+ StudentClient,
+} from "https://deno.land/x/classcharts_api/mod.ts";
```
# Logging In
@@ -56,7 +63,7 @@ session ID which will be used for all requests.
## Student Client
```typescript
-import { StudentClient } from "classcharts-api";
+import { StudentClient } from "classcharts-api"; // Node.js
// Date of birth MUST in the format DD/MM/YYYY
const client = new StudentClient("classchartsCode", "01/1/2000");
diff --git a/readme.md b/readme.md
index dd0354f..f4eac6d 100644
--- a/readme.md
+++ b/readme.md
@@ -7,7 +7,7 @@
-
A typescript wrapper for getting information from the Classcharts API.
+A Node.js and Deno Typescript wrapper for getting information from the Classcharts API.
# Links
diff --git a/typedoc.config.cjs b/typedoc.config.cjs
deleted file mode 100644
index 9ecd167..0000000
--- a/typedoc.config.cjs
+++ /dev/null
@@ -1,22 +0,0 @@
-/** @type {import('typedoc-plugin-umami').TypeDocOptions} */
-module.exports = {
- entryPointStrategy: "resolve",
- plugin: ["typedoc-plugin-umami"],
- entryPoints: [
- "src/core/studentClient.ts",
- "src/core/parentClient.ts",
- "src/core/baseClient.ts",
- "src/types.ts",
- ],
- navigationLinks: {
- Discord: "https://discord.gg/DTcwugcgZ2",
- Github: "https://github.com/classchartsapi/classcharts-api-js",
- },
- includeVersion: true,
- out: "docs/typedoc",
- sort: "required-first",
- umamiOptions: {
- src: "https://umami.jaminit.co.uk/script.js",
- websiteId: "dd8c53b8-dc99-484c-911d-b08c898498a8",
- },
-};
From 55d91a52b7aab1dc06dc40bbfae8d86134a96198 Mon Sep 17 00:00:00 2001
From: James Cook
Date: Wed, 30 Aug 2023 13:35:37 +0100
Subject: [PATCH 06/36] docs: update package description
---
docs/README.md | 4 ++--
readme.md | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/docs/README.md b/docs/README.md
index 91f5d80..477c8aa 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,7 +1,7 @@
ClassCharts API JS
- A Node.js and Deno Typescript wrapper for getting information from the Classcharts API.
+ A Node.js and Deno wrapper for getting information from the Classcharts API.
@@ -63,7 +63,7 @@ session ID which will be used for all requests.
## Student Client
```typescript
-import { StudentClient } from "classcharts-api"; // Node.js
+import { StudentClient } from "classcharts-api";
// Date of birth MUST in the format DD/MM/YYYY
const client = new StudentClient("classchartsCode", "01/1/2000");
diff --git a/readme.md b/readme.md
index f4eac6d..d46851f 100644
--- a/readme.md
+++ b/readme.md
@@ -7,7 +7,7 @@
-
A Node.js and Deno Typescript wrapper for getting information from the Classcharts API.
+A Node.js and Deno wrapper for getting information from the Classcharts API.
# Links
From 70c9d623fc6e57a3a2ff4228dfbaf7e9ef195cdc Mon Sep 17 00:00:00 2001
From: James Cook
Date: Wed, 30 Aug 2023 13:43:25 +0100
Subject: [PATCH 07/36] chore: deno badge & formatting
---
readme.md | 5 +++--
src/core/baseClient.ts | 32 ++++++++++++++++----------------
src/core/parentClient.ts | 4 ++--
src/core/studentClient.ts | 4 ++--
src/core/studentClient_test.ts | 4 ++--
src/utils/utils.ts | 2 +-
6 files changed, 26 insertions(+), 25 deletions(-)
diff --git a/readme.md b/readme.md
index d46851f..a5ee3c8 100644
--- a/readme.md
+++ b/readme.md
@@ -1,10 +1,11 @@
Classcharts API JS
A Node.js and Deno wrapper for getting information from the Classcharts API.
diff --git a/src/core/baseClient.ts b/src/core/baseClient.ts
index 7075527..d88d620 100644
--- a/src/core/baseClient.ts
+++ b/src/core/baseClient.ts
@@ -67,7 +67,7 @@ export class BaseClient {
method: "POST",
body: pingFormData,
},
- { revalidateToken: false }
+ { revalidateToken: false },
);
this.sessionId = pingData.meta.session_id;
this.lastPing = Date.now();
@@ -86,7 +86,7 @@ export class BaseClient {
public async makeAuthedRequest(
path: string,
fetchOptions: RequestInit,
- options?: { revalidateToken?: boolean }
+ options?: { revalidateToken?: boolean },
) {
if (!this.sessionId) throw new Error("No session ID");
if (!options) {
@@ -114,7 +114,7 @@ export class BaseClient {
responseJSON = await request.json();
} catch {
throw new Error(
- "Error parsing JSON. Returned response: " + (await request.text())
+ "Error parsing JSON. Returned response: " + (await request.text()),
);
}
if (responseJSON.success == 0) {
@@ -153,7 +153,7 @@ export class BaseClient {
this.API_BASE + "/activity/" + this.studentId + "?" + params.toString(),
{
method: "GET",
- }
+ },
);
}
/**
@@ -165,7 +165,7 @@ export class BaseClient {
* @see getActivity
*/
async getFullActivity(
- options: GetFullActivityOptions
+ options: GetFullActivityOptions,
): Promise {
let data: ActivityResponse["data"] = [];
let prevLast: number | undefined;
@@ -194,7 +194,7 @@ export class BaseClient {
* @returns Array of behaviour points
*/
async getBehaviour(
- options?: GetBehaviourOptions
+ options?: GetBehaviourOptions,
): Promise {
const params = new URLSearchParams();
options?.from && params.append("from", options?.from);
@@ -203,7 +203,7 @@ export class BaseClient {
this.API_BASE + "/behaviour/" + this.studentId + "?" + params.toString(),
{
method: "GET",
- }
+ },
);
}
/**
@@ -223,7 +223,7 @@ export class BaseClient {
this.API_BASE + "/homeworks/" + this.studentId + "?" + params.toString(),
{
method: "GET",
- }
+ },
);
for (let i = 0; i < data.data.length; i++) {
@@ -231,11 +231,11 @@ export class BaseClient {
// homework.lesson.replace(/\\/g, '')
data.data[i].description = data.data[i].description.replace(
/(<([^>]+)>)/gi,
- ""
+ "",
);
data.data[i].description = data.data[i].description.replace(
/ /g,
- ""
+ "",
);
data.data[i].description = data.data[i].description.trim();
}
@@ -254,7 +254,7 @@ export class BaseClient {
this.API_BASE + "/timetable/" + this.studentId + "?" + params.toString(),
{
method: "GET",
- }
+ },
);
}
/**
@@ -266,7 +266,7 @@ export class BaseClient {
this.API_BASE + "/eventbadges/" + this.studentId,
{
method: "GET",
- }
+ },
);
}
/**
@@ -279,7 +279,7 @@ export class BaseClient {
this.API_BASE + "/announcements/" + this.studentId,
{
method: "GET",
- }
+ },
)
).data;
}
@@ -293,7 +293,7 @@ export class BaseClient {
this.API_BASE + "/detentions/" + this.studentId,
{
method: "GET",
- }
+ },
)
).data;
}
@@ -303,7 +303,7 @@ export class BaseClient {
* @returns Array of dates of attendance
*/
async getAttendance(
- options?: GetAttendanceOptions
+ options?: GetAttendanceOptions,
): Promise {
const params = new URLSearchParams();
options?.from && params.append("from", options?.from);
@@ -317,7 +317,7 @@ export class BaseClient {
params.toString(),
{
method: "GET",
- }
+ },
)
).data;
}
diff --git a/src/core/parentClient.ts b/src/core/parentClient.ts
index e87a6e8..3a6ab65 100644
--- a/src/core/parentClient.ts
+++ b/src/core/parentClient.ts
@@ -46,7 +46,7 @@ export class ParentClient extends BaseClient {
"Unauthenticated: ClassCharts returned an error: " +
response.status +
" " +
- response.statusText
+ response.statusText,
);
}
@@ -54,7 +54,7 @@ export class ParentClient extends BaseClient {
// this.authCookies = cookies.split(";");
const sessionCookies = parseCookies(cookies);
const sessionID = JSON.parse(
- String(sessionCookies["parent_session_credentials"])
+ String(sessionCookies["parent_session_credentials"]),
);
super.sessionId = sessionID.session_id;
this.pupils = await this.getPupils();
diff --git a/src/core/studentClient.ts b/src/core/studentClient.ts
index 5d2ac24..c5ba6fc 100644
--- a/src/core/studentClient.ts
+++ b/src/core/studentClient.ts
@@ -46,14 +46,14 @@ export class StudentClient extends BaseClient {
if (request.status != 302 || !request.headers.get("set-cookie")) {
await request.body?.cancel(); // Make deno tests happy by closing the body, unsure whether this is needed for the actual library
throw new Error(
- "Unauthenticated: ClassCharts didn't return authentication cookies"
+ "Unauthenticated: ClassCharts didn't return authentication cookies",
);
}
const cookies = String(request.headers.get("set-cookie"));
this.authCookies = cookies.split(",");
const sessionCookies = parseCookies(cookies);
const sessionID = JSON.parse(
- String(sessionCookies["student_session_credentials"])
+ String(sessionCookies["student_session_credentials"]),
);
this.sessionId = sessionID.session_id;
await this.getNewSessionId();
diff --git a/src/core/studentClient_test.ts b/src/core/studentClient_test.ts
index 1de98e5..6932a75 100644
--- a/src/core/studentClient_test.ts
+++ b/src/core/studentClient_test.ts
@@ -9,7 +9,7 @@ Deno.test("Throws when no student code is provided", async () => {
await client.login();
},
Error,
- "Student Code not provided"
+ "Student Code not provided",
);
});
@@ -20,6 +20,6 @@ Deno.test("Throws with invalid student code", async () => {
await client.login();
},
Error,
- "Unauthenticated: ClassCharts didn't return authentication cookies"
+ "Unauthenticated: ClassCharts didn't return authentication cookies",
);
});
diff --git a/src/utils/utils.ts b/src/utils/utils.ts
index 4ebf6d8..455d7a2 100644
--- a/src/utils/utils.ts
+++ b/src/utils/utils.ts
@@ -10,7 +10,7 @@ export function parseCookies(input: string) {
for (const cookie of cookies) {
const cookieSplit = cookie.split(";")[0].split("=");
output[leftTrim(decodeURIComponent(cookieSplit[0]))] = decodeURIComponent(
- cookieSplit[1]
+ cookieSplit[1],
);
}
return output;
From a5fab5b767904d83daeb6a8169b84fe4d96a945b Mon Sep 17 00:00:00 2001
From: James Cook
Date: Wed, 30 Aug 2023 13:48:29 +0100
Subject: [PATCH 08/36] chore: update readme links
---
readme.md | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/readme.md b/readme.md
index a5ee3c8..4d6a526 100644
--- a/readme.md
+++ b/readme.md
@@ -1,11 +1,9 @@
Classcharts API JS
A Node.js and Deno wrapper for getting information from the Classcharts API.
@@ -14,6 +12,8 @@
- [Documentation](https://classchartsapi.github.io/classcharts-api-js/)
- [Discord](https://discord.gg/DTcwugcgZ2)
+- [NPM](https://www.npmjs.com/package/classcharts-api)
+- [Deno](https://deno.land/x/classcharts_api)
# Contributing
From 4c871a31126614d5fa48f4412acf7e5b9385900d Mon Sep 17 00:00:00 2001
From: James Cook
Date: Wed, 30 Aug 2023 15:48:36 +0100
Subject: [PATCH 09/36] fix: remove types from package.json build
---
scripts/build_npm.ts | 1 -
1 file changed, 1 deletion(-)
diff --git a/scripts/build_npm.ts b/scripts/build_npm.ts
index bdc7c43..a0e9f98 100644
--- a/scripts/build_npm.ts
+++ b/scripts/build_npm.ts
@@ -35,7 +35,6 @@ await build({
url: "https://github.com/classchartsapi/classcharts-api-js.git",
},
homepage: "https://classchartsapi.github.io/classcharts-api-js/",
- types: "./mod.ts",
engines: {
node: ">=18",
},
From 780322f3e26da03e88efbdcfc65c5f8af505042f Mon Sep 17 00:00:00 2001
From: James Cook
Date: Wed, 30 Aug 2023 16:00:24 +0100
Subject: [PATCH 10/36] chore: move docs to readme
---
.github/workflows/release.yml | 3 +++
docs/.nojekyll => .nojekyll | 0
docs/README.md => README.md | 7 +++++++
docs/index.html => index.html | 0
readme.md | 29 -----------------------------
5 files changed, 10 insertions(+), 29 deletions(-)
rename docs/.nojekyll => .nojekyll (100%)
rename docs/README.md => README.md (95%)
rename docs/index.html => index.html (100%)
delete mode 100644 readme.md
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 3d40b32..7c9c71b 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -24,6 +24,9 @@ jobs:
with:
node-version: "18.x"
registry-url: "https://registry.npmjs.org"
+ - uses: pnpm/action-setup@v2
+ with:
+ version: 8
- name: npm build
run: deno task npm ${{steps.get_tag_version.outputs.TAG_VERSION}}
- name: npm publish
diff --git a/docs/.nojekyll b/.nojekyll
similarity index 100%
rename from docs/.nojekyll
rename to .nojekyll
diff --git a/docs/README.md b/README.md
similarity index 95%
rename from docs/README.md
rename to README.md
index 477c8aa..cf64709 100644
--- a/docs/README.md
+++ b/README.md
@@ -30,6 +30,13 @@ For any help with the library, please join the
[discord](https://discord.gg/DTcwugcgZ2) where you can ask questions and get
help from the community.
+# Contributing
+
+Contributions are welcome! There are lots of API endpoints which we simply do
+not have access to to implement, so if you have access to them, please consider
+contributing! If you have any questions, feel free to ask in the
+[discord](https://discord.gg/DTcwugcgZ2).
+
# Installation
## Requirements
diff --git a/docs/index.html b/index.html
similarity index 100%
rename from docs/index.html
rename to index.html
diff --git a/readme.md b/readme.md
deleted file mode 100644
index 4d6a526..0000000
--- a/readme.md
+++ /dev/null
@@ -1,29 +0,0 @@
-Classcharts API JS
-
-
-A Node.js and Deno wrapper for getting information from the Classcharts API.
-
-# Links
-
-- [Documentation](https://classchartsapi.github.io/classcharts-api-js/)
-- [Discord](https://discord.gg/DTcwugcgZ2)
-- [NPM](https://www.npmjs.com/package/classcharts-api)
-- [Deno](https://deno.land/x/classcharts_api)
-
-# Contributing
-
-Contributions are welcome! There are lots of API endpoints which we simply do
-not have access to to implement, so if you have access to them, please consider
-contributing! If you have any questions, feel free to ask in the
-[discord](https://discord.gg/DTcwugcgZ2).
-
-# Help
-
-For any help with the library, please join the
-[discord](https://discord.gg/DTcwugcgZ2) where you can ask questions and get
-help from the community.
From 65b55a3211c3ab7b40b78d2718b74629b07d5cd9 Mon Sep 17 00:00:00 2001
From: James Cook
Date: Wed, 30 Aug 2023 16:04:27 +0100
Subject: [PATCH 11/36] chore: copy readme file correctly
---
scripts/build_npm.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/build_npm.ts b/scripts/build_npm.ts
index a0e9f98..0d02947 100644
--- a/scripts/build_npm.ts
+++ b/scripts/build_npm.ts
@@ -43,6 +43,6 @@ await build({
postBuild() {
// steps to run after building and before running the tests
Deno.copyFileSync("LICENSE", "npm/LICENSE");
- Deno.copyFileSync("readme.md", "npm/README.md");
+ Deno.copyFileSync("README.md", "npm/README.md");
},
});
From ecd1b9c4342d5ae2a03e1ac8e665478c3aa939bd Mon Sep 17 00:00:00 2001
From: James Cook
Date: Sun, 3 Sep 2023 16:49:56 +0100
Subject: [PATCH 12/36] docs: add link to docs
---
README.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/README.md b/README.md
index cf64709..531988b 100644
--- a/README.md
+++ b/README.md
@@ -14,6 +14,8 @@
Deno
•
Discord
+ •
+ Library Docs
•
API Docs
From b34d972167bb11608aea72c4c40ca794c4d04bd9 Mon Sep 17 00:00:00 2001
From: James Cook
Date: Tue, 5 Sep 2023 15:16:18 +0100
Subject: [PATCH 13/36] fix: remove @internal
Since it messes with emitted types
---
scripts/build_npm.ts | 2 +-
src/core/baseClient.ts | 5 -----
src/core/studentClient.ts | 2 --
src/types.ts | 1 -
src/utils/utils.ts | 1 -
5 files changed, 1 insertion(+), 10 deletions(-)
diff --git a/scripts/build_npm.ts b/scripts/build_npm.ts
index 0d02947..59a1ca3 100644
--- a/scripts/build_npm.ts
+++ b/scripts/build_npm.ts
@@ -5,7 +5,7 @@ if (!Deno.args[0]) throw new Error("No version specified");
await emptyDir("./npm");
await build({
- entryPoints: ["./mod.ts"],
+ entryPoints: ["./mod.ts", "./src/core/baseClient.ts"],
outDir: "./npm",
shims: {
deno: true,
diff --git a/src/core/baseClient.ts b/src/core/baseClient.ts
index d88d620..af8de63 100644
--- a/src/core/baseClient.ts
+++ b/src/core/baseClient.ts
@@ -20,7 +20,6 @@ import { PING_INTERVAL } from "../utils/consts.ts";
/**
* Shared client for both parent and student. This is not exported and should not be used directly
- * @internal
*/
export class BaseClient {
/**
@@ -28,7 +27,6 @@ export class BaseClient {
*/
public studentId = 0;
/**
- * @internal
* @property authCookies Cookies used for authentication (set during login and can be empty)
*/
public authCookies: Array;
@@ -42,7 +40,6 @@ export class BaseClient {
public lastPing = 0;
/**
* @property API_BASE Base API URL, this is different depending on if its called as a parent or student
- * @internal
*/
protected API_BASE = "";
/**
@@ -56,7 +53,6 @@ export class BaseClient {
* Revalidates the session ID.
*
* This is called automatically when the session ID is older than 3 minutes or when initially using the .login() method
- * @internal
*/
public async getNewSessionId() {
const pingFormData = new URLSearchParams();
@@ -81,7 +77,6 @@ export class BaseClient {
* @param options.revalidateToken Whether to revalidate the session ID if it is older than 3 minutes
*
* @returns Response
- * @internal
*/
public async makeAuthedRequest(
path: string,
diff --git a/src/core/studentClient.ts b/src/core/studentClient.ts
index c5ba6fc..000c857 100644
--- a/src/core/studentClient.ts
+++ b/src/core/studentClient.ts
@@ -8,12 +8,10 @@ import { parseCookies } from "../utils/utils.ts";
export class StudentClient extends BaseClient {
/**
* @property studentCode ClassCharts student code
- * @internal
*/
private studentCode = "";
/**
* @property dateOfBirth Student's date of birth
- * @internal
*/
private dateOfBirth = "";
diff --git a/src/types.ts b/src/types.ts
index 36542df..731f813 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -1,6 +1,5 @@
/**
* Helper type to define response from ClassCharts
- * @internal
*/
export type ClassChartsResponse = {
data: Data;
diff --git a/src/utils/utils.ts b/src/utils/utils.ts
index 455d7a2..48126dc 100644
--- a/src/utils/utils.ts
+++ b/src/utils/utils.ts
@@ -2,7 +2,6 @@
* Parse cookies from string
* @param input Input string
* @returns Object of cookies
- * @internal
*/
export function parseCookies(input: string) {
const output: Record = {};
From 07021bc235b8b5fe810b48ce9a6ea397d10bced6 Mon Sep 17 00:00:00 2001
From: James Cook
Date: Tue, 5 Sep 2023 15:21:32 +0100
Subject: [PATCH 14/36] fix: remove baseClient entrypoint
---
scripts/build_npm.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/build_npm.ts b/scripts/build_npm.ts
index 59a1ca3..0d02947 100644
--- a/scripts/build_npm.ts
+++ b/scripts/build_npm.ts
@@ -5,7 +5,7 @@ if (!Deno.args[0]) throw new Error("No version specified");
await emptyDir("./npm");
await build({
- entryPoints: ["./mod.ts", "./src/core/baseClient.ts"],
+ entryPoints: ["./mod.ts"],
outDir: "./npm",
shims: {
deno: true,
From ad3b5c380b9caea8ce4341afd93c35a0672b5d0b Mon Sep 17 00:00:00 2001
From: James Cook
Date: Fri, 8 Sep 2023 19:27:01 +0100
Subject: [PATCH 15/36] fix: fix wording of docs
---
src/core/baseClient.ts | 2 +-
src/utils/consts.ts | 2 +-
src/utils/utils.ts | 1 -
3 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/src/core/baseClient.ts b/src/core/baseClient.ts
index af8de63..d2e8f21 100644
--- a/src/core/baseClient.ts
+++ b/src/core/baseClient.ts
@@ -72,7 +72,7 @@ export class BaseClient {
* Makes a request to the ClassCharts API with the required authentication headers
*
* @param path Path to the API endpoint
- * @param kyOptions Ky (fetch library) request options
+ * @param fetchOptions Request Options
* @param options
* @param options.revalidateToken Whether to revalidate the session ID if it is older than 3 minutes
*
diff --git a/src/utils/consts.ts b/src/utils/consts.ts
index 964409d..50d3626 100644
--- a/src/utils/consts.ts
+++ b/src/utils/consts.ts
@@ -2,4 +2,4 @@ export const BASE_URL = "https://www.classcharts.com";
export const API_BASE_STUDENT = `${BASE_URL}/apiv2student`;
export const API_BASE_PARENT = `${BASE_URL}/apiv2parent`;
-export const PING_INTERVAL = 180 * 1000; // 3 minutes
+export const PING_INTERVAL = 60 * 3 * 1000; // 3 minutes
diff --git a/src/utils/utils.ts b/src/utils/utils.ts
index 48126dc..aa24abd 100644
--- a/src/utils/utils.ts
+++ b/src/utils/utils.ts
@@ -14,7 +14,6 @@ export function parseCookies(input: string) {
}
return output;
}
-
export function leftTrim(str: string) {
return str.replace(/^\s+/g, "");
}
From 17549a4f246954745954c8ab72f68291c5a5ed93 Mon Sep 17 00:00:00 2001
From: James Cook
Date: Fri, 8 Sep 2023 19:27:19 +0100
Subject: [PATCH 16/36] docs: specify deno or node
---
README.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/README.md b/README.md
index 531988b..dc89f99 100644
--- a/README.md
+++ b/README.md
@@ -44,6 +44,8 @@ contributing! If you have any questions, feel free to ask in the
## Requirements
- Node.js 18 or newer
+ \
+ OR
- Deno
## NPM
From ffe3e24bbdd1b3341bd3a2aa7d93d4c4258a4500 Mon Sep 17 00:00:00 2001
From: James Cook
Date: Sun, 10 Sep 2023 13:02:05 +0100
Subject: [PATCH 17/36] fix: use .has instead of .get
---
src/core/parentClient.ts | 2 +-
src/core/studentClient.ts | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/core/parentClient.ts b/src/core/parentClient.ts
index 3a6ab65..b20882d 100644
--- a/src/core/parentClient.ts
+++ b/src/core/parentClient.ts
@@ -41,7 +41,7 @@ export class ParentClient extends BaseClient {
headers: headers,
credentials: undefined,
});
- if (response.status != 302 || !response.headers.get("set-cookie")) {
+ if (response.status != 302 || !response.headers.has("set-cookie")) {
throw new Error(
"Unauthenticated: ClassCharts returned an error: " +
response.status +
diff --git a/src/core/studentClient.ts b/src/core/studentClient.ts
index 000c857..464a22d 100644
--- a/src/core/studentClient.ts
+++ b/src/core/studentClient.ts
@@ -41,7 +41,7 @@ export class StudentClient extends BaseClient {
body: formData,
redirect: "manual",
});
- if (request.status != 302 || !request.headers.get("set-cookie")) {
+ if (request.status != 302 || !request.headers.has("set-cookie")) {
await request.body?.cancel(); // Make deno tests happy by closing the body, unsure whether this is needed for the actual library
throw new Error(
"Unauthenticated: ClassCharts didn't return authentication cookies",
From bb986b71a8de9180231725b52aca76cbfb61c364 Mon Sep 17 00:00:00 2001
From: James Cook
Date: Wed, 13 Sep 2023 22:24:12 +0100
Subject: [PATCH 18/36] chore: add contributing.md
---
CONTRIBUTING.md | 47 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 47 insertions(+)
create mode 100644 CONTRIBUTING.md
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..c0b0f7e
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,47 @@
+# Contributing
+
+Thanks for taking the time to contribute to this project! If you'd like to learn
+how the API works, check out the (unofficial)
+[documentation](https://classchartsapi.github.io/api-docs/).
+
+## Dev Setup
+
+### Requirements
+
+- [Deno](https://deno.land/) (for the main development)
+- [Node.js](https://nodejs.org/en/) (for testing the NPM package)
+- [pnpm](https://pnpm.io/) (for installing dependencies for the NPM package)
+
+### Instructions
+
+To contribute to this repo, you will need to fork the repo first. Click the fork
+button in the top right corner of the repo page.
+
+1. Clone your forked repo to your local machine
+
+```bash
+git clone https://github.com//classcharts-api-js.git
+cd classcharts-api-js
+```
+
+### Testing
+
+When adding a new function, if you can, add a test for it. Tests are located in
+`[FILENAME]_test.ts`.\
+To run the tests, run:
+
+```bash
+deno test -A
+```
+
+The NPM package will automatically be tested when you build it.
+
+### Building
+
+The Deno module is already built but to compile and test the NPM package, run:
+
+```bash
+deno task npm 1.0.0
+```
+
+Make sure to replace `1.0.0` with the version number.
From 45ef7c7ce963fdd2e9a808cbde31a19cc3858676 Mon Sep 17 00:00:00 2001
From: James Cook
Date: Thu, 14 Sep 2023 19:38:21 +0100
Subject: [PATCH 19/36] feat: announcements meta response
---
src/core/baseClient.ts | 2 +-
src/types.ts | 8 +++++---
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/core/baseClient.ts b/src/core/baseClient.ts
index d2e8f21..829ef27 100644
--- a/src/core/baseClient.ts
+++ b/src/core/baseClient.ts
@@ -276,7 +276,7 @@ export class BaseClient {
method: "GET",
},
)
- ).data;
+ );
}
/**
* Gets the current student's detentions
diff --git a/src/types.ts b/src/types.ts
index 731f813..ee2188b 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -361,12 +361,14 @@ export interface Announcement {
priority_pinned: "yes" | "no";
requires_consent: "yes" | "no";
can_change_consent: boolean;
- consent: string | null;
+ consent: unknown | null;
pupil_consents: Array;
}
-// TODO: Update typings to include meta response. Currently not possible since I don't have access
-export type AnnouncementsResponse = Array;
+export type AnnouncementsResponse = ClassChartsResponse<
+ Array,
+ []
+>;
export interface Pupil extends Student {
school_name: string;
From 7529b572a03b15338dd4e18c681b206b60028975 Mon Sep 17 00:00:00 2001
From: James Cook
Date: Thu, 14 Sep 2023 19:40:08 +0100
Subject: [PATCH 20/36] fix: remove description sanitising logic
Since the purpose of this library is to stay as true to the actual API as possible
---
src/core/baseClient.ts | 14 --------------
src/types.ts | 1 -
2 files changed, 15 deletions(-)
diff --git a/src/core/baseClient.ts b/src/core/baseClient.ts
index 829ef27..1a9043e 100644
--- a/src/core/baseClient.ts
+++ b/src/core/baseClient.ts
@@ -220,20 +220,6 @@ export class BaseClient {
method: "GET",
},
);
-
- for (let i = 0; i < data.data.length; i++) {
- data.data[i].description_raw = data.data[i].description;
- // homework.lesson.replace(/\\/g, '')
- data.data[i].description = data.data[i].description.replace(
- /(<([^>]+)>)/gi,
- "",
- );
- data.data[i].description = data.data[i].description.replace(
- / /g,
- "",
- );
- data.data[i].description = data.data[i].description.trim();
- }
return data;
}
/**
diff --git a/src/types.ts b/src/types.ts
index ee2188b..a60ff89 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -180,7 +180,6 @@ export interface Homework {
title: string;
meta_title: string;
description: string;
- description_raw: string;
issue_date: string;
due_date: string;
completion_time_unit: string;
From 687c36f32657a3711569ac7c18ed69a896f48c51 Mon Sep 17 00:00:00 2001
From: James Cook
Date: Thu, 14 Sep 2023 19:54:48 +0100
Subject: [PATCH 21/36] docs: update announcements docs
---
README.md | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index dc89f99..26c4fab 100644
--- a/README.md
+++ b/README.md
@@ -257,15 +257,26 @@ console.log(badges);
## `.getAnnouncements`
-?> This method does not include `meta` in the response, since I do not have
-access to this endpoint to test it. If you have access to this endpoint, please
-open a PR to add the `meta` response. Thanks!
-
Gets all announcements.
```typescript
const announcements = await client.getAnnouncements();
console.log(announcements);
+
+/**
+ {
+ success: 1,
+ data: [
+ {
+ id: 321453,
+ title: "A big announcement",
+ description: "School will be closing early today!
",
+ ...
+ }
+ ],
+ meta: []
+}
+*/
```
## `.getDetentions`
From 3e76d4a7626e2181f471d8c6156b087ef006dbad Mon Sep 17 00:00:00 2001
From: James Cook
Date: Thu, 14 Sep 2023 20:01:58 +0100
Subject: [PATCH 22/36] docs: add notice warning about parent client
---
README.md | 3 +++
1 file changed, 3 insertions(+)
diff --git a/README.md b/README.md
index 26c4fab..2cc6e77 100644
--- a/README.md
+++ b/README.md
@@ -83,6 +83,9 @@ await client.login();
## Parent Client
+?> The parent client is not tested, as I do not have access to a parent account.
+If you experience any issues, please open an issue or PR.
+
```typescript
import { ParentClient } from "classcharts-api";
From a9afa0e9e5b65eebf6df12233e3cec118bab4553 Mon Sep 17 00:00:00 2001
From: James Cook
Date: Fri, 15 Sep 2023 17:06:59 +0100
Subject: [PATCH 23/36] feat: export types to classcharts-api/types
This allow types to be easily accessed without knowing the full path.
Eliminates the need to decide which types should be exported from mod.ts
---
mod.ts | 11 -----------
scripts/build_npm.ts | 8 +++++++-
2 files changed, 7 insertions(+), 12 deletions(-)
diff --git a/mod.ts b/mod.ts
index 32eb371..249b084 100644
--- a/mod.ts
+++ b/mod.ts
@@ -1,13 +1,2 @@
export * from "./src/core/studentClient.ts";
export * from "./src/core/parentClient.ts";
-export type {
- ActivityPoint,
- Announcement,
- AttendanceDate,
- Badge,
- BehaviourTimelinePoint,
- Detention,
- Homework,
- Lesson,
- Student,
-} from "./src/types.ts";
diff --git a/scripts/build_npm.ts b/scripts/build_npm.ts
index 0d02947..4d7cf8d 100644
--- a/scripts/build_npm.ts
+++ b/scripts/build_npm.ts
@@ -5,7 +5,13 @@ if (!Deno.args[0]) throw new Error("No version specified");
await emptyDir("./npm");
await build({
- entryPoints: ["./mod.ts"],
+ entryPoints: [{
+ name: ".",
+ path: "./mod.ts",
+ }, {
+ name: "./types",
+ path: "./src/types.ts",
+ }],
outDir: "./npm",
shims: {
deno: true,
From d39eda7bf39e20d3f3e880d1c77b495ffaaafb2c Mon Sep 17 00:00:00 2001
From: Veloi <85405932+veloii@users.noreply.github.com>
Date: Fri, 15 Sep 2023 19:02:16 +0100
Subject: [PATCH 24/36] fix: attendance typing && expose full attendance
response object (#34)
---
src/core/baseClient.ts | 2 +-
src/types.ts | 35 ++++++++++++++++++++++-------------
2 files changed, 23 insertions(+), 14 deletions(-)
diff --git a/src/core/baseClient.ts b/src/core/baseClient.ts
index 1a9043e..8ba0286 100644
--- a/src/core/baseClient.ts
+++ b/src/core/baseClient.ts
@@ -300,6 +300,6 @@ export class BaseClient {
method: "GET",
},
)
- ).data;
+ );
}
}
diff --git a/src/types.ts b/src/types.ts
index a60ff89..14d1a71 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -412,17 +412,26 @@ export interface GetAttendanceOptions {
to: string;
}
-export interface AttendanceDate {
- AM: {
- code: string;
- status: "present" | "ignore";
- late_minutes: number;
- };
- PM: {
- code: string;
- status: "present" | "ignore";
- late_minutes: number;
- };
+export interface AttendancePeriod {
+ code: string;
+ status: "present" | "ignore";
+ late_minutes: number;
+ lesson_name?: string;
+ room_name?: string;
}
-// TODO: Update typings to include meta response. Currently not possible since I don't have access
-export type AttendanceResponse = Record[];
+
+export interface AttendanceMeta {
+ dates: string[];
+ sessions: string[];
+ start_date: string;
+ end_date: string;
+ percentage: string;
+ percentage_since_august: string;
+}
+
+export type AttendanceData = Record>;
+
+export type AttendanceResponse = ClassChartsResponse<
+ AttendanceData,
+ AttendanceMeta
+>;
From 39e7adf53f690239d7b08d252672400a14f79d9b Mon Sep 17 00:00:00 2001
From: James Cook
Date: Sat, 16 Sep 2023 19:31:11 +0100
Subject: [PATCH 25/36] chore: remove v from npm version
---
scripts/build_npm.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/build_npm.ts b/scripts/build_npm.ts
index 4d7cf8d..036fea5 100644
--- a/scripts/build_npm.ts
+++ b/scripts/build_npm.ts
@@ -28,7 +28,7 @@ await build({
name: "James Cook",
email: "james@jaminit.co.uk",
},
- version: Deno.args[0],
+ version: String(Deno.args[0]).replace("v", ""),
description:
"A Typescript wrapper for getting information from the ClassCharts API",
license: "ISC",
From dea1a00f1312b403b870f7ba83b8222c44a8a864 Mon Sep 17 00:00:00 2001
From: James Cook
Date: Sat, 16 Sep 2023 19:52:03 +0100
Subject: [PATCH 26/36] fix: Parent client Login (#36)
---
src/core/parentClient.ts | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/src/core/parentClient.ts b/src/core/parentClient.ts
index b20882d..c75a1d2 100644
--- a/src/core/parentClient.ts
+++ b/src/core/parentClient.ts
@@ -39,7 +39,7 @@ export class ParentClient extends BaseClient {
method: "POST",
body: formData,
headers: headers,
- credentials: undefined,
+ redirect: "manual",
});
if (response.status != 302 || !response.headers.has("set-cookie")) {
throw new Error(
@@ -56,19 +56,20 @@ export class ParentClient extends BaseClient {
const sessionID = JSON.parse(
String(sessionCookies["parent_session_credentials"]),
);
- super.sessionId = sessionID.session_id;
+ this.sessionId = sessionID.session_id;
this.pupils = await this.getPupils();
if (!this.pupils) throw new Error("Account has no pupils attached");
- super.studentId = this.pupils[0].id;
+ this.studentId = this.pupils[0].id;
}
/**
* Get a list of pupils connected to this parent's account
* @returns an array of Pupils connected to this parent's account
*/
async getPupils(): Promise {
- return await super.makeAuthedRequest(super.API_BASE + "/pupils", {
+ const response = await this.makeAuthedRequest(this.API_BASE + "/pupils", {
method: "GET",
});
+ return response.data;
}
/**
* Selects a pupil to be used with API requests
@@ -82,7 +83,7 @@ export class ParentClient extends BaseClient {
for (let i = 0; i < pupils.length; i++) {
const pupil = pupils[i];
if (pupil.id == pupilId) {
- super.studentId = pupil.id;
+ this.studentId = pupil.id;
return;
}
}
From c5e7b3f24e70a1d3fc75023d4fa5f0cbc274c0fa Mon Sep 17 00:00:00 2001
From: James Cook
Date: Sat, 16 Sep 2023 20:05:39 +0100
Subject: [PATCH 27/36] fix: improve makeAuthedRequest types
---
src/core/baseClient.ts | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/core/baseClient.ts b/src/core/baseClient.ts
index 8ba0286..9f4e93f 100644
--- a/src/core/baseClient.ts
+++ b/src/core/baseClient.ts
@@ -104,7 +104,8 @@ export class BaseClient {
}
}
const request = await fetch(path, requestOptions);
- let responseJSON: ClassChartsResponse;
+ // deno-lint-ignore no-explicit-any
+ let responseJSON: ClassChartsResponse;
try {
responseJSON = await request.json();
} catch {
@@ -115,8 +116,7 @@ export class BaseClient {
if (responseJSON.success == 0) {
throw new Error(responseJSON.error);
}
- // deno-lint-ignore no-explicit-any
- return responseJSON as unknown as any;
+ return responseJSON;
}
/**
* Gets general information about the current student
From a022c8a8adc458bb44a2dbc6010bb7b0b06465fd Mon Sep 17 00:00:00 2001
From: James Cook
Date: Sat, 16 Sep 2023 20:14:18 +0100
Subject: [PATCH 28/36] chore: move deno dev deps to deps file && use import
map
---
deno.jsonc | 5 ++++-
deps_dev.ts | 5 +++++
scripts/build_npm.ts | 1 +
src/core/baseClient.ts | 2 +-
src/core/parentClient.ts | 6 +++---
src/core/studentClient.ts | 6 +++---
src/core/studentClient_test.ts | 5 ++---
src/utils/utils_test.ts | 6 +-----
8 files changed, 20 insertions(+), 16 deletions(-)
create mode 100644 deps_dev.ts
diff --git a/deno.jsonc b/deno.jsonc
index 175e392..f6d841b 100644
--- a/deno.jsonc
+++ b/deno.jsonc
@@ -2,5 +2,8 @@
"tasks": {
"npm": "deno run -A scripts/build_npm.ts"
},
- "exclude": ["npm"]
+ "exclude": ["npm"],
+ "imports": {
+ "~/": "./"
+ }
}
diff --git a/deps_dev.ts b/deps_dev.ts
new file mode 100644
index 0000000..ac3dc72
--- /dev/null
+++ b/deps_dev.ts
@@ -0,0 +1,5 @@
+export {
+ assertEquals,
+ assertExists,
+ assertRejects,
+} from "https://deno.land/std@0.200.0/assert/mod.ts";
diff --git a/scripts/build_npm.ts b/scripts/build_npm.ts
index 036fea5..7155e06 100644
--- a/scripts/build_npm.ts
+++ b/scripts/build_npm.ts
@@ -13,6 +13,7 @@ await build({
path: "./src/types.ts",
}],
outDir: "./npm",
+ importMap: "./deno.jsonc",
shims: {
deno: true,
},
diff --git a/src/core/baseClient.ts b/src/core/baseClient.ts
index 9f4e93f..1aab7b4 100644
--- a/src/core/baseClient.ts
+++ b/src/core/baseClient.ts
@@ -16,7 +16,7 @@ import type {
HomeworksResponse,
LessonsResponse,
} from "../types.ts";
-import { PING_INTERVAL } from "../utils/consts.ts";
+import { PING_INTERVAL } from "~/src/utils/consts.ts";
/**
* Shared client for both parent and student. This is not exported and should not be used directly
diff --git a/src/core/parentClient.ts b/src/core/parentClient.ts
index c75a1d2..cc002a0 100644
--- a/src/core/parentClient.ts
+++ b/src/core/parentClient.ts
@@ -1,8 +1,8 @@
import type { GetPupilsResponse } from "../types.ts";
-import { BaseClient } from "./baseClient.ts";
-import { API_BASE_PARENT, BASE_URL } from "../utils/consts.ts";
-import { parseCookies } from "../utils/utils.ts";
+import { BaseClient } from "~/src/core/baseClient.ts";
+import { API_BASE_PARENT, BASE_URL } from "~/src/utils/consts.ts";
+import { parseCookies } from "~/src/utils/utils.ts";
/**
* Parent Client
*/
diff --git a/src/core/studentClient.ts b/src/core/studentClient.ts
index 464a22d..e21d0ba 100644
--- a/src/core/studentClient.ts
+++ b/src/core/studentClient.ts
@@ -1,6 +1,6 @@
-import { API_BASE_STUDENT, BASE_URL } from "../utils/consts.ts";
-import { BaseClient } from "./baseClient.ts";
-import { parseCookies } from "../utils/utils.ts";
+import { API_BASE_STUDENT, BASE_URL } from "~/src/utils/consts.ts";
+import { BaseClient } from "~/src/core/baseClient.ts";
+import { parseCookies } from "~/src/utils/utils.ts";
/**
* Student Client
diff --git a/src/core/studentClient_test.ts b/src/core/studentClient_test.ts
index 6932a75..a5b000a 100644
--- a/src/core/studentClient_test.ts
+++ b/src/core/studentClient_test.ts
@@ -1,6 +1,5 @@
-import { assertRejects } from "https://deno.land/std@0.200.0/assert/mod.ts";
-
-import { StudentClient } from "./studentClient.ts";
+import { assertRejects } from "~/deps_dev.ts";
+import { StudentClient } from "~/src/core/studentClient.ts";
Deno.test("Throws when no student code is provided", async () => {
const client = new StudentClient("");
diff --git a/src/utils/utils_test.ts b/src/utils/utils_test.ts
index 7ecfdff..ccb7696 100644
--- a/src/utils/utils_test.ts
+++ b/src/utils/utils_test.ts
@@ -1,8 +1,4 @@
-import {
- assertEquals,
- assertExists,
-} from "https://deno.land/std@0.200.0/assert/mod.ts";
-
+import { assertEquals, assertExists } from "~/deps_dev.ts";
import { parseCookies } from "./utils.ts";
Deno.test("Parses simple cookie", () => {
const cookie =
From 8a110405240b7fbf29310559666f6a9379414901 Mon Sep 17 00:00:00 2001
From: Isaac Hatton
Date: Sun, 17 Sep 2023 17:19:48 +0100
Subject: [PATCH 29/36] feat: parent client tests & consistant error messages
(#37)
---
src/core/parentClient.ts | 7 +++----
src/core/parentClient_test.ts | 35 +++++++++++++++++++++++++++++++++++
2 files changed, 38 insertions(+), 4 deletions(-)
create mode 100644 src/core/parentClient_test.ts
diff --git a/src/core/parentClient.ts b/src/core/parentClient.ts
index cc002a0..6f2451a 100644
--- a/src/core/parentClient.ts
+++ b/src/core/parentClient.ts
@@ -26,6 +26,7 @@ export class ParentClient extends BaseClient {
*/
async login(): Promise {
if (!this.email) throw new Error("Email not provided");
+ if (!this.password) throw new Error("Password not provided");
const formData = new URLSearchParams();
formData.append("_method", "POST");
formData.append("email", this.email);
@@ -42,11 +43,9 @@ export class ParentClient extends BaseClient {
redirect: "manual",
});
if (response.status != 302 || !response.headers.has("set-cookie")) {
+ await response.body?.cancel(); // Make deno tests happy by closing the body, unsure whether this is needed for the actual library
throw new Error(
- "Unauthenticated: ClassCharts returned an error: " +
- response.status +
- " " +
- response.statusText,
+ "Unauthenticated: ClassCharts didn't return authentication cookies",
);
}
diff --git a/src/core/parentClient_test.ts b/src/core/parentClient_test.ts
new file mode 100644
index 0000000..d947082
--- /dev/null
+++ b/src/core/parentClient_test.ts
@@ -0,0 +1,35 @@
+import { assertRejects } from "~/deps_dev.ts";
+import { ParentClient } from "~/src/core/parentClient.ts";
+
+Deno.test("Throws when no email is provided", async () => {
+ const client = new ParentClient("", "password");
+ await assertRejects(
+ async () => {
+ await client.login();
+ },
+ Error,
+ "Email not provided",
+ );
+});
+
+Deno.test("Throws when no password is provided", async () => {
+ const client = new ParentClient("email", "");
+ await assertRejects(
+ async () => {
+ await client.login();
+ },
+ Error,
+ "Password not provided",
+ );
+});
+
+Deno.test("Throws with invalid username and password", async () => {
+ const client = new ParentClient("invalid", "invalid");
+ await assertRejects(
+ async () => {
+ await client.login();
+ },
+ Error,
+ "Unauthenticated: ClassCharts didn't return authentication cookies",
+ );
+});
From c006fa26538cd6f6bf37e0ba6cec006325cda2f3 Mon Sep 17 00:00:00 2001
From: James Cook
Date: Sun, 17 Sep 2023 17:42:33 +0100
Subject: [PATCH 30/36] chore: repo cleanup
---
.vscode/extensions.json | 5 +++++
deps_dev.ts | 2 ++
index.html | 11 ++++-------
mod.ts | 4 ++--
scripts/build_npm.ts | 6 ++----
5 files changed, 15 insertions(+), 13 deletions(-)
create mode 100644 .vscode/extensions.json
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 0000000..09cf720
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,5 @@
+{
+ "recommendations": [
+ "denoland.vscode-deno"
+ ]
+}
diff --git a/deps_dev.ts b/deps_dev.ts
index ac3dc72..e5e832a 100644
--- a/deps_dev.ts
+++ b/deps_dev.ts
@@ -3,3 +3,5 @@ export {
assertExists,
assertRejects,
} from "https://deno.land/std@0.200.0/assert/mod.ts";
+
+export { build, emptyDir } from "https://deno.land/x/dnt@0.38.1/mod.ts";
diff --git a/index.html b/index.html
index e005a08..c532332 100644
--- a/index.html
+++ b/index.html
@@ -4,7 +4,10 @@
ClassCharts-API
-
+
-
diff --git a/mod.ts b/mod.ts
index 249b084..7650092 100644
--- a/mod.ts
+++ b/mod.ts
@@ -1,2 +1,2 @@
-export * from "./src/core/studentClient.ts";
-export * from "./src/core/parentClient.ts";
+export * from "~/src/core/studentClient.ts";
+export * from "~/src/core/parentClient.ts";
diff --git a/scripts/build_npm.ts b/scripts/build_npm.ts
index 7155e06..5704378 100644
--- a/scripts/build_npm.ts
+++ b/scripts/build_npm.ts
@@ -1,4 +1,4 @@
-import { build, emptyDir } from "https://deno.land/x/dnt@0.38.1/mod.ts";
+import { build, emptyDir } from "~/deps_dev.ts";
if (!Deno.args[0]) throw new Error("No version specified");
@@ -23,13 +23,12 @@ await build({
},
typeCheck: "both",
package: {
- // package.json properties
name: "classcharts-api",
+ version: String(Deno.args[0]).replace("v", ""),
author: {
name: "James Cook",
email: "james@jaminit.co.uk",
},
- version: String(Deno.args[0]).replace("v", ""),
description:
"A Typescript wrapper for getting information from the ClassCharts API",
license: "ISC",
@@ -48,7 +47,6 @@ await build({
sideEffects: false,
},
postBuild() {
- // steps to run after building and before running the tests
Deno.copyFileSync("LICENSE", "npm/LICENSE");
Deno.copyFileSync("README.md", "npm/README.md");
},
From 936057bbd42951d593901e0974955bbc8351153a Mon Sep 17 00:00:00 2001
From: James Cook
Date: Sun, 17 Sep 2023 17:56:27 +0100
Subject: [PATCH 31/36] chore: fix build script
---
deno.lock | 32 ++++++++++++++++++++++++++++++++
deps_dev.ts | 4 +---
scripts/build_npm.ts | 3 ++-
3 files changed, 35 insertions(+), 4 deletions(-)
diff --git a/deno.lock b/deno.lock
index f44f1e6..43b65b6 100644
--- a/deno.lock
+++ b/deno.lock
@@ -79,6 +79,38 @@
"https://deno.land/std@0.200.0/assert/unimplemented.ts": "d56fbeecb1f108331a380f72e3e010a1f161baa6956fd0f7cf3e095ae1a4c75a",
"https://deno.land/std@0.200.0/assert/unreachable.ts": "4600dc0baf7d9c15a7f7d234f00c23bca8f3eba8b140286aaca7aa998cf9a536",
"https://deno.land/std@0.200.0/fmt/colors.ts": "a7eecffdf3d1d54db890723b303847b6e0a1ab4b528ba6958b8f2e754cf1b3bc",
+ "https://deno.land/std@0.201.0/assert/_constants.ts": "8a9da298c26750b28b326b297316cdde860bc237533b07e1337c021379e6b2a9",
+ "https://deno.land/std@0.201.0/assert/_diff.ts": "1a3c044aedf77647d6cac86b798c6417603361b66b54c53331b312caeb447aea",
+ "https://deno.land/std@0.201.0/assert/_format.ts": "a69126e8a469009adf4cf2a50af889aca364c349797e63174884a52ff75cf4c7",
+ "https://deno.land/std@0.201.0/assert/assert.ts": "9a97dad6d98c238938e7540736b826440ad8c1c1e54430ca4c4e623e585607ee",
+ "https://deno.land/std@0.201.0/assert/assert_almost_equals.ts": "e15ca1f34d0d5e0afae63b3f5d975cbd18335a132e42b0c747d282f62ad2cd6c",
+ "https://deno.land/std@0.201.0/assert/assert_array_includes.ts": "6856d7f2c3544bc6e62fb4646dfefa3d1df5ff14744d1bca19f0cbaf3b0d66c9",
+ "https://deno.land/std@0.201.0/assert/assert_equals.ts": "d8ec8a22447fbaf2fc9d7c3ed2e66790fdb74beae3e482855d75782218d68227",
+ "https://deno.land/std@0.201.0/assert/assert_exists.ts": "407cb6b9fb23a835cd8d5ad804e2e2edbbbf3870e322d53f79e1c7a512e2efd7",
+ "https://deno.land/std@0.201.0/assert/assert_false.ts": "a9962749f4bf5844e3fa494257f1de73d69e4fe0e82c34d0099287552163a2dc",
+ "https://deno.land/std@0.201.0/assert/assert_greater.ts": "ae2158a2d19313bf675bf7251d31c6dc52973edb12ac64ac8fc7064152af3e63",
+ "https://deno.land/std@0.201.0/assert/assert_greater_or_equal.ts": "1439da5ebbe20855446cac50097ac78b9742abe8e9a43e7de1ce1426d556e89c",
+ "https://deno.land/std@0.201.0/assert/assert_instance_of.ts": "3aedb3d8186e120812d2b3a5dea66a6e42bf8c57a8bd927645770bd21eea554c",
+ "https://deno.land/std@0.201.0/assert/assert_is_error.ts": "c21113094a51a296ffaf036767d616a78a2ae5f9f7bbd464cd0197476498b94b",
+ "https://deno.land/std@0.201.0/assert/assert_less.ts": "aec695db57db42ec3e2b62e97e1e93db0063f5a6ec133326cc290ff4b71b47e4",
+ "https://deno.land/std@0.201.0/assert/assert_less_or_equal.ts": "5fa8b6a3ffa20fd0a05032fe7257bf985d207b85685fdbcd23651b70f928c848",
+ "https://deno.land/std@0.201.0/assert/assert_match.ts": "c4083f80600bc190309903c95e397a7c9257ff8b5ae5c7ef91e834704e672e9b",
+ "https://deno.land/std@0.201.0/assert/assert_not_equals.ts": "9f1acab95bd1f5fc9a1b17b8027d894509a745d91bac1718fdab51dc76831754",
+ "https://deno.land/std@0.201.0/assert/assert_not_instance_of.ts": "0c14d3dfd9ab7a5276ed8ed0b18c703d79a3d106102077ec437bfe7ed912bd22",
+ "https://deno.land/std@0.201.0/assert/assert_not_match.ts": "3796a5b0c57a1ce6c1c57883dd4286be13a26f715ea662318ab43a8491a13ab0",
+ "https://deno.land/std@0.201.0/assert/assert_not_strict_equals.ts": "ca6c6d645e95fbc873d25320efeb8c4c6089a9a5e09f92d7c1c4b6e935c2a6ad",
+ "https://deno.land/std@0.201.0/assert/assert_object_match.ts": "d8fc2867cfd92eeacf9cea621e10336b666de1874a6767b5ec48988838370b54",
+ "https://deno.land/std@0.201.0/assert/assert_rejects.ts": "45c59724de2701e3b1f67c391d6c71c392363635aad3f68a1b3408f9efca0057",
+ "https://deno.land/std@0.201.0/assert/assert_strict_equals.ts": "b1f538a7ea5f8348aeca261d4f9ca603127c665e0f2bbfeb91fa272787c87265",
+ "https://deno.land/std@0.201.0/assert/assert_string_includes.ts": "b821d39ebf5cb0200a348863c86d8c4c4b398e02012ce74ad15666fc4b631b0c",
+ "https://deno.land/std@0.201.0/assert/assert_throws.ts": "63784e951475cb7bdfd59878cd25a0931e18f6dc32a6077c454b2cd94f4f4bcd",
+ "https://deno.land/std@0.201.0/assert/assertion_error.ts": "4d0bde9b374dfbcbe8ac23f54f567b77024fb67dbb1906a852d67fe050d42f56",
+ "https://deno.land/std@0.201.0/assert/equal.ts": "9f1a46d5993966d2596c44e5858eec821859b45f783a5ee2f7a695dfc12d8ece",
+ "https://deno.land/std@0.201.0/assert/fail.ts": "c36353d7ae6e1f7933d45f8ea51e358c8c4b67d7e7502028598fe1fea062e278",
+ "https://deno.land/std@0.201.0/assert/mod.ts": "37c49a26aae2b254bbe25723434dc28cd7532e444cf0b481a97c045d110ec085",
+ "https://deno.land/std@0.201.0/assert/unimplemented.ts": "d56fbeecb1f108331a380f72e3e010a1f161baa6956fd0f7cf3e095ae1a4c75a",
+ "https://deno.land/std@0.201.0/assert/unreachable.ts": "4600dc0baf7d9c15a7f7d234f00c23bca8f3eba8b140286aaca7aa998cf9a536",
+ "https://deno.land/std@0.201.0/fmt/colors.ts": "87544aa2bc91087bb37f9c077970c85bfb041b48e4c37356129d7b450a415b6f",
"https://deno.land/x/code_block_writer@12.0.0/mod.ts": "2c3448060e47c9d08604c8f40dee34343f553f33edcdfebbf648442be33205e5",
"https://deno.land/x/code_block_writer@12.0.0/utils/string_utils.ts": "60cb4ec8bd335bf241ef785ccec51e809d576ff8e8d29da43d2273b69ce2a6ff",
"https://deno.land/x/deno_cache@0.5.2/auth_tokens.ts": "5d1d56474c54a9d152e44d43ea17c2e6a398dd1e9682c69811a313567c01ee1e",
diff --git a/deps_dev.ts b/deps_dev.ts
index e5e832a..e094a6d 100644
--- a/deps_dev.ts
+++ b/deps_dev.ts
@@ -2,6 +2,4 @@ export {
assertEquals,
assertExists,
assertRejects,
-} from "https://deno.land/std@0.200.0/assert/mod.ts";
-
-export { build, emptyDir } from "https://deno.land/x/dnt@0.38.1/mod.ts";
+} from "https://deno.land/std@0.201.0/assert/mod.ts";
diff --git a/scripts/build_npm.ts b/scripts/build_npm.ts
index 5704378..8cce7c8 100644
--- a/scripts/build_npm.ts
+++ b/scripts/build_npm.ts
@@ -1,4 +1,5 @@
-import { build, emptyDir } from "~/deps_dev.ts";
+// This dependancy cannot be moved to dev_deps.ts since dnt complains about a top-level await
+import { build, emptyDir } from "https://deno.land/x/dnt@0.38.1/mod.ts";
if (!Deno.args[0]) throw new Error("No version specified");
From 41f23e01d00c99c13e5c4f85f10e46ba4f763f6b Mon Sep 17 00:00:00 2001
From: Veloi <85405932+veloii@users.noreply.github.com>
Date: Mon, 18 Sep 2023 20:46:50 +0100
Subject: [PATCH 32/36] feat: reward shop methods, get pupil fields and add
meta on detentions (#35)
---
src/core/baseClient.ts | 17 ++++++++++-
src/core/studentClient.ts | 31 ++++++++++++++++++++
src/types.ts | 62 ++++++++++++++++++++++++++++++++++++---
3 files changed, 105 insertions(+), 5 deletions(-)
diff --git a/src/core/baseClient.ts b/src/core/baseClient.ts
index 1aab7b4..da97ba4 100644
--- a/src/core/baseClient.ts
+++ b/src/core/baseClient.ts
@@ -15,6 +15,7 @@ import type {
GetStudentInfoResponse,
HomeworksResponse,
LessonsResponse,
+ PupilFieldsResponse,
} from "../types.ts";
import { PING_INTERVAL } from "~/src/utils/consts.ts";
@@ -276,7 +277,7 @@ export class BaseClient {
method: "GET",
},
)
- ).data;
+ );
}
/**
* Gets the current student's attendance
@@ -302,4 +303,18 @@ export class BaseClient {
)
);
}
+ /**
+ * Gets the current student's pupil fields
+ * @returns Array of stats
+ */
+ async getPupilFields(): Promise {
+ return (
+ await this.makeAuthedRequest(
+ this.API_BASE + "/customfields/" + this.studentId,
+ {
+ method: "GET",
+ },
+ )
+ );
+ }
}
diff --git a/src/core/studentClient.ts b/src/core/studentClient.ts
index e21d0ba..7805a9a 100644
--- a/src/core/studentClient.ts
+++ b/src/core/studentClient.ts
@@ -1,6 +1,7 @@
import { API_BASE_STUDENT, BASE_URL } from "~/src/utils/consts.ts";
import { BaseClient } from "~/src/core/baseClient.ts";
import { parseCookies } from "~/src/utils/utils.ts";
+import { RewardPurchaseResponse, RewardsResponse } from "~/src/types.ts";
/**
* Student Client
@@ -58,4 +59,34 @@ export class StudentClient extends BaseClient {
const user = await this.getStudentInfo();
this.studentId = user.data.user.id;
}
+ /**
+ * Gets the current student's rewards shop
+ * @returns Array of purchasable items
+ */
+ async getRewards(): Promise {
+ return (
+ await this.makeAuthedRequest(
+ this.API_BASE + "/rewards/" + this.studentId,
+ {
+ method: "GET",
+ },
+ )
+ );
+ }
+ /**
+ * Purchase a reward item from the current student's rewards shop
+ * @param itemId number
+ * @returns An object containg balence and id
+ */
+ async purchaseReward(itemId: number): Promise {
+ return (
+ await this.makeAuthedRequest(
+ this.API_BASE + "/purchase/" + itemId,
+ {
+ method: "POST",
+ body: `pupil_id=${this.studentId}`,
+ },
+ )
+ );
+ }
}
diff --git a/src/types.ts b/src/types.ts
index 14d1a71..bee8553 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -335,8 +335,17 @@ export interface Detention {
name: string;
};
}
-// TODO: Update typings to include meta response. Currently not possible since I don't have access
-export type DetentionsResponse = Array;
+
+export type DetentionsData = Array;
+
+export interface DetentionsMeta {
+ detention_alias_plural: string;
+}
+
+export type DetentionsResponse = ClassChartsResponse<
+ DetentionsData,
+ DetentionsMeta
+>;
export interface Announcement {
id: number;
@@ -421,8 +430,8 @@ export interface AttendancePeriod {
}
export interface AttendanceMeta {
- dates: string[];
- sessions: string[];
+ dates: Array;
+ sessions: Array;
start_date: string;
end_date: string;
percentage: string;
@@ -435,3 +444,48 @@ export type AttendanceResponse = ClassChartsResponse<
AttendanceData,
AttendanceMeta
>;
+
+export type RewardsData = {
+ id: number;
+ name: string;
+ description: string;
+ photo: string;
+ price: number;
+ stock_control: boolean;
+ stock: number;
+ can_purchase: boolean;
+ unable_to_purchase_reason: string;
+ once_per_pupil: boolean;
+ purchased: boolean;
+ purchased_count: string;
+ price_balance_difference: number;
+}[];
+
+export interface RewardsMeta {
+ pupil_score_balance: number;
+}
+
+export type RewardsResponse = ClassChartsResponse;
+
+export interface RewardPurchaseData {
+ single_purchase: "yes" | "no";
+ order_id: number;
+ balance: number;
+}
+
+export type RewardPurchaseResponse = ClassChartsResponse<
+ RewardPurchaseData,
+ []
+>;
+
+export interface PupilFieldsData {
+ note: string;
+ fields: Array<{
+ id: number;
+ name: string;
+ graphic: string;
+ value: string;
+ }>;
+}
+
+export type PupilFieldsResponse = ClassChartsResponse;
From 821a5c26eaa7458599c358f14cf7d66a86e95354 Mon Sep 17 00:00:00 2001
From: James Cook
Date: Mon, 18 Sep 2023 20:52:01 +0100
Subject: [PATCH 33/36] chore: fmt
---
src/core/baseClient.ts | 62 ++++++++++++++++-----------------------
src/core/studentClient.ts | 6 ++--
2 files changed, 30 insertions(+), 38 deletions(-)
diff --git a/src/core/baseClient.ts b/src/core/baseClient.ts
index da97ba4..b41489d 100644
--- a/src/core/baseClient.ts
+++ b/src/core/baseClient.ts
@@ -126,11 +126,10 @@ export class BaseClient {
async getStudentInfo(): Promise {
const body = new URLSearchParams();
body.append("include_data", "true");
- const data = await this.makeAuthedRequest(this.API_BASE + "/ping", {
+ return await this.makeAuthedRequest(this.API_BASE + "/ping", {
method: "POST",
body: body,
});
- return data;
}
/**
* Gets the current student's activity
@@ -215,13 +214,12 @@ export class BaseClient {
options?.from && params.append("from", String(options?.from));
options?.to && params.append("to", String(options?.to));
- const data: HomeworksResponse = await this.makeAuthedRequest(
+ return await this.makeAuthedRequest(
this.API_BASE + "/homeworks/" + this.studentId + "?" + params.toString(),
{
method: "GET",
},
);
- return data;
}
/**
* Gets the current student's lessons for a given date
@@ -256,13 +254,11 @@ export class BaseClient {
* @returns Array of announcements
*/
async getAnnouncements(): Promise {
- return (
- await this.makeAuthedRequest(
- this.API_BASE + "/announcements/" + this.studentId,
- {
- method: "GET",
- },
- )
+ return await this.makeAuthedRequest(
+ this.API_BASE + "/announcements/" + this.studentId,
+ {
+ method: "GET",
+ },
);
}
/**
@@ -270,13 +266,11 @@ export class BaseClient {
* @returns Array of detentions
*/
async getDetentions(): Promise {
- return (
- await this.makeAuthedRequest(
- this.API_BASE + "/detentions/" + this.studentId,
- {
- method: "GET",
- },
- )
+ return await this.makeAuthedRequest(
+ this.API_BASE + "/detentions/" + this.studentId,
+ {
+ method: "GET",
+ },
);
}
/**
@@ -290,17 +284,15 @@ export class BaseClient {
const params = new URLSearchParams();
options?.from && params.append("from", options?.from);
options?.to && params.append("to", options?.to);
- return (
- await this.makeAuthedRequest(
- this.API_BASE +
- "/attendance/" +
- this.studentId +
- "?" +
- params.toString(),
- {
- method: "GET",
- },
- )
+ return await this.makeAuthedRequest(
+ this.API_BASE +
+ "/attendance/" +
+ this.studentId +
+ "?" +
+ params.toString(),
+ {
+ method: "GET",
+ },
);
}
/**
@@ -308,13 +300,11 @@ export class BaseClient {
* @returns Array of stats
*/
async getPupilFields(): Promise {
- return (
- await this.makeAuthedRequest(
- this.API_BASE + "/customfields/" + this.studentId,
- {
- method: "GET",
- },
- )
+ return await this.makeAuthedRequest(
+ this.API_BASE + "/customfields/" + this.studentId,
+ {
+ method: "GET",
+ },
);
}
}
diff --git a/src/core/studentClient.ts b/src/core/studentClient.ts
index 7805a9a..d52daff 100644
--- a/src/core/studentClient.ts
+++ b/src/core/studentClient.ts
@@ -59,8 +59,9 @@ export class StudentClient extends BaseClient {
const user = await this.getStudentInfo();
this.studentId = user.data.user.id;
}
+
/**
- * Gets the current student's rewards shop
+ * Gets the available items in the current student's rewards shop
* @returns Array of purchasable items
*/
async getRewards(): Promise {
@@ -73,10 +74,11 @@ export class StudentClient extends BaseClient {
)
);
}
+
/**
* Purchase a reward item from the current student's rewards shop
* @param itemId number
- * @returns An object containg balence and id
+ * @returns An object containing the current student's balance and item ID purchased
*/
async purchaseReward(itemId: number): Promise {
return (
From c38a83708df870c6b0da531055bdc2503b2f8e45 Mon Sep 17 00:00:00 2001
From: James Cook
Date: Mon, 18 Sep 2023 20:54:52 +0100
Subject: [PATCH 34/36] fix: update homework attachments type
---
src/types.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/types.ts b/src/types.ts
index bee8553..6b040ce 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -191,7 +191,7 @@ export interface Homework {
mark: unknown | null;
mark_relative: number;
ticked: "yes" | "no";
- allow_attachments: "yes" | "no";
+ allow_attachments: boolean;
first_seen_date: string;
last_seen_date: string;
attachments: Array;
From 51af82ea9aa545bb1abde48b3b59464d88302796 Mon Sep 17 00:00:00 2001
From: James Cook
Date: Wed, 20 Sep 2023 11:51:39 +0100
Subject: [PATCH 35/36] chore: .gitattributes
---
.gitattributes | 1 +
1 file changed, 1 insertion(+)
create mode 100644 .gitattributes
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..69b347b
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+*.lock text diff=json
From b2af13c315ece1d6bd4c89f618f61758f57ef877 Mon Sep 17 00:00:00 2001
From: James Cook
Date: Sun, 24 Sep 2023 13:36:35 +0100
Subject: [PATCH 36/36] fix: remove import map
Doesn't work with importing in deno
---
deno.jsonc | 5 +----
mod.ts | 4 ++--
src/core/baseClient.ts | 2 +-
src/core/parentClient.ts | 6 +++---
src/core/parentClient_test.ts | 4 ++--
src/core/studentClient.ts | 8 ++++----
src/core/studentClient_test.ts | 4 ++--
src/utils/utils_test.ts | 2 +-
8 files changed, 16 insertions(+), 19 deletions(-)
diff --git a/deno.jsonc b/deno.jsonc
index f6d841b..175e392 100644
--- a/deno.jsonc
+++ b/deno.jsonc
@@ -2,8 +2,5 @@
"tasks": {
"npm": "deno run -A scripts/build_npm.ts"
},
- "exclude": ["npm"],
- "imports": {
- "~/": "./"
- }
+ "exclude": ["npm"]
}
diff --git a/mod.ts b/mod.ts
index 7650092..249b084 100644
--- a/mod.ts
+++ b/mod.ts
@@ -1,2 +1,2 @@
-export * from "~/src/core/studentClient.ts";
-export * from "~/src/core/parentClient.ts";
+export * from "./src/core/studentClient.ts";
+export * from "./src/core/parentClient.ts";
diff --git a/src/core/baseClient.ts b/src/core/baseClient.ts
index b41489d..6e1d3a5 100644
--- a/src/core/baseClient.ts
+++ b/src/core/baseClient.ts
@@ -17,7 +17,7 @@ import type {
LessonsResponse,
PupilFieldsResponse,
} from "../types.ts";
-import { PING_INTERVAL } from "~/src/utils/consts.ts";
+import { PING_INTERVAL } from "../utils/consts.ts";
/**
* Shared client for both parent and student. This is not exported and should not be used directly
diff --git a/src/core/parentClient.ts b/src/core/parentClient.ts
index 6f2451a..add0d6b 100644
--- a/src/core/parentClient.ts
+++ b/src/core/parentClient.ts
@@ -1,8 +1,8 @@
import type { GetPupilsResponse } from "../types.ts";
-import { BaseClient } from "~/src/core/baseClient.ts";
-import { API_BASE_PARENT, BASE_URL } from "~/src/utils/consts.ts";
-import { parseCookies } from "~/src/utils/utils.ts";
+import { BaseClient } from "../core/baseClient.ts";
+import { API_BASE_PARENT, BASE_URL } from "../utils/consts.ts";
+import { parseCookies } from "../utils/utils.ts";
/**
* Parent Client
*/
diff --git a/src/core/parentClient_test.ts b/src/core/parentClient_test.ts
index d947082..7e5ac8c 100644
--- a/src/core/parentClient_test.ts
+++ b/src/core/parentClient_test.ts
@@ -1,5 +1,5 @@
-import { assertRejects } from "~/deps_dev.ts";
-import { ParentClient } from "~/src/core/parentClient.ts";
+import { assertRejects } from "../../deps_dev.ts";
+import { ParentClient } from "../core/parentClient.ts";
Deno.test("Throws when no email is provided", async () => {
const client = new ParentClient("", "password");
diff --git a/src/core/studentClient.ts b/src/core/studentClient.ts
index d52daff..c424c88 100644
--- a/src/core/studentClient.ts
+++ b/src/core/studentClient.ts
@@ -1,7 +1,7 @@
-import { API_BASE_STUDENT, BASE_URL } from "~/src/utils/consts.ts";
-import { BaseClient } from "~/src/core/baseClient.ts";
-import { parseCookies } from "~/src/utils/utils.ts";
-import { RewardPurchaseResponse, RewardsResponse } from "~/src/types.ts";
+import { API_BASE_STUDENT, BASE_URL } from "../utils/consts.ts";
+import { BaseClient } from "../core/baseClient.ts";
+import { parseCookies } from "../utils/utils.ts";
+import { RewardPurchaseResponse, RewardsResponse } from "../types.ts";
/**
* Student Client
diff --git a/src/core/studentClient_test.ts b/src/core/studentClient_test.ts
index a5b000a..0f53f3a 100644
--- a/src/core/studentClient_test.ts
+++ b/src/core/studentClient_test.ts
@@ -1,5 +1,5 @@
-import { assertRejects } from "~/deps_dev.ts";
-import { StudentClient } from "~/src/core/studentClient.ts";
+import { assertRejects } from "../../deps_dev.ts";
+import { StudentClient } from "../core/studentClient.ts";
Deno.test("Throws when no student code is provided", async () => {
const client = new StudentClient("");
diff --git a/src/utils/utils_test.ts b/src/utils/utils_test.ts
index ccb7696..dcf0b5e 100644
--- a/src/utils/utils_test.ts
+++ b/src/utils/utils_test.ts
@@ -1,4 +1,4 @@
-import { assertEquals, assertExists } from "~/deps_dev.ts";
+import { assertEquals, assertExists } from "../../deps_dev.ts";
import { parseCookies } from "./utils.ts";
Deno.test("Parses simple cookie", () => {
const cookie =