aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Ricardo <ricardo@cino.io>2023-10-13 14:12:03 +0200
committerLibravatar GitHub <noreply@github.com>2023-10-13 13:12:03 +0100
commite503468660a13760010a94ecda5f0625c6f47f87 (patch)
treefa532f54fc5f091de08d55405ec6339bd2440a02
parent1.3.16 [skip ci] (diff)
downloadferdium-server-e503468660a13760010a94ecda5f0625c6f47f87.tar.gz
ferdium-server-e503468660a13760010a94ecda5f0625c6f47f87.tar.zst
ferdium-server-e503468660a13760010a94ecda5f0625c6f47f87.zip
Server re-build with latest AdonisJS framework & Typescript (#47)
* chore: setup first basis structure * chore: ensure styling is loaded correctly * chore: comply to new routing syntax by replace . with / in routes/resource locations * chore: add login controller * chore: correctly use views with slash instead of dot * chore: working login + tests * chore: clean up tests * chore: add password-forgot endpoint and matching test * chore: add delete page test * chore: add logout test * chore: add reset-password route and tests * chore: remove obsolete comment * chore: add account-page and tests * chore: add data page & first step of the test * chore: add transfer/import data feature and tests * chore: add export and basic test * chore: add all static api routes with tests * Regenerate 'pnpm-lock.json' and fix bad merge conflict WIP: - Tests have been commented out since they dont work - Server doesn't start * easier dev and test runs * - remove --require-pragma from reformat-files so formatting works properly - run pnpm reformat-files over codebase - remove .json files from .eslintignore - add invalid.json file to .eslintignore - configure prettier properly in eslint config - add type jsdoc to prettier config - run adonis generate:manifest command to regenerate ace-manifest.json - specify volta in package.json - introduce typecheck npm script - remove unused .mjs extension from npm scripts - install missing type definition dependencies - add pnpm.allowedDeprecatedVersions to package.json - fix invalid extends in tsconfig.json causing TS issues throughout codebase - remove @ts-ignore throughout codebase which is not relevant anymore - enable some of the tsconfig options - remove outdated eslint-disable from codebase - change deprecated faker.company.companyName() to faker.company.name() - fix TS issues inside transfer.spec.ts * - update to latest node and pnpm versions - upgrade all non-major dependencies to latest - install missing @types/luxon dependency - add cuid to pnpm.allowedDeprecatedVersions - add esModuleInterop config option to tsconfig - migrate more deprecated faker methods to new ones - add more temporary ts-ignore to code * - update eslint config - remove trailingComma: all since default in prettier v3 - add typecheck command to prepare-code npm script - upgrade various dependencies to latest major version - update tsconfig to include only useful config options - disable some lint issues and fix others * - add test command to prepare-code - disable strictPropertyInitialization flag in tsconfig which creates issues with adonis models - update precommit hook to excute pnpm prepare-code - remove ts-ignore statements from all models * fix node and pnpm dependency update * add cross env (so that we can develop on windows) * add signup endpoint (TODO: JWT auth) * Add login endpoint * Add me and updateMe endpoints * Add service endpoint * refactor: change endpoints to use jwt * add recipes endpoint * add workspaces endpoint * fix web controllors for login and post import * Update node deps * Change auth middleware (for web) and exempt api from CSRF * Add import endpoint (franz import) * Fix export/import logic * Fix service and workspace data in user/data * Fix partial lint * chore: workaround lint issues * fix: migration naming had two . * Sync back node with recipes repo * Temporarily ignore typescript * Fix adonisrc to handle public folder static assets * Fix issue with production database * add Legacy Password Provider * Fix lint errors * Fix issue on login errors frontend * add Legacy Password Provider * Fix issue with customIcons * Fix issue with auth tokens * Update 'node' to '18.18.0' * make docker work * improve docker entrypoint (test api performance) * Add migration database script * NODE_ENV on recipes * prefer @ts-expect-error over @ts-ignore * small fixes * Update 'pnpm' to '8.7.6' * fix error catch * Automatically generate JWT Public and Private keys * Use custom Adonis5-jwt * Update code to use secret (old way, no breaking changes) * Normalize appKey * Trick to make JWT tokens on client work with new version * Fix error with new JWT logic * Change migration and how we store JWT * Fix 500 response code (needs to be 401) * Improve logic and fix bugs * Fix build and entrypoint logic * Catch error if appKey changes * Add newToken logic * Fix lint (ignore any errors) * Add build for PRs * pnpm reformat-files result * Fix some tests * Fix reset password not working (test failing) * Restore csrfTokens (disabled by accident) * Fix pnpm start command with .env * Disable failing tests on the transfer endpoint (TODO) * Add tests to PR build * Fix build * Remove unnecessary assertStatus * Add typecheck * hash password on UserFactory (fix build) * Add JWT_USE_PEM true by default (increase security) * fix name of github action --------- Co-authored-by: Vijay A <vraravam@users.noreply.github.com> Co-authored-by: Balaji Vijayakumar <kuttibalaji.v6@gmail.com> Co-authored-by: MCMXC <16797721+mcmxcdev@users.noreply.github.com> Co-authored-by: André Oliveira <oliveira.andrerodrigues95@gmail.com>
-rw-r--r--.adonisrc.json52
-rw-r--r--.do/deploy.template.yaml46
-rw-r--r--.dockerignore7
-rw-r--r--.env.development15
-rw-r--r--.env.example4
-rw-r--r--.env.test6
-rw-r--r--.eslintignore3
-rw-r--r--.eslintrc.js97
-rw-r--r--.github/workflows/build.yml30
-rw-r--r--.gitignore2
-rwxr-xr-x.husky/pre-commit2
-rw-r--r--.npmrc1
-rw-r--r--.prettierrc.js4
-rw-r--r--Dockerfile5
-rw-r--r--README.md2
-rw-r--r--ace19
-rw-r--r--ace-manifest.json616
-rw-r--r--app/Controllers/Http/Api/Static/AnnouncementsController.ts20
-rw-r--r--app/Controllers/Http/Api/Static/EmptyController.ts7
-rw-r--r--app/Controllers/Http/Api/Static/FeaturesController.ts14
-rw-r--r--app/Controllers/Http/Dashboard/AccountController.ts80
-rw-r--r--app/Controllers/Http/Dashboard/DataController.ts24
-rw-r--r--app/Controllers/Http/Dashboard/DeleteController.ts20
-rw-r--r--app/Controllers/Http/Dashboard/ExportController.ts56
-rw-r--r--app/Controllers/Http/Dashboard/ForgotPasswordController.ts41
-rw-r--r--app/Controllers/Http/Dashboard/LogOutController.ts12
-rw-r--r--app/Controllers/Http/Dashboard/LoginController.ts81
-rw-r--r--app/Controllers/Http/Dashboard/ResetPasswordController.ts85
-rw-r--r--app/Controllers/Http/Dashboard/TransferController.ts128
-rw-r--r--app/Controllers/Http/DashboardController.ts (renamed from app/Controllers/Http/DashboardController.js)6
-rw-r--r--app/Controllers/Http/HealthController.ts10
-rw-r--r--app/Controllers/Http/HomeController.ts9
-rw-r--r--app/Controllers/Http/RecipeController.js226
-rw-r--r--app/Controllers/Http/RecipeController.ts254
-rw-r--r--app/Controllers/Http/ServiceController.ts (renamed from app/Controllers/Http/ServiceController.js)290
-rw-r--r--app/Controllers/Http/StaticController.js44
-rw-r--r--app/Controllers/Http/StaticsController.ts3
-rw-r--r--app/Controllers/Http/UserController.ts (renamed from app/Controllers/Http/UserController.js)264
-rw-r--r--app/Controllers/Http/WorkspaceController.js172
-rw-r--r--app/Controllers/Http/WorkspaceController.ts180
-rw-r--r--app/Exceptions/Handler.js48
-rw-r--r--app/Exceptions/Handler.ts23
-rw-r--r--app/Middleware/AllowGuestOnly.ts56
-rw-r--r--app/Middleware/Auth.ts118
-rw-r--r--app/Middleware/ConvertEmptyStringsToNull.js15
-rw-r--r--app/Middleware/Dashboard.ts17
-rw-r--r--app/Middleware/HandleDoubleSlash.js24
-rw-r--r--app/Middleware/SilentAuth.ts24
-rw-r--r--app/Models/Recipe.js7
-rw-r--r--app/Models/Recipe.ts23
-rw-r--r--app/Models/Service.js10
-rw-r--r--app/Models/Service.ts40
-rw-r--r--app/Models/Token.js10
-rw-r--r--app/Models/Token.ts38
-rw-r--r--app/Models/Traits/NoTimestamp.js14
-rw-r--r--app/Models/User.js46
-rw-r--r--app/Models/User.ts98
-rw-r--r--app/Models/Workspace.js10
-rw-r--r--app/Models/Workspace.ts41
-rw-r--r--commands/index.ts21
-rw-r--r--config/app.js242
-rw-r--r--config/app.ts244
-rw-r--r--config/auth.js93
-rw-r--r--config/auth.ts263
-rw-r--r--config/bodyParser.js156
-rw-r--r--config/bodyparser.ts205
-rw-r--r--config/cors.js86
-rw-r--r--config/cors.ts134
-rw-r--r--config/dashboard.ts5
-rw-r--r--config/database.js88
-rw-r--r--config/database.ts121
-rw-r--r--config/drive.js45
-rw-r--r--config/drive.ts149
-rw-r--r--config/hash.js48
-rw-r--r--config/hash.ts88
-rw-r--r--config/mail.js104
-rw-r--r--config/mail.ts118
-rw-r--r--config/persona.js94
-rw-r--r--config/session.js98
-rw-r--r--config/session.ts116
-rw-r--r--config/shield.js144
-rw-r--r--config/shield.ts243
-rw-r--r--config/static.ts10
-rw-r--r--contracts/auth.ts103
-rw-r--r--contracts/drive.ts13
-rw-r--r--contracts/env.ts23
-rw-r--r--contracts/events.ts33
-rw-r--r--contracts/hash.ts26
-rw-r--r--contracts/mail.ts13
-rw-r--r--contracts/tests.ts19
-rw-r--r--data/.gitignore1
-rw-r--r--database/factories/ServiceFactory.ts8
-rw-r--r--database/factories/TokenFactory.ts17
-rw-r--r--database/factories/UserFactory.ts21
-rw-r--r--database/factories/WorkspaceFactory.ts7
-rw-r--r--database/factory.js20
-rw-r--r--database/migrations/1503250034279_user.js22
-rw-r--r--database/migrations/1503250034279_user.ts20
-rw-r--r--database/migrations/1503250034280_token.js22
-rw-r--r--database/migrations/1503250034280_token.ts20
-rw-r--r--database/migrations/1566385379883_service_schema.js23
-rw-r--r--database/migrations/1566385379883_service_schema.ts21
-rw-r--r--database/migrations/1566554231482_recipe_schema.js21
-rw-r--r--database/migrations/1566554231482_recipe_schema.ts19
-rw-r--r--database/migrations/1566554359294_workspace_schema.ts (renamed from database/migrations/1566554359294_workspace_schema.js)16
-rw-r--r--database/migrations/1612629845398_users_update_schema.js18
-rw-r--r--database/migrations/1612629845398_users_update_schema.ts15
-rw-r--r--database/migrations/1658076326250_correct_token_relations.ts22
-rw-r--r--database/migrations/1696110557648_jwt_tokens.ts29
-rw-r--r--docker/docker-compose.yml6
-rwxr-xr-xdocker/entrypoint.sh90
-rw-r--r--env.ts25
-rw-r--r--helpers/PasswordHash.ts24
-rw-r--r--logo.pngbin120793 -> 0 bytes
-rw-r--r--package.json141
-rw-r--r--pnpm-lock.yaml11587
-rw-r--r--providers/AppProvider.ts21
-rw-r--r--providers/LegacyHashDriver.ts19
-rw-r--r--providers/LegacyHasherProvider.ts14
-rw-r--r--public/js/new.js12
-rw-r--r--public/js/transfer.js11
-rw-r--r--resources/js/app.js0
-rw-r--r--resources/views/dashboard/account.edge28
-rw-r--r--resources/views/dashboard/data.edge340
-rw-r--r--resources/views/dashboard/delete.edge10
-rw-r--r--resources/views/dashboard/forgotPassword.edge12
-rw-r--r--resources/views/dashboard/login.edge14
-rw-r--r--resources/views/dashboard/resetPassword.edge14
-rw-r--r--resources/views/dashboard/transfer.edge14
-rw-r--r--resources/views/emails/reset_password.edge8
-rw-r--r--resources/views/layouts/main.edge6
-rw-r--r--resources/views/layouts/v2.edge4
-rw-r--r--resources/views/others/import.edge12
-rw-r--r--resources/views/others/index.edge5
-rw-r--r--resources/views/others/message.edge2
-rw-r--r--resources/views/others/new.edge4
-rw-r--r--scripts/adonisjs-4-to-5.sh50
-rw-r--r--server.js28
-rw-r--r--server.ts19
-rw-r--r--start/app.js65
-rw-r--r--start/events.js25
-rw-r--r--start/events.ts33
-rw-r--r--start/kernel.js62
-rw-r--r--start/kernel.ts49
-rw-r--r--start/routes.js128
-rw-r--r--start/routes.ts22
-rw-r--r--start/routes/api.ts51
-rw-r--r--start/routes/web.ts54
-rw-r--r--test.ts49
-rw-r--r--tests/bootstrap.ts83
-rw-r--r--tests/config.ts1
-rw-r--r--tests/functional/api/register.spec.ts0
-rw-r--r--tests/functional/api/static/announcements.spec.ts55
-rw-r--r--tests/functional/api/static/features.spec.ts29
-rw-r--r--tests/functional/api/static/news.spec.ts11
-rw-r--r--tests/functional/api/static/services.spec.ts11
-rw-r--r--tests/functional/dashboard/account.spec.ts124
-rw-r--r--tests/functional/dashboard/data.spec.ts31
-rw-r--r--tests/functional/dashboard/delete.spec.ts37
-rw-r--r--tests/functional/dashboard/disabled-dashboard.spec.ts71
-rw-r--r--tests/functional/dashboard/export.spec.ts61
-rw-r--r--tests/functional/dashboard/forgot-password.spec.ts70
-rw-r--r--tests/functional/dashboard/import-stubs/invalid.json1
-rw-r--r--tests/functional/dashboard/import-stubs/random-file.txt0
-rw-r--r--tests/functional/dashboard/import-stubs/services-only.ferdi-data38
-rw-r--r--tests/functional/dashboard/import-stubs/services-only.ferdium-data38
-rw-r--r--tests/functional/dashboard/import-stubs/services-only.json38
-rw-r--r--tests/functional/dashboard/import-stubs/services-workspaces.ferdi-data61
-rw-r--r--tests/functional/dashboard/import-stubs/services-workspaces.ferdium-data61
-rw-r--r--tests/functional/dashboard/import-stubs/services-workspaces.json64
-rw-r--r--tests/functional/dashboard/import-stubs/valid-no-data.json3
-rw-r--r--tests/functional/dashboard/import-stubs/workspaces-only.ferdi-data26
-rw-r--r--tests/functional/dashboard/import-stubs/workspaces-only.ferdium-data26
-rw-r--r--tests/functional/dashboard/import-stubs/workspaces-only.json26
-rw-r--r--tests/functional/dashboard/login.spec.ts65
-rw-r--r--tests/functional/dashboard/logout.spec.ts21
-rw-r--r--tests/functional/dashboard/reset-password.spec.ts122
-rw-r--r--tests/functional/dashboard/transfer.spec.ts222
-rw-r--r--tests/functional/health.spec.ts13
-rw-r--r--tests/functional/static-pages/home.spec.ts10
-rw-r--r--tests/functional/static-pages/privacy.spec.ts10
-rw-r--r--tests/functional/static-pages/terms.spec.ts10
-rw-r--r--tests/utils.ts6
-rw-r--r--tsconfig.json37
-rw-r--r--webpack.config.js213
185 files changed, 15896 insertions, 5943 deletions
diff --git a/.adonisrc.json b/.adonisrc.json
new file mode 100644
index 0000000..b776e25
--- /dev/null
+++ b/.adonisrc.json
@@ -0,0 +1,52 @@
1{
2 "typescript": true,
3 "commands": [
4 "./commands",
5 "@adonisjs/core/build/commands/index.js",
6 "@adonisjs/repl/build/commands",
7 "@adonisjs/lucid/build/commands",
8 "@adonisjs/mail/build/commands",
9 "adonis5-jwt/build/commands"
10 ],
11 "exceptionHandlerNamespace": "App/Exceptions/Handler",
12 "aliases": {
13 "App": "app",
14 "Config": "config",
15 "Database": "database",
16 "Contracts": "contracts"
17 },
18 "preloads": ["./start/routes", "./start/kernel", "./start/events"],
19 "providers": [
20 "./providers/AppProvider",
21 "@adonisjs/core",
22 "@adonisjs/view",
23 "@adonisjs/lucid",
24 "@adonisjs/auth",
25 "@adonisjs/shield",
26 "@adonisjs/session",
27 "@adonisjs/mail",
28 "adonis5-jwt",
29 "./providers/LegacyHasherProvider"
30 ],
31 "aceProviders": ["@adonisjs/repl"],
32 "tests": {
33 "suites": [
34 {
35 "name": "functional",
36 "files": ["tests/functional/**/*.spec(.ts|.js)"],
37 "timeout": 60000
38 }
39 ]
40 },
41 "testProviders": ["@japa/preset-adonis/TestsProvider"],
42 "metaFiles": [
43 {
44 "pattern": "resources/views/**/*.edge",
45 "reloadServer": false
46 },
47 {
48 "pattern": "public/**",
49 "reloadServer": false
50 }
51 ]
52}
diff --git a/.do/deploy.template.yaml b/.do/deploy.template.yaml
deleted file mode 100644
index eae9e22..0000000
--- a/.do/deploy.template.yaml
+++ /dev/null
@@ -1,46 +0,0 @@
1spec:
2 alerts:
3 - rule: DEPLOYMENT_FAILED
4 - rule: DOMAIN_FAILED
5 databases:
6 - engine: PG
7 name: ferdium-db
8 num_nodes: 1
9 size: db-s-dev-database
10 version: "12"
11 name: ferdium-server
12 region: lon
13 services:
14 - dockerfile_path: Dockerfile
15 git:
16 branch: main
17 repo_clone_url: https://github.com/ferdium/ferdium-server.git
18 envs:
19 - key: DB_HOST
20 scope: RUN_AND_BUILD_TIME
21 value: ${ferdium-db.HOSTNAME}
22 - key: DB_PORT
23 scope: RUN_AND_BUILD_TIME
24 value: ${ferdium-db.PORT}
25 - key: DB_USER
26 scope: RUN_AND_BUILD_TIME
27 value: ${ferdium-db.USERNAME}
28 - key: DB_PASSWORD
29 scope: RUN_AND_BUILD_TIME
30 value: ${ferdium-db.PASSWORD}
31 - key: DB_DATABASE
32 scope: RUN_AND_BUILD_TIME
33 value: ${ferdium-db.DATABASE}
34 - key: DB_CA_CERT
35 scope: RUN_AND_BUILD_TIME
36 value: ${ferdium-db.CA_CERT}
37 - key: DB_CONNECTION
38 scope: RUN_AND_BUILD_TIME
39 value: pg
40 http_port: 8080
41 instance_count: 1
42 instance_size_slug: basic-xxs
43 name: ferdium-server
44 routes:
45 - path: /
46 source_dir: /
diff --git a/.dockerignore b/.dockerignore
index 84d3156..f76f0a0 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -17,5 +17,12 @@ docker
17node_modules 17node_modules
18.husky 18.husky
19 19
20# Ignore data folder
21data
22tmp
23
20# Ignore recipes folder (it is pulled in the image by git) 24# Ignore recipes folder (it is pulled in the image by git)
21recipes 25recipes
26
27# Ignore build folder
28build
diff --git a/.env.development b/.env.development
new file mode 100644
index 0000000..2a66ad4
--- /dev/null
+++ b/.env.development
@@ -0,0 +1,15 @@
1#This is a minimal needed configuration for development
2
3NODE_ENV=development
4APP_URL=http://localhost:3333
5DB_CONNECTION=sqlite
6APP_KEY=IDU2cMbrvS6iv5841YmFJSjnIqT1X1Nx
7
8# These are needed if running outside of Docker
9HOST=127.0.0.1
10PORT=3333
11
12IS_CREATION_ENABLED=true
13IS_DASHBOARD_ENABLED=true
14IS_REGISTRATION_ENABLED=true
15CONNECT_WITH_FRANZ=true
diff --git a/.env.example b/.env.example
index a486df9..a288fde 100644
--- a/.env.example
+++ b/.env.example
@@ -1,3 +1,5 @@
1#This is a example file with all the available configuration options.
2
1NODE_ENV=development 3NODE_ENV=development
2APP_URL=localhost 4APP_URL=localhost
3DB_CONNECTION=sqlite 5DB_CONNECTION=sqlite
@@ -19,8 +21,6 @@ IS_DASHBOARD_ENABLED=true
19IS_REGISTRATION_ENABLED=true 21IS_REGISTRATION_ENABLED=true
20CONNECT_WITH_FRANZ=false 22CONNECT_WITH_FRANZ=false
21DATA_DIR=data 23DATA_DIR=data
22PUID=1000
23PGID=1000
24 24
25# These are needed if running outside of Docker 25# These are needed if running outside of Docker
26APP_KEY= # Need to set some value 26APP_KEY= # Need to set some value
diff --git a/.env.test b/.env.test
new file mode 100644
index 0000000..c522ba5
--- /dev/null
+++ b/.env.test
@@ -0,0 +1,6 @@
1#This is a minimal needed configuration for test
2
3NODE_ENV=test
4ASSETS_DRIVER=fake
5SESSION_DRIVER=memory
6APP_KEY=IDU2cMbrvS6iv5841YmFJSjnIqT1X1Nx
diff --git a/.eslintignore b/.eslintignore
index 79e0599..606431b 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -29,8 +29,7 @@ node_modules
29/recipes/ 29/recipes/
30 30
31# package files 31# package files
32package.json
33pnpm-lock.yaml 32pnpm-lock.yaml
34 33
35# Json 34# Json
36*.json 35tests/functional/dashboard/import-stubs/invalid.json
diff --git a/.eslintrc.js b/.eslintrc.js
index d3bc05b..2660c04 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -1,33 +1,86 @@
1/** @type {import('eslint').Linter.Config} */
1module.exports = { 2module.exports = {
2 root: true, 3 root: true,
3 env: { 4 parserOptions: {
4 commonjs: true, 5 ecmaVersion: 2018,
5 es6: true, 6 sourceType: 'module',
6 node: true, 7 project: './tsconfig.json',
7 }, 8 },
8 extends: ['airbnb-base'], 9 ignorePatterns: ['node_modules', 'build', 'recipes', '.eslintrc.js'],
10 extends: [
11 'plugin:adonis/typescriptApp',
12 'plugin:unicorn/recommended',
13 'prettier',
14 ],
15 plugins: [],
9 globals: { 16 globals: {
10 Atomics: 'readonly', 17 use: true,
11 SharedArrayBuffer: 'readonly',
12 use: 'readonly',
13 window: 'readonly',
14 document: 'readonly',
15 ENV: 'readonly',
16 session: 'readonly',
17 response: 'readonly',
18 }, 18 },
19 parserOptions: { 19 env: {
20 ecmaVersion: 2018, 20 es6: true,
21 node: true,
21 }, 22 },
23 reportUnusedDisableDirectives: true,
24 overrides: [
25 {
26 files: ['**/*.ts'],
27 extends: [
28 'plugin:adonis/typescriptApp',
29 'plugin:@typescript-eslint/eslint-recommended',
30 'plugin:@typescript-eslint/strict',
31 // TODO: Opt-in to a stricter ruleset in the future
32 // 'plugin:@typescript-eslint/strict-type-checked',
33 'plugin:@typescript-eslint/stylistic-type-checked',
34 'plugin:import/typescript',
35 ],
36 parser: '@typescript-eslint/parser',
37 plugins: [],
38 rules: {
39 // eslint
40 'max-len': 0,
41
42 // @typescript-eslint
43 '@typescript-eslint/no-non-null-assertion': 0,
44 '@typescript-eslint/no-empty-interface': 0,
45 '@typescript-eslint/semi': 0,
46 '@typescript-eslint/space-before-function-paren': 0,
47 '@typescript-eslint/no-extraneous-class': 0,
48 '@typescript-eslint/ban-ts-comment': 0,
49 '@typescript-eslint/prefer-ts-expect-error': 0,
50 },
51 },
52 ],
22 rules: { 53 rules: {
23 'arrow-parens': 0, 54 // eslint
24 'class-methods-use-this': 0, 55 'array-callback-return': 1,
25 eqeqeq: 1, 56 'consistent-return': 1,
26 'implicit-arrow-linebreak': 0,
27 'max-len': 0, 57 'max-len': 0,
28 'no-await-in-loop': 1, 58 'no-await-in-loop': 1,
29 'no-restricted-syntax': 0, 59 'no-return-assign': 1,
30 'operator-linebreak': 0, 60 'no-console': [
31 'object-curly-newline': 0, 61 1,
62 {
63 allow: ['warn', 'error'],
64 },
65 ],
66 'no-param-reassign': 1,
67 'prefer-destructuring': 1,
68 // eslint-plugin-unicorn
69 'unicorn/filename-case': 0,
70 'unicorn/prefer-module': 0,
71 'unicorn/prevent-abbreviations': 0,
72
73 'unicorn/import-style': [
74 2,
75 {
76 styles: {
77 path: {
78 named: true,
79 },
80 },
81 },
82 ],
83 'unicorn/no-empty-file': 0,
84 'unicorn/prefer-top-level-await': 0,
32 }, 85 },
33}; 86};
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..c49eed4
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,30 @@
1name: AdonisJS check
2
3on:
4 pull_request:
5 branches: [main]
6
7jobs:
8 adonis-js-check:
9 runs-on: ubuntu-latest
10
11 steps:
12 - uses: actions/checkout@v3
13
14 - name: Use Node.js specified in the '.nvmrc' file
15 uses: actions/setup-node@v3
16 with:
17 node-version-file: ".nvmrc"
18
19 - name: Install pnpm
20 run: npm i -gf "pnpm@$(node -p 'require("./package.json").engines.pnpm')" && pnpm -v
21
22 - run: pnpm install
23
24 - run: pnpm typecheck
25
26 - run: pnpm lint
27
28 - run: pnpm test
29
30 - run: pnpm run build
diff --git a/.gitignore b/.gitignore
index 062f0fb..7fc81d3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -349,6 +349,8 @@ tags
349 349
350# Adonis directory for storing tmp files 350# Adonis directory for storing tmp files
351tmp 351tmp
352build
353public/assets
352 354
353# Environment variables, never commit this file 355# Environment variables, never commit this file
354.env 356.env
diff --git a/.husky/pre-commit b/.husky/pre-commit
index d1505ba..c22c561 100755
--- a/.husky/pre-commit
+++ b/.husky/pre-commit
@@ -6,5 +6,5 @@ FILE_NAME="$(dirname "$0")/_/husky.sh"
6if [ -f $FILE_NAME ]; then 6if [ -f $FILE_NAME ]; then
7 . $FILE_NAME 7 . $FILE_NAME
8 pnpm prepare 8 pnpm prepare
9 pnpm lint 9 pnpm prepare-code
10fi 10fi
diff --git a/.npmrc b/.npmrc
index 9de4cdb..3f8ef9e 100644
--- a/.npmrc
+++ b/.npmrc
@@ -1,5 +1,4 @@
1save-exact = true 1save-exact = true
2engine-strict = true 2engine-strict = true
3unsafe-perm = true 3unsafe-perm = true
4legacy-peer-deps = true
5frozen-lockfile = false 4frozen-lockfile = false
diff --git a/.prettierrc.js b/.prettierrc.js
index 443f0c6..f2feee8 100644
--- a/.prettierrc.js
+++ b/.prettierrc.js
@@ -1,5 +1,5 @@
1/** @type {import("prettier").Options} */
1module.exports = { 2module.exports = {
2 singleQuote: true, 3 singleQuote: true,
3 arrowParens: 'avoid', 4 arrowParens: 'avoid',
4 trailingComma: 'all', 5};
5}
diff --git a/Dockerfile b/Dockerfile
index 54d2039..ea36dd6 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -9,6 +9,7 @@ COPY . /server-build
9ENV CI=true 9ENV CI=true
10RUN PNPM_VERSION=$(node -p 'require("./package.json").engines.pnpm'); npm i -g pnpm@$PNPM_VERSION 10RUN PNPM_VERSION=$(node -p 'require("./package.json").engines.pnpm'); npm i -g pnpm@$PNPM_VERSION
11RUN pnpm install --config.build-from-source=sqlite --config.sqlite=/usr/local 11RUN pnpm install --config.build-from-source=sqlite --config.sqlite=/usr/local
12RUN pnpm build
12 13
13# ---- RUNTIME IMAGE ---------------------------------------------------------- 14# ---- RUNTIME IMAGE ----------------------------------------------------------
14FROM node:18.18.0-alpine 15FROM node:18.18.0-alpine
@@ -19,7 +20,9 @@ LABEL maintainer="ferdium"
19# TODO: Shouldn't we set 'NODE_ENV=production' when running in production mode? 20# TODO: Shouldn't we set 'NODE_ENV=production' when running in production mode?
20ENV HOST=0.0.0.0 PORT=3333 DATA_DIR="/data" 21ENV HOST=0.0.0.0 PORT=3333 DATA_DIR="/data"
21 22
22RUN apk add --no-cache sqlite-libs curl su-exec python3 make g++ py3-pip git py3-pip 23RUN apk add --no-cache sqlite-libs curl su-exec python3 make g++ py3-pip git py3-pip sqlite
24# The next command is needed for sqlite3 install command executed by node-gyp
25# RUN ln -s /usr/bin/python3 /usr/bin/python
23 26
24 27
25COPY --from=build /server-build /app 28COPY --from=build /server-build /app
diff --git a/README.md b/README.md
index 6ab4f84..dc5b648 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
1<p align="center"> 1<p align="center">
2 <img src="./logo.png" alt="" width="300"/> 2 <img src="./logo.png" alt="" width="300"/>
3</p> 3</p>
4 4
diff --git a/ace b/ace
index 42f8f10..c175031 100644
--- a/ace
+++ b/ace
@@ -1,21 +1,16 @@
1'use strict'
2
3/* 1/*
4|-------------------------------------------------------------------------- 2|--------------------------------------------------------------------------
5| Ace Commands 3| Ace Commands
6|-------------------------------------------------------------------------- 4|--------------------------------------------------------------------------
7| 5|
8| The ace file is just a regular Javascript file but with no extension. You 6| This file is the entry point for running ace commands.
9| can call `node ace` followed by the command name and it just works.
10|
11| Also you can use `adonis` followed by the command name, since the adonis
12| global proxies all the ace commands.
13| 7|
14*/ 8*/
15 9
16const { Ignitor } = require('@adonisjs/ignitor') 10require('reflect-metadata')
11require('source-map-support').install({ handleUncaughtExceptions: false })
17 12
18new Ignitor(require('@adonisjs/fold')) 13const { Ignitor } = require('@adonisjs/core/build/standalone')
19 .appRoot(__dirname) 14new Ignitor(__dirname)
20 .fireAce() 15 .ace()
21 .catch(console.error) 16 .handle(process.argv.slice(2))
diff --git a/ace-manifest.json b/ace-manifest.json
new file mode 100644
index 0000000..d7befd2
--- /dev/null
+++ b/ace-manifest.json
@@ -0,0 +1,616 @@
1{
2 "commands": {
3 "dump:rcfile": {
4 "settings": {},
5 "commandPath": "@adonisjs/core/build/commands/DumpRc",
6 "commandName": "dump:rcfile",
7 "description": "Dump contents of .adonisrc.json file along with defaults",
8 "args": [],
9 "aliases": [],
10 "flags": []
11 },
12 "list:routes": {
13 "settings": {
14 "loadApp": true,
15 "stayAlive": true
16 },
17 "commandPath": "@adonisjs/core/build/commands/ListRoutes/index",
18 "commandName": "list:routes",
19 "description": "List application routes",
20 "args": [],
21 "aliases": [],
22 "flags": [
23 {
24 "name": "verbose",
25 "propertyName": "verbose",
26 "type": "boolean",
27 "description": "Display more information"
28 },
29 {
30 "name": "reverse",
31 "propertyName": "reverse",
32 "type": "boolean",
33 "alias": "r",
34 "description": "Reverse routes display"
35 },
36 {
37 "name": "methods",
38 "propertyName": "methodsFilter",
39 "type": "array",
40 "alias": "m",
41 "description": "Filter routes by method"
42 },
43 {
44 "name": "patterns",
45 "propertyName": "patternsFilter",
46 "type": "array",
47 "alias": "p",
48 "description": "Filter routes by the route pattern"
49 },
50 {
51 "name": "names",
52 "propertyName": "namesFilter",
53 "type": "array",
54 "alias": "n",
55 "description": "Filter routes by route name"
56 },
57 {
58 "name": "json",
59 "propertyName": "json",
60 "type": "boolean",
61 "description": "Output as JSON"
62 },
63 {
64 "name": "table",
65 "propertyName": "table",
66 "type": "boolean",
67 "description": "Output as Table"
68 },
69 {
70 "name": "max-width",
71 "propertyName": "maxWidth",
72 "type": "number",
73 "description": "Specify maximum rendering width. Ignored for JSON Output"
74 }
75 ]
76 },
77 "generate:key": {
78 "settings": {},
79 "commandPath": "@adonisjs/core/build/commands/GenerateKey",
80 "commandName": "generate:key",
81 "description": "Generate a new APP_KEY secret",
82 "args": [],
83 "aliases": [],
84 "flags": []
85 },
86 "repl": {
87 "settings": {
88 "loadApp": true,
89 "environment": "repl",
90 "stayAlive": true
91 },
92 "commandPath": "@adonisjs/repl/build/commands/AdonisRepl",
93 "commandName": "repl",
94 "description": "Start a new REPL session",
95 "args": [],
96 "aliases": [],
97 "flags": []
98 },
99 "db:seed": {
100 "settings": {
101 "loadApp": true
102 },
103 "commandPath": "@adonisjs/lucid/build/commands/DbSeed",
104 "commandName": "db:seed",
105 "description": "Execute database seeders",
106 "args": [],
107 "aliases": [],
108 "flags": [
109 {
110 "name": "connection",
111 "propertyName": "connection",
112 "type": "string",
113 "description": "Define a custom database connection for the seeders",
114 "alias": "c"
115 },
116 {
117 "name": "interactive",
118 "propertyName": "interactive",
119 "type": "boolean",
120 "description": "Run seeders in interactive mode",
121 "alias": "i"
122 },
123 {
124 "name": "files",
125 "propertyName": "files",
126 "type": "array",
127 "description": "Define a custom set of seeders files names to run",
128 "alias": "f"
129 },
130 {
131 "name": "compact-output",
132 "propertyName": "compactOutput",
133 "type": "boolean",
134 "description": "A compact single-line output"
135 }
136 ]
137 },
138 "db:wipe": {
139 "settings": {
140 "loadApp": true
141 },
142 "commandPath": "@adonisjs/lucid/build/commands/DbWipe",
143 "commandName": "db:wipe",
144 "description": "Drop all tables, views and types in database",
145 "args": [],
146 "aliases": [],
147 "flags": [
148 {
149 "name": "connection",
150 "propertyName": "connection",
151 "type": "string",
152 "description": "Define a custom database connection",
153 "alias": "c"
154 },
155 {
156 "name": "drop-views",
157 "propertyName": "dropViews",
158 "type": "boolean",
159 "description": "Drop all views"
160 },
161 {
162 "name": "drop-types",
163 "propertyName": "dropTypes",
164 "type": "boolean",
165 "description": "Drop all custom types (Postgres only)"
166 },
167 {
168 "name": "force",
169 "propertyName": "force",
170 "type": "boolean",
171 "description": "Explicitly force command to run in production"
172 }
173 ]
174 },
175 "db:truncate": {
176 "settings": {
177 "loadApp": true
178 },
179 "commandPath": "@adonisjs/lucid/build/commands/DbTruncate",
180 "commandName": "db:truncate",
181 "description": "Truncate all tables in database",
182 "args": [],
183 "aliases": [],
184 "flags": [
185 {
186 "name": "connection",
187 "propertyName": "connection",
188 "type": "string",
189 "description": "Define a custom database connection",
190 "alias": "c"
191 },
192 {
193 "name": "force",
194 "propertyName": "force",
195 "type": "boolean",
196 "description": "Explicitly force command to run in production"
197 }
198 ]
199 },
200 "make:model": {
201 "settings": {
202 "loadApp": true
203 },
204 "commandPath": "@adonisjs/lucid/build/commands/MakeModel",
205 "commandName": "make:model",
206 "description": "Make a new Lucid model",
207 "args": [
208 {
209 "type": "string",
210 "propertyName": "name",
211 "name": "name",
212 "required": true,
213 "description": "Name of the model class"
214 }
215 ],
216 "aliases": [],
217 "flags": [
218 {
219 "name": "migration",
220 "propertyName": "migration",
221 "type": "boolean",
222 "alias": "m",
223 "description": "Generate the migration for the model"
224 },
225 {
226 "name": "controller",
227 "propertyName": "controller",
228 "type": "boolean",
229 "alias": "c",
230 "description": "Generate the controller for the model"
231 },
232 {
233 "name": "factory",
234 "propertyName": "factory",
235 "type": "boolean",
236 "alias": "f",
237 "description": "Generate a factory for the model"
238 }
239 ]
240 },
241 "make:migration": {
242 "settings": {
243 "loadApp": true
244 },
245 "commandPath": "@adonisjs/lucid/build/commands/MakeMigration",
246 "commandName": "make:migration",
247 "description": "Make a new migration file",
248 "args": [
249 {
250 "type": "string",
251 "propertyName": "name",
252 "name": "name",
253 "required": true,
254 "description": "Name of the migration file"
255 }
256 ],
257 "aliases": [],
258 "flags": [
259 {
260 "name": "connection",
261 "propertyName": "connection",
262 "type": "string",
263 "description": "The connection flag is used to lookup the directory for the migration file"
264 },
265 {
266 "name": "folder",
267 "propertyName": "folder",
268 "type": "string",
269 "description": "Pre-select a migration directory"
270 },
271 {
272 "name": "create",
273 "propertyName": "create",
274 "type": "string",
275 "description": "Define the table name for creating a new table"
276 },
277 {
278 "name": "table",
279 "propertyName": "table",
280 "type": "string",
281 "description": "Define the table name for altering an existing table"
282 }
283 ]
284 },
285 "make:seeder": {
286 "settings": {},
287 "commandPath": "@adonisjs/lucid/build/commands/MakeSeeder",
288 "commandName": "make:seeder",
289 "description": "Make a new Seeder file",
290 "args": [
291 {
292 "type": "string",
293 "propertyName": "name",
294 "name": "name",
295 "required": true,
296 "description": "Name of the seeder class"
297 }
298 ],
299 "aliases": [],
300 "flags": []
301 },
302 "make:factory": {
303 "settings": {},
304 "commandPath": "@adonisjs/lucid/build/commands/MakeFactory",
305 "commandName": "make:factory",
306 "description": "Make a new factory",
307 "args": [
308 {
309 "type": "string",
310 "propertyName": "model",
311 "name": "model",
312 "required": true,
313 "description": "The name of the model"
314 }
315 ],
316 "aliases": [],
317 "flags": [
318 {
319 "name": "model-path",
320 "propertyName": "modelPath",
321 "type": "string",
322 "description": "The path to the model"
323 },
324 {
325 "name": "exact",
326 "propertyName": "exact",
327 "type": "boolean",
328 "description": "Create the factory with the exact name as provided",
329 "alias": "e"
330 }
331 ]
332 },
333 "migration:run": {
334 "settings": {
335 "loadApp": true
336 },
337 "commandPath": "@adonisjs/lucid/build/commands/Migration/Run",
338 "commandName": "migration:run",
339 "description": "Migrate database by running pending migrations",
340 "args": [],
341 "aliases": [],
342 "flags": [
343 {
344 "name": "connection",
345 "propertyName": "connection",
346 "type": "string",
347 "description": "Define a custom database connection",
348 "alias": "c"
349 },
350 {
351 "name": "force",
352 "propertyName": "force",
353 "type": "boolean",
354 "description": "Explicitly force to run migrations in production"
355 },
356 {
357 "name": "dry-run",
358 "propertyName": "dryRun",
359 "type": "boolean",
360 "description": "Do not run actual queries. Instead view the SQL output"
361 },
362 {
363 "name": "compact-output",
364 "propertyName": "compactOutput",
365 "type": "boolean",
366 "description": "A compact single-line output"
367 },
368 {
369 "name": "disable-locks",
370 "propertyName": "disableLocks",
371 "type": "boolean",
372 "description": "Disable locks acquired to run migrations safely"
373 }
374 ]
375 },
376 "migration:rollback": {
377 "settings": {
378 "loadApp": true
379 },
380 "commandPath": "@adonisjs/lucid/build/commands/Migration/Rollback",
381 "commandName": "migration:rollback",
382 "description": "Rollback migrations to a specific batch number",
383 "args": [],
384 "aliases": [],
385 "flags": [
386 {
387 "name": "connection",
388 "propertyName": "connection",
389 "type": "string",
390 "description": "Define a custom database connection",
391 "alias": "c"
392 },
393 {
394 "name": "force",
395 "propertyName": "force",
396 "type": "boolean",
397 "description": "Explictly force to run migrations in production"
398 },
399 {
400 "name": "dry-run",
401 "propertyName": "dryRun",
402 "type": "boolean",
403 "description": "Do not run actual queries. Instead view the SQL output"
404 },
405 {
406 "name": "batch",
407 "propertyName": "batch",
408 "type": "number",
409 "description": "Define custom batch number for rollback. Use 0 to rollback to initial state"
410 },
411 {
412 "name": "compact-output",
413 "propertyName": "compactOutput",
414 "type": "boolean",
415 "description": "A compact single-line output"
416 },
417 {
418 "name": "disable-locks",
419 "propertyName": "disableLocks",
420 "type": "boolean",
421 "description": "Disable locks acquired to run migrations safely"
422 }
423 ]
424 },
425 "migration:status": {
426 "settings": {
427 "loadApp": true
428 },
429 "commandPath": "@adonisjs/lucid/build/commands/Migration/Status",
430 "commandName": "migration:status",
431 "description": "View migrations status",
432 "args": [],
433 "aliases": [],
434 "flags": [
435 {
436 "name": "connection",
437 "propertyName": "connection",
438 "type": "string",
439 "description": "Define a custom database connection",
440 "alias": "c"
441 }
442 ]
443 },
444 "migration:reset": {
445 "settings": {
446 "loadApp": true
447 },
448 "commandPath": "@adonisjs/lucid/build/commands/Migration/Reset",
449 "commandName": "migration:reset",
450 "description": "Rollback all migrations",
451 "args": [],
452 "aliases": [],
453 "flags": [
454 {
455 "name": "connection",
456 "propertyName": "connection",
457 "type": "string",
458 "description": "Define a custom database connection",
459 "alias": "c"
460 },
461 {
462 "name": "force",
463 "propertyName": "force",
464 "type": "boolean",
465 "description": "Explicitly force command to run in production"
466 },
467 {
468 "name": "dry-run",
469 "propertyName": "dryRun",
470 "type": "boolean",
471 "description": "Do not run actual queries. Instead view the SQL output"
472 },
473 {
474 "name": "disable-locks",
475 "propertyName": "disableLocks",
476 "type": "boolean",
477 "description": "Disable locks acquired to run migrations safely"
478 }
479 ]
480 },
481 "migration:refresh": {
482 "settings": {
483 "loadApp": true
484 },
485 "commandPath": "@adonisjs/lucid/build/commands/Migration/Refresh",
486 "commandName": "migration:refresh",
487 "description": "Rollback and migrate database",
488 "args": [],
489 "aliases": [],
490 "flags": [
491 {
492 "name": "connection",
493 "propertyName": "connection",
494 "type": "string",
495 "description": "Define a custom database connection",
496 "alias": "c"
497 },
498 {
499 "name": "force",
500 "propertyName": "force",
501 "type": "boolean",
502 "description": "Explicitly force command to run in production"
503 },
504 {
505 "name": "dry-run",
506 "propertyName": "dryRun",
507 "type": "boolean",
508 "description": "Do not run actual queries. Instead view the SQL output"
509 },
510 {
511 "name": "seed",
512 "propertyName": "seed",
513 "type": "boolean",
514 "description": "Run seeders"
515 },
516 {
517 "name": "disable-locks",
518 "propertyName": "disableLocks",
519 "type": "boolean",
520 "description": "Disable locks acquired to run migrations safely"
521 }
522 ]
523 },
524 "migration:fresh": {
525 "settings": {
526 "loadApp": true
527 },
528 "commandPath": "@adonisjs/lucid/build/commands/Migration/Fresh",
529 "commandName": "migration:fresh",
530 "description": "Drop all tables and re-migrate the database",
531 "args": [],
532 "aliases": [],
533 "flags": [
534 {
535 "name": "connection",
536 "propertyName": "connection",
537 "type": "string",
538 "description": "Define a custom database connection",
539 "alias": "c"
540 },
541 {
542 "name": "force",
543 "propertyName": "force",
544 "type": "boolean",
545 "description": "Explicitly force command to run in production"
546 },
547 {
548 "name": "seed",
549 "propertyName": "seed",
550 "type": "boolean",
551 "description": "Run seeders"
552 },
553 {
554 "name": "drop-views",
555 "propertyName": "dropViews",
556 "type": "boolean",
557 "description": "Drop all views"
558 },
559 {
560 "name": "drop-types",
561 "propertyName": "dropTypes",
562 "type": "boolean",
563 "description": "Drop all custom types (Postgres only)"
564 },
565 {
566 "name": "disable-locks",
567 "propertyName": "disableLocks",
568 "type": "boolean",
569 "description": "Disable locks acquired to run migrations safely"
570 }
571 ]
572 },
573 "make:mailer": {
574 "settings": {},
575 "commandPath": "@adonisjs/mail/build/commands/MakeMailer",
576 "commandName": "make:mailer",
577 "description": "Make a new mailer class",
578 "args": [
579 {
580 "type": "string",
581 "propertyName": "name",
582 "name": "name",
583 "required": true,
584 "description": "Name of the mailer class"
585 }
586 ],
587 "aliases": [],
588 "flags": []
589 },
590 "jwt:generate-keys": {
591 "settings": {},
592 "commandPath": "adonis5-jwt/build/commands/GenerateKeyPair",
593 "commandName": "jwt:generate-keys",
594 "description": "Generate key pair",
595 "args": [
596 {
597 "type": "string",
598 "propertyName": "outputDir",
599 "name": "outputDir",
600 "required": false,
601 "description": "Key pair output dir"
602 },
603 {
604 "type": "string",
605 "propertyName": "algorithm",
606 "name": "algorithm",
607 "required": false,
608 "description": "Key pair algorithm"
609 }
610 ],
611 "aliases": [],
612 "flags": []
613 }
614 },
615 "aliases": {}
616}
diff --git a/app/Controllers/Http/Api/Static/AnnouncementsController.ts b/app/Controllers/Http/Api/Static/AnnouncementsController.ts
new file mode 100644
index 0000000..c20707b
--- /dev/null
+++ b/app/Controllers/Http/Api/Static/AnnouncementsController.ts
@@ -0,0 +1,20 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
2import Application from '@ioc:Adonis/Core/Application';
3import path from 'node:path';
4import fs from 'fs-extra';
5
6export default class AnnouncementsController {
7 public async show({ response, params }: HttpContextContract) {
8 const announcement = path.join(
9 Application.resourcesPath(),
10 'announcements',
11 `${params.version}.json`,
12 );
13
14 if (await fs.pathExists(announcement)) {
15 return response.download(announcement);
16 }
17
18 return response.status(404).send('No announcement found.');
19 }
20}
diff --git a/app/Controllers/Http/Api/Static/EmptyController.ts b/app/Controllers/Http/Api/Static/EmptyController.ts
new file mode 100644
index 0000000..a07790e
--- /dev/null
+++ b/app/Controllers/Http/Api/Static/EmptyController.ts
@@ -0,0 +1,7 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
2
3export default class EmptyController {
4 public async show({ response }: HttpContextContract) {
5 return response.send([]);
6 }
7}
diff --git a/app/Controllers/Http/Api/Static/FeaturesController.ts b/app/Controllers/Http/Api/Static/FeaturesController.ts
new file mode 100644
index 0000000..d471b11
--- /dev/null
+++ b/app/Controllers/Http/Api/Static/FeaturesController.ts
@@ -0,0 +1,14 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
2
3export default class FeaturesController {
4 public async show({ response }: HttpContextContract) {
5 return response.send({
6 isServiceProxyEnabled: true,
7 isWorkspaceEnabled: true,
8 isAnnouncementsEnabled: true,
9 isSettingsWSEnabled: false,
10 isMagicBarEnabled: true,
11 isTodosEnabled: true,
12 });
13 }
14}
diff --git a/app/Controllers/Http/Dashboard/AccountController.ts b/app/Controllers/Http/Dashboard/AccountController.ts
new file mode 100644
index 0000000..3c4e919
--- /dev/null
+++ b/app/Controllers/Http/Dashboard/AccountController.ts
@@ -0,0 +1,80 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
2import { schema, rules, validator } from '@ioc:Adonis/Core/Validator';
3import crypto from 'node:crypto';
4
5export default class AccountController {
6 /**
7 * Shows the user account page
8 */
9 public async show({ auth, view }: HttpContextContract) {
10 return view.render('dashboard/account', {
11 username: auth.user?.username,
12 email: auth.user?.email,
13 lastname: auth.user?.lastname,
14 });
15 }
16
17 /**
18 * Stores user account data
19 */
20 public async store({
21 auth,
22 request,
23 response,
24 session,
25 view,
26 }: HttpContextContract) {
27 try {
28 await validator.validate({
29 schema: schema.create({
30 username: schema.string([
31 rules.required(),
32 rules.unique({
33 table: 'users',
34 column: 'username',
35 caseInsensitive: true,
36 whereNot: { id: auth.user?.id },
37 }),
38 ]),
39 email: schema.string([
40 rules.required(),
41 rules.unique({
42 table: 'users',
43 column: 'email',
44 caseInsensitive: true,
45 whereNot: { id: auth.user?.id },
46 }),
47 ]),
48 lastname: schema.string([rules.required()]),
49 }),
50 data: request.only(['username', 'email', 'lastname']),
51 });
52 } catch (error) {
53 session.flash(error.messages);
54 return response.redirect('/user/account');
55 }
56
57 // Update user account
58 const { user } = auth;
59 if (user) {
60 user.username = request.input('username');
61 user.lastname = request.input('lastname');
62 user.email = request.input('email');
63 if (request.input('password')) {
64 const hashedPassword = crypto
65 .createHash('sha256')
66 .update(request.input('password'))
67 .digest('base64');
68 user.password = hashedPassword;
69 }
70 await user.save();
71 }
72
73 return view.render('dashboard/account', {
74 username: user?.username,
75 lastname: user?.lastname,
76 email: user?.email,
77 success: user !== undefined,
78 });
79 }
80}
diff --git a/app/Controllers/Http/Dashboard/DataController.ts b/app/Controllers/Http/Dashboard/DataController.ts
new file mode 100644
index 0000000..f77702f
--- /dev/null
+++ b/app/Controllers/Http/Dashboard/DataController.ts
@@ -0,0 +1,24 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
2
3export default class DataController {
4 /**
5 * Display the data page
6 */
7 public async show({ view, auth }: HttpContextContract) {
8 const { user } = auth;
9
10 const services = await user?.related('services').query();
11 const workspaces = await user?.related('workspaces').query();
12
13 return view.render('dashboard/data', {
14 username: user?.username,
15 lastname: user?.lastname,
16 mail: user?.email,
17 created: user?.created_at.toFormat('yyyy-MM-dd HH:mm:ss'),
18 updated: user?.updated_at.toFormat('yyyy-MM-dd HH:mm:ss'),
19 stringify: JSON.stringify,
20 services,
21 workspaces,
22 });
23 }
24}
diff --git a/app/Controllers/Http/Dashboard/DeleteController.ts b/app/Controllers/Http/Dashboard/DeleteController.ts
new file mode 100644
index 0000000..ef8188c
--- /dev/null
+++ b/app/Controllers/Http/Dashboard/DeleteController.ts
@@ -0,0 +1,20 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
2
3export default class DeleteController {
4 /**
5 * Display the delete page
6 */
7 public async show({ view }: HttpContextContract) {
8 return view.render('dashboard/delete');
9 }
10
11 /**
12 * Delete user and session
13 */
14 public async delete({ auth, response }: HttpContextContract) {
15 auth.user?.delete();
16 auth.use('web').logout();
17
18 return response.redirect('/user/login');
19 }
20}
diff --git a/app/Controllers/Http/Dashboard/ExportController.ts b/app/Controllers/Http/Dashboard/ExportController.ts
new file mode 100644
index 0000000..7155eab
--- /dev/null
+++ b/app/Controllers/Http/Dashboard/ExportController.ts
@@ -0,0 +1,56 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
2
3// eslint-disable-next-line @typescript-eslint/no-explicit-any
4function deepParseToJSON(obj: any): Record<string, unknown> {
5 if (typeof obj !== 'object' || obj === null) {
6 try {
7 // Try to parse the object as JSON
8 return JSON.parse(obj) as Record<string, unknown>;
9 } catch {
10 // If parsing fails, return the original value
11 return obj;
12 }
13 }
14
15 // If obj is an object, recursively parse its keys
16 if (Array.isArray(obj)) {
17 // If obj is an array, recursively parse each element
18 return obj.map(item => deepParseToJSON(item)) as unknown as Record<
19 string,
20 unknown
21 >;
22 } else {
23 // If obj is an object, recursively parse its keys
24 const parsedObj: Record<string, unknown> = {};
25 for (const key in obj) {
26 if (obj.hasOwnProperty(key)) {
27 parsedObj[key] = deepParseToJSON(obj[key]);
28 }
29 }
30 return parsedObj;
31 }
32}
33
34export default class ExportController {
35 /**
36 * Display the export page
37 */
38 public async show({ auth, response }: HttpContextContract) {
39 const user = auth.user!;
40 const services = await user.related('services').query();
41 const workspaces = await user.related('workspaces').query();
42
43 const exportData = {
44 username: user.username,
45 lastname: user.lastname,
46 mail: user.email,
47 services: deepParseToJSON(JSON.parse(JSON.stringify(services))),
48 workspaces: deepParseToJSON(JSON.parse(JSON.stringify(workspaces))),
49 };
50
51 return response
52 .header('Content-Type', 'application/force-download')
53 .header('Content-disposition', 'attachment; filename=export.ferdium-data')
54 .send(exportData);
55 }
56}
diff --git a/app/Controllers/Http/Dashboard/ForgotPasswordController.ts b/app/Controllers/Http/Dashboard/ForgotPasswordController.ts
new file mode 100644
index 0000000..da05bbd
--- /dev/null
+++ b/app/Controllers/Http/Dashboard/ForgotPasswordController.ts
@@ -0,0 +1,41 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
2import { schema, rules, validator } from '@ioc:Adonis/Core/Validator';
3import User from 'App/Models/User';
4
5export default class ForgotPasswordController {
6 /**
7 * Display the forgot password form
8 */
9 public async show({ view }: HttpContextContract) {
10 return view.render('dashboard/forgotPassword');
11 }
12
13 /**
14 * Send forget password email to user
15 */
16 public async forgotPassword({ view, request }: HttpContextContract) {
17 try {
18 await validator.validate({
19 schema: schema.create({
20 mail: schema.string([rules.email(), rules.required()]),
21 }),
22 data: request.only(['mail']),
23 });
24 } catch {
25 return view.render('others/message', {
26 heading: 'Cannot reset your password',
27 text: 'Please enter a valid email address',
28 });
29 }
30
31 try {
32 const user = await User.findByOrFail('email', request.input('mail'));
33 await user.forgotPassword();
34 } catch {}
35
36 return view.render('others/message', {
37 heading: 'Reset password',
38 text: 'If your provided E-Mail address is linked to an account, we have just sent an E-Mail to that address.',
39 });
40 }
41}
diff --git a/app/Controllers/Http/Dashboard/LogOutController.ts b/app/Controllers/Http/Dashboard/LogOutController.ts
new file mode 100644
index 0000000..41cbd31
--- /dev/null
+++ b/app/Controllers/Http/Dashboard/LogOutController.ts
@@ -0,0 +1,12 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
2
3export default class LogOutController {
4 /**
5 * Login a user
6 */
7 public async logout({ auth, response }: HttpContextContract) {
8 auth.logout();
9
10 return response.redirect('/user/login');
11 }
12}
diff --git a/app/Controllers/Http/Dashboard/LoginController.ts b/app/Controllers/Http/Dashboard/LoginController.ts
new file mode 100644
index 0000000..ffb9eeb
--- /dev/null
+++ b/app/Controllers/Http/Dashboard/LoginController.ts
@@ -0,0 +1,81 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
2import { schema, rules, validator } from '@ioc:Adonis/Core/Validator';
3import User from 'App/Models/User';
4import crypto from 'node:crypto';
5import { handleVerifyAndReHash } from '../../../../helpers/PasswordHash';
6
7export default class LoginController {
8 /**
9 * Display the login form
10 */
11 public async show({ view }: HttpContextContract) {
12 return view.render('dashboard/login');
13 }
14
15 /**
16 * Login a user
17 */
18 public async login({
19 request,
20 response,
21 auth,
22 session,
23 }: HttpContextContract) {
24 try {
25 await validator.validate({
26 schema: schema.create({
27 mail: schema.string([rules.email(), rules.required()]),
28 password: schema.string([rules.required()]),
29 }),
30 data: request.only(['mail', 'password']),
31 });
32 } catch {
33 session.flash({
34 type: 'danger',
35 message: 'Invalid mail or password',
36 });
37 session.flashExcept(['password']);
38
39 return response.redirect('/user/login');
40 }
41
42 try {
43 const { mail, password } = request.all();
44
45 // Check if user with email exists
46 const user = await User.query().where('email', mail).first();
47 if (!user?.email) {
48 throw new Error('User credentials not valid (Invalid email)');
49 }
50
51 const hashedPassword = crypto
52 .createHash('sha256')
53 .update(password)
54 .digest('base64');
55
56 // Verify password
57 let isMatchedPassword = false;
58 try {
59 isMatchedPassword = await handleVerifyAndReHash(user, hashedPassword);
60 } catch (error) {
61 return response.internalServerError({ message: error.message });
62 }
63
64 if (!isMatchedPassword) {
65 throw new Error('User credentials not valid (Invalid password)');
66 }
67
68 await auth.use('web').login(user);
69
70 return response.redirect('/user/account');
71 } catch {
72 session.flash({
73 type: 'danger',
74 message: 'Invalid mail or password',
75 });
76 session.flashExcept(['password']);
77
78 return response.redirect('/user/login');
79 }
80 }
81}
diff --git a/app/Controllers/Http/Dashboard/ResetPasswordController.ts b/app/Controllers/Http/Dashboard/ResetPasswordController.ts
new file mode 100644
index 0000000..0b9053f
--- /dev/null
+++ b/app/Controllers/Http/Dashboard/ResetPasswordController.ts
@@ -0,0 +1,85 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
2import { schema, rules, validator } from '@ioc:Adonis/Core/Validator';
3import Token from 'App/Models/Token';
4import moment from 'moment';
5import crypto from 'node:crypto';
6
7export default class ResetPasswordController {
8 /**
9 * Display the reset password form
10 */
11 public async show({ view, request }: HttpContextContract) {
12 const { token } = request.qs();
13
14 if (token) {
15 return view.render('dashboard/resetPassword', { token });
16 }
17
18 return view.render('others/message', {
19 heading: 'Invalid token',
20 text: 'Please make sure you are using a valid and recent link to reset your password.',
21 });
22 }
23
24 /**
25 * Resets user password
26 */
27 public async resetPassword({
28 response,
29 request,
30 session,
31 view,
32 }: HttpContextContract) {
33 try {
34 await validator.validate({
35 schema: schema.create({
36 password: schema.string([rules.required(), rules.confirmed()]),
37 token: schema.string([rules.required()]),
38 }),
39 data: request.only(['password', 'password_confirmation', 'token']),
40 });
41 } catch {
42 session.flash({
43 type: 'danger',
44 message: 'Passwords do not match',
45 });
46
47 return response.redirect(`/user/reset?token=${request.input('token')}`);
48 }
49
50 const tokenRow = await Token.query()
51 .preload('user')
52 .where('token', request.input('token'))
53 .where('type', 'forgot_password')
54 .where('is_revoked', false)
55 .where(
56 'updated_at',
57 '>=',
58 moment().subtract(24, 'hours').format('YYYY-MM-DD HH:mm:ss'),
59 )
60 .first();
61
62 if (!tokenRow) {
63 return view.render('others/message', {
64 heading: 'Cannot reset your password',
65 text: 'Please make sure you are using a valid and recent link to reset your password and that your passwords entered match.',
66 });
67 }
68
69 // Update user password
70 const hashedPassword = crypto
71 .createHash('sha256')
72 .update(request.input('password'))
73 .digest('base64');
74 tokenRow.user.password = hashedPassword;
75 await tokenRow.user.save();
76
77 // Delete token to prevent it from being used again
78 await tokenRow.delete();
79
80 return view.render('others/message', {
81 heading: 'Reset password',
82 text: 'Successfully reset your password. You can now login to your account using your new password.',
83 });
84 }
85}
diff --git a/app/Controllers/Http/Dashboard/TransferController.ts b/app/Controllers/Http/Dashboard/TransferController.ts
new file mode 100644
index 0000000..a005c1b
--- /dev/null
+++ b/app/Controllers/Http/Dashboard/TransferController.ts
@@ -0,0 +1,128 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
2import { schema, validator } from '@ioc:Adonis/Core/Validator';
3import Service from 'App/Models/Service';
4import Workspace from 'App/Models/Workspace';
5import { v4 as uuidv4 } from 'uuid';
6
7const importSchema = schema.create({
8 username: schema.string(),
9 lastname: schema.string(),
10 mail: schema.string(),
11 services: schema.array().anyMembers(),
12 workspaces: schema.array().anyMembers(),
13});
14
15export default class TransferController {
16 /**
17 * Display the transfer page
18 */
19 public async show({ view }: HttpContextContract) {
20 return view.render('dashboard/transfer');
21 }
22
23 public async import({
24 auth,
25 request,
26 response,
27 session,
28 view,
29 }: HttpContextContract) {
30 let file;
31 try {
32 file = await validator.validate({
33 schema: importSchema,
34 data: JSON.parse(request.body().file),
35 });
36 } catch {
37 session.flash({
38 message: 'Invalid Ferdium account file',
39 });
40
41 return response.redirect('/user/transfer');
42 }
43
44 if (!file?.services || !file.workspaces) {
45 session.flash({
46 type: 'danger',
47 message: 'Invalid Ferdium account file (2)',
48 });
49 return response.redirect('/user/transfer');
50 }
51
52 const serviceIdTranslation = {};
53
54 // Import services
55 try {
56 for (const service of file.services) {
57 // Get new, unused uuid
58 let serviceId;
59 do {
60 serviceId = uuidv4();
61 } while (
62 // eslint-disable-next-line no-await-in-loop, unicorn/no-await-expression-member
63 (await Service.query().where('serviceId', serviceId)).length > 0
64 );
65
66 // eslint-disable-next-line no-await-in-loop
67 await Service.create({
68 userId: auth.user?.id,
69 serviceId,
70 name: service.name,
71 recipeId: service.recipe_id,
72 settings: JSON.stringify(service.settings),
73 });
74
75 // @ts-expect-error Element implicitly has an 'any' type because expression of type 'any' can't be used to index type '{}'
76 serviceIdTranslation[service.service_id] = serviceId;
77 }
78 } catch (error) {
79 // eslint-disable-next-line no-console
80 console.log(error);
81 const errorMessage = `Could not import your services into our system.\nError: ${error}`;
82 return view.render('others/message', {
83 heading: 'Error while importing',
84 text: errorMessage,
85 });
86 }
87
88 // Import workspaces
89 try {
90 for (const workspace of file.workspaces) {
91 let workspaceId;
92
93 do {
94 workspaceId = uuidv4();
95 } while (
96 // eslint-disable-next-line no-await-in-loop, unicorn/no-await-expression-member
97 (await Workspace.query().where('workspaceId', workspaceId)).length > 0
98 );
99
100 const services = workspace.services.map(
101 // @ts-expect-error Parameter 'service' implicitly has an 'any' type.
102 service => serviceIdTranslation[service],
103 );
104
105 // eslint-disable-next-line no-await-in-loop
106 await Workspace.create({
107 userId: auth.user?.id,
108 workspaceId,
109 name: workspace.name,
110 order: workspace.order,
111 services: JSON.stringify(services),
112 data: JSON.stringify(workspace.data),
113 });
114 }
115 } catch (error) {
116 const errorMessage = `Could not import your workspaces into our system.\nError: ${error}`;
117 return view.render('others/message', {
118 heading: 'Error while importing',
119 text: errorMessage,
120 });
121 }
122
123 return view.render('others/message', {
124 heading: 'Successfully imported',
125 text: 'Your account has been imported, you can now login as usual!',
126 });
127 }
128}
diff --git a/app/Controllers/Http/DashboardController.js b/app/Controllers/Http/DashboardController.ts
index 9b3b08e..a6f5b44 100644
--- a/app/Controllers/Http/DashboardController.js
+++ b/app/Controllers/Http/DashboardController.ts
@@ -1,3 +1,8 @@
1// import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
2
3export default class DashboardController {}
4
5/*
1const { validateAll } = use('Validator'); 6const { validateAll } = use('Validator');
2 7
3const Service = use('App/Models/Service'); 8const Service = use('App/Models/Service');
@@ -319,3 +324,4 @@ class DashboardController {
319} 324}
320 325
321module.exports = DashboardController; 326module.exports = DashboardController;
327*/
diff --git a/app/Controllers/Http/HealthController.ts b/app/Controllers/Http/HealthController.ts
new file mode 100644
index 0000000..bf185d8
--- /dev/null
+++ b/app/Controllers/Http/HealthController.ts
@@ -0,0 +1,10 @@
1export default class HealthController {
2 public async index() {
3 // TODO: Actually do something instead of alwayas returning success.
4
5 return {
6 api: 'success',
7 db: 'success',
8 };
9 }
10}
diff --git a/app/Controllers/Http/HomeController.ts b/app/Controllers/Http/HomeController.ts
new file mode 100644
index 0000000..dbe9fbd
--- /dev/null
+++ b/app/Controllers/Http/HomeController.ts
@@ -0,0 +1,9 @@
1// import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
2
3export default class HomeController {
4 public async index() {
5 // TODO: Actually do something instead of alwayas returning success.
6
7 return { hello: 'world' };
8 }
9}
diff --git a/app/Controllers/Http/RecipeController.js b/app/Controllers/Http/RecipeController.js
deleted file mode 100644
index cbdddaf..0000000
--- a/app/Controllers/Http/RecipeController.js
+++ /dev/null
@@ -1,226 +0,0 @@
1const Recipe = use('App/Models/Recipe');
2const Helpers = use('Helpers');
3const Drive = use('Drive');
4const {
5 validateAll,
6} = use('Validator');
7const Env = use('Env');
8
9const targz = require('targz');
10const path = require('path');
11const fs = require('fs-extra');
12const semver = require('semver');
13
14const compress = (src, dest) => new Promise((resolve, reject) => {
15 targz.compress({
16 src,
17 dest,
18 }, (err) => {
19 if (err) {
20 reject(err);
21 } else {
22 resolve(dest);
23 }
24 });
25});
26
27class RecipeController {
28 // List official and custom recipes
29 async list({
30 response,
31 }) {
32 const officialRecipes = fs.readJsonSync(path.join(Helpers.appRoot(), 'recipes', 'all.json'));
33 const customRecipesArray = (await Recipe.all()).rows;
34 const customRecipes = customRecipesArray.map((recipe) => ({
35 id: recipe.recipeId,
36 name: recipe.name,
37 ...typeof recipe.data === 'string' ? JSON.parse(recipe.data) : recipe.data,
38 }));
39
40 const recipes = [
41 ...officialRecipes,
42 ...customRecipes,
43 ];
44
45 return response.send(recipes);
46 }
47
48 // Create a new recipe using the new.html page
49 async create({
50 request,
51 response,
52 }) {
53 // Check if recipe creation is enabled
54 if (Env.get('IS_CREATION_ENABLED') == 'false') { // eslint-disable-line eqeqeq
55 return response.send('This server doesn\'t allow the creation of new recipes.');
56 }
57
58 // Validate user input
59 const validation = await validateAll(request.all(), {
60 name: 'required|string',
61 id: 'required|unique:recipes,recipeId',
62 author: 'required|accepted',
63 svg: 'required|url',
64 });
65 if (validation.fails()) {
66 return response.status(401).send({
67 message: 'Invalid POST arguments',
68 messages: validation.messages(),
69 status: 401,
70 });
71 }
72
73 const data = request.all();
74
75 if (!data.id) {
76 return response.send('Please provide an ID');
77 }
78
79 // Check for invalid characters
80 if (/\.{1,}/.test(data.id) || /\/{1,}/.test(data.id)) {
81 return response.send('Invalid recipe name. Your recipe name may not contain "." or "/"');
82 }
83
84 // Clear temporary recipe folder
85 await fs.emptyDir(Helpers.tmpPath('recipe'));
86
87 // Move uploaded files to temporary path
88 const files = request.file('files');
89 await files.moveAll(Helpers.tmpPath('recipe'));
90
91 // Compress files to .tar.gz file
92 const source = Helpers.tmpPath('recipe');
93 const destination = path.join(Helpers.appRoot(), `/recipes/archives/${data.id}.tar.gz`);
94
95 compress(
96 source,
97 destination,
98 );
99
100 // Create recipe in db
101 await Recipe.create({
102 name: data.name,
103 recipeId: data.id,
104 data: JSON.stringify({
105 author: data.author,
106 featured: false,
107 version: '1.0.0',
108 icons: {
109 svg: data.svg,
110 },
111 }),
112 });
113
114 return response.send('Created new recipe');
115 }
116
117 // Search official and custom recipes
118 async search({
119 request,
120 response,
121 }) {
122 // Validate user input
123 const validation = await validateAll(request.all(), {
124 needle: 'required',
125 });
126 if (validation.fails()) {
127 return response.status(401).send({
128 message: 'Please provide a needle',
129 messages: validation.messages(),
130 status: 401,
131 });
132 }
133
134 const needle = request.input('needle');
135
136 // Get results
137 let results;
138
139 if (needle === 'ferdium:custom') {
140 const dbResults = (await Recipe.all()).toJSON();
141 results = dbResults.map((recipe) => ({
142 id: recipe.recipeId,
143 name: recipe.name,
144 ...typeof recipe.data === 'string' ? JSON.parse(recipe.data) : recipe.data,
145 }));
146 } else {
147 const localResultsArray = (await Recipe.query().where('name', 'LIKE', `%${needle}%`).fetch()).toJSON();
148 results = localResultsArray.map((recipe) => ({
149 id: recipe.recipeId,
150 name: recipe.name,
151 ...typeof recipe.data === 'string' ? JSON.parse(recipe.data) : recipe.data,
152 }));
153 }
154
155 return response.send(results);
156 }
157
158 popularRecipes({
159 response,
160 }) {
161 return response.send(
162 fs
163 .readJsonSync(path.join(
164 Helpers.appRoot(), 'recipes', 'all.json',
165 ))
166 .filter((recipe) => recipe.featured),
167 );
168 }
169
170 update({ request, response }) {
171 const updates = [];
172 const recipes = request.all();
173 const allJson = fs.readJsonSync(path.join(
174 Helpers.appRoot(), 'recipes', 'all.json',
175 ));
176
177 for (const recipe of Object.keys(recipes)) {
178 const version = recipes[recipe];
179
180 // Find recipe in local recipe repository
181 const localRecipe = allJson.find(r => r.id === recipe);
182 if (localRecipe && semver.lt(version, localRecipe.version)) {
183 updates.push(recipe);
184 }
185 }
186
187 return response.send(updates);
188 }
189
190 // Download a recipe
191 async download({
192 response,
193 params,
194 }) {
195 // Validate user input
196 const validation = await validateAll(params, {
197 recipe: 'required|accepted',
198 });
199 if (validation.fails()) {
200 return response.status(401).send({
201 message: 'Please provide a recipe ID',
202 messages: validation.messages(),
203 status: 401,
204 });
205 }
206
207 const service = params.recipe;
208
209 // Check for invalid characters
210 if (/\.{1,}/.test(service) || /\/{1,}/.test(service)) {
211 return response.send('Invalid recipe name');
212 }
213
214 // Check if recipe exists in recipes folder
215 if (await Drive.exists(`${service}.tar.gz`)) {
216 return response.type('.tar.gz').send(await Drive.get(`${service}.tar.gz`));
217 }
218
219 return response.status(400).send({
220 message: 'Recipe not found',
221 code: 'recipe-not-found',
222 });
223 }
224}
225
226module.exports = RecipeController;
diff --git a/app/Controllers/Http/RecipeController.ts b/app/Controllers/Http/RecipeController.ts
new file mode 100644
index 0000000..5186a11
--- /dev/null
+++ b/app/Controllers/Http/RecipeController.ts
@@ -0,0 +1,254 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
2import fs from 'fs-extra';
3import Application from '@ioc:Adonis/Core/Application';
4import path from 'node:path';
5import Recipe from 'App/Models/Recipe';
6import { isCreationEnabled } from 'Config/app';
7import { validator, schema, rules } from '@ioc:Adonis/Core/Validator';
8import targz from 'targz';
9import semver from 'semver';
10import Drive from '@ioc:Adonis/Core/Drive';
11
12// TODO: This file needs to be refactored and cleaned up to include types
13
14const createSchema = schema.create({
15 name: schema.string(),
16 id: schema.string([rules.unique({ table: 'recipes', column: 'recipeId' })]),
17 // TODO: Check if this is correct
18 // author: 'required|accepted',
19 author: schema.string(),
20 svg: schema.string([rules.url()]),
21});
22
23const searchSchema = schema.create({
24 needle: schema.string(),
25});
26
27const downloadSchema = schema.create({
28 // TODO: Check if this is correct
29 // recipe: 'required|accepted',
30 recipe: schema.string(),
31});
32
33const compress = (src: string, dest: string) =>
34 new Promise((resolve, reject) => {
35 targz.compress(
36 {
37 src,
38 dest,
39 },
40 err => {
41 if (err) {
42 reject(err);
43 } else {
44 resolve(dest);
45 }
46 },
47 );
48 });
49
50export default class RecipesController {
51 // List official and custom recipes
52 public async list({ response }: HttpContextContract) {
53 const officialRecipes = fs.readJsonSync(
54 path.join(Application.appRoot, 'recipes', 'all.json'),
55 );
56 const customRecipesArray = await Recipe.all();
57 const customRecipes = customRecipesArray.map(recipe => ({
58 id: recipe.recipeId,
59 name: recipe.name,
60 ...(typeof recipe.data === 'string'
61 ? JSON.parse(recipe.data)
62 : recipe.data),
63 }));
64
65 const recipes = [...officialRecipes, ...customRecipes];
66
67 return response.send(recipes);
68 }
69
70 // TODO: Test this endpoint
71 // Create a new recipe using the new.html page
72 public async create({ request, response }: HttpContextContract) {
73 // Check if recipe creation is enabled
74 if (isCreationEnabled === 'false') {
75 return response.send(
76 'This server doesn\'t allow the creation of new recipes.',
77 );
78 }
79
80 // Validate user input
81 let data;
82 try {
83 data = await request.validate({ schema: createSchema });
84 } catch (error) {
85 return response.status(401).send({
86 message: 'Invalid POST arguments',
87 messages: error.messages,
88 status: 401,
89 });
90 }
91
92 if (!data.id) {
93 return response.send('Please provide an ID');
94 }
95
96 // Check for invalid characters
97 if (/\.+/.test(data.id) || /\/+/.test(data.id)) {
98 return response.send(
99 'Invalid recipe name. Your recipe name may not contain "." or "/"',
100 );
101 }
102
103 // Clear temporary recipe folder
104 await fs.emptyDir(Application.tmpPath('recipe'));
105
106 // Move uploaded files to temporary path
107 const files = request.file('files');
108 if (!files) {
109 return response.abort('Error processsing files.');
110 }
111 await files.move(Application.tmpPath('recipe'));
112
113 // Compress files to .tar.gz file
114 const source = Application.tmpPath('recipe');
115 const destination = path.join(
116 Application.appRoot,
117 `/recipes/archives/${data.id}.tar.gz`,
118 );
119
120 compress(source, destination);
121
122 // Create recipe in db
123 await Recipe.create({
124 name: data.name,
125 recipeId: data.id,
126 // @ts-expect-error
127 data: JSON.stringify({
128 author: data.author,
129 featured: false,
130 version: '1.0.0',
131 icons: {
132 svg: data.svg,
133 },
134 }),
135 });
136
137 return response.send('Created new recipe');
138 }
139
140 // Search official and custom recipes
141 public async search({ request, response }: HttpContextContract) {
142 // Validate user input
143 let data;
144 try {
145 data = await request.validate({ schema: searchSchema });
146 } catch (error) {
147 return response.status(401).send({
148 message: 'Please provide a needle',
149 messages: error.messages,
150 status: 401,
151 });
152 }
153
154 const { needle } = data;
155
156 // Get results
157 let results;
158
159 if (needle === 'ferdium:custom') {
160 const dbResults = await Recipe.all();
161 results = dbResults.map(recipe => ({
162 id: recipe.recipeId,
163 name: recipe.name,
164 ...(typeof recipe.data === 'string'
165 ? JSON.parse(recipe.data)
166 : recipe.data),
167 }));
168 } else {
169 const localResultsArray = await Recipe.query().where(
170 'name',
171 'LIKE',
172 `%${needle}%`,
173 );
174 results = localResultsArray.map(recipe => ({
175 id: recipe.recipeId,
176 name: recipe.name,
177 ...(typeof recipe.data === 'string'
178 ? JSON.parse(recipe.data)
179 : recipe.data),
180 }));
181 }
182
183 return response.send(results);
184 }
185
186 public popularRecipes({ response }: HttpContextContract) {
187 return response.send(
188 fs
189 .readJsonSync(path.join(Application.appRoot, 'recipes', 'all.json'))
190 // eslint-disable-next-line @typescript-eslint/no-explicit-any
191 .filter((recipe: any) => recipe.featured),
192 );
193 }
194
195 // TODO: test this endpoint
196 public update({ request, response }: HttpContextContract) {
197 const updates = [];
198 const recipes = request.all();
199 const allJson = fs.readJsonSync(
200 path.join(Application.appRoot, 'recipes', 'all.json'),
201 );
202
203 for (const recipe of Object.keys(recipes)) {
204 const version = recipes[recipe];
205
206 // Find recipe in local recipe repository
207 // eslint-disable-next-line @typescript-eslint/no-explicit-any
208 const localRecipe = allJson.find((r: any) => r.id === recipe);
209 if (localRecipe && semver.lt(version, localRecipe.version)) {
210 updates.push(recipe);
211 }
212 }
213
214 return response.send(updates);
215 }
216
217 // TODO: test this endpoint
218 // Download a recipe
219 public async download({ response, params }: HttpContextContract) {
220 // Validate user input
221 let data;
222 try {
223 data = await validator.validate({
224 data: params,
225 schema: downloadSchema,
226 });
227 } catch (error) {
228 return response.status(401).send({
229 message: 'Please provide a recipe ID',
230 messages: error.messages,
231 status: 401,
232 });
233 }
234
235 const service = data.recipe;
236
237 // Check for invalid characters
238 if (/\.+/.test(service) || /\/+/.test(service)) {
239 return response.send('Invalid recipe name');
240 }
241
242 // Check if recipe exists in recipes folder
243 if (await Drive.exists(`${service}.tar.gz`)) {
244 return response
245 .type('.tar.gz')
246 .send(await Drive.get(`${service}.tar.gz`));
247 }
248
249 return response.status(400).send({
250 message: 'Recipe not found',
251 code: 'recipe-not-found',
252 });
253 }
254}
diff --git a/app/Controllers/Http/ServiceController.js b/app/Controllers/Http/ServiceController.ts
index 6a27ef2..36c6ca4 100644
--- a/app/Controllers/Http/ServiceController.js
+++ b/app/Controllers/Http/ServiceController.ts
@@ -1,48 +1,51 @@
1const Service = use('App/Models/Service'); 1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
2const { validateAll } = use('Validator'); 2import { schema } from '@ioc:Adonis/Core/Validator';
3const Env = use('Env'); 3import Service from 'App/Models/Service';
4const Helpers = use('Helpers'); 4import { url } from 'Config/app';
5 5import { v4 as uuid } from 'uuid';
6const { v4: uuid } = require('uuid'); 6import * as fs from 'fs-extra';
7const path = require('path'); 7import path from 'node:path';
8const fs = require('fs-extra'); 8import Application from '@ioc:Adonis/Core/Application';
9const sanitize = require('sanitize-filename'); 9import sanitize from 'sanitize-filename';
10 10
11class ServiceController { 11const createSchema = schema.create({
12 name: schema.string(),
13 recipeId: schema.string(),
14});
15
16export default class ServicesController {
12 // Create a new service for user 17 // Create a new service for user
13 async create({ request, response, auth }) { 18 public async create({ request, response, auth }: HttpContextContract) {
14 try { 19 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
15 await auth.getUser(); 20 const user = auth.user ?? request.user;
16 } catch (error) { 21
17 return response.send('Missing or invalid api token'); 22 if (!user) {
23 return response.unauthorized('Missing or invalid api token');
18 } 24 }
19 25
20 // Validate user input 26 // Validate user input
21 const validation = await validateAll(request.all(), { 27 let data;
22 name: 'required|string', 28 try {
23 recipeId: 'required', 29 data = await request.validate({ schema: createSchema });
24 }); 30 } catch (error) {
25 if (validation.fails()) {
26 return response.status(401).send({ 31 return response.status(401).send({
27 message: 'Invalid POST arguments', 32 message: 'Invalid POST arguments',
28 messages: validation.messages(), 33 messages: error.messages,
29 status: 401, 34 status: 401,
30 }); 35 });
31 } 36 }
32 37
33 const data = request.all();
34
35 // Get new, unused uuid 38 // Get new, unused uuid
36 let serviceId; 39 let serviceId;
37 do { 40 do {
38 serviceId = uuid(); 41 serviceId = uuid();
39 } while ( 42 } while (
40 (await Service.query().where('serviceId', serviceId).fetch()).rows 43 // eslint-disable-next-line no-await-in-loop, unicorn/no-await-expression-member
41 .length > 0 44 (await Service.query().where('serviceId', serviceId)).length > 0
42 ); // eslint-disable-line no-await-in-loop 45 );
43 46
44 await Service.create({ 47 await Service.create({
45 userId: auth.user.id, 48 userId: user.id,
46 serviceId, 49 serviceId,
47 name: data.name, 50 name: data.name,
48 recipeId: data.recipeId, 51 recipeId: data.recipeId,
@@ -51,7 +54,7 @@ class ServiceController {
51 54
52 return response.send({ 55 return response.send({
53 data: { 56 data: {
54 userId: auth.user.id, 57 userId: user.id,
55 id: serviceId, 58 id: serviceId,
56 isEnabled: true, 59 isEnabled: true,
57 isNotificationEnabled: true, 60 isNotificationEnabled: true,
@@ -63,6 +66,7 @@ class ServiceController {
63 customRecipe: false, 66 customRecipe: false,
64 hasCustomIcon: false, 67 hasCustomIcon: false,
65 workspaces: [], 68 workspaces: [],
69 // eslint-disable-next-line unicorn/no-null
66 iconUrl: null, 70 iconUrl: null,
67 ...data, 71 ...data,
68 }, 72 },
@@ -71,16 +75,20 @@ class ServiceController {
71 } 75 }
72 76
73 // List all services a user has created 77 // List all services a user has created
74 async list({ response, auth }) { 78 public async list({ request, response, auth }: HttpContextContract) {
75 try { 79 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
76 await auth.getUser(); 80 const user = auth.user ?? request.user;
77 } catch (error) { 81
78 return response.send('Missing or invalid api token'); 82 if (!user) {
83 return response.unauthorized('Missing or invalid api token');
79 } 84 }
80 85
81 const services = (await auth.user.services().fetch()).rows; 86 const { id } = user;
87 const services = await user.related('services').query();
88
82 // Convert to array with all data Franz wants 89 // Convert to array with all data Franz wants
83 const servicesArray = services.map(service => { 90 // eslint-disable-next-line @typescript-eslint/no-explicit-any
91 const servicesArray = services.map((service: any) => {
84 const settings = 92 const settings =
85 typeof service.settings === 'string' 93 typeof service.settings === 'string'
86 ? JSON.parse(service.settings) 94 ? JSON.parse(service.settings)
@@ -99,38 +107,65 @@ class ServiceController {
99 workspaces: [], 107 workspaces: [],
100 ...settings, 108 ...settings,
101 iconUrl: settings.iconId 109 iconUrl: settings.iconId
102 ? `${Env.get('APP_URL')}/v1/icon/${settings.iconId}` 110 ? `${url}/v1/icon/${settings.iconId}`
103 : null, 111 : // eslint-disable-next-line unicorn/no-null
112 null,
104 id: service.serviceId, 113 id: service.serviceId,
105 name: service.name, 114 name: service.name,
106 recipeId: service.recipeId, 115 recipeId: service.recipeId,
107 userId: auth.user.id, 116 userId: id,
108 }; 117 };
109 }); 118 });
110 119
111 return response.send(servicesArray); 120 return response.send(servicesArray);
112 } 121 }
113 122
114 async edit({ request, response, auth, params }) { 123 public async delete({ params, auth, response }: HttpContextContract) {
115 try { 124 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
116 await auth.getUser(); 125 const user = auth.user ?? request.user;
117 } catch (error) { 126
118 return response.send('Missing or invalid api token'); 127 if (!user) {
128 return response.unauthorized('Missing or invalid api token');
119 } 129 }
120 130
131 // Update data in database
132 await Service.query()
133 .where('serviceId', params.id)
134 .where('userId', user.id)
135 .delete();
136
137 return response.send({
138 message: 'Sucessfully deleted service',
139 status: 200,
140 });
141 }
142
143 // TODO: Test if icon upload works
144 public async edit({ request, response, auth, params }: HttpContextContract) {
145 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
146 const user = auth.user ?? request.user;
147
148 if (!user) {
149 return response.unauthorized('Missing or invalid api token');
150 }
151
152 const { id } = params;
153 const service = await Service.query()
154 .where('serviceId', id)
155 .where('userId', user.id)
156 .firstOrFail();
157
121 if (request.file('icon')) { 158 if (request.file('icon')) {
122 // Upload custom service icon 159 // Upload custom service icon
123 const icon = request.file('icon', { 160 const icon = request.file('icon', {
124 types: ['image'], 161 extnames: ['png', 'jpg', 'jpeg', 'svg'],
125 size: '2mb', 162 size: '2mb',
126 }); 163 });
127 const { id } = params; 164
128 const service = ( 165 if (icon === null) {
129 await Service.query() 166 return response.badRequest('Icon not uploaded.');
130 .where('serviceId', id) 167 }
131 .where('userId', auth.user.id) 168
132 .fetch()
133 ).rows[0];
134 const settings = 169 const settings =
135 typeof service.settings === 'string' 170 typeof service.settings === 'string'
136 ? JSON.parse(service.settings) 171 ? JSON.parse(service.settings)
@@ -139,34 +174,34 @@ class ServiceController {
139 let iconId; 174 let iconId;
140 do { 175 do {
141 iconId = uuid() + uuid(); 176 iconId = uuid() + uuid();
177 } while (
142 // eslint-disable-next-line no-await-in-loop 178 // eslint-disable-next-line no-await-in-loop
143 } while (await fs.exists(path.join(Helpers.tmpPath('uploads'), iconId))); 179 await fs.exists(path.join(Application.tmpPath('uploads'), iconId))
180 );
144 iconId = `${iconId}.${icon.extname}`; 181 iconId = `${iconId}.${icon.extname}`;
145 182
146 await icon.move(Helpers.tmpPath('uploads'), { 183 await icon.move(Application.tmpPath('uploads'), {
147 name: iconId, 184 name: iconId,
148 overwrite: true, 185 overwrite: true,
149 }); 186 });
150 187
151 if (!icon.moved()) { 188 if (icon.state !== 'moved') {
152 return response.status(500).send(icon.error()); 189 return response.status(500).send(icon.errors);
153 } 190 }
154 191
155 const newSettings = { 192 const newSettings = {
156 ...settings, 193 ...settings,
157 ...{ 194
158 iconId, 195 iconId,
159 customIconVersion: 196 customIconVersion: settings?.customIconVersion
160 settings && settings.customIconVersion 197 ? settings.customIconVersion + 1
161 ? settings.customIconVersion + 1 198 : 1,
162 : 1,
163 },
164 }; 199 };
165 200
166 // Update data in database 201 // Update data in database
167 await Service.query() 202 await Service.query()
168 .where('serviceId', id) 203 .where('serviceId', id)
169 .where('userId', auth.user.id) 204 .where('userId', user.id)
170 .update({ 205 .update({
171 name: service.name, 206 name: service.name,
172 settings: JSON.stringify(newSettings), 207 settings: JSON.stringify(newSettings),
@@ -177,34 +212,25 @@ class ServiceController {
177 id, 212 id,
178 name: service.name, 213 name: service.name,
179 ...newSettings, 214 ...newSettings,
180 iconUrl: `${Env.get('APP_URL')}/v1/icon/${newSettings.iconId}`, 215 iconUrl: `${url}/v1/icon/${newSettings.iconId}`,
181 userId: auth.user.id, 216 userId: user.id,
182 }, 217 },
183 status: ['updated'], 218 status: ['updated'],
184 }); 219 });
185 } 220 }
186 // Update service info 221 // Update service info
187 const data = request.all(); 222 const data = request.all();
188 const { id } = params;
189
190 // Get current settings from db
191 const serviceData = (
192 await Service.query()
193 .where('serviceId', id)
194 .where('userId', auth.user.id)
195 .fetch()
196 ).rows[0];
197 223
198 const settings = { 224 const settings = {
199 ...(typeof serviceData.settings === 'string' 225 ...(typeof service.settings === 'string'
200 ? JSON.parse(serviceData.settings) 226 ? JSON.parse(service.settings)
201 : serviceData.settings), 227 : service.settings),
202 ...data, 228 ...data,
203 }; 229 };
204 230
205 if (settings.customIcon === 'delete') { 231 if (settings.customIcon === 'delete') {
206 fs.remove( 232 fs.remove(
207 path.join(Helpers.tmpPath('uploads'), settings.iconId), 233 path.join(Application.tmpPath('uploads'), settings.iconId),
208 ).catch(error => { 234 ).catch(error => {
209 console.error(error); 235 console.error(error);
210 }); 236 });
@@ -217,68 +243,48 @@ class ServiceController {
217 // Update data in database 243 // Update data in database
218 await Service.query() 244 await Service.query()
219 .where('serviceId', id) 245 .where('serviceId', id)
220 .where('userId', auth.user.id) 246 .where('userId', user.id)
221 .update({ 247 .update({
222 name: data.name, 248 name: data.name,
223 settings: JSON.stringify(settings), 249 settings: JSON.stringify(settings),
224 }); 250 });
225 251
226 // Get updated row 252 // Get updated row
227 const service = ( 253 const serviceUpdated = await Service.query()
228 await Service.query() 254 .where('serviceId', id)
229 .where('serviceId', id) 255 .where('userId', user.id)
230 .where('userId', auth.user.id) 256 .firstOrFail();
231 .fetch()
232 ).rows[0];
233 257
234 return response.send({ 258 return response.send({
235 data: { 259 data: {
236 id, 260 id,
237 name: service.name, 261 name: serviceUpdated.name,
238 ...settings, 262 ...settings,
239 iconUrl: `${Env.get('APP_URL')}/v1/icon/${settings.iconId}`, 263 iconUrl: `${url}/v1/icon/${settings.iconId}`,
240 userId: auth.user.id, 264 userId: user.id,
241 }, 265 },
242 status: ['updated'], 266 status: ['updated'],
243 }); 267 });
244 } 268 }
245 269
246 async icon({ params, response }) { 270 // TODO: Test if this works
247 let { id } = params; 271 public async reorder({ request, response, auth }: HttpContextContract) {
272 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
273 const user = auth.user ?? request.user;
248 274
249 id = sanitize(id); 275 if (!user) {
250 if (id === '') { 276 return response.unauthorized('Missing or invalid api token');
251 return response.status(404).send({
252 status: "Icon doesn't exist",
253 });
254 } 277 }
255 278
256 const iconPath = path.join(Helpers.tmpPath('uploads'), id);
257
258 try {
259 await fs.access(iconPath);
260 } catch (ex) {
261 console.log(ex);
262 // File not available.
263 return response.status(404).send({
264 status: "Icon doesn't exist",
265 });
266 }
267
268 return response.download(iconPath);
269 }
270
271 async reorder({ request, response, auth }) {
272 const data = request.all(); 279 const data = request.all();
273 280
274 for (const service of Object.keys(data)) { 281 for (const service of Object.keys(data)) {
275 // Get current settings from db 282 // Get current settings from db
276 const serviceData = ( 283 const serviceData = await Service.query() // eslint-disable-line no-await-in-loop
277 await Service.query() // eslint-disable-line no-await-in-loop 284 .where('serviceId', service)
278 .where('serviceId', service) 285 .where('userId', user.id)
279 .where('userId', auth.user.id) 286
280 .fetch() 287 .firstOrFail();
281 ).rows[0];
282 288
283 const settings = { 289 const settings = {
284 ...(typeof serviceData.settings === 'string' 290 ...(typeof serviceData.settings === 'string'
@@ -290,16 +296,17 @@ class ServiceController {
290 // Update data in database 296 // Update data in database
291 await Service.query() // eslint-disable-line no-await-in-loop 297 await Service.query() // eslint-disable-line no-await-in-loop
292 .where('serviceId', service) 298 .where('serviceId', service)
293 .where('userId', auth.user.id) 299 .where('userId', user.id)
294 .update({ 300 .update({
295 settings: JSON.stringify(settings), 301 settings: JSON.stringify(settings),
296 }); 302 });
297 } 303 }
298 304
299 // Get new services 305 // Get new services
300 const services = (await auth.user.services().fetch()).rows; 306 const services = await user.related('services').query();
301 // Convert to array with all data Franz wants 307 // Convert to array with all data Franz wants
302 const servicesArray = services.map(service => { 308 // eslint-disable-next-line @typescript-eslint/no-explicit-any
309 const servicesArray = services.map((service: any) => {
303 const settings = 310 const settings =
304 typeof service.settings === 'string' 311 typeof service.settings === 'string'
305 ? JSON.parse(service.settings) 312 ? JSON.parse(service.settings)
@@ -318,30 +325,41 @@ class ServiceController {
318 workspaces: [], 325 workspaces: [],
319 ...settings, 326 ...settings,
320 iconUrl: settings.iconId 327 iconUrl: settings.iconId
321 ? `${Env.get('APP_URL')}/v1/icon/${settings.iconId}` 328 ? `${url}/v1/icon/${settings.iconId}`
322 : null, 329 : // eslint-disable-next-line unicorn/no-null
330 null,
323 id: service.serviceId, 331 id: service.serviceId,
324 name: service.name, 332 name: service.name,
325 recipeId: service.recipeId, 333 recipeId: service.recipeId,
326 userId: auth.user.id, 334 userId: user.id,
327 }; 335 };
328 }); 336 });
329 337
330 return response.send(servicesArray); 338 return response.send(servicesArray);
331 } 339 }
332 340
333 async delete({ params, auth, response }) { 341 // TODO: Test if this works
334 // Update data in database 342 public async icon({ params, response }: HttpContextContract) {
335 await Service.query() 343 let { id } = params;
336 .where('serviceId', params.id)
337 .where('userId', auth.user.id)
338 .delete();
339 344
340 return response.send({ 345 id = sanitize(id);
341 message: 'Sucessfully deleted service', 346 if (id === '') {
342 status: 200, 347 return response.status(404).send({
343 }); 348 status: 'Icon doesn\'t exist',
349 });
350 }
351
352 const iconPath = path.join(Application.tmpPath('uploads'), id);
353
354 try {
355 await fs.access(iconPath);
356 } catch {
357 // File not available.
358 return response.status(404).send({
359 status: 'Icon doesn\'t exist',
360 });
361 }
362
363 return response.download(iconPath);
344 } 364 }
345} 365}
346
347module.exports = ServiceController;
diff --git a/app/Controllers/Http/StaticController.js b/app/Controllers/Http/StaticController.js
deleted file mode 100644
index 82cf1db..0000000
--- a/app/Controllers/Http/StaticController.js
+++ /dev/null
@@ -1,44 +0,0 @@
1/**
2 * Controller for routes with static responses
3 */
4const Helpers = use('Helpers');
5const fs = require('fs-extra');
6const path = require('path');
7
8class StaticController {
9 // Enable all features
10 features({
11 response,
12 }) {
13 return response.send({
14 isServiceProxyEnabled: true,
15 isWorkspaceEnabled: true,
16 isAnnouncementsEnabled: true,
17 isSettingsWSEnabled: false,
18 isMagicBarEnabled: true,
19 isTodosEnabled: true,
20 });
21 }
22
23 // Return an empty array
24 emptyArray({
25 response,
26 }) {
27 return response.send([]);
28 }
29
30 // Show announcements
31 async announcement({
32 response,
33 params,
34 }) {
35 const announcement = path.join(Helpers.resourcesPath(), 'announcements', `${params.version}.json`);
36
37 if (await fs.pathExists(announcement)) {
38 return response.download(announcement);
39 }
40 return response.status(404).send('No announcement found.');
41 }
42}
43
44module.exports = StaticController;
diff --git a/app/Controllers/Http/StaticsController.ts b/app/Controllers/Http/StaticsController.ts
new file mode 100644
index 0000000..e221177
--- /dev/null
+++ b/app/Controllers/Http/StaticsController.ts
@@ -0,0 +1,3 @@
1// import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
2
3export default class StaticsController {}
diff --git a/app/Controllers/Http/UserController.js b/app/Controllers/Http/UserController.ts
index aef7f01..ef7cfdd 100644
--- a/app/Controllers/Http/UserController.js
+++ b/app/Controllers/Http/UserController.ts
@@ -1,17 +1,37 @@
1const User = use('App/Models/User'); 1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
2const Service = use('App/Models/Service'); 2import { schema, rules } from '@ioc:Adonis/Core/Validator';
3const Workspace = use('App/Models/Workspace'); 3import User from 'App/Models/User';
4const { validateAll } = use('Validator'); 4import { connectWithFranz, isRegistrationEnabled } from '../../../config/app';
5const Env = use('Env'); 5import crypto from 'node:crypto';
6 6import { v4 as uuid } from 'uuid';
7const atob = require('atob'); 7import Workspace from 'App/Models/Workspace';
8const btoa = require('btoa'); 8import Service from 'App/Models/Service';
9const fetch = require('node-fetch'); 9import fetch from 'node-fetch';
10const { v4: uuid } = require('uuid'); 10
11const crypto = require('crypto'); 11// TODO: This file needs to be refactored and cleaned up to include types
12 12import { handleVerifyAndReHash } from '../../../helpers/PasswordHash';
13// TODO: This whole controller needs to be changed such that it can support importing from both Franz and Ferdi 13
14const franzRequest = (route, method, auth) => 14const newPostSchema = schema.create({
15 firstname: schema.string(),
16 lastname: schema.string(),
17 email: schema.string([
18 rules.email(),
19 rules.unique({ table: 'users', column: 'email' }),
20 ]),
21 password: schema.string([rules.minLength(8)]),
22});
23
24const franzImportSchema = schema.create({
25 email: schema.string([
26 rules.email(),
27 rules.unique({ table: 'users', column: 'email' }),
28 ]),
29 password: schema.string([rules.minLength(8)]),
30});
31
32// // TODO: This whole controller needs to be changed such that it can support importing from both Franz and Ferdi
33// eslint-disable-next-line @typescript-eslint/no-explicit-any
34const franzRequest = (route: any, method: any, auth: any) =>
15 new Promise((resolve, reject) => { 35 new Promise((resolve, reject) => {
16 const base = 'https://api.franzinfra.com/v1/'; 36 const base = 'https://api.franzinfra.com/v1/';
17 const user = 37 const user =
@@ -27,16 +47,15 @@ const franzRequest = (route, method, auth) =>
27 }) 47 })
28 .then(data => data.json()) 48 .then(data => data.json())
29 .then(json => resolve(json)); 49 .then(json => resolve(json));
30 } catch (e) { 50 } catch {
31 reject(); 51 reject();
32 } 52 }
33 }); 53 });
34 54
35class UserController { 55export default class UsersController {
36 // Register a new user 56 // Register a new user
37 async signup({ request, response, auth }) { 57 public async signup({ request, response, auth }: HttpContextContract) {
38 if (Env.get('IS_REGISTRATION_ENABLED') == 'false') { 58 if (isRegistrationEnabled === 'false') {
39 // eslint-disable-line eqeqeq
40 return response.status(401).send({ 59 return response.status(401).send({
41 message: 'Registration is disabled on this server', 60 message: 'Registration is disabled on this server',
42 status: 401, 61 status: 401,
@@ -44,23 +63,17 @@ class UserController {
44 } 63 }
45 64
46 // Validate user input 65 // Validate user input
47 const validation = await validateAll(request.all(), { 66 let data;
48 firstname: 'required', 67 try {
49 lastname: 'required', 68 data = await request.validate({ schema: newPostSchema });
50 email: 'required|email|unique:users,email', 69 } catch (error) {
51 password: 'required',
52 });
53
54 if (validation.fails()) {
55 return response.status(401).send({ 70 return response.status(401).send({
56 message: 'Invalid POST arguments', 71 message: 'Invalid POST arguments',
57 messages: validation.messages(), 72 messages: error.messages,
58 status: 401, 73 status: 401,
59 }); 74 });
60 } 75 }
61 76
62 const data = request.only(['firstname', 'lastname', 'email', 'password']);
63
64 // Create user in DB 77 // Create user in DB
65 let user; 78 let user;
66 try { 79 try {
@@ -70,24 +83,24 @@ class UserController {
70 username: data.firstname, 83 username: data.firstname,
71 lastname: data.lastname, 84 lastname: data.lastname,
72 }); 85 });
73 } catch (e) { 86 } catch {
74 return response.status(401).send({ 87 return response.status(401).send({
75 message: 'E-Mail Address already in use', 88 message: 'E-Mail address already in use',
76 status: 401, 89 status: 401,
77 }); 90 });
78 } 91 }
79 92
80 // Generate new auth token 93 // Generate new auth token
81 const token = await auth.generate(user); 94 const token = await auth.use('jwt').login(user, { payload: {} });
82 95
83 return response.send({ 96 return response.send({
84 message: 'Successfully created account', 97 message: 'Successfully created account',
85 token: token.token, 98 token: token.accessToken,
86 }); 99 });
87 } 100 }
88 101
89 // Login using an existing user 102 // Login using an existing user
90 async login({ request, response, auth }) { 103 public async login({ request, response, auth }: HttpContextContract) {
91 if (!request.header('Authorization')) { 104 if (!request.header('Authorization')) {
92 return response.status(401).send({ 105 return response.status(401).send({
93 message: 'Please provide authorization', 106 message: 'Please provide authorization',
@@ -97,24 +110,28 @@ class UserController {
97 110
98 // Get auth data from auth token 111 // Get auth data from auth token
99 const authHeader = atob( 112 const authHeader = atob(
100 request.header('Authorization').replace('Basic ', ''), 113 request.header('Authorization')!.replace('Basic ', ''),
101 ).split(':'); 114 ).split(':');
102 115
103 // Check if user with email exists 116 // Check if user with email exists
104 const user = await User.query().where('email', authHeader[0]).first(); 117 const user = await User.query().where('email', authHeader[0]).first();
105 if (!user || !user.email) { 118 if (!user?.email) {
106 return response.status(401).send({ 119 return response.status(401).send({
107 message: 'User credentials not valid (Invalid mail)', 120 message: 'User credentials not valid',
108 code: 'invalid-credentials', 121 code: 'invalid-credentials',
109 status: 401, 122 status: 401,
110 }); 123 });
111 } 124 }
112 125
113 // Try to login 126 // Verify password
114 let token; 127 let isMatchedPassword = false;
115 try { 128 try {
116 token = await auth.attempt(user.email, authHeader[1]); 129 isMatchedPassword = await handleVerifyAndReHash(user, authHeader[1]);
117 } catch (e) { 130 } catch (error) {
131 return response.internalServerError({ message: error.message });
132 }
133
134 if (!isMatchedPassword) {
118 return response.status(401).send({ 135 return response.status(401).send({
119 message: 'User credentials not valid', 136 message: 'User credentials not valid',
120 code: 'invalid-credentials', 137 code: 'invalid-credentials',
@@ -122,44 +139,55 @@ class UserController {
122 }); 139 });
123 } 140 }
124 141
142 // Generate token
143 const token = await auth.use('jwt').login(user, { payload: {} });
144
125 return response.send({ 145 return response.send({
126 message: 'Successfully logged in', 146 message: 'Successfully logged in',
127 token: token.token, 147 token: token.accessToken,
128 }); 148 });
129 } 149 }
130 150
131 // Return information about the current user 151 // Return information about the current user
132 async me({ response, auth }) { 152 public async me({ request, response, auth }: HttpContextContract) {
133 try { 153 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
134 await auth.getUser(); 154 const user = auth.user ?? request.user;
135 } catch (error) { 155
136 response.send('Missing or invalid api token'); 156 if (!user) {
157 return response.send('Missing or invalid api token');
137 } 158 }
138 159
139 const settings = 160 const settings =
140 typeof auth.user.settings === 'string' 161 typeof user.settings === 'string'
141 ? JSON.parse(auth.user.settings) 162 ? JSON.parse(user.settings)
142 : auth.user.settings; 163 : user.settings;
143 164
144 return response.send({ 165 return response.send({
145 accountType: 'individual', 166 accountType: 'individual',
146 beta: false, 167 beta: false,
147 donor: {}, 168 donor: {},
148 email: auth.user.email, 169 email: user.email,
149 emailValidated: true, 170 emailValidated: true,
150 features: {}, 171 features: {},
151 firstname: auth.user.username, 172 firstname: user.username,
152 id: '82c1cf9d-ab58-4da2-b55e-aaa41d2142d8', 173 id: '82c1cf9d-ab58-4da2-b55e-aaa41d2142d8',
153 isPremium: true, 174 isPremium: true,
154 isSubscriptionOwner: true, 175 isSubscriptionOwner: true,
155 lastname: auth.user.lastname, 176 lastname: user.lastname,
156 locale: 'en-US', 177 locale: 'en-US',
157 ...(settings || {}), 178 ...settings,
158 }); 179 });
159 } 180 }
160 181
161 async updateMe({ request, response, auth }) { 182 public async updateMe({ request, response, auth }: HttpContextContract) {
162 let settings = auth.user.settings || {}; 183 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
184 const user = auth.user ?? request.user;
185
186 if (!user) {
187 return response.send('Missing or invalid api token');
188 }
189
190 let settings = user.settings || {};
163 if (typeof settings === 'string') { 191 if (typeof settings === 'string') {
164 settings = JSON.parse(settings); 192 settings = JSON.parse(settings);
165 } 193 }
@@ -169,83 +197,76 @@ class UserController {
169 ...request.all(), 197 ...request.all(),
170 }; 198 };
171 199
172 // eslint-disable-next-line no-param-reassign 200 user.settings = JSON.stringify(newSettings);
173 auth.user.settings = JSON.stringify(newSettings); 201 await user.save();
174 await auth.user.save();
175 202
176 return response.send({ 203 return response.send({
177 data: { 204 data: {
178 accountType: 'individual', 205 accountType: 'individual',
179 beta: false, 206 beta: false,
180 donor: {}, 207 donor: {},
181 email: auth.user.email, 208 email: user.email,
182 emailValidated: true, 209 emailValidated: true,
183 features: {}, 210 features: {},
184 firstname: auth.user.username, 211 firstname: user.username,
185 id: '82c1cf9d-ab58-4da2-b55e-aaa41d2142d8', 212 id: '82c1cf9d-ab58-4da2-b55e-aaa41d2142d8',
186 isPremium: true, 213 isPremium: true,
187 isSubscriptionOwner: true, 214 isSubscriptionOwner: true,
188 lastname: auth.user.lastname, 215 lastname: user.lastname,
189 locale: 'en-US', 216 locale: 'en-US',
190 ...(newSettings || {}), 217 ...newSettings,
191 }, 218 },
192 status: ['data-updated'], 219 status: ['data-updated'],
193 }); 220 });
194 } 221 }
195 222
196 async import({ request, response, view }) { 223 public async newToken({ request, response, auth }: HttpContextContract) {
197 if (Env.get('IS_REGISTRATION_ENABLED') == 'false') { 224 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
198 // eslint-disable-line eqeqeq 225 const user = auth.user ?? request.user;
226
227 if (!user) {
228 return response.send('Missing or invalid api token');
229 }
230
231 const token = await auth.use('jwt').generate(user, { payload: {} });
232
233 return response.send({
234 token: token.accessToken,
235 });
236 }
237
238 public async import({ request, response, view }: HttpContextContract) {
239 if (isRegistrationEnabled === 'false') {
199 return response.status(401).send({ 240 return response.status(401).send({
200 message: 'Registration is disabled on this server', 241 message: 'Registration is disabled on this server',
201 status: 401, 242 status: 401,
202 }); 243 });
203 } 244 }
204 245
246 if (connectWithFranz === 'false') {
247 return response.send(
248 'We could not import your Franz account data.\n\nIf you are the server owner, please set CONNECT_WITH_FRANZ to true to enable account imports.',
249 );
250 }
251
205 // Validate user input 252 // Validate user input
206 const validation = await validateAll(request.all(), { 253 let data;
207 email: 'required|email|unique:users,email', 254 try {
208 password: 'required', 255 data = await request.validate({ schema: franzImportSchema });
209 }); 256 } catch (error) {
210 if (validation.fails()) {
211 let errorMessage =
212 'There was an error while trying to import your account:\n';
213 for (const message of validation.messages()) {
214 if (message.validation === 'required') {
215 errorMessage += `- Please make sure to supply your ${message.field}\n`;
216 } else if (message.validation === 'unique') {
217 errorMessage += '- There is already a user with this email.\n';
218 } else {
219 errorMessage += `${message.message}\n`;
220 }
221 }
222 return view.render('others.message', { 257 return view.render('others.message', {
223 heading: 'Error while importing', 258 heading: 'Error while importing',
224 text: errorMessage, 259 text: error.messages,
225 }); 260 });
226 } 261 }
227 262
228 const { email, password } = request.all(); 263 const { email, password } = data;
229 264
230 const hashedPassword = crypto 265 const hashedPassword = crypto
231 .createHash('sha256') 266 .createHash('sha256')
232 .update(password) 267 .update(password)
233 .digest('base64'); 268 .digest('base64');
234 269
235 if (Env.get('CONNECT_WITH_FRANZ') == 'false') {
236 // eslint-disable-line eqeqeq
237 await User.create({
238 email,
239 password: hashedPassword,
240 username: 'Franz',
241 lastname: 'Franz',
242 });
243
244 return response.send(
245 "Your account has been created but due to this server's configuration, we could not import your Franz account data.\n\nIf you are the server owner, please set CONNECT_WITH_FRANZ to true to enable account imports.",
246 );
247 }
248
249 const base = 'https://api.franzinfra.com/v1/'; 270 const base = 'https://api.franzinfra.com/v1/';
250 const userAgent = 271 const userAgent =
251 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Franz/5.3.0-beta.1 Chrome/69.0.3497.128 Electron/4.2.4 Safari/537.36'; 272 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Franz/5.3.0-beta.1 Chrome/69.0.3497.128 Electron/4.2.4 Safari/537.36';
@@ -278,19 +299,20 @@ class UserController {
278 } 299 }
279 300
280 token = content.token; 301 token = content.token;
281 } catch (e) { 302 } catch (error) {
282 return response.status(401).send({ 303 return response.status(401).send({
283 message: 'Cannot login to Franz', 304 message: 'Cannot login to Franz',
284 error: e, 305 error: error,
285 }); 306 });
286 } 307 }
287 308
288 // Get user information 309 // Get user information
289 let userInf = false; 310 // eslint-disable-next-line @typescript-eslint/no-explicit-any
311 let userInf: any = false;
290 try { 312 try {
291 userInf = await franzRequest('me', 'GET', token); 313 userInf = await franzRequest('me', 'GET', token);
292 } catch (e) { 314 } catch (error) {
293 const errorMessage = `Could not get your user info from Franz. Please check your credentials or try again later.\nError: ${e}`; 315 const errorMessage = `Could not get your user info from Franz. Please check your credentials or try again later.\nError: ${error}`;
294 return response.status(401).send(errorMessage); 316 return response.status(401).send(errorMessage);
295 } 317 }
296 if (!userInf) { 318 if (!userInf) {
@@ -308,8 +330,8 @@ class UserController {
308 username: userInf.firstname, 330 username: userInf.firstname,
309 lastname: userInf.lastname, 331 lastname: userInf.lastname,
310 }); 332 });
311 } catch (e) { 333 } catch (error) {
312 const errorMessage = `Could not create your user in our system.\nError: ${e}`; 334 const errorMessage = `Could not create your user in our system.\nError: ${error}`;
313 return response.status(401).send(errorMessage); 335 return response.status(401).send(errorMessage);
314 } 336 }
315 337
@@ -319,18 +341,19 @@ class UserController {
319 try { 341 try {
320 const services = await franzRequest('me/services', 'GET', token); 342 const services = await franzRequest('me/services', 'GET', token);
321 343
344 // @ts-expect-error
322 for (const service of services) { 345 for (const service of services) {
323 // Get new, unused uuid 346 // Get new, unused uuid
324 let serviceId; 347 let serviceId;
325 do { 348 do {
326 serviceId = uuid(); 349 serviceId = uuid();
327 } while ( 350 } while (
328 (await Service.query().where('serviceId', serviceId).fetch()).rows 351 // eslint-disable-next-line no-await-in-loop, unicorn/no-await-expression-member
329 .length > 0 352 (await Service.query().where('serviceId', serviceId)).length > 0
330 ); // eslint-disable-line no-await-in-loop 353 );
331 354
355 // eslint-disable-next-line no-await-in-loop
332 await Service.create({ 356 await Service.create({
333 // eslint-disable-line no-await-in-loop
334 userId: user.id, 357 userId: user.id,
335 serviceId, 358 serviceId,
336 name: service.name, 359 name: service.name,
@@ -338,10 +361,11 @@ class UserController {
338 settings: JSON.stringify(service), 361 settings: JSON.stringify(service),
339 }); 362 });
340 363
364 // @ts-expect-error
341 serviceIdTranslation[service.id] = serviceId; 365 serviceIdTranslation[service.id] = serviceId;
342 } 366 }
343 } catch (e) { 367 } catch (error) {
344 const errorMessage = `Could not import your services into our system.\nError: ${e}`; 368 const errorMessage = `Could not import your services into our system.\nError: ${error}`;
345 return response.status(401).send(errorMessage); 369 return response.status(401).send(errorMessage);
346 } 370 }
347 371
@@ -349,21 +373,23 @@ class UserController {
349 try { 373 try {
350 const workspaces = await franzRequest('workspace', 'GET', token); 374 const workspaces = await franzRequest('workspace', 'GET', token);
351 375
376 // @ts-expect-error
352 for (const workspace of workspaces) { 377 for (const workspace of workspaces) {
353 let workspaceId; 378 let workspaceId;
354 do { 379 do {
355 workspaceId = uuid(); 380 workspaceId = uuid();
356 } while ( 381 } while (
357 (await Workspace.query().where('workspaceId', workspaceId).fetch()) 382 // eslint-disable-next-line unicorn/no-await-expression-member, no-await-in-loop
358 .rows.length > 0 383 (await Workspace.query().where('workspaceId', workspaceId)).length > 0
359 ); // eslint-disable-line no-await-in-loop 384 );
360 385
361 const services = workspace.services.map( 386 const services = workspace.services.map(
387 // @ts-expect-error
362 service => serviceIdTranslation[service], 388 service => serviceIdTranslation[service],
363 ); 389 );
364 390
391 // eslint-disable-next-line no-await-in-loop
365 await Workspace.create({ 392 await Workspace.create({
366 // eslint-disable-line no-await-in-loop
367 userId: user.id, 393 userId: user.id,
368 workspaceId, 394 workspaceId,
369 name: workspace.name, 395 name: workspace.name,
@@ -372,8 +398,8 @@ class UserController {
372 data: JSON.stringify({}), 398 data: JSON.stringify({}),
373 }); 399 });
374 } 400 }
375 } catch (e) { 401 } catch (error) {
376 const errorMessage = `Could not import your workspaces into our system.\nError: ${e}`; 402 const errorMessage = `Could not import your workspaces into our system.\nError: ${error}`;
377 return response.status(401).send(errorMessage); 403 return response.status(401).send(errorMessage);
378 } 404 }
379 405
@@ -382,5 +408,3 @@ class UserController {
382 ); 408 );
383 } 409 }
384} 410}
385
386module.exports = UserController;
diff --git a/app/Controllers/Http/WorkspaceController.js b/app/Controllers/Http/WorkspaceController.js
deleted file mode 100644
index a9c2872..0000000
--- a/app/Controllers/Http/WorkspaceController.js
+++ /dev/null
@@ -1,172 +0,0 @@
1const Workspace = use('App/Models/Workspace');
2const { validateAll } = use('Validator');
3
4const { v4: uuid } = require('uuid');
5
6class WorkspaceController {
7 // Create a new workspace for user
8 async create({ request, response, auth }) {
9 try {
10 await auth.getUser();
11 } catch (error) {
12 return response.send('Missing or invalid api token');
13 }
14
15 // Validate user input
16 const validation = await validateAll(request.all(), {
17 name: 'required',
18 });
19 if (validation.fails()) {
20 return response.status(401).send({
21 message: 'Invalid POST arguments',
22 messages: validation.messages(),
23 status: 401,
24 });
25 }
26
27 const data = request.all();
28
29 // Get new, unused uuid
30 let workspaceId;
31 do {
32 workspaceId = uuid();
33 } while (
34 (await Workspace.query().where('workspaceId', workspaceId).fetch()).rows
35 .length > 0
36 ); // eslint-disable-line no-await-in-loop
37
38 const order = (await auth.user.workspaces().fetch()).rows.length;
39
40 await Workspace.create({
41 userId: auth.user.id,
42 workspaceId,
43 name: data.name,
44 order,
45 services: JSON.stringify([]),
46 data: JSON.stringify(data),
47 });
48
49 return response.send({
50 userId: auth.user.id,
51 name: data.name,
52 id: workspaceId,
53 order,
54 workspaces: [],
55 });
56 }
57
58 async edit({ request, response, auth, params }) {
59 try {
60 await auth.getUser();
61 } catch (error) {
62 return response.send('Missing or invalid api token');
63 }
64
65 // Validate user input
66 const validation = await validateAll(request.all(), {
67 name: 'required',
68 });
69 if (validation.fails()) {
70 return response.status(401).send({
71 message: 'Invalid POST arguments',
72 messages: validation.messages(),
73 status: 401,
74 });
75 }
76
77 const data = request.all();
78 const { id } = params;
79
80 // Update data in database
81 await Workspace.query()
82 .where('workspaceId', id)
83 .where('userId', auth.user.id)
84 .update({
85 name: data.name,
86 services: JSON.stringify(data.services),
87 });
88
89 // Get updated row
90 const workspace = (
91 await Workspace.query()
92 .where('workspaceId', id)
93 .where('userId', auth.user.id)
94 .fetch()
95 ).rows[0];
96
97 return response.send({
98 id: workspace.workspaceId,
99 name: data.name,
100 order: workspace.order,
101 services: data.services,
102 userId: auth.user.id,
103 });
104 }
105
106 async delete({
107 // eslint-disable-next-line no-unused-vars
108 _request,
109 response,
110 auth,
111 params,
112 }) {
113 try {
114 await auth.getUser();
115 } catch (error) {
116 return response.send('Missing or invalid api token');
117 }
118
119 // Validate user input
120 const validation = await validateAll(params, {
121 id: 'required',
122 });
123 if (validation.fails()) {
124 return response.status(401).send({
125 message: 'Invalid arguments',
126 messages: validation.messages(),
127 status: 401,
128 });
129 }
130
131 const { id } = params;
132
133 // Update data in database
134 await Workspace.query()
135 .where('workspaceId', id)
136 .where('userId', auth.user.id)
137 .delete();
138
139 return response.send({
140 message: 'Successfully deleted workspace',
141 });
142 }
143
144 // List all workspaces a user has created
145 async list({ response, auth }) {
146 try {
147 await auth.getUser();
148 } catch (error) {
149 return response.send('Missing or invalid api token');
150 }
151
152 const workspaces = (await auth.user.workspaces().fetch()).rows;
153 // Convert to array with all data Franz wants
154 let workspacesArray = [];
155 if (workspaces) {
156 workspacesArray = workspaces.map(workspace => ({
157 id: workspace.workspaceId,
158 name: workspace.name,
159 order: workspace.order,
160 services:
161 typeof workspace.services === 'string'
162 ? JSON.parse(workspace.services)
163 : workspace.services,
164 userId: auth.user.id,
165 }));
166 }
167
168 return response.send(workspacesArray);
169 }
170}
171
172module.exports = WorkspaceController;
diff --git a/app/Controllers/Http/WorkspaceController.ts b/app/Controllers/Http/WorkspaceController.ts
new file mode 100644
index 0000000..4dff4df
--- /dev/null
+++ b/app/Controllers/Http/WorkspaceController.ts
@@ -0,0 +1,180 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
2import { validator, schema } from '@ioc:Adonis/Core/Validator';
3import Workspace from 'App/Models/Workspace';
4import { v4 as uuid } from 'uuid';
5
6const createSchema = schema.create({
7 name: schema.string(),
8});
9
10const editSchema = schema.create({
11 name: schema.string(),
12});
13
14const deleteSchema = schema.create({
15 id: schema.string(),
16});
17
18export default class WorkspacesController {
19 // Create a new workspace for user
20 public async create({ request, response, auth }: HttpContextContract) {
21 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
22 const user = auth.user ?? request.user;
23
24 if (!user) {
25 return response.unauthorized('Missing or invalid api token');
26 }
27
28 // Validate user input
29 let data;
30 try {
31 data = await request.validate({ schema: createSchema });
32 } catch (error) {
33 return response.status(401).send({
34 message: 'Invalid POST arguments',
35 messages: error.messages,
36 status: 401,
37 });
38 }
39
40 // Get new, unused uuid
41 let workspaceId;
42 do {
43 workspaceId = uuid();
44 } while (
45 // eslint-disable-next-line unicorn/no-await-expression-member, no-await-in-loop
46 (await Workspace.query().where('workspaceId', workspaceId)).length > 0
47 );
48
49 // eslint-disable-next-line unicorn/no-await-expression-member
50 const order = (await user.related('workspaces').query()).length;
51
52 await Workspace.create({
53 userId: user.id,
54 workspaceId,
55 name: data.name,
56 order,
57 services: JSON.stringify([]),
58 data: JSON.stringify(data),
59 });
60
61 return response.send({
62 userId: user.id,
63 name: data.name,
64 id: workspaceId,
65 order,
66 workspaces: [],
67 });
68 }
69
70 public async edit({ request, response, auth, params }: HttpContextContract) {
71 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
72 const user = auth.user ?? request.user;
73
74 if (!user) {
75 return response.unauthorized('Missing or invalid api token');
76 }
77
78 // Validate user input
79 try {
80 await request.validate({ schema: editSchema });
81 } catch (error) {
82 return response.status(401).send({
83 message: 'Invalid POST arguments',
84 messages: error.messages,
85 status: 401,
86 });
87 }
88
89 const data = request.all();
90 const { id } = params;
91
92 // Update data in database
93 await Workspace.query()
94 .where('workspaceId', id)
95 .where('userId', user.id)
96 .update({
97 name: data.name,
98 services: JSON.stringify(data.services),
99 });
100
101 // Get updated row
102 const workspace = await Workspace.query()
103 .where('workspaceId', id)
104 .where('userId', user.id)
105 .firstOrFail();
106
107 return response.send({
108 id: workspace.workspaceId,
109 name: data.name,
110 order: workspace.order,
111 services: data.services,
112 userId: user.id,
113 });
114 }
115
116 public async delete({ response, auth, params }: HttpContextContract) {
117 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
118 const user = auth.user ?? request.user;
119
120 if (!user) {
121 return response.unauthorized('Missing or invalid api token');
122 }
123
124 // Validate user input
125 let data;
126 try {
127 data = await validator.validate({
128 data: params,
129 schema: deleteSchema,
130 });
131 } catch (error) {
132 return response.status(401).send({
133 message: 'Invalid arguments',
134 messages: error.messages,
135 status: 401,
136 });
137 }
138
139 const { id } = data;
140
141 // Update data in database
142 await Workspace.query()
143 .where('workspaceId', id)
144 .where('userId', user.id)
145 .delete();
146
147 return response.send({
148 message: 'Successfully deleted workspace',
149 });
150 }
151
152 // List all workspaces a user has created
153 public async list({ request, response, auth }: HttpContextContract) {
154 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
155 const user = auth.user ?? request.user;
156
157 if (!user) {
158 return response.unauthorized('Missing or invalid api token');
159 }
160
161 const workspaces = await user.related('workspaces').query();
162 // Convert to array with all data Franz wants
163 let workspacesArray: object[] = [];
164 if (workspaces) {
165 // eslint-disable-next-line @typescript-eslint/no-explicit-any
166 workspacesArray = workspaces.map((workspace: any) => ({
167 id: workspace.workspaceId,
168 name: workspace.name,
169 order: workspace.order,
170 services:
171 typeof workspace.services === 'string'
172 ? JSON.parse(workspace.services)
173 : workspace.services,
174 userId: user.id,
175 }));
176 }
177
178 return response.send(workspacesArray);
179 }
180}
diff --git a/app/Exceptions/Handler.js b/app/Exceptions/Handler.js
deleted file mode 100644
index 43c3ef1..0000000
--- a/app/Exceptions/Handler.js
+++ /dev/null
@@ -1,48 +0,0 @@
1const BaseExceptionHandler = use('BaseExceptionHandler');
2const Sentry = require('@sentry/node');
3
4/**
5 * This class handles all exceptions thrown during
6 * the HTTP request lifecycle.
7 *
8 * @class ExceptionHandler
9 */
10class ExceptionHandler extends BaseExceptionHandler {
11 /**
12 * Handle exception thrown during the HTTP lifecycle
13 *
14 * @method handle
15 *
16 * @param {Object} error
17 * @param {Object} options.request
18 * @param {Object} options.response
19 *
20 * @return {void}
21 */
22 async handle(error, { response }) {
23 if (error.name === 'ValidationException') {
24 return response.status(400).send('Invalid arguments');
25 } if (error.name === 'InvalidSessionException') {
26 return response.status(401).redirect('/user/login');
27 }
28
29 return response.status(error.status).send(error.message);
30 }
31
32 /**
33 * Report exception for logging or debugging.
34 *
35 * @method report
36 *
37 * @param {Object} error
38 * @param {Object} options.request
39 *
40 * @return {void}
41 */
42 async report(error) {
43 Sentry.captureException(error);
44 return true;
45 }
46}
47
48module.exports = ExceptionHandler;
diff --git a/app/Exceptions/Handler.ts b/app/Exceptions/Handler.ts
new file mode 100644
index 0000000..35c77d0
--- /dev/null
+++ b/app/Exceptions/Handler.ts
@@ -0,0 +1,23 @@
1/*
2|--------------------------------------------------------------------------
3| Http Exception Handler
4|--------------------------------------------------------------------------
5|
6| AdonisJs will forward all exceptions occurred during an HTTP request to
7| the following class. You can learn more about exception handling by
8| reading docs.
9|
10| The exception handler extends a base `HttpExceptionHandler` which is not
11| mandatory, however it can do lot of heavy lifting to handle the errors
12| properly.
13|
14*/
15
16import Logger from '@ioc:Adonis/Core/Logger';
17import HttpExceptionHandler from '@ioc:Adonis/Core/HttpExceptionHandler';
18
19export default class ExceptionHandler extends HttpExceptionHandler {
20 constructor() {
21 super(Logger);
22 }
23}
diff --git a/app/Middleware/AllowGuestOnly.ts b/app/Middleware/AllowGuestOnly.ts
new file mode 100644
index 0000000..ee43571
--- /dev/null
+++ b/app/Middleware/AllowGuestOnly.ts
@@ -0,0 +1,56 @@
1import { GuardsList } from '@ioc:Adonis/Addons/Auth';
2import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
3import { AuthenticationException } from '@adonisjs/auth/build/standalone';
4
5/**
6 * This is actually a reverted a reverted auth middleware available in ./Auth.ts
7 * provided by the AdonisJS project iself.
8 */
9export default class GuestMiddleware {
10 /**
11 * The URL to redirect to when request is authorized
12 */
13 protected redirectTo = '/dashboard';
14
15 protected async authenticate(
16 auth: HttpContextContract['auth'],
17 guards: (keyof GuardsList)[],
18 ) {
19 let guardLastAttempted: string | undefined;
20
21 for (const guard of guards) {
22 guardLastAttempted = guard;
23
24 // eslint-disable-next-line no-await-in-loop
25 if (await auth.use(guard).check()) {
26 auth.defaultGuard = guard;
27
28 throw new AuthenticationException(
29 'Unauthorized access',
30 'E_UNAUTHORIZED_ACCESS',
31 guardLastAttempted,
32 this.redirectTo,
33 );
34 }
35 }
36 }
37
38 /**
39 * Handle request
40 */
41 public async handle(
42 { auth }: HttpContextContract,
43 next: () => Promise<void>,
44 customGuards: (keyof GuardsList)[],
45 ) {
46 /**
47 * Uses the user defined guards or the default guard mentioned in
48 * the config file
49 */
50 const guards = customGuards.length > 0 ? customGuards : [auth.name];
51
52 await this.authenticate(auth, guards);
53
54 await next();
55 }
56}
diff --git a/app/Middleware/Auth.ts b/app/Middleware/Auth.ts
new file mode 100644
index 0000000..d0b212c
--- /dev/null
+++ b/app/Middleware/Auth.ts
@@ -0,0 +1,118 @@
1import { GuardsList } from '@ioc:Adonis/Addons/Auth';
2import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
3import { AuthenticationException } from '@adonisjs/auth/build/standalone';
4import * as jose from 'jose';
5import { appKey } from 'Config/app';
6import User from 'App/Models/User';
7
8/**
9 * Auth middleware is meant to restrict un-authenticated access to a given route
10 * or a group of routes.
11 *
12 * You must register this middleware inside `start/kernel.ts` file under the list
13 * of named middleware.
14 */
15export default class AuthMiddleware {
16 /**
17 * The URL to redirect to when request is Unauthorized
18 */
19 protected redirectTo = '/user/login';
20
21 /**
22 * Authenticates the current HTTP request against a custom set of defined
23 * guards.
24 *
25 * The authentication loop stops as soon as the user is authenticated using any
26 * of the mentioned guards and that guard will be used by the rest of the code
27 * during the current request.
28 */
29 protected async authenticate(
30 auth: HttpContextContract['auth'],
31 guards: (keyof GuardsList)[],
32 request: HttpContextContract['request'],
33 ) {
34 /**
35 * Hold reference to the guard last attempted within the for loop. We pass
36 * the reference of the guard to the "AuthenticationException", so that
37 * it can decide the correct response behavior based upon the guard
38 * driver
39 */
40 let guardLastAttempted: string | undefined;
41
42 for (const guard of guards) {
43 guardLastAttempted = guard;
44
45 let isLoggedIn = false;
46 try {
47 // eslint-disable-next-line no-await-in-loop
48 isLoggedIn = await auth.use(guard).check();
49 } catch {
50 // Silent fail to allow the rest of the code to handle the error
51 }
52
53 if (isLoggedIn) {
54 /**
55 * Instruct auth to use the given guard as the default guard for
56 * the rest of the request, since the user authenticated
57 * succeeded here
58 */
59 auth.defaultGuard = guard;
60 return;
61 }
62 }
63
64 // Manually try authenticating using the JWT (verfiy signature required)
65 // Legacy support for JWTs so that the client still works (older than 2.0.0)
66 const authToken = request.headers().authorization?.split(' ')[1];
67 if (authToken) {
68 try {
69 const jwt = await jose.jwtVerify(
70 authToken,
71 new TextEncoder().encode(appKey),
72 );
73 const { uid } = jwt.payload;
74
75 // @ts-expect-error
76 request.user = await User.findOrFail(uid);
77 return;
78 } catch {
79 // Silent fail to allow the rest of the code to handle the error
80 }
81 }
82
83 /**
84 * Unable to authenticate using any guard
85 */
86 throw new AuthenticationException(
87 'Unauthorized access',
88 'E_UNAUTHORIZED_ACCESS',
89 guardLastAttempted,
90 this.redirectTo,
91 );
92 }
93
94 /**
95 * Handle request
96 */
97 public async handle(
98 { request, auth, response }: HttpContextContract,
99 next: () => Promise<void>,
100 customGuards: (keyof GuardsList)[],
101 ) {
102 /**
103 * Uses the user defined guards or the default guard mentioned in
104 * the config file
105 */
106 const guards = customGuards.length > 0 ? customGuards : [auth.name];
107 try {
108 await this.authenticate(auth, guards, request);
109 } catch (error) {
110 // If the user is not authenticated and it is a web endpoint, redirect to the login page
111 if (guards.includes('web')) {
112 return response.redirect(error.redirectTo);
113 }
114 throw error;
115 }
116 await next();
117 }
118}
diff --git a/app/Middleware/ConvertEmptyStringsToNull.js b/app/Middleware/ConvertEmptyStringsToNull.js
deleted file mode 100644
index af6379a..0000000
--- a/app/Middleware/ConvertEmptyStringsToNull.js
+++ /dev/null
@@ -1,15 +0,0 @@
1class ConvertEmptyStringsToNull {
2 async handle({ request }, next) {
3 if (Object.keys(request.body).length) {
4 request.body = Object.assign(
5 ...Object.keys(request.body).map((key) => ({
6 [key]: request.body[key] !== '' ? request.body[key] : null,
7 })),
8 );
9 }
10
11 await next();
12 }
13}
14
15module.exports = ConvertEmptyStringsToNull;
diff --git a/app/Middleware/Dashboard.ts b/app/Middleware/Dashboard.ts
new file mode 100644
index 0000000..62deea0
--- /dev/null
+++ b/app/Middleware/Dashboard.ts
@@ -0,0 +1,17 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
2import Config from '@ioc:Adonis/Core/Config';
3
4export default class Dashboard {
5 public async handle(
6 { response }: HttpContextContract,
7 next: () => Promise<void>,
8 ) {
9 if (Config.get('dashboard.enabled') === false) {
10 response.send(
11 'The user dashboard is disabled on this server\n\nIf you are the server owner, please set IS_DASHBOARD_ENABLED to true to enable the dashboard.',
12 );
13 } else {
14 await next();
15 }
16 }
17}
diff --git a/app/Middleware/HandleDoubleSlash.js b/app/Middleware/HandleDoubleSlash.js
deleted file mode 100644
index c4bc053..0000000
--- a/app/Middleware/HandleDoubleSlash.js
+++ /dev/null
@@ -1,24 +0,0 @@
1/** @typedef {import('@adonisjs/framework/src/Request')} Request */
2/** @typedef {import('@adonisjs/framework/src/Response')} Response */
3/** @typedef {import('@adonisjs/framework/src/View')} View */
4
5class HandleDoubleSlash {
6 /**
7 * @param {object} ctx
8 * @param {Request} ctx.request
9 * @param {Function} next
10 */
11 // eslint-disable-next-line consistent-return
12 async handle({ request, response }, next) {
13 // Redirect requests that contain duplicate slashes to the right path
14 if (request.url().includes('//')) {
15 return response.redirect(
16 request.url().replace(/\/{2,}/g, '/'),
17 );
18 }
19
20 await next();
21 }
22}
23
24module.exports = HandleDoubleSlash;
diff --git a/app/Middleware/SilentAuth.ts b/app/Middleware/SilentAuth.ts
new file mode 100644
index 0000000..ee73ec4
--- /dev/null
+++ b/app/Middleware/SilentAuth.ts
@@ -0,0 +1,24 @@
1import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
2
3/**
4 * Silent auth middleware can be used as a global middleware to silent check
5 * if the user is logged-in or not.
6 *
7 * The request continues as usual, even when the user is not logged-in.
8 */
9export default class SilentAuthMiddleware {
10 /**
11 * Handle request
12 */
13 public async handle(
14 { auth }: HttpContextContract,
15 next: () => Promise<void>,
16 ) {
17 /**
18 * Check if user is logged-in or not. If yes, then `ctx.auth.user` will be
19 * set to the instance of the currently logged in user.
20 */
21 await auth.check();
22 await next();
23 }
24}
diff --git a/app/Models/Recipe.js b/app/Models/Recipe.js
deleted file mode 100644
index bd97411..0000000
--- a/app/Models/Recipe.js
+++ /dev/null
@@ -1,7 +0,0 @@
1/** @type {typeof import('@adonisjs/lucid/src/Lucid/Model')} */
2const Model = use('Model');
3
4class Recipe extends Model {
5}
6
7module.exports = Recipe;
diff --git a/app/Models/Recipe.ts b/app/Models/Recipe.ts
new file mode 100644
index 0000000..fce5f3d
--- /dev/null
+++ b/app/Models/Recipe.ts
@@ -0,0 +1,23 @@
1import { DateTime } from 'luxon';
2import { BaseModel, column } from '@ioc:Adonis/Lucid/Orm';
3
4export default class Recipe extends BaseModel {
5 @column({ isPrimary: true })
6 public id: number;
7
8 @column()
9 public name: string;
10
11 @column()
12 public recipeId: string;
13
14 // TODO: Type the data object.
15 @column()
16 public data: object;
17
18 @column.dateTime({ autoCreate: true })
19 public createdAt: DateTime;
20
21 @column.dateTime({ autoCreate: true, autoUpdate: true })
22 public updatedAt: DateTime;
23}
diff --git a/app/Models/Service.js b/app/Models/Service.js
deleted file mode 100644
index cf3e6f4..0000000
--- a/app/Models/Service.js
+++ /dev/null
@@ -1,10 +0,0 @@
1/** @type {typeof import('@adonisjs/lucid/src/Lucid/Model')} */
2const Model = use('Model');
3
4class Service extends Model {
5 user() {
6 return this.belongsTo('App/Models/User', 'userId', 'id');
7 }
8}
9
10module.exports = Service;
diff --git a/app/Models/Service.ts b/app/Models/Service.ts
new file mode 100644
index 0000000..af1a8e1
--- /dev/null
+++ b/app/Models/Service.ts
@@ -0,0 +1,40 @@
1import { DateTime } from 'luxon';
2import { BaseModel, column, HasOne, hasOne } from '@ioc:Adonis/Lucid/Orm';
3import User from './User';
4
5export default class Service extends BaseModel {
6 @column({ isPrimary: true })
7 public id: number;
8
9 @hasOne(() => User, {
10 foreignKey: 'userId',
11 })
12 public user: HasOne<typeof User>;
13
14 @column({
15 columnName: 'userId',
16 })
17 public userId: number;
18
19 @column({
20 columnName: 'serviceId',
21 })
22 public serviceId: string;
23
24 @column()
25 public name: string;
26
27 @column({
28 columnName: 'recipeId',
29 })
30 public recipeId: string;
31
32 @column()
33 public settings: string;
34
35 @column.dateTime({ autoCreate: true })
36 public createdAt: DateTime;
37
38 @column.dateTime({ autoCreate: true, autoUpdate: true })
39 public updatedAt: DateTime;
40}
diff --git a/app/Models/Token.js b/app/Models/Token.js
deleted file mode 100644
index 7965a7a..0000000
--- a/app/Models/Token.js
+++ /dev/null
@@ -1,10 +0,0 @@
1/** @type {typeof import('@adonisjs/lucid/src/Lucid/Model')} */
2const Model = use('Model');
3
4class Token extends Model {
5 user() {
6 return this.belongsTo('App/Models/User');
7 }
8}
9
10module.exports = Token;
diff --git a/app/Models/Token.ts b/app/Models/Token.ts
new file mode 100644
index 0000000..4f85ebc
--- /dev/null
+++ b/app/Models/Token.ts
@@ -0,0 +1,38 @@
1import { DateTime } from 'luxon';
2import { BaseModel, column, HasOne, hasOne } from '@ioc:Adonis/Lucid/Orm';
3import User from './User';
4
5export default class Token extends BaseModel {
6 @column({ isPrimary: true })
7 public id: number;
8
9 @hasOne(() => User, {
10 localKey: 'user_id',
11 foreignKey: 'id',
12 })
13 public user: HasOne<typeof User>;
14
15 @column()
16 public user_id: number;
17
18 @column()
19 public token: string;
20
21 @column()
22 public type: string;
23
24 @column()
25 public is_revoked: boolean;
26
27 @column()
28 public name: string;
29
30 @column.dateTime()
31 public expires_at: DateTime;
32
33 @column.dateTime({ autoCreate: true })
34 public created_at: DateTime;
35
36 @column.dateTime({ autoCreate: true, autoUpdate: true })
37 public updated_at: DateTime;
38}
diff --git a/app/Models/Traits/NoTimestamp.js b/app/Models/Traits/NoTimestamp.js
deleted file mode 100644
index 914f542..0000000
--- a/app/Models/Traits/NoTimestamp.js
+++ /dev/null
@@ -1,14 +0,0 @@
1class NoTimestamp {
2 register(Model) {
3 Object.defineProperties(Model, {
4 createdAtColumn: {
5 get: () => null,
6 },
7 updatedAtColumn: {
8 get: () => null,
9 },
10 });
11 }
12}
13
14module.exports = NoTimestamp;
diff --git a/app/Models/User.js b/app/Models/User.js
deleted file mode 100644
index 4472017..0000000
--- a/app/Models/User.js
+++ /dev/null
@@ -1,46 +0,0 @@
1/** @type {typeof import('@adonisjs/lucid/src/Lucid/Model')} */
2const Model = use('Model');
3
4/** @type {import('@adonisjs/framework/src/Hash')} */
5const Hash = use('Hash');
6
7class User extends Model {
8 static boot() {
9 super.boot();
10
11 /**
12 * A hook to hash the user password before saving
13 * it to the database.
14 */
15 this.addHook('beforeSave', async (userInstance) => {
16 if (userInstance.dirty.password) {
17 // eslint-disable-next-line no-param-reassign
18 userInstance.password = await Hash.make(userInstance.password);
19 }
20 });
21 }
22
23 /**
24 * A relationship on tokens is required for auth to
25 * work. Since features like `refreshTokens` or
26 * `rememberToken` will be saved inside the
27 * tokens table.
28 *
29 * @method tokens
30 *
31 * @return {Object}
32 */
33 tokens() {
34 return this.hasMany('App/Models/Token');
35 }
36
37 services() {
38 return this.hasMany('App/Models/Service', 'id', 'userId');
39 }
40
41 workspaces() {
42 return this.hasMany('App/Models/Workspace', 'id', 'userId');
43 }
44}
45
46module.exports = User;
diff --git a/app/Models/User.ts b/app/Models/User.ts
new file mode 100644
index 0000000..0ed4627
--- /dev/null
+++ b/app/Models/User.ts
@@ -0,0 +1,98 @@
1import { DateTime } from 'luxon';
2import {
3 BaseModel,
4 beforeSave,
5 column,
6 HasMany,
7 hasMany,
8} from '@ioc:Adonis/Lucid/Orm';
9import Hash from '@ioc:Adonis/Core/Hash';
10import Event from '@ioc:Adonis/Core/Event';
11import moment from 'moment';
12import Encryption from '@ioc:Adonis/Core/Encryption';
13import randtoken from 'rand-token';
14import Token from './Token';
15import Workspace from './Workspace';
16import Service from './Service';
17
18export default class User extends BaseModel {
19 @column({ isPrimary: true })
20 public id: number;
21
22 @column()
23 public email: string;
24
25 @column()
26 public username: string;
27
28 @column()
29 public password: string;
30
31 @column()
32 public lastname: string;
33
34 // TODO: Type the settings object.
35 @column()
36 public settings: object;
37
38 @column.dateTime({ autoCreate: true })
39 public created_at: DateTime;
40
41 @column.dateTime({ autoCreate: true, autoUpdate: true })
42 public updated_at: DateTime;
43
44 @beforeSave()
45 public static async hashPassword(user: User) {
46 if (user.$dirty.password) {
47 user.password = await Hash.make(user.password);
48 }
49 }
50
51 @hasMany(() => Token, {
52 foreignKey: 'user_id',
53 })
54 public tokens: HasMany<typeof Token>;
55
56 @hasMany(() => Service, {
57 foreignKey: 'userId',
58 })
59 public services: HasMany<typeof Service>;
60
61 @hasMany(() => Workspace, {
62 foreignKey: 'userId',
63 })
64 public workspaces: HasMany<typeof Workspace>;
65
66 public async forgotPassword(): Promise<void> {
67 const token = await this.generateToken(this, 'forgot_password');
68
69 await Event.emit('forgot:password', {
70 user: this,
71 token,
72 });
73 }
74
75 private async generateToken(user: User, type: string): Promise<string> {
76 const query = user
77 .related('tokens')
78 .query()
79 .where('type', type)
80 .where('is_revoked', false)
81 .where(
82 'updated_at',
83 '>=',
84 moment().subtract(24, 'hours').format('YYYY-MM-DD HH:mm:ss'),
85 );
86
87 const row = await query.first();
88 if (row) {
89 return row.token;
90 }
91
92 const token = Encryption.encrypt(randtoken.generate(16));
93
94 await user.related('tokens').create({ type, token });
95
96 return token;
97 }
98}
diff --git a/app/Models/Workspace.js b/app/Models/Workspace.js
deleted file mode 100644
index e3a3285..0000000
--- a/app/Models/Workspace.js
+++ /dev/null
@@ -1,10 +0,0 @@
1/** @type {typeof import('@adonisjs/lucid/src/Lucid/Model')} */
2const Model = use('Model');
3
4class Workspace extends Model {
5 user() {
6 return this.belongsTo('App/Models/User', 'userId', 'id');
7 }
8}
9
10module.exports = Workspace;
diff --git a/app/Models/Workspace.ts b/app/Models/Workspace.ts
new file mode 100644
index 0000000..8648e02
--- /dev/null
+++ b/app/Models/Workspace.ts
@@ -0,0 +1,41 @@
1import { DateTime } from 'luxon';
2import { BaseModel, column, HasOne, hasOne } from '@ioc:Adonis/Lucid/Orm';
3import User from './User';
4
5export default class Workspace extends BaseModel {
6 @column({ isPrimary: true })
7 public id: number;
8
9 @column({
10 columnName: 'workspaceId',
11 })
12 public workspaceId: string;
13
14 @hasOne(() => User, {
15 foreignKey: 'userId',
16 })
17 public user: HasOne<typeof User>;
18
19 @column({
20 columnName: 'userId',
21 })
22 public userId: number;
23
24 @column()
25 public name: string;
26
27 @column()
28 public order: number;
29
30 @column()
31 public services: string;
32
33 @column()
34 public data: string;
35
36 @column.dateTime({ autoCreate: true })
37 public createdAt: DateTime;
38
39 @column.dateTime({ autoCreate: true, autoUpdate: true })
40 public updatedAt: DateTime;
41}
diff --git a/commands/index.ts b/commands/index.ts
new file mode 100644
index 0000000..d2ad5fb
--- /dev/null
+++ b/commands/index.ts
@@ -0,0 +1,21 @@
1import { listDirectoryFiles } from '@adonisjs/core/build/standalone';
2import Application from '@ioc:Adonis/Core/Application';
3
4/*
5|--------------------------------------------------------------------------
6| Exporting an array of commands
7|--------------------------------------------------------------------------
8|
9| Instead of manually exporting each file from this directory, we use the
10| helper `listDirectoryFiles` to recursively collect and export an array
11| of filenames.
12|
13| Couple of things to note:
14|
15| 1. The file path must be relative from the project root and not this directory.
16| 2. We must ignore this file to avoid getting into an infinite loop
17|
18*/
19export default listDirectoryFiles(__dirname, Application.appRoot, [
20 './commands/index',
21]);
diff --git a/config/app.js b/config/app.js
deleted file mode 100644
index 1951e68..0000000
--- a/config/app.js
+++ /dev/null
@@ -1,242 +0,0 @@
1
2/** @type {import('@adonisjs/framework/src/Env')} */
3const Env = use('Env');
4
5module.exports = {
6
7 /*
8 |--------------------------------------------------------------------------
9 | Application Name
10 |--------------------------------------------------------------------------
11 |
12 | This value is the name of your application and can used when you
13 | need to place the application's name in a email, view or
14 | other location.
15 |
16 */
17
18 name: Env.get('APP_NAME', 'Ferdium-server'),
19
20 /*
21 |--------------------------------------------------------------------------
22 | App Key
23 |--------------------------------------------------------------------------
24 |
25 | App key is a randomly generated 16 or 32 characters long string required
26 | to encrypt cookies, sessions and other sensitive data.
27 |
28 */
29 appKey: Env.getOrFail('APP_KEY'),
30
31 http: {
32 /*
33 |--------------------------------------------------------------------------
34 | Allow Method Spoofing
35 |--------------------------------------------------------------------------
36 |
37 | Method spoofing allows to make requests by spoofing the http verb.
38 | Which means you can make a GET request but instruct the server to
39 | treat as a POST or PUT request. If you want this feature, set the
40 | below value to true.
41 |
42 */
43 allowMethodSpoofing: true,
44
45 /*
46 |--------------------------------------------------------------------------
47 | Trust Proxy
48 |--------------------------------------------------------------------------
49 |
50 | Trust proxy defines whether X-Forwarded-* headers should be trusted or not.
51 | When your application is behind a proxy server like nginx, these values
52 | are set automatically and should be trusted. Apart from setting it
53 | to true or false Adonis supports handful or ways to allow proxy
54 | values. Read documentation for that.
55 |
56 */
57 trustProxy: false,
58
59 /*
60 |--------------------------------------------------------------------------
61 | Subdomains
62 |--------------------------------------------------------------------------
63 |
64 | Offset to be used for returning subdomains for a given request.For
65 | majority of applications it will be 2, until you have nested
66 | sudomains.
67 | cheatsheet.adonisjs.com - offset - 2
68 | virk.cheatsheet.adonisjs.com - offset - 3
69 |
70 */
71 subdomainOffset: 2,
72
73 /*
74 |--------------------------------------------------------------------------
75 | JSONP Callback
76 |--------------------------------------------------------------------------
77 |
78 | Default jsonp callback to be used when callback query string is missing
79 | in request url.
80 |
81 */
82 jsonpCallback: 'callback',
83
84
85 /*
86 |--------------------------------------------------------------------------
87 | Etag
88 |--------------------------------------------------------------------------
89 |
90 | Set etag on all HTTP response. In order to disable for selected routes,
91 | you can call the `response.send` with an options object as follows.
92 |
93 | response.send('Hello', { ignoreEtag: true })
94 |
95 */
96 etag: false,
97 },
98
99 views: {
100 /*
101 |--------------------------------------------------------------------------
102 | Cache Views
103 |--------------------------------------------------------------------------
104 |
105 | Define whether or not to cache the compiled view. Set it to true in
106 | production to optimize view loading time.
107 |
108 */
109 cache: Env.get('CACHE_VIEWS', true),
110 },
111
112 static: {
113 /*
114 |--------------------------------------------------------------------------
115 | Dot Files
116 |--------------------------------------------------------------------------
117 |
118 | Define how to treat dot files when trying to server static resources.
119 | By default it is set to ignore, which will pretend that dotfiles
120 | does not exists.
121 |
122 | Can be one of the following
123 | ignore, deny, allow
124 |
125 */
126 dotfiles: 'ignore',
127
128 /*
129 |--------------------------------------------------------------------------
130 | ETag
131 |--------------------------------------------------------------------------
132 |
133 | Enable or disable etag generation
134 |
135 */
136 etag: true,
137
138 /*
139 |--------------------------------------------------------------------------
140 | Extensions
141 |--------------------------------------------------------------------------
142 |
143 | Set file extension fallbacks. When set, if a file is not found, the given
144 | extensions will be added to the file name and search for. The first
145 | that exists will be served. Example: ['html', 'htm'].
146 |
147 */
148 extensions: false,
149 },
150
151 locales: {
152 /*
153 |--------------------------------------------------------------------------
154 | Loader
155 |--------------------------------------------------------------------------
156 |
157 | The loader to be used for fetching and updating locales. Below is the
158 | list of available options.
159 |
160 | file, database
161 |
162 */
163 loader: 'file',
164
165 /*
166 |--------------------------------------------------------------------------
167 | Default Locale
168 |--------------------------------------------------------------------------
169 |
170 | Default locale to be used by Antl provider. You can always switch drivers
171 | in runtime or use the official Antl middleware to detect the driver
172 | based on HTTP headers/query string.
173 |
174 */
175 locale: 'en',
176 },
177
178 logger: {
179 /*
180 |--------------------------------------------------------------------------
181 | Transport
182 |--------------------------------------------------------------------------
183 |
184 | Transport to be used for logging messages. You can have multiple
185 | transports using same driver.
186 |
187 | Available drivers are: `file` and `console`.
188 |
189 */
190 transport: 'console',
191
192 /*
193 |--------------------------------------------------------------------------
194 | Console Transport
195 |--------------------------------------------------------------------------
196 |
197 | Using `console` driver for logging. This driver writes to `stdout`
198 | and `stderr`
199 |
200 */
201 console: {
202 driver: 'console',
203 name: 'adonis-app',
204 level: 'info',
205 },
206
207 /*
208 |--------------------------------------------------------------------------
209 | File Transport
210 |--------------------------------------------------------------------------
211 |
212 | File transport uses file driver and writes log messages for a given
213 | file inside `tmp` directory for your app.
214 |
215 | For a different directory, set an absolute path for the filename.
216 |
217 */
218 file: {
219 driver: 'file',
220 name: 'adonis-app',
221 filename: 'adonis.log',
222 level: 'info',
223 },
224 },
225
226 /*
227 |--------------------------------------------------------------------------
228 | Generic Cookie Options
229 |--------------------------------------------------------------------------
230 |
231 | The following cookie options are generic settings used by AdonisJs to create
232 | cookies. However, some parts of the application like `sessions` can have
233 | separate settings for cookies inside `config/session.js`.
234 |
235 */
236 cookie: {
237 httpOnly: true,
238 sameSite: true,
239 path: '/',
240 maxAge: 7200,
241 },
242};
diff --git a/config/app.ts b/config/app.ts
new file mode 100644
index 0000000..fb3c0be
--- /dev/null
+++ b/config/app.ts
@@ -0,0 +1,244 @@
1/**
2 * Config source: https://git.io/JfefZ
3 *
4 * Feel free to let us know via PR, if you find something broken in this config
5 * file.
6 */
7
8import proxyAddr from 'proxy-addr';
9import Env from '@ioc:Adonis/Core/Env';
10import { ServerConfig } from '@ioc:Adonis/Core/Server';
11import { LoggerConfig } from '@ioc:Adonis/Core/Logger';
12import { ProfilerConfig } from '@ioc:Adonis/Core/Profiler';
13import { ValidatorConfig } from '@ioc:Adonis/Core/Validator';
14
15/*
16|--------------------------------------------------------------------------
17| Application secret key
18|--------------------------------------------------------------------------
19|
20| The secret to encrypt and sign different values in your application.
21| Make sure to keep the `APP_KEY` as an environment variable and secure.
22|
23| Note: Changing the application key for an existing app will make all
24| the cookies invalid and also the existing encrypted data will not
25| be decrypted.
26|
27*/
28export const appKey: string = Env.get('APP_KEY');
29
30export const url: string = Env.get('APP_URL');
31
32// TODO: this is parsed as string to be coherent with the previous version of the code we add (before migrating to AdonisJS 5)
33export const isRegistrationEnabled: string = Env.get('IS_REGISTRATION_ENABLED');
34export const connectWithFranz: string = Env.get('CONNECT_WITH_FRANZ');
35export const isCreationEnabled: string = Env.get('IS_CREATION_ENABLED');
36export const jwtUsePEM: boolean =
37 Env.get('JWT_USE_PEM', false) ||
38 (Env.get('JWT_PUBLIC_KEY', '') !== '' &&
39 Env.get('JWT_PRIVATE_KEY', '') !== '');
40/*
41|--------------------------------------------------------------------------
42| Http server configuration
43|--------------------------------------------------------------------------
44|
45| The configuration for the HTTP(s) server. Make sure to go through all
46| the config properties to make keep server secure.
47|
48*/
49export const http: ServerConfig = {
50 /*
51 |--------------------------------------------------------------------------
52 | Allow method spoofing
53 |--------------------------------------------------------------------------
54 |
55 | Method spoofing enables defining custom HTTP methods using a query string
56 | `_method`. This is usually required when you are making traditional
57 | form requests and wants to use HTTP verbs like `PUT`, `DELETE` and
58 | so on.
59 |
60 */
61 allowMethodSpoofing: false,
62
63 /*
64 |--------------------------------------------------------------------------
65 | Subdomain offset
66 |--------------------------------------------------------------------------
67 */
68 subdomainOffset: 2,
69
70 /*
71 |--------------------------------------------------------------------------
72 | Request Ids
73 |--------------------------------------------------------------------------
74 |
75 | Setting this value to `true` will generate a unique request id for each
76 | HTTP request and set it as `x-request-id` header.
77 |
78 */
79 generateRequestId: false,
80
81 /*
82 |--------------------------------------------------------------------------
83 | Trusting proxy servers
84 |--------------------------------------------------------------------------
85 |
86 | Define the proxy servers that AdonisJs must trust for reading `X-Forwarded`
87 | headers.
88 |
89 */
90 trustProxy: proxyAddr.compile('loopback'),
91
92 /*
93 |--------------------------------------------------------------------------
94 | Generating Etag
95 |--------------------------------------------------------------------------
96 |
97 | Whether or not to generate an etag for every response.
98 |
99 */
100 etag: false,
101
102 /*
103 |--------------------------------------------------------------------------
104 | JSONP Callback
105 |--------------------------------------------------------------------------
106 */
107 jsonpCallbackName: 'callback',
108
109 /*
110 |--------------------------------------------------------------------------
111 | Cookie settings
112 |--------------------------------------------------------------------------
113 */
114 cookie: {
115 domain: '',
116 path: '/',
117 maxAge: '2h',
118 httpOnly: true,
119 secure: false,
120 sameSite: false,
121 },
122
123 /*
124 |--------------------------------------------------------------------------
125 | Force Content Negotiation
126 |--------------------------------------------------------------------------
127 |
128 | The internals of the framework relies on the content negotiation to
129 | detect the best possible response type for a given HTTP request.
130 |
131 | However, it is a very common these days that API servers always wants to
132 | make response in JSON regardless of the existence of the `Accept` header.
133 |
134 | By setting `forceContentNegotiationTo = 'application/json'`, you negotiate
135 | with the server in advance to always return JSON without relying on the
136 | client to set the header explicitly.
137 |
138 */
139 forceContentNegotiationTo: 'application/json',
140};
141
142/*
143|--------------------------------------------------------------------------
144| Logger
145|--------------------------------------------------------------------------
146*/
147export const logger: LoggerConfig = {
148 /*
149 |--------------------------------------------------------------------------
150 | Application name
151 |--------------------------------------------------------------------------
152 |
153 | The name of the application you want to add to the log. It is recommended
154 | to always have app name in every log line.
155 |
156 | The `APP_NAME` environment variable is automatically set by AdonisJS by
157 | reading the `name` property from the `package.json` file.
158 |
159 */
160 name: Env.get('APP_NAME', 'Ferdium-server'),
161
162 /*
163 |--------------------------------------------------------------------------
164 | Toggle logger
165 |--------------------------------------------------------------------------
166 |
167 | Enable or disable logger application wide
168 |
169 */
170 enabled: true,
171
172 /*
173 |--------------------------------------------------------------------------
174 | Logging level
175 |--------------------------------------------------------------------------
176 |
177 | The level from which you want the logger to flush logs. It is recommended
178 | to make use of the environment variable, so that you can define log levels
179 | at deployment level and not code level.
180 |
181 */
182 level: Env.get('LOG_LEVEL', 'info'),
183
184 /*
185 |--------------------------------------------------------------------------
186 | Pretty print
187 |--------------------------------------------------------------------------
188 |
189 | It is highly advised NOT to use `prettyPrint` in production, since it
190 | can have huge impact on performance.
191 |
192 */
193 prettyPrint: Env.get('NODE_ENV') === 'development',
194};
195
196/*
197|--------------------------------------------------------------------------
198| Profiler
199|--------------------------------------------------------------------------
200*/
201export const profiler: ProfilerConfig = {
202 /*
203 |--------------------------------------------------------------------------
204 | Toggle profiler
205 |--------------------------------------------------------------------------
206 |
207 | Enable or disable profiler
208 |
209 */
210 enabled: true,
211
212 /*
213 |--------------------------------------------------------------------------
214 | Blacklist actions/row labels
215 |--------------------------------------------------------------------------
216 |
217 | Define an array of actions or row labels that you want to disable from
218 | getting profiled.
219 |
220 */
221 blacklist: [],
222
223 /*
224 |--------------------------------------------------------------------------
225 | Whitelist actions/row labels
226 |--------------------------------------------------------------------------
227 |
228 | Define an array of actions or row labels that you want to whitelist for
229 | the profiler. When whitelist is defined, then `blacklist` is ignored.
230 |
231 */
232 whitelist: [],
233};
234
235/*
236|--------------------------------------------------------------------------
237| Validator
238|--------------------------------------------------------------------------
239|
240| Configure the global configuration for the validator. Here's the reference
241| to the default config https://git.io/JT0WE
242|
243*/
244export const validator: ValidatorConfig = {};
diff --git a/config/auth.js b/config/auth.js
deleted file mode 100644
index b831b06..0000000
--- a/config/auth.js
+++ /dev/null
@@ -1,93 +0,0 @@
1
2/** @type {import('@adonisjs/framework/src/Env')} */
3const Env = use('Env');
4
5module.exports = {
6 /*
7 |--------------------------------------------------------------------------
8 | Authenticator
9 |--------------------------------------------------------------------------
10 |
11 | Authentication is a combination of serializer and scheme with extra
12 | config to define on how to authenticate a user.
13 |
14 | Available Schemes - basic, session, jwt, api
15 | Available Serializers - lucid, database
16 |
17 */
18 authenticator: 'jwt',
19
20 /*
21 |--------------------------------------------------------------------------
22 | Session
23 |--------------------------------------------------------------------------
24 |
25 | Session authenticator makes use of sessions to authenticate a user.
26 | Session authentication is always persistent.
27 |
28 */
29 session: {
30 serializer: 'lucid',
31 model: 'App/Models/User',
32 scheme: 'session',
33 uid: 'email',
34 password: 'password',
35 },
36
37 /*
38 |--------------------------------------------------------------------------
39 | Basic Auth
40 |--------------------------------------------------------------------------
41 |
42 | The basic auth authenticator uses basic auth header to authenticate a
43 | user.
44 |
45 | NOTE:
46 | This scheme is not persistent and users are supposed to pass
47 | login credentials on each request.
48 |
49 */
50 basic: {
51 serializer: 'lucid',
52 model: 'App/Models/User',
53 scheme: 'basic',
54 uid: 'email',
55 password: 'password',
56 },
57
58 /*
59 |--------------------------------------------------------------------------
60 | Jwt
61 |--------------------------------------------------------------------------
62 |
63 | The jwt authenticator works by passing a jwt token on each HTTP request
64 | via HTTP `Authorization` header.
65 |
66 */
67 jwt: {
68 serializer: 'lucid',
69 model: 'App/Models/User',
70 scheme: 'jwt',
71 uid: 'email',
72 password: 'password',
73 options: {
74 secret: Env.get('APP_KEY'),
75 },
76 },
77
78 /*
79 |--------------------------------------------------------------------------
80 | Api
81 |--------------------------------------------------------------------------
82 |
83 | The Api scheme makes use of API personal tokens to authenticate a user.
84 |
85 */
86 api: {
87 serializer: 'lucid',
88 model: 'App/Models/User',
89 scheme: 'api',
90 uid: 'email',
91 password: 'password',
92 },
93};
diff --git a/config/auth.ts b/config/auth.ts
new file mode 100644
index 0000000..28a9b8c
--- /dev/null
+++ b/config/auth.ts
@@ -0,0 +1,263 @@
1/**
2 * Config source: https://git.io/JY0mp
3 *
4 * Feel free to let us know via PR, if you find something broken in this config
5 * file.
6 */
7
8import { AuthConfig } from '@ioc:Adonis/Addons/Auth';
9import Env from '@ioc:Adonis/Core/Env';
10import { appKey, jwtUsePEM } from './app';
11
12/*
13|--------------------------------------------------------------------------
14| Authentication Mapping
15|--------------------------------------------------------------------------
16|
17| List of available authentication mapping. You must first define them
18| inside the `contracts/auth.ts` file before mentioning them here.
19|
20*/
21const authConfig: AuthConfig = {
22 guard: 'web',
23 guards: {
24 /*
25 |--------------------------------------------------------------------------
26 | Web Guard
27 |--------------------------------------------------------------------------
28 |
29 | Web guard uses classic old school sessions for authenticating users.
30 | If you are building a standard web application, it is recommended to
31 | use web guard with session driver
32 |
33 */
34 web: {
35 driver: 'session',
36
37 provider: {
38 /*
39 |--------------------------------------------------------------------------
40 | Driver
41 |--------------------------------------------------------------------------
42 |
43 | Name of the driver
44 |
45 */
46 driver: 'lucid',
47
48 /*
49 |--------------------------------------------------------------------------
50 | Identifier key
51 |--------------------------------------------------------------------------
52 |
53 | The identifier key is the unique key on the model. In most cases specifying
54 | the primary key is the right choice.
55 |
56 */
57 identifierKey: 'id',
58
59 /*
60 |--------------------------------------------------------------------------
61 | Uids
62 |--------------------------------------------------------------------------
63 |
64 | Uids are used to search a user against one of the mentioned columns. During
65 | login, the auth module will search the user mentioned value against one
66 | of the mentioned columns to find their user record.
67 |
68 */
69 uids: ['email'],
70
71 /*
72 |--------------------------------------------------------------------------
73 | Model
74 |--------------------------------------------------------------------------
75 |
76 | The model to use for fetching or finding users. The model is imported
77 | lazily since the config files are read way earlier in the lifecycle
78 | of booting the app and the models may not be in a usable state at
79 | that time.
80 |
81 */
82 model: () => import('App/Models/User'),
83 },
84 },
85 /*
86 |--------------------------------------------------------------------------
87 | OAT Guard
88 |--------------------------------------------------------------------------
89 |
90 | OAT (Opaque access tokens) guard uses database backed tokens to authenticate
91 | HTTP request. This guard DOES NOT rely on sessions or cookies and uses
92 | Authorization header value for authentication.
93 |
94 | Use this guard to authenticate mobile apps or web clients that cannot rely
95 | on cookies/sessions.
96 |
97 */
98 api: {
99 driver: 'oat',
100
101 /*
102 |--------------------------------------------------------------------------
103 | Tokens provider
104 |--------------------------------------------------------------------------
105 |
106 | Uses SQL database for managing tokens. Use the "database" driver, when
107 | tokens are the secondary mode of authentication.
108 | For example: The Github personal tokens
109 |
110 | The foreignKey column is used to make the relationship between the user
111 | and the token. You are free to use any column name here.
112 |
113 */
114 tokenProvider: {
115 type: 'api',
116 driver: 'database',
117 table: 'tokens',
118 foreignKey: 'user_id',
119 },
120
121 provider: {
122 /*
123 |--------------------------------------------------------------------------
124 | Driver
125 |--------------------------------------------------------------------------
126 |
127 | Name of the driver
128 |
129 */
130 driver: 'lucid',
131
132 /*
133 |--------------------------------------------------------------------------
134 | Identifier key
135 |--------------------------------------------------------------------------
136 |
137 | The identifier key is the unique key on the model. In most cases specifying
138 | the primary key is the right choice.
139 |
140 */
141 identifierKey: 'id',
142
143 /*
144 |--------------------------------------------------------------------------
145 | Uids
146 |--------------------------------------------------------------------------
147 |
148 | Uids are used to search a user against one of the mentioned columns. During
149 | login, the auth module will search the user mentioned value against one
150 | of the mentioned columns to find their user record.
151 |
152 */
153 uids: ['email'],
154
155 /*
156 |--------------------------------------------------------------------------
157 | Model
158 |--------------------------------------------------------------------------
159 |
160 | The model to use for fetching or finding users. The model is imported
161 | lazily since the config files are read way earlier in the lifecycle
162 | of booting the app and the models may not be in a usable state at
163 | that time.
164 |
165 */
166 model: () => import('App/Models/User'),
167 },
168 },
169 /*
170 |--------------------------------------------------------------------------
171 | Basic Auth Guard
172 |--------------------------------------------------------------------------
173 |
174 | Uses Basic auth to authenticate an HTTP request. There is no concept of
175 | "login" and "logout" with basic auth. You just authenticate the requests
176 | using a middleware and browser will prompt the user to enter their login
177 | details
178 |
179 */
180 basic: {
181 driver: 'basic',
182 realm: 'Login',
183
184 provider: {
185 /*
186 |--------------------------------------------------------------------------
187 | Driver
188 |--------------------------------------------------------------------------
189 |
190 | Name of the driver
191 |
192 */
193 driver: 'lucid',
194
195 /*
196 |--------------------------------------------------------------------------
197 | Identifier key
198 |--------------------------------------------------------------------------
199 |
200 | The identifier key is the unique key on the model. In most cases specifying
201 | the primary key is the right choice.
202 |
203 */
204 identifierKey: 'id',
205
206 /*
207 |--------------------------------------------------------------------------
208 | Uids
209 |--------------------------------------------------------------------------
210 |
211 | Uids are used to search a user against one of the mentioned columns. During
212 | login, the auth module will search the user mentioned value against one
213 | of the mentioned columns to find their user record.
214 |
215 */
216 uids: ['email'],
217
218 /*
219 |--------------------------------------------------------------------------
220 | Model
221 |--------------------------------------------------------------------------
222 |
223 | The model to use for fetching or finding users. The model is imported
224 | lazily since the config files are read way earlier in the lifecycle
225 | of booting the app and the models may not be in a usable state at
226 | that time.
227 |
228 */
229 model: () => import('App/Models/User'),
230 },
231 },
232 jwt: {
233 driver: 'jwt',
234 secret: jwtUsePEM ? undefined : appKey,
235 algorithmJwt: jwtUsePEM ? undefined : 'HS256',
236 publicKey: jwtUsePEM
237 ? Env.get('JWT_PUBLIC_KEY', '').replaceAll('\\n', '\n')
238 : undefined,
239 privateKey: jwtUsePEM
240 ? Env.get('JWT_PRIVATE_KEY', '').replaceAll('\\n', '\n')
241 : undefined,
242 persistJwt: true,
243 // TODO: We should improve the following implementation as this is a security concern.
244 // The following ts-expect-error is to set exp to undefined (JWT with no expiration)
245 // @ts-expect-error
246 jwtDefaultExpire: undefined,
247 refreshTokenDefaultExpire: '10d',
248 tokenProvider: {
249 driver: 'database',
250 table: 'jwt_tokens',
251 foreignKey: 'user_id',
252 },
253 provider: {
254 driver: 'lucid',
255 identifierKey: 'id',
256 uids: [],
257 model: () => import('App/Models/User'),
258 },
259 },
260 },
261};
262
263export default authConfig;
diff --git a/config/bodyParser.js b/config/bodyParser.js
deleted file mode 100644
index c336e67..0000000
--- a/config/bodyParser.js
+++ /dev/null
@@ -1,156 +0,0 @@
1
2module.exports = {
3 /*
4 |--------------------------------------------------------------------------
5 | JSON Parser
6 |--------------------------------------------------------------------------
7 |
8 | Below settings are applied when the request body contains a JSON payload.
9 | If you want body parser to ignore JSON payloads, then simply set `types`
10 | to an empty array.
11 */
12 json: {
13 /*
14 |--------------------------------------------------------------------------
15 | limit
16 |--------------------------------------------------------------------------
17 |
18 | Defines the limit of JSON that can be sent by the client. If payload
19 | is over 1mb it will not be processed.
20 |
21 */
22 limit: '50mb',
23
24 /*
25 |--------------------------------------------------------------------------
26 | strict
27 |--------------------------------------------------------------------------
28 |
29 | When `strict` is set to true, body parser will only parse Arrays and
30 | Object. Otherwise everything parseable by `JSON.parse` is parsed.
31 |
32 */
33 strict: true,
34
35 /*
36 |--------------------------------------------------------------------------
37 | types
38 |--------------------------------------------------------------------------
39 |
40 | Which content types are processed as JSON payloads. You are free to
41 | add your own types here, but the request body should be parseable
42 | by `JSON.parse` method.
43 |
44 */
45 types: [
46 'application/json',
47 'application/json-patch+json',
48 'application/vnd.api+json',
49 'application/csp-report',
50 ],
51 },
52
53 /*
54 |--------------------------------------------------------------------------
55 | Raw Parser
56 |--------------------------------------------------------------------------
57 |
58 |
59 |
60 */
61 raw: {
62 types: [
63 'text/*',
64 ],
65 },
66
67 /*
68 |--------------------------------------------------------------------------
69 | Form Parser
70 |--------------------------------------------------------------------------
71 |
72 |
73 |
74 */
75 form: {
76 types: [
77 'application/x-www-form-urlencoded',
78 ],
79 },
80
81 /*
82 |--------------------------------------------------------------------------
83 | Files Parser
84 |--------------------------------------------------------------------------
85 |
86 |
87 |
88 */
89 files: {
90 types: [
91 'multipart/form-data',
92 ],
93
94 /*
95 |--------------------------------------------------------------------------
96 | Max Size
97 |--------------------------------------------------------------------------
98 |
99 | Below value is the max size of all the files uploaded to the server. It
100 | is validated even before files have been processed and hard exception
101 | is thrown.
102 |
103 | Consider setting a reasonable value here, otherwise people may upload GB's
104 | of files which will keep your server busy.
105 |
106 | Also this value is considered when `autoProcess` is set to true.
107 |
108 */
109 maxSize: '20mb',
110
111 /*
112 |--------------------------------------------------------------------------
113 | Auto Process
114 |--------------------------------------------------------------------------
115 |
116 | Whether or not to auto-process files. Since HTTP servers handle files via
117 | couple of specific endpoints. It is better to set this value off and
118 | manually process the files when required.
119 |
120 | This value can contain a boolean or an array of route patterns
121 | to be autoprocessed.
122 */
123 autoProcess: true,
124
125 /*
126 |--------------------------------------------------------------------------
127 | Process Manually
128 |--------------------------------------------------------------------------
129 |
130 | The list of routes that should not process files and instead rely on
131 | manual process. This list should only contain routes when autoProcess
132 | is to true. Otherwise everything is processed manually.
133 |
134 */
135 processManually: [],
136
137 /*
138 |--------------------------------------------------------------------------
139 | Temporary file name
140 |--------------------------------------------------------------------------
141 |
142 | Define a function, which should return a string to be used as the
143 | tmp file name.
144 |
145 | If not defined, Bodyparser will use `uuid` as the tmp file name.
146 |
147 | To be defined as. If you are defining the function, then do make sure
148 | to return a value from it.
149 |
150 | tmpFileName () {
151 | return 'some-unique-value'
152 | }
153 |
154 */
155 },
156};
diff --git a/config/bodyparser.ts b/config/bodyparser.ts
new file mode 100644
index 0000000..b5adcda
--- /dev/null
+++ b/config/bodyparser.ts
@@ -0,0 +1,205 @@
1/**
2 * Config source: https://git.io/Jfefn
3 *
4 * Feel free to let us know via PR, if you find something broken in this config
5 * file.
6 */
7
8import { BodyParserConfig } from '@ioc:Adonis/Core/BodyParser';
9
10const bodyParserConfig: BodyParserConfig = {
11 /*
12 |--------------------------------------------------------------------------
13 | White listed methods
14 |--------------------------------------------------------------------------
15 |
16 | HTTP methods for which body parsing must be performed. It is a good practice
17 | to avoid body parsing for `GET` requests.
18 |
19 */
20 whitelistedMethods: ['POST', 'PUT', 'PATCH', 'DELETE'],
21
22 /*
23 |--------------------------------------------------------------------------
24 | JSON parser settings
25 |--------------------------------------------------------------------------
26 |
27 | The settings for the JSON parser. The types defines the request content
28 | types which gets processed by the JSON parser.
29 |
30 */
31 json: {
32 encoding: 'utf8',
33 limit: '1mb',
34 strict: true,
35 types: [
36 'application/json',
37 'application/json-patch+json',
38 'application/vnd.api+json',
39 'application/csp-report',
40 ],
41 },
42
43 /*
44 |--------------------------------------------------------------------------
45 | Form parser settings
46 |--------------------------------------------------------------------------
47 |
48 | The settings for the `application/x-www-form-urlencoded` parser. The types
49 | defines the request content types which gets processed by the form parser.
50 |
51 */
52 form: {
53 encoding: 'utf8',
54 limit: '1mb',
55 queryString: {},
56
57 /*
58 |--------------------------------------------------------------------------
59 | Convert empty strings to null
60 |--------------------------------------------------------------------------
61 |
62 | Convert empty form fields to null. HTML forms results in field string
63 | value when the field is left blank. This option normalizes all the blank
64 | field values to "null"
65 |
66 */
67 convertEmptyStringsToNull: true,
68
69 types: ['application/x-www-form-urlencoded'],
70 },
71
72 /*
73 |--------------------------------------------------------------------------
74 | Raw body parser settings
75 |--------------------------------------------------------------------------
76 |
77 | Raw body just reads the request body stream as a plain text, which you
78 | can process by hand. This must be used when request body type is not
79 | supported by the body parser.
80 |
81 */
82 raw: {
83 encoding: 'utf8',
84 limit: '1mb',
85 queryString: {},
86 types: ['text/*'],
87 },
88
89 /*
90 |--------------------------------------------------------------------------
91 | Multipart parser settings
92 |--------------------------------------------------------------------------
93 |
94 | The settings for the `multipart/form-data` parser. The types defines the
95 | request content types which gets processed by the form parser.
96 |
97 */
98 multipart: {
99 /*
100 |--------------------------------------------------------------------------
101 | Auto process
102 |--------------------------------------------------------------------------
103 |
104 | The auto process option will process uploaded files and writes them to
105 | the `tmp` folder. You can turn it off and then manually use the stream
106 | to pipe stream to a different destination.
107 |
108 | It is recommended to keep `autoProcess=true`. Unless you are processing bigger
109 | file sizes.
110 |
111 */
112 autoProcess: true,
113
114 /*
115 |--------------------------------------------------------------------------
116 | Files to be processed manually
117 |--------------------------------------------------------------------------
118 |
119 | You can turn off `autoProcess` for certain routes by defining
120 | routes inside the following array.
121 |
122 | NOTE: Make sure the route pattern starts with a leading slash.
123 |
124 | Correct
125 | ```js
126 | /projects/:id/file
127 | ```
128 |
129 | Incorrect
130 | ```js
131 | projects/:id/file
132 | ```
133 */
134 processManually: [],
135
136 /*
137 |--------------------------------------------------------------------------
138 | Temporary file name
139 |--------------------------------------------------------------------------
140 |
141 | When auto processing is on. We will use this method to compute the temporary
142 | file name. AdonisJs will compute a unique `tmpPath` for you automatically,
143 | However, you can also define your own custom method.
144 |
145 */
146 // tmpFileName () {
147 // },
148
149 /*
150 |--------------------------------------------------------------------------
151 | Encoding
152 |--------------------------------------------------------------------------
153 |
154 | Request body encoding
155 |
156 */
157 encoding: 'utf8',
158
159 /*
160 |--------------------------------------------------------------------------
161 | Convert empty strings to null
162 |--------------------------------------------------------------------------
163 |
164 | Convert empty form fields to null. HTML forms results in field string
165 | value when the field is left blank. This option normalizes all the blank
166 | field values to "null"
167 |
168 */
169 convertEmptyStringsToNull: true,
170
171 /*
172 |--------------------------------------------------------------------------
173 | Max Fields
174 |--------------------------------------------------------------------------
175 |
176 | The maximum number of fields allowed in the request body. The field includes
177 | text inputs and files both.
178 |
179 */
180 maxFields: 1000,
181
182 /*
183 |--------------------------------------------------------------------------
184 | Request body limit
185 |--------------------------------------------------------------------------
186 |
187 | The total limit to the multipart body. This includes all request files
188 | and fields data.
189 |
190 */
191 limit: '20mb',
192
193 /*
194 |--------------------------------------------------------------------------
195 | Types
196 |--------------------------------------------------------------------------
197 |
198 | The types that will be considered and parsed as multipart body.
199 |
200 */
201 types: ['multipart/form-data'],
202 },
203};
204
205export default bodyParserConfig;
diff --git a/config/cors.js b/config/cors.js
deleted file mode 100644
index 7ebbe3f..0000000
--- a/config/cors.js
+++ /dev/null
@@ -1,86 +0,0 @@
1
2module.exports = {
3 /*
4 |--------------------------------------------------------------------------
5 | Origin
6 |--------------------------------------------------------------------------
7 |
8 | Set a list of origins to be allowed. The value can be one of the following
9 |
10 | Boolean: true - Allow current request origin
11 | Boolean: false - Disallow all
12 | String - Comma separated list of allowed origins
13 | Array - An array of allowed origins
14 | String: * - A wildcard to allow current request origin
15 | Function - Receives the current origin and should return one of the above values.
16 |
17 */
18 origin: false,
19
20 /*
21 |--------------------------------------------------------------------------
22 | Methods
23 |--------------------------------------------------------------------------
24 |
25 | HTTP methods to be allowed. The value can be one of the following
26 |
27 | String - Comma separated list of allowed methods
28 | Array - An array of allowed methods
29 |
30 */
31 methods: ['GET', 'PUT', 'PATCH', 'POST', 'DELETE'],
32
33 /*
34 |--------------------------------------------------------------------------
35 | Headers
36 |--------------------------------------------------------------------------
37 |
38 | List of headers to be allowed via Access-Control-Request-Headers header.
39 | The value can be one of the following.
40 |
41 | Boolean: true - Allow current request headers
42 | Boolean: false - Disallow all
43 | String - Comma separated list of allowed headers
44 | Array - An array of allowed headers
45 | String: * - A wildcard to allow current request headers
46 | Function - Receives the current header and should return one of the above values.
47 |
48 */
49 headers: true,
50
51 /*
52 |--------------------------------------------------------------------------
53 | Expose Headers
54 |--------------------------------------------------------------------------
55 |
56 | A list of headers to be exposed via `Access-Control-Expose-Headers`
57 | header. The value can be one of the following.
58 |
59 | Boolean: false - Disallow all
60 | String: Comma separated list of allowed headers
61 | Array - An array of allowed headers
62 |
63 */
64 exposeHeaders: false,
65
66 /*
67 |--------------------------------------------------------------------------
68 | Credentials
69 |--------------------------------------------------------------------------
70 |
71 | Define Access-Control-Allow-Credentials header. It should always be a
72 | boolean.
73 |
74 */
75 credentials: false,
76
77 /*
78 |--------------------------------------------------------------------------
79 | MaxAge
80 |--------------------------------------------------------------------------
81 |
82 | Define Access-Control-Allow-Max-Age
83 |
84 */
85 maxAge: 90,
86};
diff --git a/config/cors.ts b/config/cors.ts
new file mode 100644
index 0000000..dc0e3f6
--- /dev/null
+++ b/config/cors.ts
@@ -0,0 +1,134 @@
1/**
2 * Config source: https://git.io/JfefC
3 *
4 * Feel free to let us know via PR, if you find something broken in this config
5 * file.
6 */
7
8import { CorsConfig } from '@ioc:Adonis/Core/Cors';
9
10const corsConfig: CorsConfig = {
11 /*
12 |--------------------------------------------------------------------------
13 | Enabled
14 |--------------------------------------------------------------------------
15 |
16 | A boolean to enable or disable CORS integration from your AdonisJs
17 | application.
18 |
19 | Setting the value to `true` will enable the CORS for all HTTP request. However,
20 | you can define a function to enable/disable it on per request basis as well.
21 |
22 */
23 enabled: false,
24
25 // You can also use a function that return true or false.
26 // enabled: (request) => request.url().startsWith('/api')
27
28 /*
29 |--------------------------------------------------------------------------
30 | Origin
31 |--------------------------------------------------------------------------
32 |
33 | Set a list of origins to be allowed for `Access-Control-Allow-Origin`.
34 | The value can be one of the following:
35 |
36 | https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin
37 |
38 | Boolean (true) - Allow current request origin.
39 | Boolean (false) - Disallow all.
40 | String - Comma separated list of allowed origins.
41 | Array - An array of allowed origins.
42 | String (*) - A wildcard (*) to allow all request origins.
43 | Function - Receives the current origin string and should return
44 | one of the above values.
45 |
46 */
47 origin: true,
48
49 /*
50 |--------------------------------------------------------------------------
51 | Methods
52 |--------------------------------------------------------------------------
53 |
54 | An array of allowed HTTP methods for CORS. The `Access-Control-Request-Method`
55 | is checked against the following list.
56 |
57 | Following is the list of default methods. Feel free to add more.
58 */
59 methods: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE'],
60
61 /*
62 |--------------------------------------------------------------------------
63 | Headers
64 |--------------------------------------------------------------------------
65 |
66 | List of headers to be allowed for `Access-Control-Allow-Headers` header.
67 | The value can be one of the following:
68 |
69 | https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Request-Headers
70 |
71 | Boolean(true) - Allow all headers mentioned in `Access-Control-Request-Headers`.
72 | Boolean(false) - Disallow all headers.
73 | String - Comma separated list of allowed headers.
74 | Array - An array of allowed headers.
75 | Function - Receives the current header and should return one of the above values.
76 |
77 */
78 headers: true,
79
80 /*
81 |--------------------------------------------------------------------------
82 | Expose Headers
83 |--------------------------------------------------------------------------
84 |
85 | A list of headers to be exposed by setting `Access-Control-Expose-Headers`.
86 | header. By default following 6 simple response headers are exposed.
87 |
88 | Cache-Control
89 | Content-Language
90 | Content-Type
91 | Expires
92 | Last-Modified
93 | Pragma
94 |
95 | In order to add more headers, simply define them inside the following array.
96 |
97 | https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers
98 |
99 */
100 exposeHeaders: [
101 'cache-control',
102 'content-language',
103 'content-type',
104 'expires',
105 'last-modified',
106 'pragma',
107 ],
108
109 /*
110 |--------------------------------------------------------------------------
111 | Credentials
112 |--------------------------------------------------------------------------
113 |
114 | Toggle `Access-Control-Allow-Credentials` header. If value is set to `true`,
115 | then header will be set, otherwise not.
116 |
117 | https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials
118 |
119 */
120 credentials: true,
121
122 /*
123 |--------------------------------------------------------------------------
124 | MaxAge
125 |--------------------------------------------------------------------------
126 |
127 | Define `Access-Control-Max-Age` header in seconds.
128 | https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Max-Age
129 |
130 */
131 maxAge: 90,
132};
133
134export default corsConfig;
diff --git a/config/dashboard.ts b/config/dashboard.ts
new file mode 100644
index 0000000..18feb14
--- /dev/null
+++ b/config/dashboard.ts
@@ -0,0 +1,5 @@
1import Env from '@ioc:Adonis/Core/Env';
2
3export const enabled: boolean = Env.get('IS_DASHBOARD_ENABLED') !== 'false';
4
5export const mailFrom: string = Env.get('MAIL_SENDER');
diff --git a/config/database.js b/config/database.js
deleted file mode 100644
index 5c51996..0000000
--- a/config/database.js
+++ /dev/null
@@ -1,88 +0,0 @@
1const path = require("path");
2
3/** @type {import('@adonisjs/framework/src/Env')} */
4const Env = use('Env');
5
6/** @type {import('@adonisjs/ignitor/src/Helpers')} */
7const Helpers = use('Helpers');
8
9module.exports = {
10 /*
11 |--------------------------------------------------------------------------
12 | Default Connection
13 |--------------------------------------------------------------------------
14 |
15 | Connection defines the default connection settings to be used while
16 | interacting with SQL databases.
17 |
18 */
19 connection: Env.get('DB_CONNECTION', 'sqlite'),
20
21 /*
22 |--------------------------------------------------------------------------
23 | Sqlite
24 |--------------------------------------------------------------------------
25 |
26 | Sqlite is a flat file database and can be a good choice for a development
27 | environment.
28 |
29 | npm i --save sqlite3
30 |
31 */
32 sqlite: {
33 client: 'sqlite3',
34 connection: {
35 filename: path.join(Env.get('DATA_DIR', 'data'), `${Env.get('DB_DATABASE', 'ferdium')}.sqlite`),
36 },
37 useNullAsDefault: true,
38 debug: Env.get('DB_DEBUG', false),
39 },
40
41 /*
42 |--------------------------------------------------------------------------
43 | MySQL
44 |--------------------------------------------------------------------------
45 |
46 | Here we define connection settings for MySQL database.
47 |
48 | npm i --save mysql
49 |
50 */
51 mysql: {
52 client: 'mysql',
53 connection: {
54 host: Env.get('DB_HOST', 'localhost'),
55 port: Env.get('DB_PORT', ''),
56 user: Env.get('DB_USER', 'root'),
57 password: Env.get('DB_PASSWORD', ''),
58 database: Env.get('DB_DATABASE', 'ferdium'),
59 },
60 debug: Env.get('DB_DEBUG', false),
61 },
62
63 /*
64 |--------------------------------------------------------------------------
65 | PostgreSQL
66 |--------------------------------------------------------------------------
67 |
68 | Here we define connection settings for PostgreSQL database.
69 |
70 | npm i --save pg
71 |
72 */
73 pg: {
74 client: 'pg',
75 connection: {
76 host: Env.get('DB_HOST', 'localhost'),
77 port: Env.get('DB_PORT', ''),
78 user: Env.get('DB_USER', 'root'),
79 password: Env.get('DB_PASSWORD', ''),
80 database: Env.get('DB_DATABASE', 'ferdium'),
81 ssl: Env.get('DB_CA_CERT') ? {
82 rejectUnauthorized: false,
83 ca: Env.get('DB_CA_CERT'),
84 } : JSON.parse(Env.get('DB_SSL', 'true')),
85 },
86 debug: Env.get('DB_DEBUG', false),
87 },
88};
diff --git a/config/database.ts b/config/database.ts
new file mode 100644
index 0000000..65a9455
--- /dev/null
+++ b/config/database.ts
@@ -0,0 +1,121 @@
1/* eslint-disable @typescript-eslint/indent */
2/**
3 * Config source: https://git.io/JesV9
4 *
5 * Feel free to let us know via PR, if you find something broken in this config
6 * file.
7 */
8
9import path from 'node:path';
10import Env from '@ioc:Adonis/Core/Env';
11import { DatabaseConfig } from '@ioc:Adonis/Lucid/Database';
12
13const databaseConfig: DatabaseConfig = {
14 /*
15 |--------------------------------------------------------------------------
16 | Connection
17 |--------------------------------------------------------------------------
18 |
19 | The primary connection for making database queries across the application
20 | You can use any key from the `connections` object defined in this same
21 | file.
22 |
23 */
24 connection: Env.get('DB_CONNECTION', 'sqlite'),
25
26 connections: {
27 /*
28 |--------------------------------------------------------------------------
29 | SQLite
30 |--------------------------------------------------------------------------
31 |
32 | Configuration for the SQLite database. Make sure to install the driver
33 | from npm when using this connection
34 |
35 | npm i sqlite3
36 |
37 */
38 sqlite: {
39 client: 'sqlite',
40 connection: {
41 filename: path.join(
42 Env.get('DATA_DIR', 'data'),
43 `${Env.get('DB_DATABASE', 'ferdium')}.sqlite`,
44 ),
45 },
46 pool: {
47 afterCreate: (conn, cb) => {
48 conn.run('PRAGMA foreign_keys=true', cb);
49 },
50 },
51 migrations: {
52 naturalSort: true,
53 },
54 useNullAsDefault: true,
55 healthCheck: false,
56 debug: Env.get('DB_DEBUG', false),
57 },
58
59 /*
60 |--------------------------------------------------------------------------
61 | MySQL config
62 |--------------------------------------------------------------------------
63 |
64 | Configuration for MySQL database. Make sure to install the driver
65 | from npm when using this connection
66 |
67 | npm i mysql
68 |
69 */
70 mysql: {
71 client: 'mysql',
72 connection: {
73 host: Env.get('DB_HOST', 'localhost'),
74 port: Env.get('DB_PORT', ''),
75 user: Env.get('DB_USER', 'root'),
76 password: Env.get('DB_PASSWORD', ''),
77 database: Env.get('DB_DATABASE', 'ferdium'),
78 },
79 migrations: {
80 naturalSort: true,
81 },
82 healthCheck: false,
83 debug: Env.get('DB_DEBUG', false),
84 },
85
86 /*
87 |--------------------------------------------------------------------------
88 | PostgreSQL config
89 |--------------------------------------------------------------------------
90 |
91 | Configuration for PostgreSQL database. Make sure to install the driver
92 | from npm when using this connection
93 |
94 | npm i pg
95 |
96 */
97 pg: {
98 client: 'pg',
99 connection: {
100 host: Env.get('DB_HOST', 'localhost'),
101 port: Env.get('DB_PORT', ''),
102 user: Env.get('DB_USER', 'root'),
103 password: Env.get('DB_PASSWORD', ''),
104 database: Env.get('DB_DATABASE', 'ferdium'),
105 ssl: Env.get('DB_CA_CERT')
106 ? {
107 rejectUnauthorized: false,
108 ca: Env.get('DB_CA_CERT'),
109 }
110 : JSON.parse(Env.get('DB_SSL', 'true')),
111 },
112 migrations: {
113 naturalSort: true,
114 },
115 healthCheck: false,
116 debug: Env.get('DB_DEBUG', false),
117 },
118 },
119};
120
121export default databaseConfig;
diff --git a/config/drive.js b/config/drive.js
deleted file mode 100644
index cb4b2b3..0000000
--- a/config/drive.js
+++ /dev/null
@@ -1,45 +0,0 @@
1const Env = use('Env');
2
3module.exports = {
4 /*
5 |--------------------------------------------------------------------------
6 | Default disk
7 |--------------------------------------------------------------------------
8 |
9 | The default disk is used when you interact with the file system without
10 | defining a disk name
11 |
12 */
13 default: 'local',
14
15 disks: {
16 /*
17 |--------------------------------------------------------------------------
18 | Local
19 |--------------------------------------------------------------------------
20 |
21 | Local disk interacts with the a local folder inside your application
22 |
23 */
24 local: {
25 root: `${__dirname}/../recipes/archives`,
26 driver: 'local',
27 },
28
29 /*
30 |--------------------------------------------------------------------------
31 | S3
32 |--------------------------------------------------------------------------
33 |
34 | S3 disk interacts with a bucket on aws s3
35 |
36 */
37 s3: {
38 driver: 's3',
39 key: Env.get('S3_KEY'),
40 secret: Env.get('S3_SECRET'),
41 bucket: Env.get('S3_BUCKET'),
42 region: Env.get('S3_REGION'),
43 },
44 },
45};
diff --git a/config/drive.ts b/config/drive.ts
new file mode 100644
index 0000000..b6950eb
--- /dev/null
+++ b/config/drive.ts
@@ -0,0 +1,149 @@
1/**
2 * Config source: https://git.io/JBt3o
3 *
4 * Feel free to let us know via PR, if you find something broken in this config
5 * file.
6 */
7
8import Env from '@ioc:Adonis/Core/Env';
9import { driveConfig } from '@adonisjs/core/build/config';
10import Application from '@ioc:Adonis/Core/Application';
11
12/*
13|--------------------------------------------------------------------------
14| Drive Config
15|--------------------------------------------------------------------------
16|
17| The `DriveConfig` relies on the `DisksList` interface which is
18| defined inside the `contracts` directory.
19|
20*/
21export default driveConfig({
22 /*
23 |--------------------------------------------------------------------------
24 | Default disk
25 |--------------------------------------------------------------------------
26 |
27 | The default disk to use for managing file uploads. The value is driven by
28 | the `DRIVE_DISK` environment variable.
29 |
30 */
31 disk: Env.get('DRIVE_DISK', 'local'),
32
33 disks: {
34 /*
35 |--------------------------------------------------------------------------
36 | Local
37 |--------------------------------------------------------------------------
38 |
39 | Uses the local file system to manage files. Make sure to turn off serving
40 | files when not using this disk.
41 |
42 */
43 local: {
44 driver: 'local',
45 visibility: 'public',
46
47 /*
48 |--------------------------------------------------------------------------
49 | Storage root - Local driver only
50 |--------------------------------------------------------------------------
51 |
52 | Define an absolute path to the storage directory from where to read the
53 | files.
54 |
55 */
56 root: Application.tmpPath('uploads'),
57
58 /*
59 |--------------------------------------------------------------------------
60 | Serve files - Local driver only
61 |--------------------------------------------------------------------------
62 |
63 | When this is set to true, AdonisJS will configure a files server to serve
64 | files from the disk root. This is done to mimic the behavior of cloud
65 | storage services that has inbuilt capabilities to serve files.
66 |
67 */
68 serveFiles: true,
69
70 /*
71 |--------------------------------------------------------------------------
72 | Base path - Local driver only
73 |--------------------------------------------------------------------------
74 |
75 | Base path is always required when "serveFiles = true". Also make sure
76 | the `basePath` is unique across all the disks using "local" driver and
77 | you are not registering routes with this prefix.
78 |
79 */
80 basePath: '/uploads',
81 },
82
83 /*
84 |--------------------------------------------------------------------------
85 | S3 Driver
86 |--------------------------------------------------------------------------
87 |
88 | Uses the S3 cloud storage to manage files. Make sure to install the s3
89 | drive separately when using it.
90 |
91 |**************************************************************************
92 | npm i @adonisjs/drive-s3
93 |**************************************************************************
94 |
95 */
96 // s3: {
97 // driver: 's3',
98 // visibility: 'public',
99 // key: Env.get('S3_KEY'),
100 // secret: Env.get('S3_SECRET'),
101 // region: Env.get('S3_REGION'),
102 // bucket: Env.get('S3_BUCKET'),
103 // endpoint: Env.get('S3_ENDPOINT'),
104 //
105 // // For minio to work
106 // // forcePathStyle: true,
107 // },
108
109 /*
110 |--------------------------------------------------------------------------
111 | GCS Driver
112 |--------------------------------------------------------------------------
113 |
114 | Uses the Google cloud storage to manage files. Make sure to install the GCS
115 | drive separately when using it.
116 |
117 |**************************************************************************
118 | npm i @adonisjs/drive-gcs
119 |**************************************************************************
120 |
121 */
122 // gcs: {
123 // driver: 'gcs',
124 // visibility: 'public',
125 // keyFilename: Env.get('GCS_KEY_FILENAME'),
126 // bucket: Env.get('GCS_BUCKET'),
127
128 /*
129 |--------------------------------------------------------------------------
130 | Uniform ACL - Google cloud storage only
131 |--------------------------------------------------------------------------
132 |
133 | When using the Uniform ACL on the bucket, the "visibility" option is
134 | ignored. Since, the files ACL is managed by the google bucket policies
135 | directly.
136 |
137 |**************************************************************************
138 | Learn more: https://cloud.google.com/storage/docs/uniform-bucket-level-access
139 |**************************************************************************
140 |
141 | The following option just informs drive whether your bucket is using uniform
142 | ACL or not. The actual setting needs to be toggled within the Google cloud
143 | console.
144 |
145 */
146 // usingUniformAcl: false,
147 // },
148 },
149});
diff --git a/config/hash.js b/config/hash.js
deleted file mode 100644
index 297c977..0000000
--- a/config/hash.js
+++ /dev/null
@@ -1,48 +0,0 @@
1
2/** @type {import('@adonisjs/framework/src/Env')} */
3const Env = use('Env');
4
5module.exports = {
6 /*
7 |--------------------------------------------------------------------------
8 | Driver
9 |--------------------------------------------------------------------------
10 |
11 | Driver to be used for hashing values. The same driver is used by the
12 | auth module too.
13 |
14 */
15 driver: Env.get('HASH_DRIVER', 'bcrypt'),
16
17 /*
18 |--------------------------------------------------------------------------
19 | Bcrypt
20 |--------------------------------------------------------------------------
21 |
22 | Config related to bcrypt hashing. https://www.npmjs.com/package/bcrypt
23 | package is used internally.
24 |
25 */
26 bcrypt: {
27 rounds: 10,
28 },
29
30 /*
31 |--------------------------------------------------------------------------
32 | Argon
33 |--------------------------------------------------------------------------
34 |
35 | Config related to argon. https://www.npmjs.com/package/argon2 package is
36 | used internally.
37 |
38 | Since argon is optional, you will have to install the dependency yourself
39 |
40 |============================================================================
41 | npm i argon2
42 |============================================================================
43 |
44 */
45 argon: {
46 type: 1,
47 },
48};
diff --git a/config/hash.ts b/config/hash.ts
new file mode 100644
index 0000000..abe7dd0
--- /dev/null
+++ b/config/hash.ts
@@ -0,0 +1,88 @@
1/**
2 * Config source: https://git.io/JfefW
3 *
4 * Feel free to let us know via PR, if you find something broken in this config
5 * file.
6 */
7
8import Env from '@ioc:Adonis/Core/Env';
9import { hashConfig } from '@adonisjs/core/build/config';
10
11/*
12|--------------------------------------------------------------------------
13| Hash Config
14|--------------------------------------------------------------------------
15|
16| The `HashConfig` relies on the `HashList` interface which is
17| defined inside `contracts` directory.
18|
19*/
20export default hashConfig({
21 /*
22 |--------------------------------------------------------------------------
23 | Default hasher
24 |--------------------------------------------------------------------------
25 |
26 | By default we make use of the argon hasher to hash values. However, feel
27 | free to change the default value
28 |
29 | Default is set to bcrypt to prevent breaking-changes.
30 */
31 default: Env.get('HASH_DRIVER', 'scrypt'),
32
33 list: {
34 scrypt: {
35 driver: 'scrypt',
36 cost: 16_384,
37 blockSize: 8,
38 parallelization: 1,
39 saltSize: 16,
40 keyLength: 64,
41 maxMemory: 32 * 1024 * 1024,
42 },
43 /*
44 |--------------------------------------------------------------------------
45 | Argon
46 |--------------------------------------------------------------------------
47 |
48 | Argon mapping uses the `argon2` driver to hash values.
49 |
50 | Make sure you install the underlying dependency for this driver to work.
51 | https://www.npmjs.com/package/phc-argon2.
52 |
53 | npm install phc-argon2
54 |
55 */
56 argon: {
57 driver: 'argon2',
58 variant: 'id',
59 iterations: 3,
60 memory: 4096,
61 parallelism: 1,
62 saltSize: 16,
63 },
64
65 /*
66 |--------------------------------------------------------------------------
67 | Bcrypt
68 |--------------------------------------------------------------------------
69 |
70 | Bcrypt mapping uses the `bcrypt` driver to hash values.
71 |
72 | Make sure you install the underlying dependency for this driver to work.
73 | https://www.npmjs.com/package/phc-bcrypt.
74 |
75 | npm install phc-bcrypt
76 |
77 */
78 bcrypt: {
79 driver: 'bcrypt',
80 rounds: 10,
81 },
82
83 legacy: {
84 // @ts-expect-error
85 driver: 'legacy',
86 },
87 },
88});
diff --git a/config/mail.js b/config/mail.js
deleted file mode 100644
index 8fb6356..0000000
--- a/config/mail.js
+++ /dev/null
@@ -1,104 +0,0 @@
1const Env = use('Env');
2
3module.exports = {
4 /*
5 |--------------------------------------------------------------------------
6 | Connection
7 |--------------------------------------------------------------------------
8 |
9 | Connection to be used for sending emails. Each connection needs to
10 | define a driver too.
11 |
12 */
13 connection: Env.get('MAIL_CONNECTION', 'smtp'),
14
15 /*
16 |--------------------------------------------------------------------------
17 | SMTP
18 |--------------------------------------------------------------------------
19 |
20 | Here we define configuration for sending emails via SMTP.
21 |
22 | https://nodemailer.com/smtp/
23 |
24 */
25 smtp: {
26 driver: 'smtp',
27 pool: true,
28 name: Env.get('APP_URL'),
29 port: Env.get('SMTP_PORT', '2525'),
30 host: Env.get('SMTP_HOST', 'localhost'),
31 secure: JSON.parse(Env.get('MAIL_SSL', 'false')),
32 requireTLS: JSON.parse(Env.get('MAIL_REQUIRE_TLS', 'false')),
33 authMethod: 'LOGIN',
34 auth: {
35 user: Env.get('MAIL_USERNAME'),
36 pass: Env.get('MAIL_PASSWORD'),
37 },
38 maxConnections: 5,
39 maxMessages: 100,
40 rateLimit: 10,
41 },
42
43 /*
44 |--------------------------------------------------------------------------
45 | SparkPost
46 |--------------------------------------------------------------------------
47 |
48 | Here we define configuration for spark post. Extra options can be defined
49 | inside the `extra` object.
50 |
51 | https://developer.sparkpost.com/api/transmissions.html#header-options-attributes
52 |
53 | extras: {
54 | campaign_id: 'sparkpost campaign id',
55 | options: { // sparkpost options }
56 | }
57 |
58 */
59 sparkpost: {
60 driver: 'sparkpost',
61 apiKey: Env.get('SPARKPOST_API_KEY'),
62 extras: {},
63 },
64
65 /*
66 |--------------------------------------------------------------------------
67 | Mailgun
68 |--------------------------------------------------------------------------
69 |
70 | Here we define configuration for mailgun. Extra options can be defined
71 | inside the `extra` object.
72 |
73 | https://mailgun-documentation.readthedocs.io/en/latest/api-sending.html#sending
74 |
75 | extras: {
76 | 'o:tag': '',
77 | 'o:campaign': '',,
78 | . . .
79 | }
80 |
81 */
82 mailgun: {
83 driver: 'mailgun',
84 domain: Env.get('MAILGUN_DOMAIN'),
85 region: Env.get('MAILGUN_API_REGION'),
86 apiKey: Env.get('MAILGUN_API_KEY'),
87 extras: {},
88 },
89
90 /*
91 |--------------------------------------------------------------------------
92 | Ethereal
93 |--------------------------------------------------------------------------
94 |
95 | Ethereal driver to quickly test emails in your browser. A disposable
96 | account is created automatically for you.
97 |
98 | https://ethereal.email
99 |
100 */
101 ethereal: {
102 driver: 'ethereal',
103 },
104};
diff --git a/config/mail.ts b/config/mail.ts
new file mode 100644
index 0000000..1210592
--- /dev/null
+++ b/config/mail.ts
@@ -0,0 +1,118 @@
1/**
2 * Config source: https://git.io/JvgAf
3 *
4 * Feel free to let us know via PR, if you find something broken in this contract
5 * file.
6 */
7
8import Env from '@ioc:Adonis/Core/Env';
9import { mailConfig } from '@adonisjs/mail/build/config';
10
11export default mailConfig({
12 /*
13 |--------------------------------------------------------------------------
14 | Default mailer
15 |--------------------------------------------------------------------------
16 |
17 | The following mailer will be used to send emails, when you don't specify
18 | a mailer
19 |
20 */
21 mailer: 'smtp',
22
23 /*
24 |--------------------------------------------------------------------------
25 | Mailers
26 |--------------------------------------------------------------------------
27 |
28 | You can define or more mailers to send emails from your application. A
29 | single `driver` can be used to define multiple mailers with different
30 | config.
31 |
32 | For example: Postmark driver can be used to have different mailers for
33 | sending transactional and promotional emails
34 |
35 */
36 mailers: {
37 /*
38 |--------------------------------------------------------------------------
39 | Smtp
40 |--------------------------------------------------------------------------
41 |
42 | Uses SMTP protocol for sending email
43 |
44 */
45 smtp: {
46 driver: 'smtp',
47 name: Env.get('APP_URL'),
48 port: Env.get('SMTP_PORT', '2525'),
49 host: Env.get('SMTP_HOST', 'localhost'),
50 secure: JSON.parse(Env.get('MAIL_SSL', 'false')),
51 requireTLS: JSON.parse(Env.get('MAIL_REQUIRE_TLS', 'false')),
52 auth: {
53 user: Env.get('SMTP_USERNAME'),
54 pass: Env.get('SMTP_PASSWORD'),
55 type: 'login',
56 },
57 maxConnections: 5,
58 maxMessages: 100,
59 rateLimit: 10,
60 },
61
62 /*
63 |--------------------------------------------------------------------------
64 | SES
65 |--------------------------------------------------------------------------
66 |
67 | Uses Amazon SES for sending emails. You will have to install the aws-sdk
68 | when using this driver.
69 |
70 | ```
71 | npm i aws-sdk
72 | ```
73 |
74 */
75 ses: {
76 driver: 'ses',
77 apiVersion: '2010-12-01',
78 key: Env.get('SES_ACCESS_KEY'),
79 secret: Env.get('SES_ACCESS_SECRET'),
80 region: Env.get('SES_REGION'),
81 sslEnabled: true,
82 sendingRate: 10,
83 maxConnections: 5,
84 },
85
86 /*
87 |--------------------------------------------------------------------------
88 | Mailgun
89 |--------------------------------------------------------------------------
90 |
91 | Uses Mailgun service for sending emails.
92 |
93 | If you are using an EU domain. Ensure to change the baseUrl to hit the
94 | europe endpoint (https://api.eu.mailgun.net/v3).
95 |
96 */
97 mailgun: {
98 driver: 'mailgun',
99 baseUrl: 'https://api.mailgun.net/v3',
100 key: Env.get('MAILGUN_API_KEY'),
101 domain: Env.get('MAILGUN_DOMAIN'),
102 },
103
104 /*
105 |--------------------------------------------------------------------------
106 | SparkPost
107 |--------------------------------------------------------------------------
108 |
109 | Uses Sparkpost service for sending emails.
110 |
111 */
112 sparkpost: {
113 driver: 'sparkpost',
114 baseUrl: 'https://api.sparkpost.com/api/v1',
115 key: Env.get('SPARKPOST_API_KEY'),
116 },
117 },
118});
diff --git a/config/persona.js b/config/persona.js
deleted file mode 100644
index c259a06..0000000
--- a/config/persona.js
+++ /dev/null
@@ -1,94 +0,0 @@
1/*
2|--------------------------------------------------------------------------
3| Persona
4|--------------------------------------------------------------------------
5|
6| The persona is a simple and opinionated service to register, login and
7| manage user account
8|
9*/
10
11module.exports = {
12 /*
13 |--------------------------------------------------------------------------
14 | Uids
15 |--------------------------------------------------------------------------
16 |
17 | An array of fields, that can be used to indetify a user uniquely. During
18 | login and reset password, these fields be checked against the user
19 | input
20 |
21 */
22 uids: ['email'],
23
24 /*
25 |--------------------------------------------------------------------------
26 | Email field
27 |--------------------------------------------------------------------------
28 |
29 | The name of the email field inside the database and the user payload.
30 |
31 */
32 email: 'email',
33
34 /*
35 |--------------------------------------------------------------------------
36 | Password
37 |--------------------------------------------------------------------------
38 |
39 | The password field to be used for verifying and storing user password
40 |
41 */
42 password: 'password',
43
44 /*
45 |--------------------------------------------------------------------------
46 | New account state
47 |--------------------------------------------------------------------------
48 |
49 | State of user when a new account is created
50 |
51 */
52 newAccountState: 'pending',
53
54 /*
55 |--------------------------------------------------------------------------
56 | Verified account state
57 |--------------------------------------------------------------------------
58 |
59 | State of user after they verify their email address
60 |
61 */
62 verifiedAccountState: 'active',
63
64 /*
65 |--------------------------------------------------------------------------
66 | Model
67 |--------------------------------------------------------------------------
68 |
69 | The model to be used for verifying and creating users
70 |
71 */
72 model: 'App/Models/User',
73
74 /*
75 |--------------------------------------------------------------------------
76 | Date Format
77 |--------------------------------------------------------------------------
78 |
79 | The date format for the tokens table. It is required to calculate the
80 | expiry of a token.
81 |
82 */
83 dateFormat: 'YYYY-MM-DD HH:mm:ss',
84
85 /*
86 |--------------------------------------------------------------------------
87 | Validation messages
88 |--------------------------------------------------------------------------
89 |
90 | An object of validation messages to be used when validation fails.
91 |
92 */
93 validationMessages: () => ({}),
94};
diff --git a/config/session.js b/config/session.js
deleted file mode 100644
index b2174da..0000000
--- a/config/session.js
+++ /dev/null
@@ -1,98 +0,0 @@
1
2const Env = use('Env');
3
4module.exports = {
5 /*
6 |--------------------------------------------------------------------------
7 | Session Driver
8 |--------------------------------------------------------------------------
9 |
10 | The session driver to be used for storing session values. It can be
11 | cookie, file or redis.
12 |
13 | For `redis` driver, make sure to install and register `@adonisjs/redis`
14 |
15 */
16 driver: Env.get('SESSION_DRIVER', 'cookie'),
17
18 /*
19 |--------------------------------------------------------------------------
20 | Cookie Name
21 |--------------------------------------------------------------------------
22 |
23 | The name of the cookie to be used for saving session id. Session ids
24 | are signed and encrypted.
25 |
26 */
27 cookieName: 'adonis-session',
28
29 /*
30 |--------------------------------------------------------------------------
31 | Clear session when browser closes
32 |--------------------------------------------------------------------------
33 |
34 | If this value is true, the session cookie will be temporary and will be
35 | removed when browser closes.
36 |
37 */
38 clearWithBrowser: true,
39
40 /*
41 |--------------------------------------------------------------------------
42 | Session age
43 |--------------------------------------------------------------------------
44 |
45 | This value is only used when `clearWithBrowser` is set to false. The
46 | age must be a valid https://npmjs.org/package/ms string or should
47 | be in milliseconds.
48 |
49 | Valid values are:
50 | '2h', '10d', '5y', '2.5 hrs'
51 |
52 */
53 age: '2h',
54
55 /*
56 |--------------------------------------------------------------------------
57 | Cookie options
58 |--------------------------------------------------------------------------
59 |
60 | Cookie options defines the options to be used for setting up session
61 | cookie
62 |
63 */
64 cookie: {
65 httpOnly: true,
66 path: '/',
67 sameSite: true,
68 },
69
70 /*
71 |--------------------------------------------------------------------------
72 | Sessions location
73 |--------------------------------------------------------------------------
74 |
75 | If driver is set to file, we need to define the relative location from
76 | the temporary path or absolute url to any location.
77 |
78 */
79 file: {
80 location: 'sessions',
81 },
82
83 /*
84 |--------------------------------------------------------------------------
85 | Redis config
86 |--------------------------------------------------------------------------
87 |
88 | The configuration for the redis driver.
89 |
90 */
91 redis: {
92 host: '127.0.0.1',
93 port: 6379,
94 password: null,
95 db: 0,
96 keyPrefix: '',
97 },
98};
diff --git a/config/session.ts b/config/session.ts
new file mode 100644
index 0000000..fbf8c7c
--- /dev/null
+++ b/config/session.ts
@@ -0,0 +1,116 @@
1/**
2 * Config source: https://git.io/JeYHp
3 *
4 * Feel free to let us know via PR, if you find something broken in this config
5 * file.
6 */
7
8import Env from '@ioc:Adonis/Core/Env';
9import Application from '@ioc:Adonis/Core/Application';
10import { sessionConfig } from '@adonisjs/session/build/config';
11
12export default sessionConfig({
13 /*
14 |--------------------------------------------------------------------------
15 | Enable/Disable sessions
16 |--------------------------------------------------------------------------
17 |
18 | Setting the following property to "false" will disable the session for the
19 | entire application
20 |
21 */
22 enabled: true,
23
24 /*
25 |--------------------------------------------------------------------------
26 | Driver
27 |--------------------------------------------------------------------------
28 |
29 | The session driver to use. You can choose between one of the following
30 | drivers.
31 |
32 | - cookie (Uses signed cookies to store session values)
33 | - file (Uses filesystem to store session values)
34 | - redis (Uses redis. Make sure to install "@adonisjs/redis" as well)
35 |
36 | Note: Switching drivers will make existing sessions invalid.
37 |
38 */
39 driver: Env.get('SESSION_DRIVER', 'cookie'),
40
41 /*
42 |--------------------------------------------------------------------------
43 | Cookie name
44 |--------------------------------------------------------------------------
45 |
46 | The name of the cookie that will hold the session id.
47 |
48 */
49 cookieName: 'adonis-session',
50
51 /*
52 |--------------------------------------------------------------------------
53 | Clear session when browser closes
54 |--------------------------------------------------------------------------
55 |
56 | Whether or not you want to destroy the session when browser closes. Setting
57 | this value to `true` will ignore the `age`.
58 |
59 */
60 clearWithBrowser: true,
61
62 /*
63 |--------------------------------------------------------------------------
64 | Session age
65 |--------------------------------------------------------------------------
66 |
67 | The duration for which session stays active after no activity. A new HTTP
68 | request to the server is considered as activity.
69 |
70 | The value can be a number in milliseconds or a string that must be valid
71 | as per https://npmjs.org/package/ms package.
72 |
73 | Example: `2 days`, `2.5 hrs`, `1y`, `5s` and so on.
74 |
75 */
76 age: '2h',
77
78 /*
79 |--------------------------------------------------------------------------
80 | Cookie values
81 |--------------------------------------------------------------------------
82 |
83 | The cookie settings are used to setup the session id cookie and also the
84 | driver will use the same values.
85 |
86 */
87 cookie: {
88 path: '/',
89 httpOnly: true,
90 sameSite: false,
91 },
92
93 /*
94 |--------------------------------------------------------------------------
95 | Configuration for the file driver
96 |--------------------------------------------------------------------------
97 |
98 | The file driver needs absolute path to the directory in which sessions
99 | must be stored.
100 |
101 */
102 file: {
103 location: Application.tmpPath('sessions'),
104 },
105
106 /*
107 |--------------------------------------------------------------------------
108 | Redis driver
109 |--------------------------------------------------------------------------
110 |
111 | The redis connection you want session driver to use. The same connection
112 | must be defined inside `config/redis.ts` file as well.
113 |
114 */
115 redisConnection: 'local',
116});
diff --git a/config/shield.js b/config/shield.js
deleted file mode 100644
index 9849d29..0000000
--- a/config/shield.js
+++ /dev/null
@@ -1,144 +0,0 @@
1
2module.exports = {
3 /*
4 |--------------------------------------------------------------------------
5 | Content Security Policy
6 |--------------------------------------------------------------------------
7 |
8 | Content security policy filters out the origins not allowed to execute
9 | and load resources like scripts, styles and fonts. There are wide
10 | variety of options to choose from.
11 */
12 csp: {
13 /*
14 |--------------------------------------------------------------------------
15 | Directives
16 |--------------------------------------------------------------------------
17 |
18 | All directives are defined in camelCase and here is the list of
19 | available directives and their possible values.
20 |
21 | https://content-security-policy.com
22 |
23 | @example
24 | directives: {
25 | defaultSrc: ['self', '@nonce', 'cdnjs.cloudflare.com']
26 | }
27 |
28 */
29 directives: {
30 },
31 /*
32 |--------------------------------------------------------------------------
33 | Report only
34 |--------------------------------------------------------------------------
35 |
36 | Setting `reportOnly=true` will not block the scripts from running and
37 | instead report them to a URL.
38 |
39 */
40 reportOnly: false,
41 /*
42 |--------------------------------------------------------------------------
43 | Set all headers
44 |--------------------------------------------------------------------------
45 |
46 | Headers staring with `X` have been depreciated, since all major browsers
47 | supports the standard CSP header. So its better to disable deperciated
48 | headers, unless you want them to be set.
49 |
50 */
51 setAllHeaders: false,
52
53 /*
54 |--------------------------------------------------------------------------
55 | Disable on android
56 |--------------------------------------------------------------------------
57 |
58 | Certain versions of android are buggy with CSP policy. So you can set
59 | this value to true, to disable it for Android versions with buggy
60 | behavior.
61 |
62 | Here is an issue reported on a different package, but helpful to read
63 | if you want to know the behavior. https://github.com/helmetjs/helmet/pull/82
64 |
65 */
66 disableAndroid: true,
67 },
68
69 /*
70 |--------------------------------------------------------------------------
71 | X-XSS-Protection
72 |--------------------------------------------------------------------------
73 |
74 | X-XSS Protection saves from applications from XSS attacks. It is adopted
75 | by IE and later followed by some other browsers.
76 |
77 | Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
78 |
79 */
80 xss: {
81 enabled: true,
82 enableOnOldIE: false,
83 },
84
85 /*
86 |--------------------------------------------------------------------------
87 | Iframe Options
88 |--------------------------------------------------------------------------
89 |
90 | xframe defines whether or not your website can be embedded inside an
91 | iframe. Choose from one of the following options.
92 | @available options
93 | DENY, SAMEORIGIN, ALLOW-FROM http://example.com
94 |
95 | Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
96 */
97 xframe: 'DENY',
98
99 /*
100 |--------------------------------------------------------------------------
101 | No Sniff
102 |--------------------------------------------------------------------------
103 |
104 | Browsers have a habit of sniffing content-type of a response. Which means
105 | files with .txt extension containing Javascript code will be executed as
106 | Javascript. You can disable this behavior by setting nosniff to false.
107 |
108 | Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
109 |
110 */
111 nosniff: true,
112
113 /*
114 |--------------------------------------------------------------------------
115 | No Open
116 |--------------------------------------------------------------------------
117 |
118 | IE users can execute webpages in the context of your website, which is
119 | a serious security risk. Below option will manage this for you.
120 |
121 */
122 noopen: true,
123
124 /*
125 |--------------------------------------------------------------------------
126 | CSRF Protection
127 |--------------------------------------------------------------------------
128 |
129 | CSRF Protection adds another layer of security by making sure, actionable
130 | routes does have a valid token to execute an action.
131 |
132 */
133 csrf: {
134 enable: true,
135 methods: ['POST', 'PUT', 'DELETE'],
136 filterUris: [],
137 cookieOptions: {
138 httpOnly: true,
139 sameSite: true,
140 path: '/',
141 maxAge: 7200,
142 },
143 },
144};
diff --git a/config/shield.ts b/config/shield.ts
new file mode 100644
index 0000000..3566e1c
--- /dev/null
+++ b/config/shield.ts
@@ -0,0 +1,243 @@
1/**
2 * Config source: https://git.io/Jvwvt
3 *
4 * Feel free to let us know via PR, if you find something broken in this config
5 * file.
6 */
7
8import Env from '@ioc:Adonis/Core/Env';
9import { ShieldConfig } from '@ioc:Adonis/Addons/Shield';
10
11/*
12|--------------------------------------------------------------------------
13| Content Security Policy
14|--------------------------------------------------------------------------
15|
16| Content security policy filters out the origins not allowed to execute
17| and load resources like scripts, styles and fonts. There are wide
18| variety of options to choose from.
19*/
20export const csp: ShieldConfig['csp'] = {
21 /*
22 |--------------------------------------------------------------------------
23 | Enable/disable CSP
24 |--------------------------------------------------------------------------
25 |
26 | The CSP rules are disabled by default for seamless onboarding.
27 |
28 */
29 enabled: false,
30
31 /*
32 |--------------------------------------------------------------------------
33 | Directives
34 |--------------------------------------------------------------------------
35 |
36 | All directives are defined in camelCase and here is the list of
37 | available directives and their possible values.
38 |
39 | https://content-security-policy.com
40 |
41 | @example
42 | directives: {
43 | defaultSrc: ["'self'", '@nonce', 'cdnjs.cloudflare.com']
44 | }
45 |
46 */
47 directives: {},
48
49 /*
50 |--------------------------------------------------------------------------
51 | Report only
52 |--------------------------------------------------------------------------
53 |
54 | Setting `reportOnly=true` will not block the scripts from running and
55 | instead report them to a URL.
56 |
57 */
58 reportOnly: false,
59};
60
61/*
62|--------------------------------------------------------------------------
63| CSRF Protection
64|--------------------------------------------------------------------------
65|
66| CSRF Protection adds another layer of security by making sure, actionable
67| routes does have a valid token to execute an action.
68|
69*/
70export const csrf: ShieldConfig['csrf'] = {
71 /*
72 |--------------------------------------------------------------------------
73 | Enable/Disable CSRF
74 |--------------------------------------------------------------------------
75 */
76 enabled: Env.get('NODE_ENV') === 'production',
77
78 /*
79 |--------------------------------------------------------------------------
80 | Routes to Ignore
81 |--------------------------------------------------------------------------
82 |
83 | Define an array of route patterns that you want to ignore from CSRF
84 | validation. Make sure the route patterns are started with a leading
85 | slash. Example:
86 |
87 | `/foo/bar`
88 |
89 | Also you can define a function that is evaluated on every HTTP Request.
90 | ```
91 | exceptRoutes: ({ request }) => request.url().includes('/api')
92 | ```
93 |
94 */
95 exceptRoutes: ctx => {
96 // ignore all routes starting with /v1/ (api)
97 return (
98 ctx.request.url().includes('/v1/') ||
99 ctx.request.url().includes('/import')
100 );
101 },
102
103 /*
104 |--------------------------------------------------------------------------
105 | Enable Sharing Token Via Cookie
106 |--------------------------------------------------------------------------
107 |
108 | When the following flag is enabled, AdonisJS will drop `XSRF-TOKEN`
109 | cookie that frontend frameworks can read and return back as a
110 | `X-XSRF-TOKEN` header.
111 |
112 | The cookie has `httpOnly` flag set to false, so it is little insecure and
113 | can be turned off when you are not using a frontend framework making
114 | AJAX requests.
115 |
116 */
117 enableXsrfCookie: true,
118
119 /*
120 |--------------------------------------------------------------------------
121 | Methods to Validate
122 |--------------------------------------------------------------------------
123 |
124 | Define an array of HTTP methods to be validated for a valid CSRF token.
125 |
126 */
127 methods: ['POST', 'PUT', 'PATCH', 'DELETE'],
128};
129
130/*
131|--------------------------------------------------------------------------
132| DNS Prefetching
133|--------------------------------------------------------------------------
134|
135| DNS prefetching allows browsers to proactively perform domain name
136| resolution in background.
137|
138| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-DNS-Prefetch-Control
139|
140*/
141export const dnsPrefetch: ShieldConfig['dnsPrefetch'] = {
142 /*
143 |--------------------------------------------------------------------------
144 | Enable/disable this feature
145 |--------------------------------------------------------------------------
146 */
147 enabled: true,
148
149 /*
150 |--------------------------------------------------------------------------
151 | Allow or Dis-Allow Explicitly
152 |--------------------------------------------------------------------------
153 |
154 | The `enabled` boolean does not set `X-DNS-Prefetch-Control` header. However
155 | the `allow` boolean controls the value of `X-DNS-Prefetch-Control` header.
156 |
157 | - When `allow = true`, then `X-DNS-Prefetch-Control = 'on'`
158 | - When `allow = false`, then `X-DNS-Prefetch-Control = 'off'`
159 |
160 */
161 allow: true,
162};
163
164/*
165|--------------------------------------------------------------------------
166| Iframe Options
167|--------------------------------------------------------------------------
168|
169| xFrame defines whether or not your website can be embedded inside an
170| iframe. Choose from one of the following options.
171|
172| - DENY
173| - SAMEORIGIN
174| - ALLOW-FROM http://example.com
175|
176| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
177*/
178export const xFrame: ShieldConfig['xFrame'] = {
179 enabled: true,
180 action: 'DENY',
181};
182
183/*
184|--------------------------------------------------------------------------
185| Http Strict Transport Security
186|--------------------------------------------------------------------------
187|
188| A security to ensure that a browser always makes a connection over
189| HTTPS.
190|
191| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security
192|
193*/
194export const hsts: ShieldConfig['hsts'] = {
195 enabled: true,
196 /*
197 |--------------------------------------------------------------------------
198 | Max Age
199 |--------------------------------------------------------------------------
200 |
201 | Control, how long the browser should remember that a site is only to be
202 | accessed using HTTPS.
203 |
204 */
205 maxAge: '180 days',
206
207 /*
208 |--------------------------------------------------------------------------
209 | Include Subdomains
210 |--------------------------------------------------------------------------
211 |
212 | Apply rules on the subdomains as well.
213 |
214 */
215 includeSubDomains: true,
216
217 /*
218 |--------------------------------------------------------------------------
219 | Preloading
220 |--------------------------------------------------------------------------
221 |
222 | Google maintains a service to register your domain and it will preload
223 | the HSTS policy. Learn more https://hstspreload.org/
224 |
225 */
226 preload: false,
227};
228
229/*
230|--------------------------------------------------------------------------
231| No Sniff
232|--------------------------------------------------------------------------
233|
234| Browsers have a habit of sniffing content-type of a response. Which means
235| files with .txt extension containing Javascript code will be executed as
236| Javascript. You can disable this behavior by setting nosniff to false.
237|
238| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options
239|
240*/
241export const contentTypeSniffing: ShieldConfig['contentTypeSniffing'] = {
242 enabled: true,
243};
diff --git a/config/static.ts b/config/static.ts
new file mode 100644
index 0000000..1f7c88f
--- /dev/null
+++ b/config/static.ts
@@ -0,0 +1,10 @@
1import { AssetsConfig } from '@ioc:Adonis/Core/Static';
2
3const staticConfig: AssetsConfig = {
4 enabled: true,
5 dotFiles: 'ignore',
6 etag: true,
7 lastModified: true,
8};
9
10export default staticConfig;
diff --git a/contracts/auth.ts b/contracts/auth.ts
new file mode 100644
index 0000000..1625116
--- /dev/null
+++ b/contracts/auth.ts
@@ -0,0 +1,103 @@
1/**
2 * Contract source: https://git.io/JOdz5
3 *
4 * Feel free to let us know via PR, if you find something broken in this
5 * file.
6 */
7
8import User from 'App/Models/User';
9import { JWTGuardConfig, JWTGuardContract } from '@ioc:Adonis/Addons/Jwt';
10
11declare module '@ioc:Adonis/Addons/Auth' {
12 /*
13 |--------------------------------------------------------------------------
14 | Providers
15 |--------------------------------------------------------------------------
16 |
17 | The providers are used to fetch users. The Auth module comes pre-bundled
18 | with two providers that are `Lucid` and `Database`. Both uses database
19 | to fetch user details.
20 |
21 | You can also create and register your own custom providers.
22 |
23 */
24 interface ProvidersList {
25 /*
26 |--------------------------------------------------------------------------
27 | User Provider
28 |--------------------------------------------------------------------------
29 |
30 | The following provider uses Lucid models as a driver for fetching user
31 | details from the database for authentication.
32 |
33 | You can create multiple providers using the same underlying driver with
34 | different Lucid models.
35 |
36 */
37 user: {
38 implementation: LucidProviderContract<typeof User>;
39 config: LucidProviderConfig<typeof User>;
40 };
41 }
42
43 /*
44 |--------------------------------------------------------------------------
45 | Guards
46 |--------------------------------------------------------------------------
47 |
48 | The guards are used for authenticating users using different drivers.
49 | The auth module comes with 3 different guards.
50 |
51 | - SessionGuardContract
52 | - BasicAuthGuardContract
53 | - OATGuardContract ( Opaque access token )
54 |
55 | Every guard needs a provider for looking up users from the database.
56 |
57 */
58 interface GuardsList {
59 /*
60 |--------------------------------------------------------------------------
61 | Web Guard
62 |--------------------------------------------------------------------------
63 |
64 | The web guard uses sessions for maintaining user login state. It uses
65 | the `user` provider for fetching user details.
66 |
67 */
68 web: {
69 implementation: SessionGuardContract<'user', 'web'>;
70 config: SessionGuardConfig<'user'>;
71 };
72 /*
73 |--------------------------------------------------------------------------
74 | OAT Guard
75 |--------------------------------------------------------------------------
76 |
77 | OAT, stands for (Opaque access tokens) guard uses database backed tokens
78 | to authenticate requests.
79 |
80 */
81 api: {
82 implementation: OATGuardContract<'user', 'api'>;
83 config: OATGuardConfig<'user'>;
84 };
85 /*
86 |--------------------------------------------------------------------------
87 | Basic Auth Guard
88 |--------------------------------------------------------------------------
89 |
90 | The basic guard uses basic auth for maintaining user login state. It uses
91 | the `user` provider for fetching user details.
92 |
93 */
94 basic: {
95 implementation: BasicAuthGuardContract<'user', 'basic'>;
96 config: BasicAuthGuardConfig<'user'>;
97 };
98 jwt: {
99 implementation: JWTGuardContract<'user', 'api'>;
100 config: JWTGuardConfig<'user'>;
101 };
102 }
103}
diff --git a/contracts/drive.ts b/contracts/drive.ts
new file mode 100644
index 0000000..47b70f3
--- /dev/null
+++ b/contracts/drive.ts
@@ -0,0 +1,13 @@
1/**
2 * Contract source: https://git.io/JBt3I
3 *
4 * Feel free to let us know via PR, if you find something broken in this contract
5 * file.
6 */
7
8import { InferDisksFromConfig } from '@adonisjs/core/build/config';
9import driveConfig from '../config/drive';
10
11declare module '@ioc:Adonis/Core/Drive' {
12 interface DisksList extends InferDisksFromConfig<typeof driveConfig> {}
13}
diff --git a/contracts/env.ts b/contracts/env.ts
new file mode 100644
index 0000000..e1fd92e
--- /dev/null
+++ b/contracts/env.ts
@@ -0,0 +1,23 @@
1/**
2 * Contract source: https://git.io/JTm6U
3 *
4 * Feel free to let us know via PR, if you find something broken in this contract
5 * file.
6 */
7
8declare module '@ioc:Adonis/Core/Env' {
9 /*
10 |--------------------------------------------------------------------------
11 | Getting types for validated environment variables
12 |--------------------------------------------------------------------------
13 |
14 | The `default` export from the "../env.ts" file exports types for the
15 | validated environment variables. Here we merge them with the `EnvTypes`
16 | interface so that you can enjoy intellisense when using the "Env"
17 | module.
18 |
19 */
20
21 type CustomTypes = typeof import('../env').default;
22 interface EnvTypes extends CustomTypes {}
23}
diff --git a/contracts/events.ts b/contracts/events.ts
new file mode 100644
index 0000000..541bdc2
--- /dev/null
+++ b/contracts/events.ts
@@ -0,0 +1,33 @@
1/**
2 * Contract source: https://git.io/JfefG
3 *
4 * Feel free to let us know via PR, if you find something broken in this contract
5 * file.
6 */
7
8import User from 'App/Models/User';
9
10declare module '@ioc:Adonis/Core/Event' {
11 /*
12 |--------------------------------------------------------------------------
13 | Define typed events
14 |--------------------------------------------------------------------------
15 |
16 | You can define types for events inside the following interface and
17 | AdonisJS will make sure that all listeners and emit calls adheres
18 | to the defined types.
19 |
20 | For example:
21 |
22 | interface EventsList {
23 | 'new:user': UserModel
24 | }
25 |
26 | Now calling `Event.emit('new:user')` will statically ensure that passed value is
27 | an instance of the the UserModel only.
28 |
29 */
30 interface EventsList {
31 'forgot:password': { user: User; token: string };
32 }
33}
diff --git a/contracts/hash.ts b/contracts/hash.ts
new file mode 100644
index 0000000..af336c7
--- /dev/null
+++ b/contracts/hash.ts
@@ -0,0 +1,26 @@
1/**
2 * Contract source: https://git.io/Jfefs
3 *
4 * Feel free to let us know via PR, if you find something broken in this contract
5 * file.
6 */
7
8import { InferListFromConfig } from '@adonisjs/core/build/config';
9import hashConfig from '../config/hash';
10
11declare module '@ioc:Adonis/Core/Hash' {
12 interface HashersList extends InferListFromConfig<typeof hashConfig> {
13 bcrypt: {
14 config: BcryptConfig;
15 implementation: BcryptContract;
16 };
17 argon: {
18 config: ArgonConfig;
19 implementation: ArgonContract;
20 };
21 legacy: {
22 config: BcryptConfig;
23 implementation: HashDriverContract;
24 };
25 }
26}
diff --git a/contracts/mail.ts b/contracts/mail.ts
new file mode 100644
index 0000000..0ea307f
--- /dev/null
+++ b/contracts/mail.ts
@@ -0,0 +1,13 @@
1/**
2 * Contract source: https://git.io/JvgAT
3 *
4 * Feel free to let us know via PR, if you find something broken in this contract
5 * file.
6 */
7
8import { InferMailersFromConfig } from '@adonisjs/mail/build/config';
9import mailConfig from '../config/mail';
10
11declare module '@ioc:Adonis/Addons/Mail' {
12 interface MailersList extends InferMailersFromConfig<typeof mailConfig> {}
13}
diff --git a/contracts/tests.ts b/contracts/tests.ts
new file mode 100644
index 0000000..fec995d
--- /dev/null
+++ b/contracts/tests.ts
@@ -0,0 +1,19 @@
1/**
2 * Contract source: https://bit.ly/3DP1ypf
3 *
4 * Feel free to let us know via PR, if you find something broken in this contract
5 * file.
6 */
7
8import '@japa/runner';
9
10declare module '@japa/runner' {
11 interface TestContext {
12 // Extend context
13 }
14
15 // eslint-disable-next-line @typescript-eslint/no-unused-vars
16 interface Test<TestData> {
17 // Extend test
18 }
19}
diff --git a/data/.gitignore b/data/.gitignore
new file mode 100644
index 0000000..6150054
--- /dev/null
+++ b/data/.gitignore
@@ -0,0 +1 @@
ferdium.sqlite
diff --git a/database/factories/ServiceFactory.ts b/database/factories/ServiceFactory.ts
new file mode 100644
index 0000000..f675063
--- /dev/null
+++ b/database/factories/ServiceFactory.ts
@@ -0,0 +1,8 @@
1import Service from 'App/Models/Service';
2import Factory from '@ioc:Adonis/Lucid/Factory';
3
4export default Factory.define(Service, ({ faker }) => ({
5 name: faker.company.name(),
6 recipeId: faker.string.alphanumeric(9),
7 serviceId: faker.string.alphanumeric(10),
8})).build();
diff --git a/database/factories/TokenFactory.ts b/database/factories/TokenFactory.ts
new file mode 100644
index 0000000..5afc679
--- /dev/null
+++ b/database/factories/TokenFactory.ts
@@ -0,0 +1,17 @@
1import Token from 'App/Models/Token';
2import Factory from '@ioc:Adonis/Lucid/Factory';
3import { DateTime } from 'luxon';
4
5export default Factory.define(Token, async ({ faker }) => ({
6 token: faker.string.alphanumeric(32),
7 type: 'forgot_password',
8 is_revoked: false,
9 created_at: DateTime.now(),
10 updated_at: DateTime.now(),
11}))
12 .state(
13 'old_token',
14 token => (token.updated_at = DateTime.now().minus({ hours: 25 })),
15 )
16 .state('revoked', token => (token.is_revoked = true))
17 .build();
diff --git a/database/factories/UserFactory.ts b/database/factories/UserFactory.ts
new file mode 100644
index 0000000..ee6553e
--- /dev/null
+++ b/database/factories/UserFactory.ts
@@ -0,0 +1,21 @@
1import User from 'App/Models/User';
2import Factory from '@ioc:Adonis/Lucid/Factory';
3import WorkspaceFactory from './WorkspaceFactory';
4import ServiceFactory from './ServiceFactory';
5import crypto from 'node:crypto';
6
7const hashedPassword = crypto
8 .createHash('sha256')
9 .update('password')
10 .digest('base64');
11
12export default Factory.define(User, async ({ faker }) => ({
13 email: faker.internet.email(),
14 username: faker.internet.userName(),
15 password: hashedPassword,
16 // eslint-disable-next-line unicorn/prefer-string-replace-all
17 lastname: faker.person.lastName().replace(/'/g, ''),
18}))
19 .relation('workspaces', () => WorkspaceFactory)
20 .relation('services', () => ServiceFactory)
21 .build();
diff --git a/database/factories/WorkspaceFactory.ts b/database/factories/WorkspaceFactory.ts
new file mode 100644
index 0000000..40cda6b
--- /dev/null
+++ b/database/factories/WorkspaceFactory.ts
@@ -0,0 +1,7 @@
1import Workspace from 'App/Models/Workspace';
2import Factory from '@ioc:Adonis/Lucid/Factory';
3
4export default Factory.define(Workspace, ({ faker }) => ({
5 name: faker.internet.userName(),
6 workspaceId: faker.string.alphanumeric(10),
7})).build();
diff --git a/database/factory.js b/database/factory.js
deleted file mode 100644
index 550c5e6..0000000
--- a/database/factory.js
+++ /dev/null
@@ -1,20 +0,0 @@
1
2/*
3|--------------------------------------------------------------------------
4| Factory
5|--------------------------------------------------------------------------
6|
7| Factories are used to define blueprints for database tables or Lucid
8| models. Later you can use these blueprints to seed your database
9| with dummy data.
10|
11*/
12
13/** @type {import('@adonisjs/lucid/src/Factory')} */
14// const Factory = use('Factory')
15
16// Factory.blueprint('App/Models/User', (faker) => {
17// return {
18// username: faker.username()
19// }
20// })
diff --git a/database/migrations/1503250034279_user.js b/database/migrations/1503250034279_user.js
deleted file mode 100644
index 77f3cee..0000000
--- a/database/migrations/1503250034279_user.js
+++ /dev/null
@@ -1,22 +0,0 @@
1
2/** @type {import('@adonisjs/lucid/src/Schema')} */
3const Schema = use('Schema');
4
5class UserSchema extends Schema {
6 up() {
7 this.create('users', (table) => {
8 table.increments();
9 table.string('username', 80).notNullable();
10 table.string('email', 254).notNullable().unique();
11 table.string('password', 60).notNullable();
12 table.json('settings');
13 table.timestamps();
14 });
15 }
16
17 down() {
18 this.drop('users');
19 }
20}
21
22module.exports = UserSchema;
diff --git a/database/migrations/1503250034279_user.ts b/database/migrations/1503250034279_user.ts
new file mode 100644
index 0000000..262a472
--- /dev/null
+++ b/database/migrations/1503250034279_user.ts
@@ -0,0 +1,20 @@
1import BaseSchema from '@ioc:Adonis/Lucid/Schema';
2
3export default class extends BaseSchema {
4 protected tableName = 'users';
5
6 public async up(): Promise<void> {
7 this.schema.createTable(this.tableName, table => {
8 table.increments();
9 table.string('username', 80).notNullable();
10 table.string('email', 254).notNullable().unique();
11 table.string('password', 60).notNullable();
12 table.json('settings');
13 table.timestamps();
14 });
15 }
16
17 public async down(): Promise<void> {
18 this.schema.dropTable(this.tableName);
19 }
20}
diff --git a/database/migrations/1503250034280_token.js b/database/migrations/1503250034280_token.js
deleted file mode 100644
index ad97dba..0000000
--- a/database/migrations/1503250034280_token.js
+++ /dev/null
@@ -1,22 +0,0 @@
1
2/** @type {import('@adonisjs/lucid/src/Schema')} */
3const Schema = use('Schema');
4
5class TokensSchema extends Schema {
6 up() {
7 this.create('tokens', (table) => {
8 table.increments();
9 table.integer('user_id').unsigned().references('id').inTable('users');
10 table.string('token', 255).notNullable().unique().index();
11 table.string('type', 80).notNullable();
12 table.boolean('is_revoked').defaultTo(false);
13 table.timestamps();
14 });
15 }
16
17 down() {
18 this.drop('tokens');
19 }
20}
21
22module.exports = TokensSchema;
diff --git a/database/migrations/1503250034280_token.ts b/database/migrations/1503250034280_token.ts
new file mode 100644
index 0000000..5a030d0
--- /dev/null
+++ b/database/migrations/1503250034280_token.ts
@@ -0,0 +1,20 @@
1import BaseSchema from '@ioc:Adonis/Lucid/Schema';
2
3export default class extends BaseSchema {
4 protected tableName = 'tokens';
5
6 public async up(): Promise<void> {
7 this.schema.createTable(this.tableName, table => {
8 table.increments();
9 table.integer('user_id').unsigned().references('users.id');
10 table.string('token', 255).notNullable().unique().index();
11 table.string('type', 80).notNullable();
12 table.boolean('is_revoked').defaultTo(false);
13 table.timestamps();
14 });
15 }
16
17 public async down(): Promise<void> {
18 this.schema.dropTable(this.tableName);
19 }
20}
diff --git a/database/migrations/1566385379883_service_schema.js b/database/migrations/1566385379883_service_schema.js
deleted file mode 100644
index 093fb13..0000000
--- a/database/migrations/1566385379883_service_schema.js
+++ /dev/null
@@ -1,23 +0,0 @@
1
2/** @type {import('@adonisjs/lucid/src/Schema')} */
3const Schema = use('Schema');
4
5class ServiceSchema extends Schema {
6 up() {
7 this.create('services', (table) => {
8 table.increments();
9 table.string('userId', 80).notNullable();
10 table.string('serviceId', 80).notNullable();
11 table.string('name', 80).notNullable();
12 table.string('recipeId', 254).notNullable();
13 table.json('settings');
14 table.timestamps();
15 });
16 }
17
18 down() {
19 this.drop('services');
20 }
21}
22
23module.exports = ServiceSchema;
diff --git a/database/migrations/1566385379883_service_schema.ts b/database/migrations/1566385379883_service_schema.ts
new file mode 100644
index 0000000..9c3e23d
--- /dev/null
+++ b/database/migrations/1566385379883_service_schema.ts
@@ -0,0 +1,21 @@
1import BaseSchema from '@ioc:Adonis/Lucid/Schema';
2
3export default class extends BaseSchema {
4 protected tableName = 'services';
5
6 public async up(): Promise<void> {
7 this.schema.createTable(this.tableName, table => {
8 table.increments();
9 table.string('userId', 80).notNullable();
10 table.string('serviceId', 80).notNullable();
11 table.string('name', 80).notNullable();
12 table.string('recipeId', 254).notNullable();
13 table.json('settings');
14 table.timestamps();
15 });
16 }
17
18 public async down(): Promise<void> {
19 this.schema.dropTable(this.tableName);
20 }
21}
diff --git a/database/migrations/1566554231482_recipe_schema.js b/database/migrations/1566554231482_recipe_schema.js
deleted file mode 100644
index 14fcb82..0000000
--- a/database/migrations/1566554231482_recipe_schema.js
+++ /dev/null
@@ -1,21 +0,0 @@
1
2/** @type {import('@adonisjs/lucid/src/Schema')} */
3const Schema = use('Schema');
4
5class RecipeSchema extends Schema {
6 up() {
7 this.create('recipes', (table) => {
8 table.increments();
9 table.string('name', 80).notNullable();
10 table.string('recipeId', 254).notNullable().unique();
11 table.json('data');
12 table.timestamps();
13 });
14 }
15
16 down() {
17 this.drop('recipes');
18 }
19}
20
21module.exports = RecipeSchema;
diff --git a/database/migrations/1566554231482_recipe_schema.ts b/database/migrations/1566554231482_recipe_schema.ts
new file mode 100644
index 0000000..3a9784d
--- /dev/null
+++ b/database/migrations/1566554231482_recipe_schema.ts
@@ -0,0 +1,19 @@
1import BaseSchema from '@ioc:Adonis/Lucid/Schema';
2
3export default class extends BaseSchema {
4 protected tableName = 'recipes';
5
6 public async up(): Promise<void> {
7 this.schema.createTable(this.tableName, table => {
8 table.increments();
9 table.string('name', 80).notNullable();
10 table.string('recipeId', 254).notNullable().unique();
11 table.json('data');
12 table.timestamps();
13 });
14 }
15
16 public async down(): Promise<void> {
17 this.schema.dropTable(this.tableName);
18 }
19}
diff --git a/database/migrations/1566554359294_workspace_schema.js b/database/migrations/1566554359294_workspace_schema.ts
index 0a3c138..77e1189 100644
--- a/database/migrations/1566554359294_workspace_schema.js
+++ b/database/migrations/1566554359294_workspace_schema.ts
@@ -1,10 +1,10 @@
1import BaseSchema from '@ioc:Adonis/Lucid/Schema';
1 2
2/** @type {import('@adonisjs/lucid/src/Schema')} */ 3export default class extends BaseSchema {
3const Schema = use('Schema'); 4 protected tableName = 'workspaces';
4 5
5class WorkspaceSchema extends Schema { 6 public async up(): Promise<void> {
6 up() { 7 this.schema.createTable(this.tableName, table => {
7 this.create('workspaces', (table) => {
8 table.increments(); 8 table.increments();
9 table.string('workspaceId', 80).notNullable().unique(); 9 table.string('workspaceId', 80).notNullable().unique();
10 table.string('userId', 80).notNullable(); 10 table.string('userId', 80).notNullable();
@@ -16,9 +16,7 @@ class WorkspaceSchema extends Schema {
16 }); 16 });
17 } 17 }
18 18
19 down() { 19 public async down(): Promise<void> {
20 this.drop('workspaces'); 20 this.schema.dropTable(this.tableName);
21 } 21 }
22} 22}
23
24module.exports = WorkspaceSchema;
diff --git a/database/migrations/1612629845398_users_update_schema.js b/database/migrations/1612629845398_users_update_schema.js
deleted file mode 100644
index 10b82aa..0000000
--- a/database/migrations/1612629845398_users_update_schema.js
+++ /dev/null
@@ -1,18 +0,0 @@
1/** @type {import('@adonisjs/lucid/src/Schema')} */
2const Schema = use('Schema');
3
4class UsersUpdateSchema extends Schema {
5 up() {
6 this.table('users', (table) => {
7 table.string('lastname', 80).notNullable().default('');
8 });
9 }
10
11 down() {
12 this.table('users', (table) => {
13 table.dropColumn('lastname');
14 });
15 }
16}
17
18module.exports = UsersUpdateSchema;
diff --git a/database/migrations/1612629845398_users_update_schema.ts b/database/migrations/1612629845398_users_update_schema.ts
new file mode 100644
index 0000000..8831ea4
--- /dev/null
+++ b/database/migrations/1612629845398_users_update_schema.ts
@@ -0,0 +1,15 @@
1import BaseSchema from '@ioc:Adonis/Lucid/Schema';
2
3export default class extends BaseSchema {
4 public async up(): Promise<void> {
5 this.schema.alterTable('users', table => {
6 table.string('lastname', 80).notNullable().defaultTo('');
7 });
8 }
9
10 public async down(): Promise<void> {
11 this.schema.alterTable('users', table => {
12 table.dropColumn('lastname');
13 });
14 }
15}
diff --git a/database/migrations/1658076326250_correct_token_relations.ts b/database/migrations/1658076326250_correct_token_relations.ts
new file mode 100644
index 0000000..5486657
--- /dev/null
+++ b/database/migrations/1658076326250_correct_token_relations.ts
@@ -0,0 +1,22 @@
1import BaseSchema from '@ioc:Adonis/Lucid/Schema';
2
3export default class extends BaseSchema {
4 protected tableName = 'tokens';
5
6 public async up(): Promise<void> {
7 await this.db.rawQuery(
8 'DELETE FROM tokens WHERE user_id NOT IN (SELECT id FROM users)',
9 );
10
11 this.schema.alterTable(this.tableName, table => {
12 table.dropForeign('user_id');
13
14 table.foreign('user_id').references('users.id').onDelete('cascade');
15 });
16 }
17
18 public async down(): Promise<void> {
19 // Don't set it back withouth onDelete as the
20 // tests will break.
21 }
22}
diff --git a/database/migrations/1696110557648_jwt_tokens.ts b/database/migrations/1696110557648_jwt_tokens.ts
new file mode 100644
index 0000000..9400de7
--- /dev/null
+++ b/database/migrations/1696110557648_jwt_tokens.ts
@@ -0,0 +1,29 @@
1import BaseSchema from '@ioc:Adonis/Lucid/Schema';
2
3export default class JwtTokens extends BaseSchema {
4 protected tableName = 'jwt_tokens';
5
6 public async up() {
7 this.schema.createTable(this.tableName, table => {
8 table.increments('id').primary();
9 table
10 .integer('user_id')
11 .unsigned()
12 .references('users.id')
13 .onDelete('CASCADE');
14 table.string('name').notNullable();
15 table.string('type').notNullable();
16 table.string('token', 64).notNullable().unique();
17 table.timestamp('expires_at', { useTz: true }).nullable();
18 table.string('refresh_token').notNullable().unique().index();
19 table
20 .timestamp('refresh_token_expires_at', { useTz: true })
21 .notNullable();
22 table.timestamp('created_at', { useTz: true }).notNullable();
23 });
24 }
25
26 public async down() {
27 this.schema.dropTable(this.tableName);
28 }
29}
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
index d2985d3..62c13e4 100644
--- a/docker/docker-compose.yml
+++ b/docker/docker-compose.yml
@@ -1,7 +1,7 @@
1version: "2" 1version: "2"
2services: 2services:
3 ferdium-server: 3 ferdium-server:
4 image: ferdium/ferdium-server:latest 4 image: ferdium-server
5 container_name: ferdium-server 5 container_name: ferdium-server
6 environment: 6 environment:
7 - NODE_ENV=development 7 - NODE_ENV=development
@@ -25,8 +25,7 @@ services:
25 - IS_REGISTRATION_ENABLED=true 25 - IS_REGISTRATION_ENABLED=true
26 - CONNECT_WITH_FRANZ=false 26 - CONNECT_WITH_FRANZ=false
27 - DATA_DIR=/data 27 - DATA_DIR=/data
28 - PUID=1000 28 - JWT_USE_PEM=true
29 - PGID=1000
30 volumes: 29 volumes:
31 - ferdium-database-vol:/data 30 - ferdium-database-vol:/data
32 - ferdium-recipes-vol:/app/recipes 31 - ferdium-recipes-vol:/app/recipes
@@ -34,5 +33,4 @@ services:
34 - 3333:3333 33 - 3333:3333
35 restart: unless-stopped 34 restart: unless-stopped
36volumes: 35volumes:
37 ferdium-database-vol:
38 ferdium-recipes-vol: 36 ferdium-recipes-vol:
diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh
index 4178d97..b2f4924 100755
--- a/docker/entrypoint.sh
+++ b/docker/entrypoint.sh
@@ -17,18 +17,23 @@ Brought to you by ferdium.org
17EOL 17EOL
18 18
19# Update recipes from official git repository 19# Update recipes from official git repository
20
21# We need to set NODE_ENV to development to install devDependencies
22SAVE_NODE_ENV=$NODE_ENV
23NODE_ENV=development
24
20if [ ! -d "/app/recipes/.git" ]; # When we mount an existing volume (ferdium-recipes-vol:/app/recipes) if this is only /app/recipes it is always true 25if [ ! -d "/app/recipes/.git" ]; # When we mount an existing volume (ferdium-recipes-vol:/app/recipes) if this is only /app/recipes it is always true
21then 26then
22 echo '**** Generating recipes for first run ****' 27 echo '**** Generating recipes for first run ****'
23 git clone --branch main https://github.com/ferdium/ferdium-recipes recipes 28 git clone --branch main https://github.com/ferdium/ferdium-recipes recipes
24else 29else
25 echo '**** Updating recipes ****' 30 echo '**** Updating recipes ****'
26 chown -R root /app/recipes # Fixes ownership problem when doing git pull -r 31 chown -R root /app/recipes # Fixes ownership problem when doing git pull -r
27 cd recipes 32 cd recipes
28 git stash -u 33 git stash -u
29 git pull -r 34 git pull -r
30 git stash pop 35 git stash pop
31 cd .. 36 cd ..
32fi 37fi
33 38
34cd recipes 39cd recipes
@@ -39,31 +44,72 @@ pnpm i
39pnpm package 44pnpm package
40cd .. 45cd ..
41 46
47# Restore NODE_ENV
48NODE_ENV=$SAVE_NODE_ENV
49
42key_file="${DATA_DIR}/FERDIUM_APP_KEY.txt" 50key_file="${DATA_DIR}/FERDIUM_APP_KEY.txt"
43 51
44print_app_key_message() { 52print_app_key_message() {
45 app_key=$1 53 app_key=$1
46 printf '**** App key is %s. ' ${app_key} 54 printf '**** App key is %s. ' ${app_key}
47 printf 'You can modify `%s` to update the app key ****\n' ${key_file} 55 printf 'You can modify `%s` to update the app key ****\n' ${key_file}
48} 56}
49 57
50# Create APP key if needed 58# Create APP key if needed
51if [ -z ${APP_KEY} ] && [ ! -f ${key_file} ] 59if [ -z ${APP_KEY} ] && [ ! -f ${key_file} ]
52then 60then
53 echo '**** Generating Ferdium-server app key for first run ****' 61 echo '**** Generating Ferdium-server app key for first run ****'
54 adonis key:generate 62 adonis key:generate
55 APP_KEY=$(grep APP_KEY .env | cut -d '=' -f2) 63 APP_KEY=$(grep APP_KEY .env | cut -d '=' -f2)
56 echo ${APP_KEY} > ${key_file} 64 echo ${APP_KEY} > ${key_file}
57 print_app_key_message ${APP_KEY} 65 print_app_key_message ${APP_KEY}
58else 66else
59 APP_KEY=$(cat ${key_file}) 67 APP_KEY=$(cat ${key_file})
60 print_app_key_message ${APP_KEY} 68 print_app_key_message ${APP_KEY}
61fi 69fi
62 70
71# -------------------------------------
72# Create JWT public/private keys if needed
73
74# Check if JWT_USE_PEM is true
75if [ "$JWT_USE_PEM" = "true" ]; then
76 # Define file paths for public and private keys
77 publicKeyFile="${DATA_DIR}/FERDIUM_JWT_PUBLIC_KEY.pem"
78 privateKeyFile="${DATA_DIR}/FERDIUM_JWT_PRIVATE_KEY.pem"
79 # Check if public and private key files exist
80 if [ ! -f "$publicKeyFile" ] || [ ! -f "$privateKeyFile" ]; then
81 echo "Generating public and private keys..."
82
83 # Use Node.js to generate the keys
84 node ace jwt:generate-keys $DATA_DIR
85 mv ${DATA_DIR}/public.pem ${publicKeyFile}
86 mv ${DATA_DIR}/private.pem ${privateKeyFile}
87
88 echo "Public and private keys generated successfully."
89 else
90 echo "Using existing public and private keys."
91 fi
92 JWT_PUBLIC_KEY=$(cat ${publicKeyFile})
93 JWT_PRIVATE_KEY=$(cat ${privateKeyFile})
94 export JWT_PUBLIC_KEY
95 export JWT_PRIVATE_KEY
96else
97 echo "JWT_USE_PEM is not set to true. Skipping JWT certificate generation."
98fi
99# End of JWT public/private keys
100# -------------------------------------
101
63export APP_KEY 102export APP_KEY
64 103
65node ace migration:run --force 104# Enable the errexit option
105set -e
66 106
67chown -R "${PUID:-1000}":"${PGID:-1000}" "${DATA_DIR}" /app # This is the cause of the problem on line 29/32 107# Run the script to migrate from AdonisJS v4 to v5
108sh /app/scripts/adonisjs-4-to-5.sh
109
110# Disable the errexit option
111set +e
112
113node ace migration:run --force
68 114
69su-exec "${PUID:-1000}":"${PGID:-1000}" node server.js 115node build/server.js
diff --git a/env.ts b/env.ts
new file mode 100644
index 0000000..1f163b0
--- /dev/null
+++ b/env.ts
@@ -0,0 +1,25 @@
1/*
2|--------------------------------------------------------------------------
3| Validating Environment Variables
4|--------------------------------------------------------------------------
5|
6| In this file we define the rules for validating environment variables.
7| By performing validation we ensure that your application is running in
8| a stable environment with correct configuration values.
9|
10| This file is read automatically by the framework during the boot lifecycle
11| and hence do not rename or move this file to a different location.
12|
13*/
14
15import Env from '@ioc:Adonis/Core/Env';
16
17export default Env.rules({
18 HOST: Env.schema.string({ format: 'host' }),
19 PORT: Env.schema.number(),
20
21 APP_KEY: Env.schema.string(),
22 APP_NAME: Env.schema.string(),
23
24 NODE_ENV: Env.schema.enum(['development', 'production', 'test'] as const),
25});
diff --git a/helpers/PasswordHash.ts b/helpers/PasswordHash.ts
new file mode 100644
index 0000000..be3da2c
--- /dev/null
+++ b/helpers/PasswordHash.ts
@@ -0,0 +1,24 @@
1import User from 'App/Models/User';
2import Hash from '@ioc:Adonis/Core/Hash';
3
4export async function handleVerifyAndReHash(
5 user: User,
6 passwordToTest: string,
7): Promise<boolean> {
8 // Verify password
9 const usesLegacyHasher = /^\$2[aby]/.test(user.password);
10 let isMatchedPassword = false;
11
12 isMatchedPassword = await (usesLegacyHasher
13 ? Hash.use('legacy').verify(user.password, passwordToTest)
14 : Hash.verify(user.password, passwordToTest));
15
16 // TODO: For some reason this is not working (user can't login after re-hashing)
17 // rehash user password
18 // if (usesLegacyHasher && isMatchedPassword) {
19 // user.password = await Hash.make(passwordToTest);
20 // await user.save();
21 // }
22
23 return isMatchedPassword;
24}
diff --git a/logo.png b/logo.png
deleted file mode 100644
index 5fc6076..0000000
--- a/logo.png
+++ /dev/null
Binary files differ
diff --git a/package.json b/package.json
index c998462..1e40807 100644
--- a/package.json
+++ b/package.json
@@ -1,67 +1,108 @@
1{ 1{
2 "name": "ferdium-server", 2 "name": "ferdium-server",
3 "version": "1.3.16", 3 "version": "2.0.0",
4 "adonis-version": "4.1.0",
5 "description": "Ferdium server to replace the default Franz/Ferdi server.", 4 "description": "Ferdium server to replace the default Franz/Ferdi server.",
6 "main": "index.js",
7 "engines": { 5 "engines": {
8 "node": "18.18.0", 6 "node": "18.18.0",
9 "pnpm": "8.7.6", 7 "pnpm": "8.7.6",
10 "python": "3.11.1" 8 "python": "3.11.1"
11 }, 9 },
12 "scripts": { 10 "engine-strict": true,
13 "prepare": "is-ci || husky install", 11 "volta": {
14 "start": "node server.js", 12 "node": "18.18.0",
15 "test": "node ace test", 13 "pnpm": "8.7.6",
16 "lint": "eslint \"{app,public,start}/**/*.js\" --quiet --fix", 14 "python": "3.11.1"
17 "contributors": "all-contributors"
18 }, 15 },
19 "keywords": [
20 "adonisjs",
21 "adonis-app"
22 ],
23 "author": "",
24 "homepage": "https://github.com/ferdium/ferdium-server", 16 "homepage": "https://github.com/ferdium/ferdium-server",
25 "license": "MIT License", 17 "license": "MIT License",
26 "private": true, 18 "scripts": {
27 "dependencies": { 19 "prepare": "is-ci || husky install",
28 "@adonisjs/ace": "^5.0.8", 20 "dev": "cross-env-shell ENV_PATH=.env.development node ace serve --watch",
29 "@adonisjs/auth": "^3.0.7", 21 "migrate": "cross-env-shell ENV_PATH=.env.development node ace migration:run",
30 "@adonisjs/bodyparser": "^2.0.5", 22 "status": "cross-env-shell ENV_PATH=.env.development node ace migration:status",
31 "@adonisjs/cors": "^1.0.7", 23 "build": "node ace build --production",
32 "@adonisjs/drive": "^1.0.4", 24 "start": "cross-env-shell ENV_PATH=.env node build/server.js",
33 "@adonisjs/fold": "^4.0.9", 25 "test": "cross-env-shell ENV_PATH=.env.test node ace test",
34 "@adonisjs/framework": "^5.0.9", 26 "typecheck": "tsc --noEmit",
35 "@adonisjs/ignitor": "^2.0.8", 27 "lint": "eslint \"**/*.{js,ts}\"",
36 "@adonisjs/lucid": "^6.1.3", 28 "lint:fix": "pnpm lint --fix",
37 "@adonisjs/mail": "^3.0.10", 29 "reformat-files": "prettier --ignore-path .eslintignore --write \"**/*.{js,ts,scss,json}\"",
38 "@adonisjs/persona": "^1.0.5", 30 "prepare-code": "pnpm typecheck && pnpm lint:fix && pnpm reformat-files && pnpm test"
39 "@adonisjs/session": "^1.0.29",
40 "@adonisjs/shield": "^1.0.8",
41 "@adonisjs/validator": "^5.0.6",
42 "@sentry/node": "^5.15.4",
43 "atob": "^2.1.2",
44 "btoa": "^1.2.1",
45 "fs-extra": "^8.1.0",
46 "mysql": "2.18.1",
47 "node-fetch": "^2.6.7",
48 "pg": "^8.0.3",
49 "sanitize-filename": "1.6.3",
50 "semver": "7.3.5",
51 "sqlite3": "^4.1.0",
52 "targz": "^1.0.1",
53 "uuid": "^8.3.2"
54 }, 31 },
55 "devDependencies": { 32 "devDependencies": {
56 "all-contributors-cli": "^6.20.0", 33 "@adonisjs/assembler": "5.9.5",
57 "eslint": "^7.32.0", 34 "@japa/preset-adonis": "1.2.0",
58 "eslint-config-airbnb-base": "^14.2.1", 35 "@japa/runner": "2.5.1",
59 "eslint-plugin-import": "^2.23.4", 36 "@symfony/webpack-encore": "4.4.0",
60 "husky": "^7.0.1", 37 "@types/bcrypt": "5.0.0",
38 "@types/fs-extra": "11.0.1",
39 "@types/luxon": "3.3.1",
40 "@types/node-fetch": "2.6.4",
41 "@types/proxy-addr": "^2.0.0",
42 "@types/semver": "7.5.0",
43 "@types/source-map-support": "0.5.6",
44 "@types/targz": "1.0.1",
45 "@types/uuid": "9.0.2",
46 "@typescript-eslint/eslint-plugin": "6.2.0",
47 "@typescript-eslint/parser": "6.2.0",
48 "adonis-preset-ts": "2.1.0",
49 "cross-env": "7.0.3",
50 "eslint": "8.46.0",
51 "eslint-config-prettier": "8.9.0",
52 "eslint-plugin-adonis": "2.1.1",
53 "eslint-plugin-import": "2.28.0",
54 "eslint-plugin-prettier": "5.0.0",
55 "eslint-plugin-unicorn": "48.0.1",
56 "husky": "8.0.3",
61 "is-ci": "3.0.1", 57 "is-ci": "3.0.1",
62 "prettier": "2.3.2" 58 "pino-pretty": "10.2.0",
59 "prettier": "3.0.0",
60 "typescript": "5.1.6",
61 "youch": "3.2.3",
62 "youch-terminal": "2.2.2"
63 },
64 "dependencies": {
65 "@adonisjs/auth": "8.2.3",
66 "@adonisjs/core": "5.9.0",
67 "@adonisjs/lucid": "18.4.0",
68 "@adonisjs/mail": "8.2.0",
69 "@adonisjs/repl": "3.1.11",
70 "@adonisjs/session": "6.4.0",
71 "@adonisjs/shield": "7.1.1",
72 "@adonisjs/view": "6.2.0",
73 "adonis5-jwt": "github:SpecialAro/adonis5-jwt#34941c10adcf89583a40767552b994ea499b92e3",
74 "aws-sdk": "2.1425.0",
75 "bcrypt": "5.1.1",
76 "fs-extra": "11.1.1",
77 "jose": "4.14.6",
78 "luxon": "3.3.0",
79 "moment": "2.29.4",
80 "mysql": "2.18.1",
81 "node-fetch": "2",
82 "pg": "8.11.1",
83 "phc-bcrypt": "1.0.8",
84 "proxy-addr": "2.0.7",
85 "rand-token": "1.0.1",
86 "reflect-metadata": "0.1.13",
87 "sanitize-filename": "1.6.3",
88 "semver": "7.5.4",
89 "source-map-support": "0.5.21",
90 "sqlite3": "5.1.6",
91 "targz": "1.0.1",
92 "uuid": "9.0.0"
63 }, 93 },
64 "autoload": { 94 "pnpm": {
65 "App": "./app" 95 "allowedDeprecatedVersions": {
96 "@npmcli/move-file": "1.1.2",
97 "@types/pino-pretty": "5.0.0",
98 "@types/pino-std-serializers": "4.0.0",
99 "cuid": "2.1.8",
100 "querystring": "0.2.0",
101 "resolve-url": "0.2.1",
102 "source-map-resolve": "0.5.3",
103 "source-map-url": "0.4.1",
104 "stable": "0.1.8",
105 "urix": "0.1.0"
106 }
66 } 107 }
67} 108}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index cd87c6f..ae833fc 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,356 +1,1848 @@
1lockfileVersion: 5.4 1lockfileVersion: '6.0'
2 2
3specifiers: 3settings:
4 '@adonisjs/ace': ^5.0.8 4 autoInstallPeers: true
5 '@adonisjs/auth': ^3.0.7 5 excludeLinksFromLockfile: false
6 '@adonisjs/bodyparser': ^2.0.5
7 '@adonisjs/cors': ^1.0.7
8 '@adonisjs/drive': ^1.0.4
9 '@adonisjs/fold': ^4.0.9
10 '@adonisjs/framework': ^5.0.9
11 '@adonisjs/ignitor': ^2.0.8
12 '@adonisjs/lucid': ^6.1.3
13 '@adonisjs/mail': ^3.0.10
14 '@adonisjs/persona': ^1.0.5
15 '@adonisjs/session': ^1.0.29
16 '@adonisjs/shield': ^1.0.8
17 '@adonisjs/validator': ^5.0.6
18 '@sentry/node': ^5.15.4
19 all-contributors-cli: ^6.20.0
20 atob: ^2.1.2
21 btoa: ^1.2.1
22 eslint: ^7.32.0
23 eslint-config-airbnb-base: ^14.2.1
24 eslint-plugin-import: ^2.23.4
25 fs-extra: ^8.1.0
26 husky: ^7.0.1
27 is-ci: 3.0.1
28 mysql: 2.18.1
29 node-fetch: ^2.6.7
30 pg: ^8.0.3
31 prettier: 2.3.2
32 sanitize-filename: 1.6.3
33 semver: 7.3.5
34 sqlite3: ^4.1.0
35 targz: ^1.0.1
36 uuid: ^8.3.2
37 6
38dependencies: 7dependencies:
39 '@adonisjs/ace': 5.1.0 8 '@adonisjs/auth':
40 '@adonisjs/auth': 3.2.0 9 specifier: 8.2.3
41 '@adonisjs/bodyparser': 2.3.0 10 version: 8.2.3(@adonisjs/application@5.3.0)(@adonisjs/core@5.9.0)(@adonisjs/lucid@18.4.0)(@adonisjs/session@6.4.0)
42 '@adonisjs/cors': 1.0.7 11 '@adonisjs/core':
43 '@adonisjs/drive': 1.0.4 12 specifier: 5.9.0
44 '@adonisjs/fold': 4.1.0 13 version: 5.9.0
45 '@adonisjs/framework': 5.0.13 14 '@adonisjs/lucid':
46 '@adonisjs/ignitor': 2.0.8 15 specifier: 18.4.0
47 '@adonisjs/lucid': 6.3.0_siu2g6ofdcuoryphtpy44uq2je 16 version: 18.4.0(@adonisjs/application@5.3.0)(@adonisjs/core@5.9.0)(mysql@2.18.1)(pg@8.11.1)(sqlite3@5.1.6)
48 '@adonisjs/mail': 3.1.0 17 '@adonisjs/mail':
49 '@adonisjs/persona': 1.0.5 18 specifier: 8.2.0
50 '@adonisjs/session': 1.1.0 19 version: 8.2.0(@adonisjs/core@5.9.0)(@adonisjs/view@6.2.0)(@types/luxon@3.3.1)(luxon@3.3.0)(moment@2.29.4)
51 '@adonisjs/shield': 1.1.0 20 '@adonisjs/repl':
52 '@adonisjs/validator': 5.1.0 21 specifier: 3.1.11
53 '@sentry/node': 5.30.0 22 version: 3.1.11(@adonisjs/core@5.9.0)
54 atob: 2.1.2 23 '@adonisjs/session':
55 btoa: 1.2.1 24 specifier: 6.4.0
56 fs-extra: 8.1.0 25 version: 6.4.0(@adonisjs/core@5.9.0)
57 mysql: 2.18.1 26 '@adonisjs/shield':
58 node-fetch: 2.6.7 27 specifier: 7.1.1
59 pg: 8.8.0 28 version: 7.1.1(@adonisjs/core@5.9.0)(@adonisjs/session@6.4.0)(@adonisjs/view@6.2.0)
60 sanitize-filename: 1.6.3 29 '@adonisjs/view':
61 semver: 7.3.5 30 specifier: 6.2.0
62 sqlite3: 4.2.0 31 version: 6.2.0(@adonisjs/core@5.9.0)
63 targz: 1.0.1 32 adonis5-jwt:
64 uuid: 8.3.2 33 specifier: github:SpecialAro/adonis5-jwt#34941c10adcf89583a40767552b994ea499b92e3
34 version: github.com/SpecialAro/adonis5-jwt/34941c10adcf89583a40767552b994ea499b92e3
35 aws-sdk:
36 specifier: 2.1425.0
37 version: 2.1425.0
38 bcrypt:
39 specifier: 5.1.1
40 version: 5.1.1
41 fs-extra:
42 specifier: 11.1.1
43 version: 11.1.1
44 jose:
45 specifier: 4.14.6
46 version: 4.14.6
47 luxon:
48 specifier: 3.3.0
49 version: 3.3.0
50 moment:
51 specifier: 2.29.4
52 version: 2.29.4
53 mysql:
54 specifier: 2.18.1
55 version: 2.18.1
56 node-fetch:
57 specifier: '2'
58 version: 2.7.0
59 pg:
60 specifier: 8.11.1
61 version: 8.11.1
62 phc-bcrypt:
63 specifier: 1.0.8
64 version: 1.0.8
65 proxy-addr:
66 specifier: 2.0.7
67 version: 2.0.7
68 rand-token:
69 specifier: 1.0.1
70 version: 1.0.1
71 reflect-metadata:
72 specifier: 0.1.13
73 version: 0.1.13
74 sanitize-filename:
75 specifier: 1.6.3
76 version: 1.6.3
77 semver:
78 specifier: 7.5.4
79 version: 7.5.4
80 source-map-support:
81 specifier: 0.5.21
82 version: 0.5.21
83 sqlite3:
84 specifier: 5.1.6
85 version: 5.1.6
86 targz:
87 specifier: 1.0.1
88 version: 1.0.1
89 uuid:
90 specifier: 9.0.0
91 version: 9.0.0
65 92
66devDependencies: 93devDependencies:
67 all-contributors-cli: 6.24.0 94 '@adonisjs/assembler':
68 eslint: 7.32.0 95 specifier: 5.9.5
69 eslint-config-airbnb-base: 14.2.1_hpmu7kn6tcn2vnxpfzvv33bxmy 96 version: 5.9.5(@adonisjs/core@5.9.0)
70 eslint-plugin-import: 2.26.0_eslint@7.32.0 97 '@japa/preset-adonis':
71 husky: 7.0.4 98 specifier: 1.2.0
72 is-ci: 3.0.1 99 version: 1.2.0(@adonisjs/core@5.9.0)(@japa/runner@2.5.1)(openapi-types@12.1.3)
73 prettier: 2.3.2 100 '@japa/runner':
101 specifier: 2.5.1
102 version: 2.5.1
103 '@symfony/webpack-encore':
104 specifier: 4.4.0
105 version: 4.4.0(@babel/core@7.23.0)(@babel/preset-env@7.22.20)(eslint@8.46.0)(postcss@8.4.31)(typescript@5.1.6)(webpack-cli@5.1.4)(webpack@5.88.2)
106 '@types/bcrypt':
107 specifier: 5.0.0
108 version: 5.0.0
109 '@types/fs-extra':
110 specifier: 11.0.1
111 version: 11.0.1
112 '@types/luxon':
113 specifier: 3.3.1
114 version: 3.3.1
115 '@types/node-fetch':
116 specifier: 2.6.4
117 version: 2.6.4
118 '@types/proxy-addr':
119 specifier: ^2.0.0
120 version: 2.0.1
121 '@types/semver':
122 specifier: 7.5.0
123 version: 7.5.0
124 '@types/source-map-support':
125 specifier: 0.5.6
126 version: 0.5.6
127 '@types/targz':
128 specifier: 1.0.1
129 version: 1.0.1
130 '@types/uuid':
131 specifier: 9.0.2
132 version: 9.0.2
133 '@typescript-eslint/eslint-plugin':
134 specifier: 6.2.0
135 version: 6.2.0(@typescript-eslint/parser@6.2.0)(eslint@8.46.0)(typescript@5.1.6)
136 '@typescript-eslint/parser':
137 specifier: 6.2.0
138 version: 6.2.0(eslint@8.46.0)(typescript@5.1.6)
139 adonis-preset-ts:
140 specifier: 2.1.0
141 version: 2.1.0
142 cross-env:
143 specifier: 7.0.3
144 version: 7.0.3
145 eslint:
146 specifier: 8.46.0
147 version: 8.46.0
148 eslint-config-prettier:
149 specifier: 8.9.0
150 version: 8.9.0(eslint@8.46.0)
151 eslint-plugin-adonis:
152 specifier: 2.1.1
153 version: 2.1.1(eslint@8.46.0)(typescript@5.1.6)
154 eslint-plugin-import:
155 specifier: 2.28.0
156 version: 2.28.0(@typescript-eslint/parser@6.2.0)(eslint@8.46.0)
157 eslint-plugin-prettier:
158 specifier: 5.0.0
159 version: 5.0.0(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.0)
160 eslint-plugin-unicorn:
161 specifier: 48.0.1
162 version: 48.0.1(eslint@8.46.0)
163 husky:
164 specifier: 8.0.3
165 version: 8.0.3
166 is-ci:
167 specifier: 3.0.1
168 version: 3.0.1
169 pino-pretty:
170 specifier: 10.2.0
171 version: 10.2.0
172 prettier:
173 specifier: 3.0.0
174 version: 3.0.0
175 typescript:
176 specifier: 5.1.6
177 version: 5.1.6
178 youch:
179 specifier: 3.2.3
180 version: 3.2.3
181 youch-terminal:
182 specifier: 2.2.2
183 version: 2.2.2
74 184
75packages: 185packages:
76 186
77 /@adonisjs/ace/5.1.0: 187 /@aashutoshrathi/word-wrap@1.2.6:
78 resolution: {integrity: sha512-5G0E4U1nRMiE58HEtONZUqTCammEbCZS6iCvCNMgfeyZXrsmSxLe5XmD1StEFAbt1FUUkRxYl6f38xXhKxOHkg==} 188 resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
79 dependencies: 189 engines: {node: '>=0.10.0'}
80 cli-table: 0.3.11 190 dev: true
81 commander: 2.20.3 191
82 debug: 4.3.4 192 /@adonisjs/ace@11.3.1(@adonisjs/application@5.3.0):
83 enquirer: 1.0.3 193 resolution: {integrity: sha512-Ho3+Lk/16OSjX3CfhxsoLUTlcVG4sDlXUwHx+Zry/RLft5M6plT5ln0WkZvL7tqtb1uCZgP5YiMrMtDjSRzZLA==}
84 fast-levenshtein: 3.0.0 194 peerDependencies:
85 fs-extra: 9.1.0 195 '@adonisjs/application': ^5.0.0
86 is-arrow-function: 2.0.3 196 dependencies:
87 kleur: 2.0.2 197 '@adonisjs/application': 5.3.0
88 lodash: 4.17.21 198 '@poppinss/cliui': 3.0.5
199 '@poppinss/prompts': 2.0.2
200 '@poppinss/utils': 4.0.4
201 fs-extra: 10.1.0
202 getopts: 2.3.0
203 leven: 3.1.0
89 mustache: 4.2.0 204 mustache: 4.2.0
90 prompt-checkbox: 2.2.0 205 slash: 3.0.0
91 prompt-confirm: 2.0.4 206 term-size: 2.2.1
92 prompt-expand: 1.0.1 207
93 prompt-list: 3.2.0 208 /@adonisjs/application@5.3.0:
94 prompt-password: 1.2.0 209 resolution: {integrity: sha512-AruZZXMgOdmmRxJEHUbXoqhgRavPfhkeIR2nQtGyxbn0PCNjqlGraq8ypuLINY1J+wNuH2tt0xCS98EDeMdTOQ==}
210 dependencies:
211 '@adonisjs/config': 3.0.9
212 '@adonisjs/env': 3.0.9
213 '@adonisjs/fold': 8.2.0
214 '@adonisjs/logger': 4.1.5
215 '@adonisjs/profiler': 6.0.9(@adonisjs/logger@4.1.5)
216 '@poppinss/utils': 5.0.0
217 semver: 7.5.4
218
219 /@adonisjs/assembler@5.9.5(@adonisjs/core@5.9.0):
220 resolution: {integrity: sha512-wCtQRZ4KoIZkzi+ux5NrDUDNASRomytRZ7AZBdw8Hi3LlEOeac4T8+47y7gXwJFKH2nnGoiIwnXGIgJyolXEfQ==}
221 peerDependencies:
222 '@adonisjs/core': ^5.1.0
223 dependencies:
224 '@adonisjs/application': 5.3.0
225 '@adonisjs/core': 5.9.0
226 '@adonisjs/env': 3.0.9
227 '@adonisjs/ioc-transformer': 2.3.4
228 '@adonisjs/require-ts': 2.0.13
229 '@adonisjs/sink': 5.4.3(@adonisjs/application@5.3.0)
230 '@poppinss/chokidar-ts': 3.3.5
231 '@poppinss/cliui': 3.0.5
232 '@poppinss/utils': 5.0.0
233 cpy: 8.1.2
234 emittery: 0.13.1
235 execa: 5.1.1
236 fs-extra: 10.1.0
237 get-port: 5.1.1
238 glob-parent: 6.0.2
239 has-yarn: 2.1.0
240 picomatch: 2.3.1
241 slash: 3.0.0
95 transitivePeerDependencies: 242 transitivePeerDependencies:
96 - supports-color 243 - supports-color
97 dev: false 244 dev: true
98 245
99 /@adonisjs/auth/3.2.0: 246 /@adonisjs/auth@8.2.3(@adonisjs/application@5.3.0)(@adonisjs/core@5.9.0)(@adonisjs/lucid@18.4.0)(@adonisjs/session@6.4.0):
100 resolution: {integrity: sha512-Bawnpg8BaPrVmG1QhX3egw2SfYOtrOcMpn2q/ck58J9A4WUJAk1LZWXIeu2AF0jrASZuXlmdy4HIMFpl8NKVZg==} 247 resolution: {integrity: sha512-js9e8AHEsNC/8MGvho6MgL+uXr8SlhTg9MJJDWQBBiqsKkT7+H7NMP/pLbuSzYaaf40t2u/OXfq6wXuIC5ZYvw==}
248 peerDependencies:
249 '@adonisjs/core': ^5.7.1
250 '@adonisjs/i18n': ^1.5.0
251 '@adonisjs/lucid': ^18.0.0
252 '@adonisjs/redis': ^7.2.0
253 '@adonisjs/session': ^6.2.0
254 peerDependenciesMeta:
255 '@adonisjs/i18n':
256 optional: true
257 '@adonisjs/lucid':
258 optional: true
259 '@adonisjs/redis':
260 optional: true
261 '@adonisjs/session':
262 optional: true
101 dependencies: 263 dependencies:
102 '@adonisjs/generic-exceptions': 2.0.1 264 '@adonisjs/core': 5.9.0
103 basic-auth: 2.0.1 265 '@adonisjs/lucid': 18.4.0(@adonisjs/application@5.3.0)(@adonisjs/core@5.9.0)(mysql@2.18.1)(pg@8.11.1)(sqlite3@5.1.6)
104 debug: 4.3.4 266 '@adonisjs/session': 6.4.0(@adonisjs/core@5.9.0)
105 jsonwebtoken: 8.5.1 267 '@poppinss/hooks': 5.0.3(@adonisjs/application@5.3.0)
106 lodash: 4.17.21 268 '@poppinss/utils': 5.0.0
107 ms: 2.1.3 269 luxon: 3.3.0
108 resetable: 1.0.3
109 uuid: 8.3.2
110 transitivePeerDependencies: 270 transitivePeerDependencies:
111 - supports-color 271 - '@adonisjs/application'
112 dev: false 272 dev: false
113 273
114 /@adonisjs/bodyparser/2.3.0: 274 /@adonisjs/bodyparser@8.1.9(@adonisjs/application@5.3.0)(@adonisjs/drive@2.3.0)(@adonisjs/http-server@5.12.0):
115 resolution: {integrity: sha512-VIC8klEZsz2Zpw1YvqDhtcZS4qut01Mj/fOJCIjZDYIh5yIYgo535aW5NlCQ2bAPs4nzokNIKJUKcnkTAOTZQQ==} 275 resolution: {integrity: sha512-enVETPmoBJhg+CP6AVlG/GSwllpW/5y22wjFpEhYZl0YOXnE7i+wsp2VeGfMtQzl4+snTuAPEfwCtG+I/s6jqQ==}
116 dependencies: 276 peerDependencies:
117 '@adonisjs/generic-exceptions': 2.0.1 277 '@adonisjs/application': ^5.0.0
278 '@adonisjs/drive': ^2.0.0
279 '@adonisjs/http-server': ^5.0.0
280 dependencies:
281 '@adonisjs/application': 5.3.0
282 '@adonisjs/drive': 2.3.0(@adonisjs/application@5.3.0)(@adonisjs/http-server@5.12.0)
283 '@adonisjs/http-server': 5.12.0(@adonisjs/application@5.3.0)(@adonisjs/encryption@4.0.8)
284 '@poppinss/co-body': 1.2.0
285 '@poppinss/multiparty': 2.0.1
286 '@poppinss/utils': 5.0.0
118 bytes: 3.1.2 287 bytes: 3.1.2
119 co-body: 6.1.0 288 file-type: 16.5.4
120 debug: 4.3.4 289 fs-extra: 10.1.0
121 end-of-stream: 1.4.4
122 fs-extra: 9.1.0
123 get-stream: 6.0.1
124 lodash: 4.17.21
125 media-typer: 1.1.0 290 media-typer: 1.1.0
126 multiparty: 4.2.3 291 slash: 3.0.0
292
293 /@adonisjs/config@3.0.9:
294 resolution: {integrity: sha512-f+wzrc+0HLvhJyYGEMV2QTHtyJ8sI3PKvH9h/baW/iF8UO3KF+llHH0Cf3/M5dYnpdz9rnmj0VtdTaIDfxrgGg==}
295 dependencies:
296 '@poppinss/utils': 5.0.0
297
298 /@adonisjs/core@5.9.0:
299 resolution: {integrity: sha512-32zG9EW0t0Ck0cMzlwD0+z3GJG7k/gZz6P0+h+s8N1N7fHxGixrKs7W7lT3OcIvk0NsuIw1tUPAU7fAWytHEqA==}
300 dependencies:
301 '@adonisjs/ace': 11.3.1(@adonisjs/application@5.3.0)
302 '@adonisjs/application': 5.3.0
303 '@adonisjs/bodyparser': 8.1.9(@adonisjs/application@5.3.0)(@adonisjs/drive@2.3.0)(@adonisjs/http-server@5.12.0)
304 '@adonisjs/drive': 2.3.0(@adonisjs/application@5.3.0)(@adonisjs/http-server@5.12.0)
305 '@adonisjs/encryption': 4.0.8(@adonisjs/application@5.3.0)
306 '@adonisjs/events': 7.2.1(@adonisjs/application@5.3.0)
307 '@adonisjs/hash': 7.2.2(@adonisjs/application@5.3.0)
308 '@adonisjs/http-server': 5.12.0(@adonisjs/application@5.3.0)(@adonisjs/encryption@4.0.8)
309 '@adonisjs/validator': 12.5.0(@adonisjs/application@5.3.0)(@adonisjs/bodyparser@8.1.9)(@adonisjs/http-server@5.12.0)
310 '@poppinss/cliui': 3.0.5
311 '@poppinss/manager': 5.0.2
312 '@poppinss/utils': 5.0.0
313 fs-extra: 10.1.0
314 macroable: 7.0.2
315 memfs: 3.5.3
316 serve-static: 1.15.0
317 stringify-attributes: 2.0.0
127 transitivePeerDependencies: 318 transitivePeerDependencies:
128 - supports-color 319 - supports-color
129 dev: false
130 320
131 /@adonisjs/cors/1.0.7: 321 /@adonisjs/drive@2.3.0(@adonisjs/application@5.3.0)(@adonisjs/http-server@5.12.0):
132 resolution: {integrity: sha512-jBO+bI/zdydAXURL02gQxXB57L5+eV2MUYp7zmDrVa12M6mQPMRz5TC2F7a0Kknx9JUr5dsl4+eN0XNfe/8sWQ==} 322 resolution: {integrity: sha512-3V1kBe2qB/860KcS+dDonv8Xya2YDBdR7291pQgObJeTbV50Vy8RhwdOwtU7ybRfN2kh/svdC4238JGpbQOR9w==}
133 dev: false 323 peerDependencies:
324 '@adonisjs/application': ^5.0.0
325 '@adonisjs/http-server': ^5.0.0
326 dependencies:
327 '@adonisjs/application': 5.3.0
328 '@adonisjs/http-server': 5.12.0(@adonisjs/application@5.3.0)(@adonisjs/encryption@4.0.8)
329 '@poppinss/manager': 5.0.2
330 '@poppinss/utils': 5.0.0
331 '@types/fs-extra': 9.0.13
332 etag: 1.8.1
333 fs-extra: 10.1.0
334 memfs: 3.5.3
134 335
135 /@adonisjs/drive/1.0.4: 336 /@adonisjs/encryption@4.0.8(@adonisjs/application@5.3.0):
136 resolution: {integrity: sha512-p2Ot+ylOwtGV6gHIKIMJG0M+AxBatjnqv+UOrUW3Y8xsyN9bKg9khZTEqn7WrHUAlmeS4WUR5T68KIaxuXgRDw==} 337 resolution: {integrity: sha512-zMWbIESPHXafsbiLJyON/hlRYwrTIA3PuTil7xC8W4ngC36PgWe86Ra0x0t961u1We/LaSGkT8Vn93DymqB3aA==}
338 peerDependencies:
339 '@adonisjs/application': ^5.0.0
137 dependencies: 340 dependencies:
138 '@slynova/flydrive': 0.3.1 341 '@adonisjs/application': 5.3.0
139 dev: false 342 '@poppinss/utils': 4.0.4
140 343
141 /@adonisjs/fold/4.1.0: 344 /@adonisjs/env@3.0.9:
142 resolution: {integrity: sha512-xmRSWRtQddz05/44iNWPI6q4pjHjmeAN9rV6EL2hhoa+pa1CVDuyLDJD29526reIzCkKsUSAbCvHJERaYHOxJw==} 345 resolution: {integrity: sha512-9lxGmOQuF4FpUQ6NIwL/YQumaXG+2Wt8jQlQptplSUTasy6DHSEp7/SYvtC2RD9vxwn4gsptNCo+f8YRiqUvwQ==}
143 engines: {node: '>=12.0.0'}
144 hasBin: true
145 dependencies: 346 dependencies:
146 '@adonisjs/generic-exceptions': 2.0.1 347 '@poppinss/utils': 4.0.4
147 caller: 1.1.0 348 dotenv: 16.3.1
148 debug: 4.3.4 349 validator: 13.11.0
149 lodash: 4.17.21
150 require-stack: 1.0.2
151 transitivePeerDependencies:
152 - supports-color
153 dev: false
154 350
155 /@adonisjs/framework/5.0.13: 351 /@adonisjs/events@7.2.1(@adonisjs/application@5.3.0):
156 resolution: {integrity: sha512-qZx+9WF1bnK3sM4UJnKw6Zu52WIPCB1R4LjBBwSFrnG5TYbIAQATyB08YXc7ETMkQ4dIQmPH+tpq4J7+k2Joog==} 352 resolution: {integrity: sha512-N+ewQ19pvdWVIRGBeio1GqlMRJpHpZ+ZHCjhObI+bqoCh5nBApumW0JYe4blyMnUbUAtA9Aq1m1QbGaE7pRMcw==}
157 hasBin: true 353 peerDependencies:
354 '@adonisjs/application': ^5.0.0
158 dependencies: 355 dependencies:
159 '@adonisjs/generic-exceptions': 2.0.1 356 '@adonisjs/application': 5.3.0
160 '@adonisjs/middleware-base': 1.0.0 357 emittery: 0.10.2
161 bcryptjs: 2.4.3
162 co-compose: 4.0.0
163 debug: 4.3.4
164 dotenv: 6.2.0
165 edge.js: 1.1.4
166 eventemitter2: 5.0.1
167 haye: 2.0.2
168 lodash: 4.17.21
169 macroable: 1.0.0
170 node-cookie: 2.1.2
171 node-exceptions: 3.0.0
172 node-req: 2.1.2
173 node-res: 4.1.4
174 parseurl: 1.3.3
175 path-to-regexp: 2.4.0
176 require-all: 3.0.0
177 resetable: 1.0.3
178 serve-static: 1.15.0
179 simple-encryptor: 2.0.0
180 useragent: 2.3.0
181 winston: 3.8.2
182 youch: 2.2.2
183 transitivePeerDependencies:
184 - supports-color
185 dev: false
186 358
187 /@adonisjs/generic-exceptions/2.0.1: 359 /@adonisjs/fold@8.2.0:
188 resolution: {integrity: sha512-ZIPnj7vlRZKaAyZ4c2SUFCpJ6Yk+xzR+STjsze9unmZQncpQmVq1K8r20pXX3Z9rnxKVlfwO58HTxMMWaX9t9A==} 360 resolution: {integrity: sha512-Uoo2HPp4SShIkGOF3+p3gT09W3j0zpkK+fOpPyYPTqYm7CWAunklTlowqX45b6CAVb5DCcORDUB8ia4D1ijeKg==}
189 dependencies: 361 dependencies:
190 node-exceptions: 3.0.0 362 '@poppinss/utils': 4.0.4
191 upcast: 2.1.2
192 dev: false
193 363
194 /@adonisjs/ignitor/2.0.8: 364 /@adonisjs/hash@7.2.2(@adonisjs/application@5.3.0):
195 resolution: {integrity: sha512-drpuwxIjvBpBBn4Ndt2Sghf0aN3ml1zz3Bxu3g42k29ZEMDKgw9KkmabsEd+MVUqPLzch4cJRFKIReh9TWnY+Q==} 365 resolution: {integrity: sha512-qJxFX8jNH+5+jxckIIvz2y9pMt59ueT50a4B5kUe/68g5iC7UdwKmMos+tj5Pnm5hRFfwKXbtIQBGd+Bb87+2Q==}
196 hasBin: true 366 peerDependencies:
367 '@adonisjs/application': ^5.0.0
197 dependencies: 368 dependencies:
198 debug: 4.3.4 369 '@adonisjs/application': 5.3.0
199 pify: 4.0.1 370 '@phc/format': 1.0.0
200 youch: 2.2.2 371 '@poppinss/manager': 5.0.2
201 youch-terminal: 1.1.1 372 '@poppinss/utils': 5.0.0
202 transitivePeerDependencies:
203 - supports-color
204 dev: false
205 373
206 /@adonisjs/lucid/6.3.0_siu2g6ofdcuoryphtpy44uq2je: 374 /@adonisjs/http-server@5.12.0(@adonisjs/application@5.3.0)(@adonisjs/encryption@4.0.8):
207 resolution: {integrity: sha512-4LNUAh/ruU2I0xIwwugrqbFPDB5xGZYPPWzODt3QAQhDhws76T/+HDuZmCdngzE0QC1Vi9Nd1Uqejgliq1N0Dg==} 375 resolution: {integrity: sha512-+9cw/DRlLO2NSoHsccmMe3pFf6c0/8INds2yf73ZAZOmzUROb9DQaXHocJ/iwHX9EVxtDuKWDc5z0jI1SYdqEA==}
376 peerDependencies:
377 '@adonisjs/application': ^5.0.0
378 '@adonisjs/encryption': ^4.0.0
208 dependencies: 379 dependencies:
209 '@adonisjs/generic-exceptions': 2.0.1 380 '@adonisjs/application': 5.3.0
210 chance: 1.1.9 381 '@adonisjs/encryption': 4.0.8(@adonisjs/application@5.3.0)
211 debug: 4.3.4 382 '@poppinss/matchit': 3.1.2
212 knex: 0.21.21_siu2g6ofdcuoryphtpy44uq2je 383 '@poppinss/utils': 5.0.0
213 lodash: 4.17.21 384 accepts: 1.3.8
214 moment: 2.29.4 385 co-compose: 7.0.3
386 content-disposition: 0.5.4
387 cookie: 0.5.0
388 destroy: 1.2.0
389 encodeurl: 1.0.2
390 etag: 1.8.1
391 fresh: 0.5.2
392 haye: 3.0.0
393 macroable: 7.0.2
394 mime-types: 2.1.35
395 ms: 2.1.3
396 on-finished: 2.4.1
215 pluralize: 8.0.0 397 pluralize: 8.0.0
398 proxy-addr: 2.0.7
399 qs: 6.11.2
400 tmp-cache: 1.1.0
401 type-is: 1.6.18
402 vary: 1.1.2
403
404 /@adonisjs/ioc-transformer@2.3.4:
405 resolution: {integrity: sha512-ik1C7f0Hbqenw6S1Ty06B4pznGfpUH5bL2fiCYgwq+jKPw8CKdsTQKvYudS6Tj68Nr6Mpqow4RNbvFV/OC0mZg==}
406 dev: true
407
408 /@adonisjs/logger@4.1.5:
409 resolution: {integrity: sha512-JMINhXp/6VW0y4e86luyM8vbBzV4Y5F4IzVklMObCu/SwiaCbp5bgx9Z6QOHiGVW8SFVlRF1KlwLq8pAifjTpQ==}
410 dependencies:
411 '@poppinss/utils': 5.0.0
412 '@types/pino': 6.3.12
413 abstract-logging: 2.0.1
414 pino: 6.14.0
415
416 /@adonisjs/lucid@18.4.0(@adonisjs/application@5.3.0)(@adonisjs/core@5.9.0)(mysql@2.18.1)(pg@8.11.1)(sqlite3@5.1.6):
417 resolution: {integrity: sha512-pSBhKFzqr6mWoeIiGdcW2OQIWAyCoLn+G7VmXXLqxHvGm+9SaioKJaSMmaJa0xgS5v64r/MVLeH/nw87Q4KpyQ==}
418 peerDependencies:
419 '@adonisjs/core': ^5.1.0
420 dependencies:
421 '@adonisjs/core': 5.9.0
422 '@faker-js/faker': 8.1.0
423 '@poppinss/hooks': 5.0.3(@adonisjs/application@5.3.0)
424 '@poppinss/utils': 5.0.0
425 fast-deep-equal: 3.1.3
426 igniculus: 1.5.0
427 knex: 2.5.1(mysql@2.18.1)(pg@8.11.1)(sqlite3@5.1.6)
428 knex-dynamic-connection: 3.1.0(mysql@2.18.1)(pg@8.11.1)(sqlite3@5.1.6)
429 luxon: 3.3.0
430 macroable: 7.0.2
216 pretty-hrtime: 1.0.3 431 pretty-hrtime: 1.0.3
217 require-all: 3.0.0 432 qs: 6.11.2
433 slash: 3.0.0
434 tarn: 3.0.2
218 transitivePeerDependencies: 435 transitivePeerDependencies:
219 - mssql 436 - '@adonisjs/application'
437 - better-sqlite3
220 - mysql 438 - mysql
221 - mysql2 439 - mysql2
222 - pg 440 - pg
441 - pg-native
223 - sqlite3 442 - sqlite3
224 - supports-color 443 - supports-color
444 - tedious
225 dev: false 445 dev: false
226 446
227 /@adonisjs/mail/3.1.0: 447 /@adonisjs/mail@8.2.0(@adonisjs/core@5.9.0)(@adonisjs/view@6.2.0)(@types/luxon@3.3.1)(luxon@3.3.0)(moment@2.29.4):
228 resolution: {integrity: sha512-kCCXhA1+D76Iwzpo9WkG3HvWg/jx1QX9hhYxRvA0bM0Hf+Yc3qjAZlye4pQlnAGgshU9M5SN3xGpOZ9dVQVJ4g==} 448 resolution: {integrity: sha512-gsmqj4akVnR3UFBotrfY517uWl9JC9CLiXdxMdtO76sq3p6GUUV1GlqL/m6lPurPTrT8a+EFe5CKBpLwIt84CQ==}
229 dependencies: 449 peerDependencies:
230 '@adonisjs/generic-exceptions': 2.0.1 450 '@adonisjs/core': ^5.1.0
231 clone: 2.1.2 451 '@adonisjs/view': ^6.0.0
232 debug: 4.3.4 452 dependencies:
233 form-data: 2.5.1 453 '@adonisjs/core': 5.9.0
454 '@adonisjs/view': 6.2.0(@adonisjs/core@5.9.0)
455 '@poppinss/colors': 3.0.3
456 '@poppinss/manager': 5.0.2
457 '@poppinss/utils': 4.0.4
458 fastq: 1.15.0
234 get-stream: 6.0.1 459 get-stream: 6.0.1
235 got: 8.3.0 460 got: 11.8.6
236 nodemailer: 4.7.0 461 ical-generator: 4.1.0(@types/luxon@3.3.1)(luxon@3.3.0)(moment@2.29.4)
462 multi-part: 3.0.0
463 nodemailer: 6.9.5
237 transitivePeerDependencies: 464 transitivePeerDependencies:
238 - supports-color 465 - '@touch4it/ical-timezones'
466 - '@types/luxon'
467 - '@types/mocha'
468 - '@types/node'
469 - dayjs
470 - luxon
471 - moment
472 - moment-timezone
473 - rrule
474 dev: false
475
476 /@adonisjs/profiler@6.0.9(@adonisjs/logger@4.1.5):
477 resolution: {integrity: sha512-V1bJPPDTn05NzAKUEICnYtWi9fC8NownUToaqxVkWOUovYBO6ubt06qtH1Uv9zvUjB2PKHUn+ieDAOgyHle09A==}
478 peerDependencies:
479 '@adonisjs/logger': ^4.0.0
480 dependencies:
481 '@adonisjs/logger': 4.1.5
482 '@poppinss/utils': 4.0.4
483 jest-worker: 27.5.1
484
485 /@adonisjs/repl@3.1.11(@adonisjs/core@5.9.0):
486 resolution: {integrity: sha512-t4xN+G+fa/XeZ+7qHnFbTk1bri/4RIGdFDk1cq2SeZI3nfu3E8Ma62uQVc8U3AAroN51plzXVcUoQ/Iw8q1P+Q==}
487 peerDependencies:
488 '@adonisjs/core': ^5.1.0
489 dependencies:
490 '@adonisjs/core': 5.9.0
491 '@poppinss/colors': 3.0.3
492 node-repl-await: 0.1.2
493 parse-imports: 0.0.5
494 string-width: 4.2.3
239 dev: false 495 dev: false
240 496
241 /@adonisjs/middleware-base/1.0.0: 497 /@adonisjs/require-ts@2.0.13:
242 resolution: {integrity: sha512-Jw8teZCdR7DTRX72V4mJ45knlZRK0emoaBuAI7vMB5ucyeagLQE6Gl0vKxpRk3STrc2K56mKn23B5h8lQWyhcQ==} 498 resolution: {integrity: sha512-PyDvrGzriU9dJC/ZkP+aT/+5jKCMTWIlc6KivU/uSGX9L9+PF213nzAATS1PKEWP1G0GcWsnyhQW8QgMwuFS3A==}
243 dependencies: 499 dependencies:
244 '@adonisjs/generic-exceptions': 2.0.1 500 '@poppinss/utils': 5.0.0
245 co-compose: 4.0.0 501 debug: 4.3.4
246 debug: 3.2.7 502 find-cache-dir: 3.3.2
247 haye: 2.0.2 503 fs-extra: 10.1.0
248 lodash: 4.17.21 504 normalize-path: 3.0.0
505 pirates: 4.0.6
506 rev-hash: 3.0.0
507 source-map-support: 0.5.21
249 transitivePeerDependencies: 508 transitivePeerDependencies:
250 - supports-color 509 - supports-color
510 dev: true
511
512 /@adonisjs/session@6.4.0(@adonisjs/core@5.9.0):
513 resolution: {integrity: sha512-9yHS60lFpNBUX5/yB+0j+bXQDWqbaYJ1JelLCYtaKRa7B0NewvmPAmsNpHH8SrXE3XGaRyKOxrUGRcmSGg5mRA==}
514 peerDependencies:
515 '@adonisjs/core': ^5.8.0
516 dependencies:
517 '@adonisjs/core': 5.9.0
518 '@poppinss/utils': 4.0.4
519 fs-extra: 10.1.0
251 dev: false 520 dev: false
252 521
253 /@adonisjs/persona/1.0.5: 522 /@adonisjs/shield@7.1.1(@adonisjs/core@5.9.0)(@adonisjs/session@6.4.0)(@adonisjs/view@6.2.0):
254 resolution: {integrity: sha512-VFdZ2CAx8WhDih/AkIf9ZG+62QESiInC4oAz+p4HNsY7fG0DDlbDX4TBPwSK1YOdiZCE6t2T0AcpChtXiBp5xg==} 523 resolution: {integrity: sha512-y1YzXwravcS/A1yxcyfSD/UrRi2+H9v0ntX9NgVhLYvBF5eHuPzQKgv9sICVjmj2z7n94HzcTAio0Rc32EX51Q==}
524 peerDependencies:
525 '@adonisjs/core': ^5.7.0
526 '@adonisjs/session': ^6.2.0
527 '@adonisjs/view': ^6.1.0
528 peerDependenciesMeta:
529 '@adonisjs/view':
530 optional: true
255 dependencies: 531 dependencies:
256 '@adonisjs/generic-exceptions': 2.0.1 532 '@adonisjs/core': 5.9.0
257 moment: 2.29.4 533 '@adonisjs/session': 6.4.0(@adonisjs/core@5.9.0)
258 rand-token: 0.4.0 534 '@adonisjs/view': 6.2.0(@adonisjs/core@5.9.0)
535 '@poppinss/utils': 4.0.4
536 csrf: 3.1.0
537 helmet-csp: 3.4.0
538 dev: false
539
540 /@adonisjs/sink@5.4.3(@adonisjs/application@5.3.0):
541 resolution: {integrity: sha512-wmAft/tjHQLtjbDjntaVu3/cmeP+3tXKDaMeWjVf6Dz+tXaM9XNg2EVVSV41F3JDF4W1u9ich9mC+4wvWJDy5g==}
542 peerDependencies:
543 '@adonisjs/application': ^5.0.0
544 dependencies:
545 '@adonisjs/application': 5.3.0
546 '@poppinss/cliui': 3.0.5
547 '@poppinss/prompts': 2.0.2
548 '@poppinss/utils': 5.0.0
549 cp-file: 9.1.0
550 fs-extra: 10.1.0
551 marked: 4.3.0
552 marked-terminal: 5.2.0(marked@4.3.0)
553 mrm-core: 7.1.13
554 mustache: 4.2.0
555 open: 8.4.2
556 dev: true
557
558 /@adonisjs/validator@12.5.0(@adonisjs/application@5.3.0)(@adonisjs/bodyparser@8.1.9)(@adonisjs/http-server@5.12.0):
559 resolution: {integrity: sha512-88Lu+8OyS92A4mg0hE8AEjr8q9KmgZeR5obPGoAnCxBrptrsHHtKTQq242c+DbzuAWZzw5ZEX2dvv34PW/FmFw==}
560 peerDependencies:
561 '@adonisjs/application': ^5.0.0
562 '@adonisjs/bodyparser': ^8.0.0
563 '@adonisjs/http-server': ^5.0.0
564 dependencies:
565 '@adonisjs/application': 5.3.0
566 '@adonisjs/bodyparser': 8.1.9(@adonisjs/application@5.3.0)(@adonisjs/drive@2.3.0)(@adonisjs/http-server@5.12.0)
567 '@adonisjs/http-server': 5.12.0(@adonisjs/application@5.3.0)(@adonisjs/encryption@4.0.8)
568 '@poppinss/utils': 5.0.0
569 '@types/luxon': 3.3.1
570 '@types/validator': 13.11.2
571 luxon: 3.4.3
572 normalize-url: 6.1.0
573 tmp-cache: 1.1.0
574 validator: 13.11.0
575
576 /@adonisjs/view@6.2.0(@adonisjs/core@5.9.0):
577 resolution: {integrity: sha512-967f0fQ0QqdHIGh8qVdWoTHbfjB21gCh+SmCbuBWk1etpO0xTGgA2P1iDkBp/9Cd8BUTyhJX2TamKTsUP8FraA==}
578 peerDependencies:
579 '@adonisjs/core': ^5.7.0
580 dependencies:
581 '@adonisjs/core': 5.9.0
582 edge-error: 2.0.8
583 edge-supercharged: 3.1.1
584 edge.js: 5.5.1
259 dev: false 585 dev: false
260 586
261 /@adonisjs/session/1.1.0: 587 /@ampproject/remapping@2.2.1:
262 resolution: {integrity: sha512-phbTPevvmVcWgq1BXj5VM7MR5+MzXlQgl6Dc0zr8jfftYBscxoiirSaISJYWCwNO6HrPQon54a1/gx9Jr6ebGQ==} 588 resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
589 engines: {node: '>=6.0.0'}
590 dependencies:
591 '@jridgewell/gen-mapping': 0.3.3
592 '@jridgewell/trace-mapping': 0.3.19
593 dev: true
594
595 /@apidevtools/json-schema-ref-parser@9.1.2:
596 resolution: {integrity: sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==}
597 dependencies:
598 '@jsdevtools/ono': 7.1.3
599 '@types/json-schema': 7.0.13
600 call-me-maybe: 1.0.2
601 js-yaml: 4.1.0
602 dev: true
603
604 /@apidevtools/openapi-schemas@2.1.0:
605 resolution: {integrity: sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==}
606 engines: {node: '>=10'}
607 dev: true
608
609 /@apidevtools/swagger-methods@3.0.2:
610 resolution: {integrity: sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==}
611 dev: true
612
613 /@apidevtools/swagger-parser@10.0.3(openapi-types@12.1.3):
614 resolution: {integrity: sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==}
615 peerDependencies:
616 openapi-types: '>=7'
617 dependencies:
618 '@apidevtools/json-schema-ref-parser': 9.1.2
619 '@apidevtools/openapi-schemas': 2.1.0
620 '@apidevtools/swagger-methods': 3.0.2
621 '@jsdevtools/ono': 7.1.3
622 call-me-maybe: 1.0.2
623 openapi-types: 12.1.3
624 z-schema: 5.0.5
625 dev: true
626
627 /@arr/every@1.0.1:
628 resolution: {integrity: sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg==}
629 engines: {node: '>=4'}
630
631 /@babel/code-frame@7.22.13:
632 resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==}
633 engines: {node: '>=6.9.0'}
263 dependencies: 634 dependencies:
264 '@adonisjs/generic-exceptions': 2.0.1 635 '@babel/highlight': 7.22.20
265 bson: 1.1.6 636 chalk: 2.4.2
637 dev: true
638
639 /@babel/compat-data@7.22.20:
640 resolution: {integrity: sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==}
641 engines: {node: '>=6.9.0'}
642 dev: true
643
644 /@babel/core@7.23.0:
645 resolution: {integrity: sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==}
646 engines: {node: '>=6.9.0'}
647 dependencies:
648 '@ampproject/remapping': 2.2.1
649 '@babel/code-frame': 7.22.13
650 '@babel/generator': 7.23.0
651 '@babel/helper-compilation-targets': 7.22.15
652 '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.0)
653 '@babel/helpers': 7.23.1
654 '@babel/parser': 7.23.0
655 '@babel/template': 7.22.15
656 '@babel/traverse': 7.23.0
657 '@babel/types': 7.23.0
658 convert-source-map: 2.0.0
266 debug: 4.3.4 659 debug: 4.3.4
267 fs-extra: 9.1.0 660 gensync: 1.0.0-beta.2
268 lodash: 4.17.21 661 json5: 2.2.3
269 ms: 2.1.3 662 semver: 6.3.1
270 type-of-is: 3.5.1
271 uuid: 8.3.2
272 transitivePeerDependencies: 663 transitivePeerDependencies:
273 - supports-color 664 - supports-color
274 dev: false 665 dev: true
666
667 /@babel/generator@7.23.0:
668 resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==}
669 engines: {node: '>=6.9.0'}
670 dependencies:
671 '@babel/types': 7.23.0
672 '@jridgewell/gen-mapping': 0.3.3
673 '@jridgewell/trace-mapping': 0.3.19
674 jsesc: 2.5.2
675 dev: true
275 676
276 /@adonisjs/shield/1.1.0: 677 /@babel/helper-annotate-as-pure@7.22.5:
277 resolution: {integrity: sha512-3qVwnLTeTk5w0Agi7xuQKj7r7QeA1yFXy0QfpjTIYIzQVy9QTk3DgIK5ZvGtr/2/ESHVosyOrCGr+kQDjtcBhA==} 678 resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==}
679 engines: {node: '>=6.9.0'}
278 dependencies: 680 dependencies:
279 '@adonisjs/generic-exceptions': 2.0.1 681 '@babel/types': 7.23.0
280 csrf: 3.1.0 682 dev: true
281 node-cookie: 2.1.2
282 node-csp: 1.0.1
283 node-guard: 1.0.0
284 uuid: 8.3.2
285 dev: false
286 683
287 /@adonisjs/validator/5.1.0: 684 /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15:
288 resolution: {integrity: sha512-qz4YNfg89MzqfgluMuM1Wq7GSTOd3h2x0rn+cXT8rnva3jkgiWDaqstMSCNAelB3A2KiujbsxZk/HR0k5o9Zkg==} 685 resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==}
686 engines: {node: '>=6.9.0'}
289 dependencies: 687 dependencies:
290 '@adonisjs/generic-exceptions': 2.0.1 688 '@babel/types': 7.23.0
291 indicative: 5.0.8 689 dev: true
292 lodash: 4.17.21 690
293 dev: false 691 /@babel/helper-compilation-targets@7.22.15:
692 resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==}
693 engines: {node: '>=6.9.0'}
694 dependencies:
695 '@babel/compat-data': 7.22.20
696 '@babel/helper-validator-option': 7.22.15
697 browserslist: 4.22.1
698 lru-cache: 5.1.1
699 semver: 6.3.1
700 dev: true
701
702 /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.0):
703 resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==}
704 engines: {node: '>=6.9.0'}
705 peerDependencies:
706 '@babel/core': ^7.0.0
707 dependencies:
708 '@babel/core': 7.23.0
709 '@babel/helper-annotate-as-pure': 7.22.5
710 '@babel/helper-environment-visitor': 7.22.20
711 '@babel/helper-function-name': 7.23.0
712 '@babel/helper-member-expression-to-functions': 7.23.0
713 '@babel/helper-optimise-call-expression': 7.22.5
714 '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.0)
715 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
716 '@babel/helper-split-export-declaration': 7.22.6
717 semver: 6.3.1
718 dev: true
719
720 /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.0):
721 resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==}
722 engines: {node: '>=6.9.0'}
723 peerDependencies:
724 '@babel/core': ^7.0.0
725 dependencies:
726 '@babel/core': 7.23.0
727 '@babel/helper-annotate-as-pure': 7.22.5
728 regexpu-core: 5.3.2
729 semver: 6.3.1
730 dev: true
731
732 /@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.23.0):
733 resolution: {integrity: sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==}
734 peerDependencies:
735 '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
736 dependencies:
737 '@babel/core': 7.23.0
738 '@babel/helper-compilation-targets': 7.22.15
739 '@babel/helper-plugin-utils': 7.22.5
740 debug: 4.3.4
741 lodash.debounce: 4.0.8
742 resolve: 1.22.6
743 transitivePeerDependencies:
744 - supports-color
745 dev: true
746
747 /@babel/helper-environment-visitor@7.22.20:
748 resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
749 engines: {node: '>=6.9.0'}
750 dev: true
751
752 /@babel/helper-function-name@7.23.0:
753 resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==}
754 engines: {node: '>=6.9.0'}
755 dependencies:
756 '@babel/template': 7.22.15
757 '@babel/types': 7.23.0
758 dev: true
759
760 /@babel/helper-hoist-variables@7.22.5:
761 resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
762 engines: {node: '>=6.9.0'}
763 dependencies:
764 '@babel/types': 7.23.0
765 dev: true
766
767 /@babel/helper-member-expression-to-functions@7.23.0:
768 resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==}
769 engines: {node: '>=6.9.0'}
770 dependencies:
771 '@babel/types': 7.23.0
772 dev: true
773
774 /@babel/helper-module-imports@7.22.15:
775 resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==}
776 engines: {node: '>=6.9.0'}
777 dependencies:
778 '@babel/types': 7.23.0
779 dev: true
780
781 /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.0):
782 resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==}
783 engines: {node: '>=6.9.0'}
784 peerDependencies:
785 '@babel/core': ^7.0.0
786 dependencies:
787 '@babel/core': 7.23.0
788 '@babel/helper-environment-visitor': 7.22.20
789 '@babel/helper-module-imports': 7.22.15
790 '@babel/helper-simple-access': 7.22.5
791 '@babel/helper-split-export-declaration': 7.22.6
792 '@babel/helper-validator-identifier': 7.22.20
793 dev: true
794
795 /@babel/helper-optimise-call-expression@7.22.5:
796 resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==}
797 engines: {node: '>=6.9.0'}
798 dependencies:
799 '@babel/types': 7.23.0
800 dev: true
801
802 /@babel/helper-plugin-utils@7.22.5:
803 resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==}
804 engines: {node: '>=6.9.0'}
805 dev: true
806
807 /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.0):
808 resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==}
809 engines: {node: '>=6.9.0'}
810 peerDependencies:
811 '@babel/core': ^7.0.0
812 dependencies:
813 '@babel/core': 7.23.0
814 '@babel/helper-annotate-as-pure': 7.22.5
815 '@babel/helper-environment-visitor': 7.22.20
816 '@babel/helper-wrap-function': 7.22.20
817 dev: true
818
819 /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.0):
820 resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==}
821 engines: {node: '>=6.9.0'}
822 peerDependencies:
823 '@babel/core': ^7.0.0
824 dependencies:
825 '@babel/core': 7.23.0
826 '@babel/helper-environment-visitor': 7.22.20
827 '@babel/helper-member-expression-to-functions': 7.23.0
828 '@babel/helper-optimise-call-expression': 7.22.5
829 dev: true
830
831 /@babel/helper-simple-access@7.22.5:
832 resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
833 engines: {node: '>=6.9.0'}
834 dependencies:
835 '@babel/types': 7.23.0
836 dev: true
837
838 /@babel/helper-skip-transparent-expression-wrappers@7.22.5:
839 resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==}
840 engines: {node: '>=6.9.0'}
841 dependencies:
842 '@babel/types': 7.23.0
843 dev: true
844
845 /@babel/helper-split-export-declaration@7.22.6:
846 resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
847 engines: {node: '>=6.9.0'}
848 dependencies:
849 '@babel/types': 7.23.0
850 dev: true
851
852 /@babel/helper-string-parser@7.22.5:
853 resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==}
854 engines: {node: '>=6.9.0'}
855 dev: true
294 856
295 /@babel/code-frame/7.12.11: 857 /@babel/helper-validator-identifier@7.22.20:
296 resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} 858 resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
859 engines: {node: '>=6.9.0'}
860 dev: true
861
862 /@babel/helper-validator-option@7.22.15:
863 resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==}
864 engines: {node: '>=6.9.0'}
865 dev: true
866
867 /@babel/helper-wrap-function@7.22.20:
868 resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==}
869 engines: {node: '>=6.9.0'}
297 dependencies: 870 dependencies:
298 '@babel/highlight': 7.18.6 871 '@babel/helper-function-name': 7.23.0
872 '@babel/template': 7.22.15
873 '@babel/types': 7.23.0
299 dev: true 874 dev: true
300 875
301 /@babel/helper-validator-identifier/7.19.1: 876 /@babel/helpers@7.23.1:
302 resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 877 resolution: {integrity: sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==}
303 engines: {node: '>=6.9.0'} 878 engines: {node: '>=6.9.0'}
879 dependencies:
880 '@babel/template': 7.22.15
881 '@babel/traverse': 7.23.0
882 '@babel/types': 7.23.0
883 transitivePeerDependencies:
884 - supports-color
304 dev: true 885 dev: true
305 886
306 /@babel/highlight/7.18.6: 887 /@babel/highlight@7.22.20:
307 resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} 888 resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==}
308 engines: {node: '>=6.9.0'} 889 engines: {node: '>=6.9.0'}
309 dependencies: 890 dependencies:
310 '@babel/helper-validator-identifier': 7.19.1 891 '@babel/helper-validator-identifier': 7.22.20
311 chalk: 2.4.2 892 chalk: 2.4.2
312 js-tokens: 4.0.0 893 js-tokens: 4.0.0
313 dev: true 894 dev: true
314 895
315 /@babel/runtime/7.20.6: 896 /@babel/parser@7.23.0:
316 resolution: {integrity: sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==} 897 resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==}
898 engines: {node: '>=6.0.0'}
899 hasBin: true
900 dependencies:
901 '@babel/types': 7.23.0
902 dev: true
903
904 /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.15(@babel/core@7.23.0):
905 resolution: {integrity: sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==}
906 engines: {node: '>=6.9.0'}
907 peerDependencies:
908 '@babel/core': ^7.0.0
909 dependencies:
910 '@babel/core': 7.23.0
911 '@babel/helper-plugin-utils': 7.22.5
912 dev: true
913
914 /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.15(@babel/core@7.23.0):
915 resolution: {integrity: sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==}
317 engines: {node: '>=6.9.0'} 916 engines: {node: '>=6.9.0'}
917 peerDependencies:
918 '@babel/core': ^7.13.0
318 dependencies: 919 dependencies:
319 regenerator-runtime: 0.13.11 920 '@babel/core': 7.23.0
921 '@babel/helper-plugin-utils': 7.22.5
922 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
923 '@babel/plugin-transform-optional-chaining': 7.23.0(@babel/core@7.23.0)
320 dev: true 924 dev: true
321 925
322 /@colors/colors/1.5.0: 926 /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.0):
927 resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==}
928 engines: {node: '>=6.9.0'}
929 peerDependencies:
930 '@babel/core': ^7.0.0-0
931 dependencies:
932 '@babel/core': 7.23.0
933 dev: true
934
935 /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.0):
936 resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
937 peerDependencies:
938 '@babel/core': ^7.0.0-0
939 dependencies:
940 '@babel/core': 7.23.0
941 '@babel/helper-plugin-utils': 7.22.5
942 dev: true
943
944 /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.0):
945 resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==}
946 peerDependencies:
947 '@babel/core': ^7.0.0-0
948 dependencies:
949 '@babel/core': 7.23.0
950 '@babel/helper-plugin-utils': 7.22.5
951 dev: true
952
953 /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.0):
954 resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==}
955 engines: {node: '>=6.9.0'}
956 peerDependencies:
957 '@babel/core': ^7.0.0-0
958 dependencies:
959 '@babel/core': 7.23.0
960 '@babel/helper-plugin-utils': 7.22.5
961 dev: true
962
963 /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.0):
964 resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==}
965 peerDependencies:
966 '@babel/core': ^7.0.0-0
967 dependencies:
968 '@babel/core': 7.23.0
969 '@babel/helper-plugin-utils': 7.22.5
970 dev: true
971
972 /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.0):
973 resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==}
974 peerDependencies:
975 '@babel/core': ^7.0.0-0
976 dependencies:
977 '@babel/core': 7.23.0
978 '@babel/helper-plugin-utils': 7.22.5
979 dev: true
980
981 /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.23.0):
982 resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==}
983 engines: {node: '>=6.9.0'}
984 peerDependencies:
985 '@babel/core': ^7.0.0-0
986 dependencies:
987 '@babel/core': 7.23.0
988 '@babel/helper-plugin-utils': 7.22.5
989 dev: true
990
991 /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.23.0):
992 resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==}
993 engines: {node: '>=6.9.0'}
994 peerDependencies:
995 '@babel/core': ^7.0.0-0
996 dependencies:
997 '@babel/core': 7.23.0
998 '@babel/helper-plugin-utils': 7.22.5
999 dev: true
1000
1001 /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.0):
1002 resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
1003 peerDependencies:
1004 '@babel/core': ^7.0.0-0
1005 dependencies:
1006 '@babel/core': 7.23.0
1007 '@babel/helper-plugin-utils': 7.22.5
1008 dev: true
1009
1010 /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.0):
1011 resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==}
1012 peerDependencies:
1013 '@babel/core': ^7.0.0-0
1014 dependencies:
1015 '@babel/core': 7.23.0
1016 '@babel/helper-plugin-utils': 7.22.5
1017 dev: true
1018
1019 /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.0):
1020 resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==}
1021 peerDependencies:
1022 '@babel/core': ^7.0.0-0
1023 dependencies:
1024 '@babel/core': 7.23.0
1025 '@babel/helper-plugin-utils': 7.22.5
1026 dev: true
1027
1028 /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.0):
1029 resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==}
1030 peerDependencies:
1031 '@babel/core': ^7.0.0-0
1032 dependencies:
1033 '@babel/core': 7.23.0
1034 '@babel/helper-plugin-utils': 7.22.5
1035 dev: true
1036
1037 /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.0):
1038 resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==}
1039 peerDependencies:
1040 '@babel/core': ^7.0.0-0
1041 dependencies:
1042 '@babel/core': 7.23.0
1043 '@babel/helper-plugin-utils': 7.22.5
1044 dev: true
1045
1046 /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.0):
1047 resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==}
1048 peerDependencies:
1049 '@babel/core': ^7.0.0-0
1050 dependencies:
1051 '@babel/core': 7.23.0
1052 '@babel/helper-plugin-utils': 7.22.5
1053 dev: true
1054
1055 /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.0):
1056 resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==}
1057 peerDependencies:
1058 '@babel/core': ^7.0.0-0
1059 dependencies:
1060 '@babel/core': 7.23.0
1061 '@babel/helper-plugin-utils': 7.22.5
1062 dev: true
1063
1064 /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.0):
1065 resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==}
1066 peerDependencies:
1067 '@babel/core': ^7.0.0-0
1068 dependencies:
1069 '@babel/core': 7.23.0
1070 '@babel/helper-plugin-utils': 7.22.5
1071 dev: true
1072
1073 /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.0):
1074 resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==}
1075 engines: {node: '>=6.9.0'}
1076 peerDependencies:
1077 '@babel/core': ^7.0.0-0
1078 dependencies:
1079 '@babel/core': 7.23.0
1080 '@babel/helper-plugin-utils': 7.22.5
1081 dev: true
1082
1083 /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.0):
1084 resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==}
1085 engines: {node: '>=6.9.0'}
1086 peerDependencies:
1087 '@babel/core': ^7.0.0-0
1088 dependencies:
1089 '@babel/core': 7.23.0
1090 '@babel/helper-plugin-utils': 7.22.5
1091 dev: true
1092
1093 /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.0):
1094 resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==}
1095 engines: {node: '>=6.9.0'}
1096 peerDependencies:
1097 '@babel/core': ^7.0.0
1098 dependencies:
1099 '@babel/core': 7.23.0
1100 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.0)
1101 '@babel/helper-plugin-utils': 7.22.5
1102 dev: true
1103
1104 /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.23.0):
1105 resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==}
1106 engines: {node: '>=6.9.0'}
1107 peerDependencies:
1108 '@babel/core': ^7.0.0-0
1109 dependencies:
1110 '@babel/core': 7.23.0
1111 '@babel/helper-plugin-utils': 7.22.5
1112 dev: true
1113
1114 /@babel/plugin-transform-async-generator-functions@7.22.15(@babel/core@7.23.0):
1115 resolution: {integrity: sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==}
1116 engines: {node: '>=6.9.0'}
1117 peerDependencies:
1118 '@babel/core': ^7.0.0-0
1119 dependencies:
1120 '@babel/core': 7.23.0
1121 '@babel/helper-environment-visitor': 7.22.20
1122 '@babel/helper-plugin-utils': 7.22.5
1123 '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.0)
1124 '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.0)
1125 dev: true
1126
1127 /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.23.0):
1128 resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==}
1129 engines: {node: '>=6.9.0'}
1130 peerDependencies:
1131 '@babel/core': ^7.0.0-0
1132 dependencies:
1133 '@babel/core': 7.23.0
1134 '@babel/helper-module-imports': 7.22.15
1135 '@babel/helper-plugin-utils': 7.22.5
1136 '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.0)
1137 dev: true
1138
1139 /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.23.0):
1140 resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==}
1141 engines: {node: '>=6.9.0'}
1142 peerDependencies:
1143 '@babel/core': ^7.0.0-0
1144 dependencies:
1145 '@babel/core': 7.23.0
1146 '@babel/helper-plugin-utils': 7.22.5
1147 dev: true
1148
1149 /@babel/plugin-transform-block-scoping@7.23.0(@babel/core@7.23.0):
1150 resolution: {integrity: sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==}
1151 engines: {node: '>=6.9.0'}
1152 peerDependencies:
1153 '@babel/core': ^7.0.0-0
1154 dependencies:
1155 '@babel/core': 7.23.0
1156 '@babel/helper-plugin-utils': 7.22.5
1157 dev: true
1158
1159 /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.23.0):
1160 resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==}
1161 engines: {node: '>=6.9.0'}
1162 peerDependencies:
1163 '@babel/core': ^7.0.0-0
1164 dependencies:
1165 '@babel/core': 7.23.0
1166 '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.0)
1167 '@babel/helper-plugin-utils': 7.22.5
1168 dev: true
1169
1170 /@babel/plugin-transform-class-static-block@7.22.11(@babel/core@7.23.0):
1171 resolution: {integrity: sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==}
1172 engines: {node: '>=6.9.0'}
1173 peerDependencies:
1174 '@babel/core': ^7.12.0
1175 dependencies:
1176 '@babel/core': 7.23.0
1177 '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.0)
1178 '@babel/helper-plugin-utils': 7.22.5
1179 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.0)
1180 dev: true
1181
1182 /@babel/plugin-transform-classes@7.22.15(@babel/core@7.23.0):
1183 resolution: {integrity: sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==}
1184 engines: {node: '>=6.9.0'}
1185 peerDependencies:
1186 '@babel/core': ^7.0.0-0
1187 dependencies:
1188 '@babel/core': 7.23.0
1189 '@babel/helper-annotate-as-pure': 7.22.5
1190 '@babel/helper-compilation-targets': 7.22.15
1191 '@babel/helper-environment-visitor': 7.22.20
1192 '@babel/helper-function-name': 7.23.0
1193 '@babel/helper-optimise-call-expression': 7.22.5
1194 '@babel/helper-plugin-utils': 7.22.5
1195 '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.0)
1196 '@babel/helper-split-export-declaration': 7.22.6
1197 globals: 11.12.0
1198 dev: true
1199
1200 /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.23.0):
1201 resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==}
1202 engines: {node: '>=6.9.0'}
1203 peerDependencies:
1204 '@babel/core': ^7.0.0-0
1205 dependencies:
1206 '@babel/core': 7.23.0
1207 '@babel/helper-plugin-utils': 7.22.5
1208 '@babel/template': 7.22.15
1209 dev: true
1210
1211 /@babel/plugin-transform-destructuring@7.23.0(@babel/core@7.23.0):
1212 resolution: {integrity: sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==}
1213 engines: {node: '>=6.9.0'}
1214 peerDependencies:
1215 '@babel/core': ^7.0.0-0
1216 dependencies:
1217 '@babel/core': 7.23.0
1218 '@babel/helper-plugin-utils': 7.22.5
1219 dev: true
1220
1221 /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.23.0):
1222 resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==}
1223 engines: {node: '>=6.9.0'}
1224 peerDependencies:
1225 '@babel/core': ^7.0.0-0
1226 dependencies:
1227 '@babel/core': 7.23.0
1228 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.0)
1229 '@babel/helper-plugin-utils': 7.22.5
1230 dev: true
1231
1232 /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.23.0):
1233 resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==}
1234 engines: {node: '>=6.9.0'}
1235 peerDependencies:
1236 '@babel/core': ^7.0.0-0
1237 dependencies:
1238 '@babel/core': 7.23.0
1239 '@babel/helper-plugin-utils': 7.22.5
1240 dev: true
1241
1242 /@babel/plugin-transform-dynamic-import@7.22.11(@babel/core@7.23.0):
1243 resolution: {integrity: sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==}
1244 engines: {node: '>=6.9.0'}
1245 peerDependencies:
1246 '@babel/core': ^7.0.0-0
1247 dependencies:
1248 '@babel/core': 7.23.0
1249 '@babel/helper-plugin-utils': 7.22.5
1250 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.0)
1251 dev: true
1252
1253 /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.23.0):
1254 resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==}
1255 engines: {node: '>=6.9.0'}
1256 peerDependencies:
1257 '@babel/core': ^7.0.0-0
1258 dependencies:
1259 '@babel/core': 7.23.0
1260 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15
1261 '@babel/helper-plugin-utils': 7.22.5
1262 dev: true
1263
1264 /@babel/plugin-transform-export-namespace-from@7.22.11(@babel/core@7.23.0):
1265 resolution: {integrity: sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==}
1266 engines: {node: '>=6.9.0'}
1267 peerDependencies:
1268 '@babel/core': ^7.0.0-0
1269 dependencies:
1270 '@babel/core': 7.23.0
1271 '@babel/helper-plugin-utils': 7.22.5
1272 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.0)
1273 dev: true
1274
1275 /@babel/plugin-transform-for-of@7.22.15(@babel/core@7.23.0):
1276 resolution: {integrity: sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==}
1277 engines: {node: '>=6.9.0'}
1278 peerDependencies:
1279 '@babel/core': ^7.0.0-0
1280 dependencies:
1281 '@babel/core': 7.23.0
1282 '@babel/helper-plugin-utils': 7.22.5
1283 dev: true
1284
1285 /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.23.0):
1286 resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==}
1287 engines: {node: '>=6.9.0'}
1288 peerDependencies:
1289 '@babel/core': ^7.0.0-0
1290 dependencies:
1291 '@babel/core': 7.23.0
1292 '@babel/helper-compilation-targets': 7.22.15
1293 '@babel/helper-function-name': 7.23.0
1294 '@babel/helper-plugin-utils': 7.22.5
1295 dev: true
1296
1297 /@babel/plugin-transform-json-strings@7.22.11(@babel/core@7.23.0):
1298 resolution: {integrity: sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==}
1299 engines: {node: '>=6.9.0'}
1300 peerDependencies:
1301 '@babel/core': ^7.0.0-0
1302 dependencies:
1303 '@babel/core': 7.23.0
1304 '@babel/helper-plugin-utils': 7.22.5
1305 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.0)
1306 dev: true
1307
1308 /@babel/plugin-transform-literals@7.22.5(@babel/core@7.23.0):
1309 resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==}
1310 engines: {node: '>=6.9.0'}
1311 peerDependencies:
1312 '@babel/core': ^7.0.0-0
1313 dependencies:
1314 '@babel/core': 7.23.0
1315 '@babel/helper-plugin-utils': 7.22.5
1316 dev: true
1317
1318 /@babel/plugin-transform-logical-assignment-operators@7.22.11(@babel/core@7.23.0):
1319 resolution: {integrity: sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==}
1320 engines: {node: '>=6.9.0'}
1321 peerDependencies:
1322 '@babel/core': ^7.0.0-0
1323 dependencies:
1324 '@babel/core': 7.23.0
1325 '@babel/helper-plugin-utils': 7.22.5
1326 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.0)
1327 dev: true
1328
1329 /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.23.0):
1330 resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==}
1331 engines: {node: '>=6.9.0'}
1332 peerDependencies:
1333 '@babel/core': ^7.0.0-0
1334 dependencies:
1335 '@babel/core': 7.23.0
1336 '@babel/helper-plugin-utils': 7.22.5
1337 dev: true
1338
1339 /@babel/plugin-transform-modules-amd@7.23.0(@babel/core@7.23.0):
1340 resolution: {integrity: sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==}
1341 engines: {node: '>=6.9.0'}
1342 peerDependencies:
1343 '@babel/core': ^7.0.0-0
1344 dependencies:
1345 '@babel/core': 7.23.0
1346 '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.0)
1347 '@babel/helper-plugin-utils': 7.22.5
1348 dev: true
1349
1350 /@babel/plugin-transform-modules-commonjs@7.23.0(@babel/core@7.23.0):
1351 resolution: {integrity: sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==}
1352 engines: {node: '>=6.9.0'}
1353 peerDependencies:
1354 '@babel/core': ^7.0.0-0
1355 dependencies:
1356 '@babel/core': 7.23.0
1357 '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.0)
1358 '@babel/helper-plugin-utils': 7.22.5
1359 '@babel/helper-simple-access': 7.22.5
1360 dev: true
1361
1362 /@babel/plugin-transform-modules-systemjs@7.23.0(@babel/core@7.23.0):
1363 resolution: {integrity: sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==}
1364 engines: {node: '>=6.9.0'}
1365 peerDependencies:
1366 '@babel/core': ^7.0.0-0
1367 dependencies:
1368 '@babel/core': 7.23.0
1369 '@babel/helper-hoist-variables': 7.22.5
1370 '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.0)
1371 '@babel/helper-plugin-utils': 7.22.5
1372 '@babel/helper-validator-identifier': 7.22.20
1373 dev: true
1374
1375 /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.23.0):
1376 resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==}
1377 engines: {node: '>=6.9.0'}
1378 peerDependencies:
1379 '@babel/core': ^7.0.0-0
1380 dependencies:
1381 '@babel/core': 7.23.0
1382 '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.0)
1383 '@babel/helper-plugin-utils': 7.22.5
1384 dev: true
1385
1386 /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.0):
1387 resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==}
1388 engines: {node: '>=6.9.0'}
1389 peerDependencies:
1390 '@babel/core': ^7.0.0
1391 dependencies:
1392 '@babel/core': 7.23.0
1393 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.0)
1394 '@babel/helper-plugin-utils': 7.22.5
1395 dev: true
1396
1397 /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.23.0):
1398 resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==}
1399 engines: {node: '>=6.9.0'}
1400 peerDependencies:
1401 '@babel/core': ^7.0.0-0
1402 dependencies:
1403 '@babel/core': 7.23.0
1404 '@babel/helper-plugin-utils': 7.22.5
1405 dev: true
1406
1407 /@babel/plugin-transform-nullish-coalescing-operator@7.22.11(@babel/core@7.23.0):
1408 resolution: {integrity: sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==}
1409 engines: {node: '>=6.9.0'}
1410 peerDependencies:
1411 '@babel/core': ^7.0.0-0
1412 dependencies:
1413 '@babel/core': 7.23.0
1414 '@babel/helper-plugin-utils': 7.22.5
1415 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.0)
1416 dev: true
1417
1418 /@babel/plugin-transform-numeric-separator@7.22.11(@babel/core@7.23.0):
1419 resolution: {integrity: sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==}
1420 engines: {node: '>=6.9.0'}
1421 peerDependencies:
1422 '@babel/core': ^7.0.0-0
1423 dependencies:
1424 '@babel/core': 7.23.0
1425 '@babel/helper-plugin-utils': 7.22.5
1426 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.0)
1427 dev: true
1428
1429 /@babel/plugin-transform-object-rest-spread@7.22.15(@babel/core@7.23.0):
1430 resolution: {integrity: sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==}
1431 engines: {node: '>=6.9.0'}
1432 peerDependencies:
1433 '@babel/core': ^7.0.0-0
1434 dependencies:
1435 '@babel/compat-data': 7.22.20
1436 '@babel/core': 7.23.0
1437 '@babel/helper-compilation-targets': 7.22.15
1438 '@babel/helper-plugin-utils': 7.22.5
1439 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.0)
1440 '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.23.0)
1441 dev: true
1442
1443 /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.23.0):
1444 resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==}
1445 engines: {node: '>=6.9.0'}
1446 peerDependencies:
1447 '@babel/core': ^7.0.0-0
1448 dependencies:
1449 '@babel/core': 7.23.0
1450 '@babel/helper-plugin-utils': 7.22.5
1451 '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.0)
1452 dev: true
1453
1454 /@babel/plugin-transform-optional-catch-binding@7.22.11(@babel/core@7.23.0):
1455 resolution: {integrity: sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==}
1456 engines: {node: '>=6.9.0'}
1457 peerDependencies:
1458 '@babel/core': ^7.0.0-0
1459 dependencies:
1460 '@babel/core': 7.23.0
1461 '@babel/helper-plugin-utils': 7.22.5
1462 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.0)
1463 dev: true
1464
1465 /@babel/plugin-transform-optional-chaining@7.23.0(@babel/core@7.23.0):
1466 resolution: {integrity: sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==}
1467 engines: {node: '>=6.9.0'}
1468 peerDependencies:
1469 '@babel/core': ^7.0.0-0
1470 dependencies:
1471 '@babel/core': 7.23.0
1472 '@babel/helper-plugin-utils': 7.22.5
1473 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
1474 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.0)
1475 dev: true
1476
1477 /@babel/plugin-transform-parameters@7.22.15(@babel/core@7.23.0):
1478 resolution: {integrity: sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==}
1479 engines: {node: '>=6.9.0'}
1480 peerDependencies:
1481 '@babel/core': ^7.0.0-0
1482 dependencies:
1483 '@babel/core': 7.23.0
1484 '@babel/helper-plugin-utils': 7.22.5
1485 dev: true
1486
1487 /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.23.0):
1488 resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==}
1489 engines: {node: '>=6.9.0'}
1490 peerDependencies:
1491 '@babel/core': ^7.0.0-0
1492 dependencies:
1493 '@babel/core': 7.23.0
1494 '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.0)
1495 '@babel/helper-plugin-utils': 7.22.5
1496 dev: true
1497
1498 /@babel/plugin-transform-private-property-in-object@7.22.11(@babel/core@7.23.0):
1499 resolution: {integrity: sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==}
1500 engines: {node: '>=6.9.0'}
1501 peerDependencies:
1502 '@babel/core': ^7.0.0-0
1503 dependencies:
1504 '@babel/core': 7.23.0
1505 '@babel/helper-annotate-as-pure': 7.22.5
1506 '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.0)
1507 '@babel/helper-plugin-utils': 7.22.5
1508 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.0)
1509 dev: true
1510
1511 /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.23.0):
1512 resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==}
1513 engines: {node: '>=6.9.0'}
1514 peerDependencies:
1515 '@babel/core': ^7.0.0-0
1516 dependencies:
1517 '@babel/core': 7.23.0
1518 '@babel/helper-plugin-utils': 7.22.5
1519 dev: true
1520
1521 /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.23.0):
1522 resolution: {integrity: sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==}
1523 engines: {node: '>=6.9.0'}
1524 peerDependencies:
1525 '@babel/core': ^7.0.0-0
1526 dependencies:
1527 '@babel/core': 7.23.0
1528 '@babel/helper-plugin-utils': 7.22.5
1529 regenerator-transform: 0.15.2
1530 dev: true
1531
1532 /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.23.0):
1533 resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==}
1534 engines: {node: '>=6.9.0'}
1535 peerDependencies:
1536 '@babel/core': ^7.0.0-0
1537 dependencies:
1538 '@babel/core': 7.23.0
1539 '@babel/helper-plugin-utils': 7.22.5
1540 dev: true
1541
1542 /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.23.0):
1543 resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==}
1544 engines: {node: '>=6.9.0'}
1545 peerDependencies:
1546 '@babel/core': ^7.0.0-0
1547 dependencies:
1548 '@babel/core': 7.23.0
1549 '@babel/helper-plugin-utils': 7.22.5
1550 dev: true
1551
1552 /@babel/plugin-transform-spread@7.22.5(@babel/core@7.23.0):
1553 resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==}
1554 engines: {node: '>=6.9.0'}
1555 peerDependencies:
1556 '@babel/core': ^7.0.0-0
1557 dependencies:
1558 '@babel/core': 7.23.0
1559 '@babel/helper-plugin-utils': 7.22.5
1560 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
1561 dev: true
1562
1563 /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.23.0):
1564 resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==}
1565 engines: {node: '>=6.9.0'}
1566 peerDependencies:
1567 '@babel/core': ^7.0.0-0
1568 dependencies:
1569 '@babel/core': 7.23.0
1570 '@babel/helper-plugin-utils': 7.22.5
1571 dev: true
1572
1573 /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.23.0):
1574 resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==}
1575 engines: {node: '>=6.9.0'}
1576 peerDependencies:
1577 '@babel/core': ^7.0.0-0
1578 dependencies:
1579 '@babel/core': 7.23.0
1580 '@babel/helper-plugin-utils': 7.22.5
1581 dev: true
1582
1583 /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.23.0):
1584 resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==}
1585 engines: {node: '>=6.9.0'}
1586 peerDependencies:
1587 '@babel/core': ^7.0.0-0
1588 dependencies:
1589 '@babel/core': 7.23.0
1590 '@babel/helper-plugin-utils': 7.22.5
1591 dev: true
1592
1593 /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.23.0):
1594 resolution: {integrity: sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==}
1595 engines: {node: '>=6.9.0'}
1596 peerDependencies:
1597 '@babel/core': ^7.0.0-0
1598 dependencies:
1599 '@babel/core': 7.23.0
1600 '@babel/helper-plugin-utils': 7.22.5
1601 dev: true
1602
1603 /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.23.0):
1604 resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==}
1605 engines: {node: '>=6.9.0'}
1606 peerDependencies:
1607 '@babel/core': ^7.0.0-0
1608 dependencies:
1609 '@babel/core': 7.23.0
1610 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.0)
1611 '@babel/helper-plugin-utils': 7.22.5
1612 dev: true
1613
1614 /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.23.0):
1615 resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==}
1616 engines: {node: '>=6.9.0'}
1617 peerDependencies:
1618 '@babel/core': ^7.0.0-0
1619 dependencies:
1620 '@babel/core': 7.23.0
1621 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.0)
1622 '@babel/helper-plugin-utils': 7.22.5
1623 dev: true
1624
1625 /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.23.0):
1626 resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==}
1627 engines: {node: '>=6.9.0'}
1628 peerDependencies:
1629 '@babel/core': ^7.0.0
1630 dependencies:
1631 '@babel/core': 7.23.0
1632 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.0)
1633 '@babel/helper-plugin-utils': 7.22.5
1634 dev: true
1635
1636 /@babel/preset-env@7.22.20(@babel/core@7.23.0):
1637 resolution: {integrity: sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==}
1638 engines: {node: '>=6.9.0'}
1639 peerDependencies:
1640 '@babel/core': ^7.0.0-0
1641 dependencies:
1642 '@babel/compat-data': 7.22.20
1643 '@babel/core': 7.23.0
1644 '@babel/helper-compilation-targets': 7.22.15
1645 '@babel/helper-plugin-utils': 7.22.5
1646 '@babel/helper-validator-option': 7.22.15
1647 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.15(@babel/core@7.23.0)
1648 '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.15(@babel/core@7.23.0)
1649 '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.0)
1650 '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.0)
1651 '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.0)
1652 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.0)
1653 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.0)
1654 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.0)
1655 '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.23.0)
1656 '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.23.0)
1657 '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.0)
1658 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.0)
1659 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.0)
1660 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.0)
1661 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.0)
1662 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.0)
1663 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.0)
1664 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.0)
1665 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.0)
1666 '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.0)
1667 '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.0)
1668 '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.23.0)
1669 '@babel/plugin-transform-async-generator-functions': 7.22.15(@babel/core@7.23.0)
1670 '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.23.0)
1671 '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.23.0)
1672 '@babel/plugin-transform-block-scoping': 7.23.0(@babel/core@7.23.0)
1673 '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.23.0)
1674 '@babel/plugin-transform-class-static-block': 7.22.11(@babel/core@7.23.0)
1675 '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.23.0)
1676 '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.23.0)
1677 '@babel/plugin-transform-destructuring': 7.23.0(@babel/core@7.23.0)
1678 '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.23.0)
1679 '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.23.0)
1680 '@babel/plugin-transform-dynamic-import': 7.22.11(@babel/core@7.23.0)
1681 '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.23.0)
1682 '@babel/plugin-transform-export-namespace-from': 7.22.11(@babel/core@7.23.0)
1683 '@babel/plugin-transform-for-of': 7.22.15(@babel/core@7.23.0)
1684 '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.23.0)
1685 '@babel/plugin-transform-json-strings': 7.22.11(@babel/core@7.23.0)
1686 '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.23.0)
1687 '@babel/plugin-transform-logical-assignment-operators': 7.22.11(@babel/core@7.23.0)
1688 '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.23.0)
1689 '@babel/plugin-transform-modules-amd': 7.23.0(@babel/core@7.23.0)
1690 '@babel/plugin-transform-modules-commonjs': 7.23.0(@babel/core@7.23.0)
1691 '@babel/plugin-transform-modules-systemjs': 7.23.0(@babel/core@7.23.0)
1692 '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.23.0)
1693 '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.0)
1694 '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.23.0)
1695 '@babel/plugin-transform-nullish-coalescing-operator': 7.22.11(@babel/core@7.23.0)
1696 '@babel/plugin-transform-numeric-separator': 7.22.11(@babel/core@7.23.0)
1697 '@babel/plugin-transform-object-rest-spread': 7.22.15(@babel/core@7.23.0)
1698 '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.23.0)
1699 '@babel/plugin-transform-optional-catch-binding': 7.22.11(@babel/core@7.23.0)
1700 '@babel/plugin-transform-optional-chaining': 7.23.0(@babel/core@7.23.0)
1701 '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.23.0)
1702 '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.23.0)
1703 '@babel/plugin-transform-private-property-in-object': 7.22.11(@babel/core@7.23.0)
1704 '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.23.0)
1705 '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.23.0)
1706 '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.23.0)
1707 '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.23.0)
1708 '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.23.0)
1709 '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.23.0)
1710 '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.23.0)
1711 '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.23.0)
1712 '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.23.0)
1713 '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.23.0)
1714 '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.23.0)
1715 '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.23.0)
1716 '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.0)
1717 '@babel/types': 7.23.0
1718 babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.23.0)
1719 babel-plugin-polyfill-corejs3: 0.8.4(@babel/core@7.23.0)
1720 babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.23.0)
1721 core-js-compat: 3.32.2
1722 semver: 6.3.1
1723 transitivePeerDependencies:
1724 - supports-color
1725 dev: true
1726
1727 /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.0):
1728 resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==}
1729 peerDependencies:
1730 '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0
1731 dependencies:
1732 '@babel/core': 7.23.0
1733 '@babel/helper-plugin-utils': 7.22.5
1734 '@babel/types': 7.23.0
1735 esutils: 2.0.3
1736 dev: true
1737
1738 /@babel/regjsgen@0.8.0:
1739 resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==}
1740 dev: true
1741
1742 /@babel/runtime@7.23.1:
1743 resolution: {integrity: sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==}
1744 engines: {node: '>=6.9.0'}
1745 dependencies:
1746 regenerator-runtime: 0.14.0
1747 dev: true
1748
1749 /@babel/template@7.22.15:
1750 resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==}
1751 engines: {node: '>=6.9.0'}
1752 dependencies:
1753 '@babel/code-frame': 7.22.13
1754 '@babel/parser': 7.23.0
1755 '@babel/types': 7.23.0
1756 dev: true
1757
1758 /@babel/traverse@7.23.0:
1759 resolution: {integrity: sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==}
1760 engines: {node: '>=6.9.0'}
1761 dependencies:
1762 '@babel/code-frame': 7.22.13
1763 '@babel/generator': 7.23.0
1764 '@babel/helper-environment-visitor': 7.22.20
1765 '@babel/helper-function-name': 7.23.0
1766 '@babel/helper-hoist-variables': 7.22.5
1767 '@babel/helper-split-export-declaration': 7.22.6
1768 '@babel/parser': 7.23.0
1769 '@babel/types': 7.23.0
1770 debug: 4.3.4
1771 globals: 11.12.0
1772 transitivePeerDependencies:
1773 - supports-color
1774 dev: true
1775
1776 /@babel/types@7.23.0:
1777 resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==}
1778 engines: {node: '>=6.9.0'}
1779 dependencies:
1780 '@babel/helper-string-parser': 7.22.5
1781 '@babel/helper-validator-identifier': 7.22.20
1782 to-fast-properties: 2.0.0
1783 dev: true
1784
1785 /@colors/colors@1.5.0:
323 resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} 1786 resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
324 engines: {node: '>=0.1.90'} 1787 engines: {node: '>=0.1.90'}
325 dev: false 1788 requiresBuild: true
1789 optional: true
326 1790
327 /@dabh/diagnostics/2.0.3: 1791 /@discoveryjs/json-ext@0.5.7:
328 resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} 1792 resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==}
1793 engines: {node: '>=10.0.0'}
1794 dev: true
1795
1796 /@eslint-community/eslint-utils@4.4.0(eslint@8.46.0):
1797 resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
1798 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1799 peerDependencies:
1800 eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
329 dependencies: 1801 dependencies:
330 colorspace: 1.1.4 1802 eslint: 8.46.0
331 enabled: 2.0.0 1803 eslint-visitor-keys: 3.4.3
332 kuler: 2.0.0 1804 dev: true
333 dev: false
334 1805
335 /@eslint/eslintrc/0.4.3: 1806 /@eslint-community/regexpp@4.9.0:
336 resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} 1807 resolution: {integrity: sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ==}
337 engines: {node: ^10.12.0 || >=12.0.0} 1808 engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
1809 dev: true
1810
1811 /@eslint/eslintrc@2.1.2:
1812 resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==}
1813 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
338 dependencies: 1814 dependencies:
339 ajv: 6.12.6 1815 ajv: 6.12.6
340 debug: 4.3.4 1816 debug: 4.3.4
341 espree: 7.3.1 1817 espree: 9.6.1
342 globals: 13.18.0 1818 globals: 13.22.0
343 ignore: 4.0.6 1819 ignore: 5.2.4
344 import-fresh: 3.3.0 1820 import-fresh: 3.3.0
345 js-yaml: 3.14.1 1821 js-yaml: 4.1.0
346 minimatch: 3.1.2 1822 minimatch: 3.1.2
347 strip-json-comments: 3.1.1 1823 strip-json-comments: 3.1.1
348 transitivePeerDependencies: 1824 transitivePeerDependencies:
349 - supports-color 1825 - supports-color
350 dev: true 1826 dev: true
351 1827
352 /@humanwhocodes/config-array/0.5.0: 1828 /@eslint/js@8.50.0:
353 resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} 1829 resolution: {integrity: sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==}
1830 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1831 dev: true
1832
1833 /@faker-js/faker@8.1.0:
1834 resolution: {integrity: sha512-38DT60rumHfBYynif3lmtxMqMqmsOQIxQgEuPZxCk2yUYN0eqWpTACgxi0VpidvsJB8CRxCpvP7B3anK85FjtQ==}
1835 engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'}
1836 dev: false
1837
1838 /@gar/promisify@1.1.3:
1839 resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==}
1840 requiresBuild: true
1841 dev: false
1842 optional: true
1843
1844 /@humanwhocodes/config-array@0.11.11:
1845 resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==}
354 engines: {node: '>=10.10.0'} 1846 engines: {node: '>=10.10.0'}
355 dependencies: 1847 dependencies:
356 '@humanwhocodes/object-schema': 1.2.1 1848 '@humanwhocodes/object-schema': 1.2.1
@@ -360,599 +1852,1925 @@ packages:
360 - supports-color 1852 - supports-color
361 dev: true 1853 dev: true
362 1854
363 /@humanwhocodes/object-schema/1.2.1: 1855 /@humanwhocodes/module-importer@1.0.1:
1856 resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
1857 engines: {node: '>=12.22'}
1858 dev: true
1859
1860 /@humanwhocodes/object-schema@1.2.1:
364 resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 1861 resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
365 dev: true 1862 dev: true
366 1863
367 /@sentry/core/5.30.0: 1864 /@japa/api-client@1.4.4(@japa/runner@2.5.1):
368 resolution: {integrity: sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==} 1865 resolution: {integrity: sha512-7YVDWMWDvUGRlAxOS2QmYTyfxsY+EC0fiVz/w7J4qIT2oYhl1TVfJ/R1WWRoLe/KuZr2yIUNlp7OdStVjESB5A==}
369 engines: {node: '>=6'} 1866 peerDependencies:
1867 '@japa/runner': ^2.2.3
1868 dependencies:
1869 '@japa/runner': 2.5.1
1870 '@poppinss/hooks': 6.0.2-0
1871 '@types/superagent': 4.1.19
1872 cookie: 0.5.0
1873 macroable: 7.0.2
1874 set-cookie-parser: 2.6.0
1875 superagent: 8.1.2
1876 transitivePeerDependencies:
1877 - supports-color
1878 dev: true
1879
1880 /@japa/assert@1.4.1(@japa/runner@2.5.1)(openapi-types@12.1.3):
1881 resolution: {integrity: sha512-IyacnyaGzHqKTUbnOproPluHGWybt0ix0UsISAnjK62aTlDS4pOYPXkCDexk21/iReXNLtFgKM/RrDPDAUfrqA==}
1882 peerDependencies:
1883 '@japa/runner': ^2.1.1
370 dependencies: 1884 dependencies:
371 '@sentry/hub': 5.30.0 1885 '@japa/runner': 2.5.1
372 '@sentry/minimal': 5.30.0 1886 '@types/chai': 4.3.6
373 '@sentry/types': 5.30.0 1887 api-contract-validator: 2.2.8(openapi-types@12.1.3)
374 '@sentry/utils': 5.30.0 1888 chai: 4.3.10
375 tslib: 1.14.1 1889 macroable: 7.0.2
376 dev: false 1890 transitivePeerDependencies:
1891 - openapi-types
1892 dev: true
377 1893
378 /@sentry/hub/5.30.0: 1894 /@japa/base-reporter@1.1.2:
379 resolution: {integrity: sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==} 1895 resolution: {integrity: sha512-6MYs/EsXjouFPNUQL3VGllryZ5enI5rqhvQbY2Dzh3Zmhu22DWw6v9d2pxucrFptDTtQ38MBPVL/BIeZAafmOw==}
380 engines: {node: '>=6'}
381 dependencies: 1896 dependencies:
382 '@sentry/types': 5.30.0 1897 '@japa/errors-printer': 2.1.0
383 '@sentry/utils': 5.30.0 1898 '@poppinss/cliui': 3.0.5
384 tslib: 1.14.1 1899 ms: 2.1.3
385 dev: false 1900 dev: true
386 1901
387 /@sentry/minimal/5.30.0: 1902 /@japa/core@7.3.3:
388 resolution: {integrity: sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==} 1903 resolution: {integrity: sha512-3mkWlzWVALZANFfMK6Q6xtYGM3mpzZeeGGUVQGDt2OOxvL8FDADVxHrRn9BFc1V4fVJO4jR/QH5utrb+RfCF5g==}
389 engines: {node: '>=6'}
390 dependencies: 1904 dependencies:
391 '@sentry/hub': 5.30.0 1905 '@poppinss/hooks': 6.0.2-0
392 '@sentry/types': 5.30.0 1906 async-retry: 1.3.3
393 tslib: 1.14.1 1907 emittery: 0.13.1
1908 macroable: 7.0.2
1909 time-span: 4.0.0
1910 dev: true
1911
1912 /@japa/errors-printer@2.1.0:
1913 resolution: {integrity: sha512-iZUrB58e29jbRxb7lxocz5uHt9mQ1q7iojs8Gh1kIKmvaPx0KMqce77JDtqYzu2+95WjmppAvM6au1l1WYJmpw==}
1914 dependencies:
1915 '@poppinss/cliui': 3.0.5
1916 jest-diff: 29.7.0
1917 youch: 3.2.3
1918 youch-terminal: 2.2.2
1919 dev: true
1920
1921 /@japa/preset-adonis@1.2.0(@adonisjs/core@5.9.0)(@japa/runner@2.5.1)(openapi-types@12.1.3):
1922 resolution: {integrity: sha512-jcvQCN9U5WA4kdKDtYuV6DZMzrZomxho3MASS6yhnJsSqSW6jgFDNwhOgSzY7AyPgxmVAf3jZ6JKd7r2USctlA==}
1923 peerDependencies:
1924 '@adonisjs/core': ^5.0.0
1925 '@japa/runner': ^2.0.0
1926 dependencies:
1927 '@adonisjs/core': 5.9.0
1928 '@japa/api-client': 1.4.4(@japa/runner@2.5.1)
1929 '@japa/assert': 1.4.1(@japa/runner@2.5.1)(openapi-types@12.1.3)
1930 '@japa/run-failed-tests': 1.1.1(@japa/runner@2.5.1)
1931 '@japa/runner': 2.5.1
1932 '@japa/spec-reporter': 1.3.3
1933 transitivePeerDependencies:
1934 - openapi-types
1935 - supports-color
1936 dev: true
1937
1938 /@japa/run-failed-tests@1.1.1(@japa/runner@2.5.1):
1939 resolution: {integrity: sha512-lMv1nAtKBpX7CH8K+HHRr2aaCTAJ9Q3i7DG12MmU2A/EDJFuP7e9ZASE8O0UTlk5Goc+DR6mzuFXG3R351J89w==}
1940 peerDependencies:
1941 '@japa/runner': ^2.2.3
1942 dependencies:
1943 '@japa/runner': 2.5.1
1944 '@poppinss/cliui': 3.0.5
1945 find-cache-dir: 3.3.2
1946 fs-extra: 11.1.1
1947 dev: true
1948
1949 /@japa/runner@2.5.1:
1950 resolution: {integrity: sha512-p1zjniMCiGxRnZkUs5WtZjTQhbXcnK0aM2Wu4Qc+w+MBpmOrw5J2zJuge0FweepTUR9CT3r2x65uw4qIshy8XQ==}
1951 dependencies:
1952 '@japa/core': 7.3.3
1953 '@japa/errors-printer': 2.1.0
1954 '@poppinss/cliui': 3.0.5
1955 '@poppinss/hooks': 6.0.2-0
1956 fast-glob: 3.3.1
1957 getopts: 2.3.0
1958 inclusion: 1.0.1
1959 dev: true
1960
1961 /@japa/spec-reporter@1.3.3:
1962 resolution: {integrity: sha512-EOOjvQVmmWZDKxmO+f0v/BSNeKzKkeJSrNwEldkF40zZWdHX2J3Jb2MJowE5DgSOQCiG/OG2UFen0I+XLnPoxQ==}
1963 dependencies:
1964 '@japa/base-reporter': 1.1.2
1965 '@japa/errors-printer': 2.1.0
1966 '@poppinss/cliui': 3.0.5
1967 ms: 2.1.3
1968 dev: true
1969
1970 /@jest/schemas@29.6.3:
1971 resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
1972 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1973 dependencies:
1974 '@sinclair/typebox': 0.27.8
1975 dev: true
1976
1977 /@jest/types@25.5.0:
1978 resolution: {integrity: sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==}
1979 engines: {node: '>= 8.3'}
1980 dependencies:
1981 '@types/istanbul-lib-coverage': 2.0.4
1982 '@types/istanbul-reports': 1.1.2
1983 '@types/yargs': 15.0.16
1984 chalk: 3.0.0
1985 dev: true
1986
1987 /@jest/types@29.6.3:
1988 resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==}
1989 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1990 dependencies:
1991 '@jest/schemas': 29.6.3
1992 '@types/istanbul-lib-coverage': 2.0.4
1993 '@types/istanbul-reports': 3.0.2
1994 '@types/node': 20.7.2
1995 '@types/yargs': 17.0.26
1996 chalk: 4.1.2
1997 dev: true
1998
1999 /@jridgewell/gen-mapping@0.3.3:
2000 resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
2001 engines: {node: '>=6.0.0'}
2002 dependencies:
2003 '@jridgewell/set-array': 1.1.2
2004 '@jridgewell/sourcemap-codec': 1.4.15
2005 '@jridgewell/trace-mapping': 0.3.19
2006 dev: true
2007
2008 /@jridgewell/resolve-uri@3.1.1:
2009 resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
2010 engines: {node: '>=6.0.0'}
2011 dev: true
2012
2013 /@jridgewell/set-array@1.1.2:
2014 resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
2015 engines: {node: '>=6.0.0'}
2016 dev: true
2017
2018 /@jridgewell/source-map@0.3.5:
2019 resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==}
2020 dependencies:
2021 '@jridgewell/gen-mapping': 0.3.3
2022 '@jridgewell/trace-mapping': 0.3.19
2023 dev: true
2024
2025 /@jridgewell/sourcemap-codec@1.4.15:
2026 resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
2027 dev: true
2028
2029 /@jridgewell/trace-mapping@0.3.19:
2030 resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==}
2031 dependencies:
2032 '@jridgewell/resolve-uri': 3.1.1
2033 '@jridgewell/sourcemap-codec': 1.4.15
2034 dev: true
2035
2036 /@jsdevtools/ono@7.1.3:
2037 resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==}
2038 dev: true
2039
2040 /@kdf/salt@2.0.1:
2041 resolution: {integrity: sha512-1RBY7HcGYuWBm0+4ygjdRerN+mhpuT5picGB6+azqUXsz/IZljegrKkeHRiV6wuxY8n4HrxOuw8ou7JuGxRWdQ==}
2042 engines: {node: '>=10'}
394 dev: false 2043 dev: false
395 2044
396 /@sentry/node/5.30.0: 2045 /@leichtgewicht/ip-codec@2.0.4:
397 resolution: {integrity: sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==} 2046 resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==}
398 engines: {node: '>=6'} 2047 dev: true
2048
2049 /@mapbox/node-pre-gyp@1.0.11:
2050 resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==}
2051 hasBin: true
399 dependencies: 2052 dependencies:
400 '@sentry/core': 5.30.0 2053 detect-libc: 2.0.2
401 '@sentry/hub': 5.30.0
402 '@sentry/tracing': 5.30.0
403 '@sentry/types': 5.30.0
404 '@sentry/utils': 5.30.0
405 cookie: 0.4.2
406 https-proxy-agent: 5.0.1 2054 https-proxy-agent: 5.0.1
407 lru_map: 0.3.3 2055 make-dir: 3.1.0
408 tslib: 1.14.1 2056 node-fetch: 2.7.0
2057 nopt: 5.0.0
2058 npmlog: 5.0.1
2059 rimraf: 3.0.2
2060 semver: 7.5.4
2061 tar: 6.2.0
409 transitivePeerDependencies: 2062 transitivePeerDependencies:
2063 - encoding
410 - supports-color 2064 - supports-color
411 dev: false 2065 dev: false
412 2066
413 /@sentry/tracing/5.30.0: 2067 /@mrmlnc/readdir-enhanced@2.2.1:
414 resolution: {integrity: sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==} 2068 resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==}
415 engines: {node: '>=6'} 2069 engines: {node: '>=4'}
416 dependencies: 2070 dependencies:
417 '@sentry/hub': 5.30.0 2071 call-me-maybe: 1.0.2
418 '@sentry/minimal': 5.30.0 2072 glob-to-regexp: 0.3.0
419 '@sentry/types': 5.30.0 2073 dev: true
420 '@sentry/utils': 5.30.0 2074
421 tslib: 1.14.1 2075 /@nodelib/fs.scandir@2.1.5:
2076 resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
2077 engines: {node: '>= 8'}
2078 dependencies:
2079 '@nodelib/fs.stat': 2.0.5
2080 run-parallel: 1.2.0
2081
2082 /@nodelib/fs.stat@1.1.3:
2083 resolution: {integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==}
2084 engines: {node: '>= 6'}
2085 dev: true
2086
2087 /@nodelib/fs.stat@2.0.5:
2088 resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
2089 engines: {node: '>= 8'}
2090
2091 /@nodelib/fs.walk@1.2.8:
2092 resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
2093 engines: {node: '>= 8'}
2094 dependencies:
2095 '@nodelib/fs.scandir': 2.1.5
2096 fastq: 1.15.0
2097
2098 /@npmcli/fs@1.1.1:
2099 resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==}
2100 requiresBuild: true
2101 dependencies:
2102 '@gar/promisify': 1.1.3
2103 semver: 7.5.4
422 dev: false 2104 dev: false
2105 optional: true
423 2106
424 /@sentry/types/5.30.0: 2107 /@npmcli/move-file@1.1.2:
425 resolution: {integrity: sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==} 2108 resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==}
426 engines: {node: '>=6'} 2109 engines: {node: '>=10'}
2110 deprecated: This functionality has been moved to @npmcli/fs
2111 requiresBuild: true
2112 dependencies:
2113 mkdirp: 1.0.4
2114 rimraf: 3.0.2
427 dev: false 2115 dev: false
2116 optional: true
428 2117
429 /@sentry/utils/5.30.0: 2118 /@nuxt/friendly-errors-webpack-plugin@2.5.2(webpack@5.88.2):
430 resolution: {integrity: sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==} 2119 resolution: {integrity: sha512-LLc+90lnxVbpKkMqk5z1EWpXoODhc6gRkqqXJCInJwF5xabHAE7biFvbULfvTRmtaTzAaP8IV4HQDLUgeAUTTw==}
431 engines: {node: '>=6'} 2120 engines: {node: '>=8.0.0', npm: '>=5.0.0'}
2121 peerDependencies:
2122 webpack: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0
432 dependencies: 2123 dependencies:
433 '@sentry/types': 5.30.0 2124 chalk: 2.4.2
434 tslib: 1.14.1 2125 consola: 2.15.3
2126 error-stack-parser: 2.1.4
2127 string-width: 4.2.3
2128 webpack: 5.88.2(webpack-cli@5.1.4)
2129 dev: true
2130
2131 /@phc/format@1.0.0:
2132 resolution: {integrity: sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ==}
2133 engines: {node: '>=10'}
2134
2135 /@pkgr/utils@2.4.2:
2136 resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==}
2137 engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
2138 dependencies:
2139 cross-spawn: 7.0.3
2140 fast-glob: 3.3.1
2141 is-glob: 4.0.3
2142 open: 9.1.0
2143 picocolors: 1.0.0
2144 tslib: 2.6.2
2145 dev: true
2146
2147 /@poppinss/chokidar-ts@3.3.5:
2148 resolution: {integrity: sha512-Ht//xB2ZPa16EDH/bmaWEBWunsBTnBYdnv3nKwXHrqNHDfcYX1DHcJmcNORRH9YLOOuVsTmqDcpiAdTn06LaHQ==}
2149 dependencies:
2150 builtin-modules: 3.3.0
2151 chokidar: 3.5.3
2152 debug: 4.3.4
2153 emittery: 0.10.2
2154 fs-extra: 10.1.0
2155 mem: 8.1.1
2156 picomatch: 2.3.1
2157 transitivePeerDependencies:
2158 - supports-color
2159 dev: true
2160
2161 /@poppinss/cliui@3.0.5:
2162 resolution: {integrity: sha512-9TCwhJ6hQDAv7LWredEQL7eSA97kQ/i5Td80T7InV9z9rOXT8keywAM0pSvTUS01bwCeiZQVoT4r/G67DRiPJA==}
2163 dependencies:
2164 '@poppinss/colors': 3.0.3
2165 cli-boxes: 3.0.0
2166 cli-table3: 0.6.3
2167 color-support: 1.1.3
2168 log-update: 4.0.0
2169 pretty-hrtime: 1.0.3
2170 string-width: 4.2.3
2171
2172 /@poppinss/co-body@1.2.0:
2173 resolution: {integrity: sha512-1aJ06XrtQ8gueo91+Vc7TTSeXECsW1pWDCKumtuGL+9xsjJvP6n567YuimwHuH99wFMIhyNW5U1g2C/4wjvXCQ==}
2174 dependencies:
2175 '@poppinss/utils': 5.0.0
2176 inflation: 2.0.0
2177 qs: 6.11.2
2178 raw-body: 2.5.2
2179 type-is: 1.6.18
2180
2181 /@poppinss/colors@3.0.3:
2182 resolution: {integrity: sha512-jiZcp91PvIs5s4Wz4gEVY9J2tqH6H1++mZmsrC3TmFam9gbVPUJPEubPM5j4BQYJre7bjs9nkIbYFcWMOFHIVQ==}
2183 dependencies:
2184 color-support: 1.1.3
2185 kleur: 4.1.5
2186
2187 /@poppinss/file-generator@1.0.2:
2188 resolution: {integrity: sha512-rRob//4jLbUVbDSsNRihloKGgpyVsWdFQWUmONxX/gyv4koT1OlVoc3ccWgk7Y/sEa2cFxj3zrFs+wdT09iXWw==}
2189 dependencies:
2190 bytes: 3.1.2
2191
2192 /@poppinss/hooks@5.0.3(@adonisjs/application@5.3.0):
2193 resolution: {integrity: sha512-M5a151VUl+RslVP5qwDW+u+0VmzKt5Nfplzdx2nrtXol3yVlLN3u2Jp6UADESid3DDI7IRHmFrA3sQusey3eUA==}
2194 peerDependencies:
2195 '@adonisjs/application': '>=4.0.0'
2196 peerDependenciesMeta:
2197 '@adonisjs/application':
2198 optional: true
2199 dependencies:
2200 '@adonisjs/application': 5.3.0
435 dev: false 2201 dev: false
436 2202
437 /@sindresorhus/is/0.7.0: 2203 /@poppinss/hooks@6.0.2-0:
438 resolution: {integrity: sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==} 2204 resolution: {integrity: sha512-mG0hnQlxgflvxyM6t/XO8z/FwotsYRXPhtLZ3cz3iyk4t8xaNtOihSANBcvqdkxZCtGBvotNIf/GnES9hvlfSQ==}
439 engines: {node: '>=4'} 2205 dev: true
2206
2207 /@poppinss/inspect@1.0.1:
2208 resolution: {integrity: sha512-kLeEaBSGhlleyYvKc7c9s3uE6xv7cwyulE0EgHf4jU/CL96h0yC4mkdw1wvC1l1PYYQozCGy46FwMBAAMOobCA==}
440 dev: false 2209 dev: false
441 2210
442 /@slynova/flydrive/0.3.1: 2211 /@poppinss/manager@5.0.2:
443 resolution: {integrity: sha512-/C3chxZRqonxjQwj70WOyqtw0JGjBr6rjvkcrGlDedUXi5YoiJiTVHwD4ry6tHJKwOi3PtxpWO9RZwSKElVWzw==} 2212 resolution: {integrity: sha512-c5F3EKztq/iw0J+BfNu5rSI5/ji+kjts4rJaC/VvIzpTWzbRorb7UR9J32T8cLtTwjNHbmxk3BAU402lvL2JFA==}
2213
2214 /@poppinss/matchit@3.1.2:
2215 resolution: {integrity: sha512-Bx+jY+vmdQFmwYiHliiPjr+oVBaGnh79B1h1FSAm3jME1QylLFt8PPYC0ymO8Q5PzJj/KuE3jeTnZhRHOWqq8g==}
2216 dependencies:
2217 '@arr/every': 1.0.1
2218
2219 /@poppinss/multiparty@2.0.1:
2220 resolution: {integrity: sha512-Pf3V9PFyZDIkDBBiAOT2hdmA+1l/+hverHbUnMzNzwtwgO50s2ZPt5KxUydVA0hceg9gryo5unQ0WUF1SO9tkQ==}
444 dependencies: 2221 dependencies:
445 create-output-stream: 0.0.1 2222 http-errors: 2.0.0
446 fs-extra: 6.0.1 2223 safe-buffer: 5.2.1
447 node-exceptions: 3.0.0 2224 uid-safe: 2.1.5
448 resetable: 1.0.3 2225
2226 /@poppinss/prompts@2.0.2:
2227 resolution: {integrity: sha512-jTrE8U5rnHTZNpBvPauFVDMQZZuEnfABbJUEXfq0uu8oGJnPaaA+y0bQbyqVf4yWqgRGldgrzAwNz739hIEnPQ==}
2228 dependencies:
2229 '@poppinss/colors': 3.0.3
2230 enquirer: 2.4.1
2231
2232 /@poppinss/utils@3.3.1:
2233 resolution: {integrity: sha512-k4MFt+4JhOWJZ9D2xpEcG/mpZyXVXYT+dSOg83vHK1xhXl+7r0IYBXRKWX2+To7/90KJaWlwpcdCAalXE8Debg==}
2234 dependencies:
2235 '@types/bytes': 3.1.2
2236 '@types/he': 1.2.1
2237 buffer-alloc: 1.2.0
2238 bytes: 3.1.2
2239 change-case: 4.1.2
2240 cuid: 2.1.8
2241 flattie: 1.1.0
2242 fs-readdir-recursive: 1.1.0
2243 he: 1.2.0
2244 kind-of: 6.0.3
2245 lodash: 4.17.21
2246 ms: 2.1.3
2247 pluralize: 8.0.0
2248 require-all: 3.0.0
2249 resolve-from: 5.0.0
2250 slugify: 1.6.6
2251 truncatise: 0.0.8
449 dev: false 2252 dev: false
450 2253
451 /@types/json5/0.0.29: 2254 /@poppinss/utils@4.0.4:
452 resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 2255 resolution: {integrity: sha512-6LS3mofSVB9IQZqofA4rX6KVVcCpdwUQuNe4efHqOTzgD/Q5HTVvDP0vKg1m994QlzJs4aLW1JwXVcNCThEh4g==}
2256 dependencies:
2257 '@poppinss/file-generator': 1.0.2
2258 '@types/bytes': 3.1.2
2259 '@types/he': 1.2.1
2260 bytes: 3.1.2
2261 change-case: 4.1.2
2262 cuid: 2.1.8
2263 flattie: 1.1.0
2264 fs-readdir-recursive: 1.1.0
2265 he: 1.2.0
2266 kind-of: 6.0.3
2267 lodash: 4.17.21
2268 ms: 2.1.3
2269 pluralize: 8.0.0
2270 require-all: 3.0.0
2271 resolve-from: 5.0.0
2272 slugify: 1.6.6
2273 truncatise: 0.0.8
2274
2275 /@poppinss/utils@5.0.0:
2276 resolution: {integrity: sha512-SpJL5p4Nx3bRCpCf62KagZLUHLvJD+VDylGpXAeP2G5qb3s6SSOBlpaFmer4GxdyTqLIUt0PRCzF1TbpNU+qZw==}
2277 dependencies:
2278 '@poppinss/file-generator': 1.0.2
2279 '@types/bytes': 3.1.2
2280 '@types/he': 1.2.1
2281 bytes: 3.1.2
2282 change-case: 4.1.2
2283 cuid: 2.1.8
2284 flattie: 1.1.0
2285 fs-readdir-recursive: 1.1.0
2286 he: 1.2.0
2287 kind-of: 6.0.3
2288 lodash: 4.17.21
2289 ms: 2.1.3
2290 pluralize: 8.0.0
2291 require-all: 3.0.0
2292 resolve-from: 5.0.0
2293 slugify: 1.6.6
2294 truncatise: 0.0.8
2295
2296 /@sinclair/typebox@0.27.8:
2297 resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
453 dev: true 2298 dev: true
454 2299
455 /@types/keyv/3.1.4: 2300 /@sindresorhus/is@4.6.0:
456 resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} 2301 resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==}
2302 engines: {node: '>=10'}
2303 dev: false
2304
2305 /@symfony/webpack-encore@4.4.0(@babel/core@7.23.0)(@babel/preset-env@7.22.20)(eslint@8.46.0)(postcss@8.4.31)(typescript@5.1.6)(webpack-cli@5.1.4)(webpack@5.88.2):
2306 resolution: {integrity: sha512-p3n2Z16sGV6odZ3ihIU+gupYc55KfrfCt62+Gppe8MUo6QuT5Bk2cXXjR4Hb89KvCRDHnjYEWVfnewRsfE8TRQ==}
2307 engines: {node: '>=14.0.0'}
2308 hasBin: true
2309 peerDependencies:
2310 '@babel/core': ^7.17.0
2311 '@babel/plugin-transform-react-jsx': ^7.12.11
2312 '@babel/preset-env': ^7.16.0
2313 '@babel/preset-react': ^7.0.0
2314 '@babel/preset-typescript': ^7.0.0
2315 '@symfony/stimulus-bridge': ^3.0.0
2316 '@vue/babel-helper-vue-jsx-merge-props': ^1.0.0
2317 '@vue/babel-preset-jsx': ^1.0.0
2318 '@vue/compiler-sfc': ^2.6 || ^3.0.2
2319 eslint: ^8.0.0
2320 eslint-webpack-plugin: ^3.1.0 || ^4.0.0
2321 file-loader: ^6.0.0
2322 fork-ts-checker-webpack-plugin: ^7.0.0
2323 handlebars: ^4.7.7
2324 handlebars-loader: ^1.7.0
2325 less: ^4.0.0
2326 less-loader: ^11.0.0
2327 postcss: ^8.3.0
2328 postcss-loader: ^7.0.0
2329 sass: ^1.17.0
2330 sass-loader: ^13.0.0
2331 stylus: ^0.58.1
2332 stylus-loader: ^7.0.0
2333 ts-loader: ^9.0.0
2334 typescript: ^4.2.2 || ^5.0.0
2335 vue: ^2.6 || ^3.2.14
2336 vue-loader: ^15.0.11 || ^17.0.0
2337 vue-template-compiler: ^2.5
2338 webpack: ^5.72
2339 webpack-cli: ^4.9.1 || ^5.0.1
2340 webpack-notifier: ^1.15.0
2341 peerDependenciesMeta:
2342 '@babel/plugin-transform-react-jsx':
2343 optional: true
2344 '@babel/preset-react':
2345 optional: true
2346 '@babel/preset-typescript':
2347 optional: true
2348 '@symfony/stimulus-bridge':
2349 optional: true
2350 '@vue/babel-helper-vue-jsx-merge-props':
2351 optional: true
2352 '@vue/babel-preset-jsx':
2353 optional: true
2354 '@vue/compiler-sfc':
2355 optional: true
2356 eslint:
2357 optional: true
2358 eslint-webpack-plugin:
2359 optional: true
2360 file-loader:
2361 optional: true
2362 fork-ts-checker-webpack-plugin:
2363 optional: true
2364 handlebars:
2365 optional: true
2366 handlebars-loader:
2367 optional: true
2368 less:
2369 optional: true
2370 less-loader:
2371 optional: true
2372 postcss:
2373 optional: true
2374 postcss-loader:
2375 optional: true
2376 sass:
2377 optional: true
2378 sass-loader:
2379 optional: true
2380 stylus:
2381 optional: true
2382 stylus-loader:
2383 optional: true
2384 ts-loader:
2385 optional: true
2386 typescript:
2387 optional: true
2388 vue:
2389 optional: true
2390 vue-loader:
2391 optional: true
2392 vue-template-compiler:
2393 optional: true
2394 webpack-notifier:
2395 optional: true
2396 dependencies:
2397 '@babel/core': 7.23.0
2398 '@babel/preset-env': 7.22.20(@babel/core@7.23.0)
2399 '@nuxt/friendly-errors-webpack-plugin': 2.5.2(webpack@5.88.2)
2400 assets-webpack-plugin: 7.0.0(webpack@5.88.2)
2401 babel-loader: 8.3.0(@babel/core@7.23.0)(webpack@5.88.2)
2402 chalk: 4.1.2
2403 clean-webpack-plugin: 4.0.0(webpack@5.88.2)
2404 css-loader: 6.8.1(webpack@5.88.2)
2405 css-minimizer-webpack-plugin: 5.0.1(webpack@5.88.2)
2406 eslint: 8.46.0
2407 fast-levenshtein: 3.0.0
2408 mini-css-extract-plugin: 2.7.6(webpack@5.88.2)
2409 pkg-up: 3.1.0
2410 postcss: 8.4.31
2411 pretty-error: 4.0.0
2412 resolve-url-loader: 5.0.0
2413 semver: 7.5.4
2414 style-loader: 3.3.3(webpack@5.88.2)
2415 sync-rpc: 1.3.6
2416 tapable: 2.2.1
2417 terser-webpack-plugin: 5.3.9(webpack@5.88.2)
2418 tmp: 0.2.1
2419 typescript: 5.1.6
2420 webpack: 5.88.2(webpack-cli@5.1.4)
2421 webpack-cli: 5.1.4(webpack@5.88.2)
2422 webpack-dev-server: 4.15.1(webpack-cli@5.1.4)(webpack@5.88.2)
2423 yargs-parser: 21.1.1
2424 transitivePeerDependencies:
2425 - '@parcel/css'
2426 - '@swc/core'
2427 - '@swc/css'
2428 - bufferutil
2429 - clean-css
2430 - csso
2431 - debug
2432 - esbuild
2433 - lightningcss
2434 - supports-color
2435 - uglify-js
2436 - utf-8-validate
2437 dev: true
2438
2439 /@szmarczak/http-timer@4.0.6:
2440 resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==}
2441 engines: {node: '>=10'}
457 dependencies: 2442 dependencies:
458 '@types/node': 18.11.12 2443 defer-to-connect: 2.0.1
459 dev: false 2444 dev: false
460 2445
461 /@types/node/18.11.12: 2446 /@tokenizer/token@0.3.0:
462 resolution: {integrity: sha512-FgD3NtTAKvyMmD44T07zz2fEf+OKwutgBCEVM8GcvMGVGaDktiLNTDvPwC/LUe3PinMW+X6CuLOF2Ui1mAlSXg==} 2447 resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==}
2448
2449 /@tootallnate/once@1.1.2:
2450 resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==}
2451 engines: {node: '>= 6'}
2452 requiresBuild: true
463 dev: false 2453 dev: false
2454 optional: true
464 2455
465 /@types/responselike/1.0.0: 2456 /@trysound/sax@0.2.0:
466 resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} 2457 resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
2458 engines: {node: '>=10.13.0'}
2459 dev: true
2460
2461 /@ts-morph/common@0.17.0:
2462 resolution: {integrity: sha512-RMSSvSfs9kb0VzkvQ2NWobwnj7TxCA9vI/IjR9bDHqgAyVbu2T0DN4wiKVqomyDWqO7dPr/tErSfq7urQ1Q37g==}
467 dependencies: 2463 dependencies:
468 '@types/node': 18.11.12 2464 fast-glob: 3.3.1
2465 minimatch: 5.1.6
2466 mkdirp: 1.0.4
2467 path-browserify: 1.0.1
469 dev: false 2468 dev: false
470 2469
471 /@types/stack-trace/0.0.29: 2470 /@types/bcrypt@5.0.0:
472 resolution: {integrity: sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==} 2471 resolution: {integrity: sha512-agtcFKaruL8TmcvqbndlqHPSJgsolhf/qPWchFlgnW1gECTN/nKbFcoFnvKAQRFfKbh+BO6A3SWdJu9t+xF3Lw==}
473 dev: false 2472 dependencies:
2473 '@types/node': 20.7.2
2474 dev: true
474 2475
475 /abbrev/1.1.1: 2476 /@types/body-parser@1.19.3:
476 resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} 2477 resolution: {integrity: sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==}
2478 dependencies:
2479 '@types/connect': 3.4.36
2480 '@types/node': 20.7.2
2481 dev: true
2482
2483 /@types/bonjour@3.5.11:
2484 resolution: {integrity: sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==}
2485 dependencies:
2486 '@types/node': 20.7.2
2487 dev: true
2488
2489 /@types/bytes@3.1.2:
2490 resolution: {integrity: sha512-92b6q7CSYBMVZDtMZh5PuKm3LjZwcU7s6H8e9sU20Z1tOrTuXN+Hz3VuP9E8axiQRaCoiEOMN1duqPCEIhamrQ==}
2491
2492 /@types/cacheable-request@6.0.3:
2493 resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==}
2494 dependencies:
2495 '@types/http-cache-semantics': 4.0.2
2496 '@types/keyv': 3.1.4
2497 '@types/node': 20.7.2
2498 '@types/responselike': 1.0.1
477 dev: false 2499 dev: false
478 2500
479 /accepts/1.3.8: 2501 /@types/chai@4.3.6:
480 resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} 2502 resolution: {integrity: sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==}
481 engines: {node: '>= 0.6'} 2503 dev: true
2504
2505 /@types/connect-history-api-fallback@1.5.1:
2506 resolution: {integrity: sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==}
482 dependencies: 2507 dependencies:
483 mime-types: 2.1.35 2508 '@types/express-serve-static-core': 4.17.37
484 negotiator: 0.6.3 2509 '@types/node': 20.7.2
2510 dev: true
2511
2512 /@types/connect@3.4.36:
2513 resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==}
2514 dependencies:
2515 '@types/node': 20.7.2
2516 dev: true
2517
2518 /@types/cookiejar@2.1.2:
2519 resolution: {integrity: sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==}
2520 dev: true
2521
2522 /@types/eslint-scope@3.7.5:
2523 resolution: {integrity: sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA==}
2524 dependencies:
2525 '@types/eslint': 8.44.3
2526 '@types/estree': 1.0.2
2527 dev: true
2528
2529 /@types/eslint@8.44.3:
2530 resolution: {integrity: sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g==}
2531 dependencies:
2532 '@types/estree': 1.0.2
2533 '@types/json-schema': 7.0.13
2534 dev: true
2535
2536 /@types/estree@1.0.2:
2537 resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==}
2538 dev: true
2539
2540 /@types/express-serve-static-core@4.17.37:
2541 resolution: {integrity: sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==}
2542 dependencies:
2543 '@types/node': 20.7.2
2544 '@types/qs': 6.9.8
2545 '@types/range-parser': 1.2.5
2546 '@types/send': 0.17.2
2547 dev: true
2548
2549 /@types/express@4.17.18:
2550 resolution: {integrity: sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ==}
2551 dependencies:
2552 '@types/body-parser': 1.19.3
2553 '@types/express-serve-static-core': 4.17.37
2554 '@types/qs': 6.9.8
2555 '@types/serve-static': 1.15.3
2556 dev: true
2557
2558 /@types/fs-extra@11.0.1:
2559 resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==}
2560 dependencies:
2561 '@types/jsonfile': 6.1.2
2562 '@types/node': 20.7.2
2563 dev: true
2564
2565 /@types/fs-extra@9.0.13:
2566 resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==}
2567 dependencies:
2568 '@types/node': 20.7.2
2569
2570 /@types/glob@7.2.0:
2571 resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
2572 dependencies:
2573 '@types/minimatch': 5.1.2
2574 '@types/node': 20.7.2
2575 dev: true
2576
2577 /@types/he@1.2.1:
2578 resolution: {integrity: sha512-CdNmJMcSqX1BiP3iSsWt+VgixndRIDGzWyaGpBnW3i5heATSk5bJu2j3buutsoBQNjyryqxaNpr8M7fRsGL15w==}
2579
2580 /@types/http-cache-semantics@4.0.2:
2581 resolution: {integrity: sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==}
485 dev: false 2582 dev: false
486 2583
487 /acorn-jsx/5.3.2_acorn@7.4.1: 2584 /@types/http-errors@2.0.2:
488 resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 2585 resolution: {integrity: sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==}
489 peerDependencies: 2586 dev: true
490 acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 2587
2588 /@types/http-proxy@1.17.12:
2589 resolution: {integrity: sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==}
491 dependencies: 2590 dependencies:
492 acorn: 7.4.1 2591 '@types/node': 20.7.2
493 dev: true 2592 dev: true
494 2593
495 /acorn-node/1.8.2: 2594 /@types/istanbul-lib-coverage@2.0.4:
496 resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} 2595 resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==}
2596 dev: true
2597
2598 /@types/istanbul-lib-report@3.0.1:
2599 resolution: {integrity: sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==}
497 dependencies: 2600 dependencies:
498 acorn: 7.4.1 2601 '@types/istanbul-lib-coverage': 2.0.4
499 acorn-walk: 7.2.0 2602 dev: true
500 xtend: 4.0.2 2603
2604 /@types/istanbul-reports@1.1.2:
2605 resolution: {integrity: sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==}
2606 dependencies:
2607 '@types/istanbul-lib-coverage': 2.0.4
2608 '@types/istanbul-lib-report': 3.0.1
2609 dev: true
2610
2611 /@types/istanbul-reports@3.0.2:
2612 resolution: {integrity: sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==}
2613 dependencies:
2614 '@types/istanbul-lib-report': 3.0.1
2615 dev: true
2616
2617 /@types/json-schema@7.0.13:
2618 resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==}
2619 dev: true
2620
2621 /@types/json5@0.0.29:
2622 resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
2623 dev: true
2624
2625 /@types/jsonfile@6.1.2:
2626 resolution: {integrity: sha512-8t92P+oeW4d/CRQfJaSqEwXujrhH4OEeHRjGU3v1Q8mUS8GPF3yiX26sw4svv6faL2HfBtGTe2xWIoVgN3dy9w==}
2627 dependencies:
2628 '@types/node': 20.7.2
2629 dev: true
2630
2631 /@types/keyv@3.1.4:
2632 resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
2633 dependencies:
2634 '@types/node': 20.7.2
501 dev: false 2635 dev: false
502 2636
503 /acorn-walk/7.2.0: 2637 /@types/luxon@3.3.1:
504 resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} 2638 resolution: {integrity: sha512-XOS5nBcgEeP2PpcqJHjCWhUCAzGfXIU8ILOSLpx2FhxqMW9KdxgCGXNOEKGVBfveKtIpztHzKK5vSRVLyW/NqA==}
505 engines: {node: '>=0.4.0'} 2639
2640 /@types/mime@1.3.3:
2641 resolution: {integrity: sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg==}
2642 dev: true
2643
2644 /@types/mime@3.0.2:
2645 resolution: {integrity: sha512-Wj+fqpTLtTbG7c0tH47dkahefpLKEbB+xAZuLq7b4/IDHPl/n6VoXcyUQ2bypFlbSwvCr0y+bD4euTTqTJsPxQ==}
2646 dev: true
2647
2648 /@types/minimatch@5.1.2:
2649 resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==}
2650 dev: true
2651
2652 /@types/node-fetch@2.6.4:
2653 resolution: {integrity: sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==}
2654 dependencies:
2655 '@types/node': 20.7.2
2656 form-data: 3.0.1
2657 dev: true
2658
2659 /@types/node@20.7.2:
2660 resolution: {integrity: sha512-RcdC3hOBOauLP+r/kRt27NrByYtDjsXyAuSbR87O6xpsvi763WI+5fbSIvYJrXnt9w4RuxhV6eAXfIs7aaf/FQ==}
2661
2662 /@types/normalize-package-data@2.4.2:
2663 resolution: {integrity: sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==}
2664 dev: true
2665
2666 /@types/pino-pretty@5.0.0:
2667 resolution: {integrity: sha512-N1uzqSzioqz8R3AkDbSJwcfDWeI3YMPNapSQQhnB2ISU4NYgUIcAh+hYT5ygqBM+klX4htpEhXMmoJv3J7GrdA==}
2668 deprecated: This is a stub types definition. pino-pretty provides its own type definitions, so you do not need this installed.
2669 dependencies:
2670 pino-pretty: 10.2.0
2671
2672 /@types/pino-std-serializers@4.0.0:
2673 resolution: {integrity: sha512-gXfUZx2xIBbFYozGms53fT0nvkacx/+62c8iTxrEqH5PkIGAQvDbXg2774VWOycMPbqn5YJBQ3BMsg4Li3dWbg==}
2674 deprecated: This is a stub types definition. pino-std-serializers provides its own type definitions, so you do not need this installed.
2675 dependencies:
2676 pino-std-serializers: 6.2.2
2677
2678 /@types/pino@6.3.12:
2679 resolution: {integrity: sha512-dsLRTq8/4UtVSpJgl9aeqHvbh6pzdmjYD3C092SYgLD2TyoCqHpTJk6vp8DvCTGGc7iowZ2MoiYiVUUCcu7muw==}
2680 dependencies:
2681 '@types/node': 20.7.2
2682 '@types/pino-pretty': 5.0.0
2683 '@types/pino-std-serializers': 4.0.0
2684 sonic-boom: 2.8.0
2685
2686 /@types/proxy-addr@2.0.1:
2687 resolution: {integrity: sha512-fLqXRu+ihH+/V7AB12siUu84uloauJ7SdBMrHARcHQN/yYIa0d9uQSYxSWnMRF0892N2/CJzPVYP3ltgtkkgsQ==}
2688 dependencies:
2689 '@types/node': 20.7.2
2690 dev: true
2691
2692 /@types/qs@6.9.8:
2693 resolution: {integrity: sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==}
2694 dev: true
2695
2696 /@types/range-parser@1.2.5:
2697 resolution: {integrity: sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA==}
2698 dev: true
2699
2700 /@types/responselike@1.0.1:
2701 resolution: {integrity: sha512-TiGnitEDxj2X0j+98Eqk5lv/Cij8oHd32bU4D/Yw6AOq7vvTk0gSD2GPj0G/HkvhMoVsdlhYF4yqqlyPBTM6Sg==}
2702 dependencies:
2703 '@types/node': 20.7.2
506 dev: false 2704 dev: false
507 2705
508 /acorn/7.4.1: 2706 /@types/retry@0.12.0:
509 resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} 2707 resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==}
510 engines: {node: '>=0.4.0'} 2708 dev: true
511 hasBin: true
512 2709
513 /agent-base/6.0.2: 2710 /@types/semver@7.5.0:
514 resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} 2711 resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==}
515 engines: {node: '>= 6.0.0'} 2712 dev: true
2713
2714 /@types/send@0.17.2:
2715 resolution: {integrity: sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw==}
2716 dependencies:
2717 '@types/mime': 1.3.3
2718 '@types/node': 20.7.2
2719 dev: true
2720
2721 /@types/serve-index@1.9.2:
2722 resolution: {integrity: sha512-asaEIoc6J+DbBKXtO7p2shWUpKacZOoMBEGBgPG91P8xhO53ohzHWGCs4ScZo5pQMf5ukQzVT9fhX1WzpHihig==}
2723 dependencies:
2724 '@types/express': 4.17.18
2725 dev: true
2726
2727 /@types/serve-static@1.15.3:
2728 resolution: {integrity: sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg==}
2729 dependencies:
2730 '@types/http-errors': 2.0.2
2731 '@types/mime': 3.0.2
2732 '@types/node': 20.7.2
2733 dev: true
2734
2735 /@types/sockjs@0.3.34:
2736 resolution: {integrity: sha512-R+n7qBFnm/6jinlteC9DBL5dGiDGjWAvjo4viUanpnc/dG1y7uDoacXPIQ/PQEg1fI912SMHIa014ZjRpvDw4g==}
2737 dependencies:
2738 '@types/node': 20.7.2
2739 dev: true
2740
2741 /@types/source-map-support@0.5.6:
2742 resolution: {integrity: sha512-b2nJ9YyXmkhGaa2b8VLM0kJ04xxwNyijcq12/kDoomCt43qbHBeK2SLNJ9iJmETaAj+bKUT05PQUu3Q66GvLhQ==}
2743 dependencies:
2744 source-map: 0.6.1
2745 dev: true
2746
2747 /@types/superagent@4.1.19:
2748 resolution: {integrity: sha512-McM1mlc7PBZpCaw0fw/36uFqo0YeA6m8JqoyE4OfqXsZCIg0hPP2xdE6FM7r6fdprDZHlJwDpydUj1R++93hCA==}
2749 dependencies:
2750 '@types/cookiejar': 2.1.2
2751 '@types/node': 20.7.2
2752 dev: true
2753
2754 /@types/tar-fs@2.0.2:
2755 resolution: {integrity: sha512-XuZRAvdo7FbDfgQCNkc8NOdSae5XtG+of2mTSgJ85G4OG0miN4E8BTGT+JBTLO87RQ7iCwsIDCqCsHnf2IaSXA==}
2756 dependencies:
2757 '@types/node': 20.7.2
2758 '@types/tar-stream': 3.1.1
2759 dev: true
2760
2761 /@types/tar-stream@3.1.1:
2762 resolution: {integrity: sha512-/1E+a09mAFQwhlEHqiS3LuNWIBiyrn0HqUWZk2IyGzodu9zkXbaT5vl94iGlZGnG2IONVFZd84SFhns3MhhAQQ==}
2763 dependencies:
2764 '@types/node': 20.7.2
2765 dev: true
2766
2767 /@types/targz@1.0.1:
2768 resolution: {integrity: sha512-Uf5QxuLICkVOmSyDhPicBpIXk2oLIqaldObfr/WsTKTAPk666OpbeL0wZuNXwc5yg9OH1cBVj1rpMHGBJe4ilg==}
2769 dependencies:
2770 '@types/tar-fs': 2.0.2
2771 dev: true
2772
2773 /@types/uuid@9.0.2:
2774 resolution: {integrity: sha512-kNnC1GFBLuhImSnV7w4njQkUiJi0ZXUycu1rUaouPqiKlXkh77JKgdRnTAp1x5eBwcIwbtI+3otwzuIDEuDoxQ==}
2775 dev: true
2776
2777 /@types/validator@13.11.2:
2778 resolution: {integrity: sha512-nIKVVQKT6kGKysnNt+xLobr+pFJNssJRi2s034wgWeFBUx01fI8BeHTW2TcRp7VcFu9QCYG8IlChTuovcm0oKQ==}
2779
2780 /@types/ws@8.5.6:
2781 resolution: {integrity: sha512-8B5EO9jLVCy+B58PLHvLDuOD8DRVMgQzq8d55SjLCOn9kqGyqOvy27exVaTio1q1nX5zLu8/6N0n2ThSxOM6tg==}
2782 dependencies:
2783 '@types/node': 20.7.2
2784 dev: true
2785
2786 /@types/yargs-parser@21.0.1:
2787 resolution: {integrity: sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==}
2788 dev: true
2789
2790 /@types/yargs@15.0.16:
2791 resolution: {integrity: sha512-2FeD5qezW3FvLpZ0JpfuaEWepgNLl9b2gQYiz/ce0NhoB1W/D+VZu98phITXkADYerfr/jb7JcDcVhITsc9bwg==}
2792 dependencies:
2793 '@types/yargs-parser': 21.0.1
2794 dev: true
2795
2796 /@types/yargs@17.0.26:
2797 resolution: {integrity: sha512-Y3vDy2X6zw/ZCumcwLpdhM5L7jmyGpmBCTYMHDLqT2IKVMYRRLdv6ZakA+wxhra6Z/3bwhNbNl9bDGXaFU+6rw==}
516 dependencies: 2798 dependencies:
2799 '@types/yargs-parser': 21.0.1
2800 dev: true
2801
2802 /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(typescript@5.1.6):
2803 resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==}
2804 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2805 peerDependencies:
2806 '@typescript-eslint/parser': ^5.0.0
2807 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
2808 typescript: '*'
2809 peerDependenciesMeta:
2810 typescript:
2811 optional: true
2812 dependencies:
2813 '@eslint-community/regexpp': 4.9.0
2814 '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.1.6)
2815 '@typescript-eslint/scope-manager': 5.62.0
2816 '@typescript-eslint/type-utils': 5.62.0(eslint@8.46.0)(typescript@5.1.6)
2817 '@typescript-eslint/utils': 5.62.0(eslint@8.46.0)(typescript@5.1.6)
517 debug: 4.3.4 2818 debug: 4.3.4
2819 eslint: 8.46.0
2820 graphemer: 1.4.0
2821 ignore: 5.2.4
2822 natural-compare-lite: 1.4.0
2823 semver: 7.5.4
2824 tsutils: 3.21.0(typescript@5.1.6)
2825 typescript: 5.1.6
518 transitivePeerDependencies: 2826 transitivePeerDependencies:
519 - supports-color 2827 - supports-color
520 dev: false 2828 dev: true
521 2829
522 /ajv/6.12.6: 2830 /@typescript-eslint/eslint-plugin@6.2.0(@typescript-eslint/parser@6.2.0)(eslint@8.46.0)(typescript@5.1.6):
523 resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 2831 resolution: {integrity: sha512-rClGrMuyS/3j0ETa1Ui7s6GkLhfZGKZL3ZrChLeAiACBE/tRc1wq8SNZESUuluxhLj9FkUefRs2l6bCIArWBiQ==}
2832 engines: {node: ^16.0.0 || >=18.0.0}
2833 peerDependencies:
2834 '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
2835 eslint: ^7.0.0 || ^8.0.0
2836 typescript: '*'
2837 peerDependenciesMeta:
2838 typescript:
2839 optional: true
524 dependencies: 2840 dependencies:
525 fast-deep-equal: 3.1.3 2841 '@eslint-community/regexpp': 4.9.0
526 fast-json-stable-stringify: 2.1.0 2842 '@typescript-eslint/parser': 6.2.0(eslint@8.46.0)(typescript@5.1.6)
527 json-schema-traverse: 0.4.1 2843 '@typescript-eslint/scope-manager': 6.2.0
528 uri-js: 4.4.1 2844 '@typescript-eslint/type-utils': 6.2.0(eslint@8.46.0)(typescript@5.1.6)
2845 '@typescript-eslint/utils': 6.2.0(eslint@8.46.0)(typescript@5.1.6)
2846 '@typescript-eslint/visitor-keys': 6.2.0
2847 debug: 4.3.4
2848 eslint: 8.46.0
2849 graphemer: 1.4.0
2850 ignore: 5.2.4
2851 natural-compare: 1.4.0
2852 natural-compare-lite: 1.4.0
2853 semver: 7.5.4
2854 ts-api-utils: 1.0.3(typescript@5.1.6)
2855 typescript: 5.1.6
2856 transitivePeerDependencies:
2857 - supports-color
2858 dev: true
529 2859
530 /ajv/8.11.2: 2860 /@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.1.6):
531 resolution: {integrity: sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==} 2861 resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==}
2862 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2863 peerDependencies:
2864 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
2865 typescript: '*'
2866 peerDependenciesMeta:
2867 typescript:
2868 optional: true
532 dependencies: 2869 dependencies:
533 fast-deep-equal: 3.1.3 2870 '@typescript-eslint/scope-manager': 5.62.0
534 json-schema-traverse: 1.0.0 2871 '@typescript-eslint/types': 5.62.0
535 require-from-string: 2.0.2 2872 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6)
536 uri-js: 4.4.1 2873 debug: 4.3.4
2874 eslint: 8.46.0
2875 typescript: 5.1.6
2876 transitivePeerDependencies:
2877 - supports-color
537 dev: true 2878 dev: true
538 2879
539 /all-contributors-cli/6.24.0: 2880 /@typescript-eslint/parser@6.2.0(eslint@8.46.0)(typescript@5.1.6):
540 resolution: {integrity: sha512-7oSKr2PnqxsOotuSwciltcFTS1eVRdjR0cn99hbElfff7gRQBShVhsf/XBprY41sLcgqTk0l0MKgKv6QNgZdMg==} 2881 resolution: {integrity: sha512-igVYOqtiK/UsvKAmmloQAruAdUHihsOCvplJpplPZ+3h4aDkC/UKZZNKgB6h93ayuYLuEymU3h8nF1xMRbh37g==}
541 engines: {node: '>=4'} 2882 engines: {node: ^16.0.0 || >=18.0.0}
542 hasBin: true 2883 peerDependencies:
2884 eslint: ^7.0.0 || ^8.0.0
2885 typescript: '*'
2886 peerDependenciesMeta:
2887 typescript:
2888 optional: true
543 dependencies: 2889 dependencies:
544 '@babel/runtime': 7.20.6 2890 '@typescript-eslint/scope-manager': 6.2.0
545 async: 3.2.4 2891 '@typescript-eslint/types': 6.2.0
546 chalk: 4.1.2 2892 '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6)
547 didyoumean: 1.2.2 2893 '@typescript-eslint/visitor-keys': 6.2.0
548 inquirer: 7.3.3 2894 debug: 4.3.4
549 json-fixer: 1.6.15 2895 eslint: 8.46.0
550 lodash: 4.17.21 2896 typescript: 5.1.6
551 node-fetch: 2.6.7
552 pify: 5.0.0
553 yargs: 15.4.1
554 transitivePeerDependencies: 2897 transitivePeerDependencies:
555 - encoding 2898 - supports-color
556 dev: true 2899 dev: true
557 2900
558 /ansi-bgblack/0.1.1: 2901 /@typescript-eslint/scope-manager@5.62.0:
559 resolution: {integrity: sha512-tp8M/NCmSr6/skdteeo9UgJ2G1rG88X3ZVNZWXUxFw4Wh0PAGaAAWQS61sfBt/1QNcwMTY3EBKOMPujwioJLaw==} 2902 resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
560 engines: {node: '>=0.10.0'} 2903 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
561 dependencies: 2904 dependencies:
562 ansi-wrap: 0.1.0 2905 '@typescript-eslint/types': 5.62.0
563 dev: false 2906 '@typescript-eslint/visitor-keys': 5.62.0
2907 dev: true
564 2908
565 /ansi-bgblue/0.1.1: 2909 /@typescript-eslint/scope-manager@6.2.0:
566 resolution: {integrity: sha512-R8JmX2Xv3+ichUQE99oL+LvjsyK+CDWo/BtVb4QUz3hOfmf2bdEmiDot3fQcpn2WAHW3toSRdjSLm6bgtWRDlA==} 2910 resolution: {integrity: sha512-1ZMNVgm5nnHURU8ZSJ3snsHzpFeNK84rdZjluEVBGNu7jDymfqceB3kdIZ6A4xCfEFFhRIB6rF8q/JIqJd2R0Q==}
567 engines: {node: '>=0.10.0'} 2911 engines: {node: ^16.0.0 || >=18.0.0}
568 dependencies: 2912 dependencies:
569 ansi-wrap: 0.1.0 2913 '@typescript-eslint/types': 6.2.0
570 dev: false 2914 '@typescript-eslint/visitor-keys': 6.2.0
2915 dev: true
571 2916
572 /ansi-bgcyan/0.1.1: 2917 /@typescript-eslint/type-utils@5.62.0(eslint@8.46.0)(typescript@5.1.6):
573 resolution: {integrity: sha512-6SByK9q2H978bmqzuzA5NPT1lRDXl3ODLz/DjC4URO5f/HqK7dnRKfoO/xQLx/makOz7zWIbRf6+Uf7bmaPSkQ==} 2918 resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==}
574 engines: {node: '>=0.10.0'} 2919 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2920 peerDependencies:
2921 eslint: '*'
2922 typescript: '*'
2923 peerDependenciesMeta:
2924 typescript:
2925 optional: true
575 dependencies: 2926 dependencies:
576 ansi-wrap: 0.1.0 2927 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6)
577 dev: false 2928 '@typescript-eslint/utils': 5.62.0(eslint@8.46.0)(typescript@5.1.6)
2929 debug: 4.3.4
2930 eslint: 8.46.0
2931 tsutils: 3.21.0(typescript@5.1.6)
2932 typescript: 5.1.6
2933 transitivePeerDependencies:
2934 - supports-color
2935 dev: true
578 2936
579 /ansi-bggreen/0.1.1: 2937 /@typescript-eslint/type-utils@6.2.0(eslint@8.46.0)(typescript@5.1.6):
580 resolution: {integrity: sha512-8TRtOKmIPOuxjpklrkhUbqD2NnVb4WZQuIjXrT+TGKFKzl7NrL7wuNvEap3leMt2kQaCngIN1ZzazSbJNzF+Aw==} 2938 resolution: {integrity: sha512-DnGZuNU2JN3AYwddYIqrVkYW0uUQdv0AY+kz2M25euVNlujcN2u+rJgfJsBFlUEzBB6OQkUqSZPyuTLf2bP5mw==}
581 engines: {node: '>=0.10.0'} 2939 engines: {node: ^16.0.0 || >=18.0.0}
2940 peerDependencies:
2941 eslint: ^7.0.0 || ^8.0.0
2942 typescript: '*'
2943 peerDependenciesMeta:
2944 typescript:
2945 optional: true
582 dependencies: 2946 dependencies:
583 ansi-wrap: 0.1.0 2947 '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6)
584 dev: false 2948 '@typescript-eslint/utils': 6.2.0(eslint@8.46.0)(typescript@5.1.6)
2949 debug: 4.3.4
2950 eslint: 8.46.0
2951 ts-api-utils: 1.0.3(typescript@5.1.6)
2952 typescript: 5.1.6
2953 transitivePeerDependencies:
2954 - supports-color
2955 dev: true
585 2956
586 /ansi-bgmagenta/0.1.1: 2957 /@typescript-eslint/types@5.62.0:
587 resolution: {integrity: sha512-UZYhobiGAlV4NiwOlKAKbkCyxOl1PPZNvdIdl/Ce5by45vwiyNdBetwHk/AjIpo1Ji9z+eE29PUBAjjfVmz5SA==} 2958 resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
588 engines: {node: '>=0.10.0'} 2959 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2960 dev: true
2961
2962 /@typescript-eslint/types@6.2.0:
2963 resolution: {integrity: sha512-1nRRaDlp/XYJQLvkQJG5F3uBTno5SHPT7XVcJ5n1/k2WfNI28nJsvLakxwZRNY5spuatEKO7d5nZWsQpkqXwBA==}
2964 engines: {node: ^16.0.0 || >=18.0.0}
2965 dev: true
2966
2967 /@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6):
2968 resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
2969 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2970 peerDependencies:
2971 typescript: '*'
2972 peerDependenciesMeta:
2973 typescript:
2974 optional: true
589 dependencies: 2975 dependencies:
590 ansi-wrap: 0.1.0 2976 '@typescript-eslint/types': 5.62.0
591 dev: false 2977 '@typescript-eslint/visitor-keys': 5.62.0
2978 debug: 4.3.4
2979 globby: 11.1.0
2980 is-glob: 4.0.3
2981 semver: 7.5.4
2982 tsutils: 3.21.0(typescript@5.1.6)
2983 typescript: 5.1.6
2984 transitivePeerDependencies:
2985 - supports-color
2986 dev: true
592 2987
593 /ansi-bgred/0.1.1: 2988 /@typescript-eslint/typescript-estree@6.2.0(typescript@5.1.6):
594 resolution: {integrity: sha512-BpPHMnYmRBhcjY5knRWKjQmPDPvYU7wrgBSW34xj7JCH9+a/SEIV7+oSYVOgMFopRIadOz9Qm4zIy+mEBvUOPA==} 2989 resolution: {integrity: sha512-Mts6+3HQMSM+LZCglsc2yMIny37IhUgp1Qe8yJUYVyO6rHP7/vN0vajKu3JvHCBIy8TSiKddJ/Zwu80jhnGj1w==}
595 engines: {node: '>=0.10.0'} 2990 engines: {node: ^16.0.0 || >=18.0.0}
2991 peerDependencies:
2992 typescript: '*'
2993 peerDependenciesMeta:
2994 typescript:
2995 optional: true
596 dependencies: 2996 dependencies:
597 ansi-wrap: 0.1.0 2997 '@typescript-eslint/types': 6.2.0
598 dev: false 2998 '@typescript-eslint/visitor-keys': 6.2.0
2999 debug: 4.3.4
3000 globby: 11.1.0
3001 is-glob: 4.0.3
3002 semver: 7.5.4
3003 ts-api-utils: 1.0.3(typescript@5.1.6)
3004 typescript: 5.1.6
3005 transitivePeerDependencies:
3006 - supports-color
3007 dev: true
599 3008
600 /ansi-bgwhite/0.1.1: 3009 /@typescript-eslint/utils@5.62.0(eslint@8.46.0)(typescript@5.1.6):
601 resolution: {integrity: sha512-KIF19t+HOYOorUnHTOhZpeZ3bJsjzStBG2hSGM0WZ8YQQe4c7lj9CtwnucscJDPrNwfdz6GBF+pFkVfvHBq6uw==} 3010 resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
602 engines: {node: '>=0.10.0'} 3011 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
3012 peerDependencies:
3013 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
3014 dependencies:
3015 '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0)
3016 '@types/json-schema': 7.0.13
3017 '@types/semver': 7.5.0
3018 '@typescript-eslint/scope-manager': 5.62.0
3019 '@typescript-eslint/types': 5.62.0
3020 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6)
3021 eslint: 8.46.0
3022 eslint-scope: 5.1.1
3023 semver: 7.5.4
3024 transitivePeerDependencies:
3025 - supports-color
3026 - typescript
3027 dev: true
3028
3029 /@typescript-eslint/utils@6.2.0(eslint@8.46.0)(typescript@5.1.6):
3030 resolution: {integrity: sha512-RCFrC1lXiX1qEZN8LmLrxYRhOkElEsPKTVSNout8DMzf8PeWoQG7Rxz2SadpJa3VSh5oYKGwt7j7X/VRg+Y3OQ==}
3031 engines: {node: ^16.0.0 || >=18.0.0}
3032 peerDependencies:
3033 eslint: ^7.0.0 || ^8.0.0
3034 dependencies:
3035 '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0)
3036 '@types/json-schema': 7.0.13
3037 '@types/semver': 7.5.0
3038 '@typescript-eslint/scope-manager': 6.2.0
3039 '@typescript-eslint/types': 6.2.0
3040 '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6)
3041 eslint: 8.46.0
3042 semver: 7.5.4
3043 transitivePeerDependencies:
3044 - supports-color
3045 - typescript
3046 dev: true
3047
3048 /@typescript-eslint/visitor-keys@5.62.0:
3049 resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
3050 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
603 dependencies: 3051 dependencies:
604 ansi-wrap: 0.1.0 3052 '@typescript-eslint/types': 5.62.0
605 dev: false 3053 eslint-visitor-keys: 3.4.3
3054 dev: true
606 3055
607 /ansi-bgyellow/0.1.1: 3056 /@typescript-eslint/visitor-keys@6.2.0:
608 resolution: {integrity: sha512-WyRoOFSIvOeM7e7YdlSjfAV82Z6K1+VUVbygIQ7C/VGzWYuO/d30F0PG7oXeo4uSvSywR0ozixDQvtXJEorq4Q==} 3057 resolution: {integrity: sha512-QbaYUQVKKo9bgCzpjz45llCfwakyoxHetIy8CAvYCtd16Zu1KrpzNHofwF8kGkpPOxZB2o6kz+0nqH8ZkIzuoQ==}
609 engines: {node: '>=0.10.0'} 3058 engines: {node: ^16.0.0 || >=18.0.0}
610 dependencies: 3059 dependencies:
611 ansi-wrap: 0.1.0 3060 '@typescript-eslint/types': 6.2.0
612 dev: false 3061 eslint-visitor-keys: 3.4.3
3062 dev: true
613 3063
614 /ansi-black/0.1.1: 3064 /@webassemblyjs/ast@1.11.6:
615 resolution: {integrity: sha512-hl7re02lWus7lFOUG6zexhoF5gssAfG5whyr/fOWK9hxNjUFLTjhbU/b4UHWOh2dbJu9/STSUv+80uWYzYkbTQ==} 3065 resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==}
616 engines: {node: '>=0.10.0'}
617 dependencies: 3066 dependencies:
618 ansi-wrap: 0.1.0 3067 '@webassemblyjs/helper-numbers': 1.11.6
619 dev: false 3068 '@webassemblyjs/helper-wasm-bytecode': 1.11.6
3069 dev: true
620 3070
621 /ansi-blue/0.1.1: 3071 /@webassemblyjs/floating-point-hex-parser@1.11.6:
622 resolution: {integrity: sha512-8Um59dYNDdQyoczlf49RgWLzYgC2H/28W3JAIyOAU/+WkMcfZmaznm+0i1ikrE0jME6Ypk9CJ9CY2+vxbPs7Fg==} 3072 resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==}
623 engines: {node: '>=0.10.0'} 3073 dev: true
3074
3075 /@webassemblyjs/helper-api-error@1.11.6:
3076 resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==}
3077 dev: true
3078
3079 /@webassemblyjs/helper-buffer@1.11.6:
3080 resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==}
3081 dev: true
3082
3083 /@webassemblyjs/helper-numbers@1.11.6:
3084 resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==}
624 dependencies: 3085 dependencies:
625 ansi-wrap: 0.1.0 3086 '@webassemblyjs/floating-point-hex-parser': 1.11.6
626 dev: false 3087 '@webassemblyjs/helper-api-error': 1.11.6
3088 '@xtuc/long': 4.2.2
3089 dev: true
627 3090
628 /ansi-bold/0.1.1: 3091 /@webassemblyjs/helper-wasm-bytecode@1.11.6:
629 resolution: {integrity: sha512-wWKwcViX1E28U6FohtWOP4sHFyArELHJ2p7+3BzbibqJiuISeskq6t7JnrLisUngMF5zMhgmXVw8Equjzz9OlA==} 3092 resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==}
630 engines: {node: '>=0.10.0'} 3093 dev: true
3094
3095 /@webassemblyjs/helper-wasm-section@1.11.6:
3096 resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==}
631 dependencies: 3097 dependencies:
632 ansi-wrap: 0.1.0 3098 '@webassemblyjs/ast': 1.11.6
633 dev: false 3099 '@webassemblyjs/helper-buffer': 1.11.6
3100 '@webassemblyjs/helper-wasm-bytecode': 1.11.6
3101 '@webassemblyjs/wasm-gen': 1.11.6
3102 dev: true
634 3103
635 /ansi-colors/0.2.0: 3104 /@webassemblyjs/ieee754@1.11.6:
636 resolution: {integrity: sha512-ScRNUT0TovnYw6+Xo3iKh6G+VXDw2Ds7ZRnMIuKBgHY02DgvT2T2K22/tc/916Fi0W/5Z1RzDaHQwnp75hqdbA==} 3105 resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==}
637 engines: {node: '>=0.10.0'}
638 dependencies: 3106 dependencies:
639 ansi-bgblack: 0.1.1 3107 '@xtuc/ieee754': 1.2.0
640 ansi-bgblue: 0.1.1 3108 dev: true
641 ansi-bgcyan: 0.1.1 3109
642 ansi-bggreen: 0.1.1 3110 /@webassemblyjs/leb128@1.11.6:
643 ansi-bgmagenta: 0.1.1 3111 resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==}
644 ansi-bgred: 0.1.1
645 ansi-bgwhite: 0.1.1
646 ansi-bgyellow: 0.1.1
647 ansi-black: 0.1.1
648 ansi-blue: 0.1.1
649 ansi-bold: 0.1.1
650 ansi-cyan: 0.1.1
651 ansi-dim: 0.1.1
652 ansi-gray: 0.1.1
653 ansi-green: 0.1.1
654 ansi-grey: 0.1.1
655 ansi-hidden: 0.1.1
656 ansi-inverse: 0.1.1
657 ansi-italic: 0.1.1
658 ansi-magenta: 0.1.1
659 ansi-red: 0.1.1
660 ansi-reset: 0.1.1
661 ansi-strikethrough: 0.1.1
662 ansi-underline: 0.1.1
663 ansi-white: 0.1.1
664 ansi-yellow: 0.1.1
665 lazy-cache: 2.0.2
666 dev: false
667
668 /ansi-colors/1.1.0:
669 resolution: {integrity: sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==}
670 engines: {node: '>=0.10.0'}
671 dependencies: 3112 dependencies:
672 ansi-wrap: 0.1.0 3113 '@xtuc/long': 4.2.2
673 dev: false 3114 dev: true
674 3115
675 /ansi-colors/4.1.3: 3116 /@webassemblyjs/utf8@1.11.6:
676 resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} 3117 resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==}
677 engines: {node: '>=6'}
678 dev: true 3118 dev: true
679 3119
680 /ansi-cyan/0.1.1: 3120 /@webassemblyjs/wasm-edit@1.11.6:
681 resolution: {integrity: sha512-eCjan3AVo/SxZ0/MyIYRtkpxIu/H3xZN7URr1vXVrISxeyz8fUFz0FJziamK4sS8I+t35y4rHg1b2PklyBe/7A==} 3121 resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==}
682 engines: {node: '>=0.10.0'}
683 dependencies: 3122 dependencies:
684 ansi-wrap: 0.1.0 3123 '@webassemblyjs/ast': 1.11.6
685 dev: false 3124 '@webassemblyjs/helper-buffer': 1.11.6
3125 '@webassemblyjs/helper-wasm-bytecode': 1.11.6
3126 '@webassemblyjs/helper-wasm-section': 1.11.6
3127 '@webassemblyjs/wasm-gen': 1.11.6
3128 '@webassemblyjs/wasm-opt': 1.11.6
3129 '@webassemblyjs/wasm-parser': 1.11.6
3130 '@webassemblyjs/wast-printer': 1.11.6
3131 dev: true
686 3132
687 /ansi-dim/0.1.1: 3133 /@webassemblyjs/wasm-gen@1.11.6:
688 resolution: {integrity: sha512-zAfb1fokXsq4BoZBkL0eK+6MfFctbzX3R4UMcoWrL1n2WHewFKentTvOZv2P11u6P4NtW/V47hVjaN7fJiefOg==} 3134 resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==}
689 engines: {node: '>=0.10.0'}
690 dependencies: 3135 dependencies:
691 ansi-wrap: 0.1.0 3136 '@webassemblyjs/ast': 1.11.6
692 dev: false 3137 '@webassemblyjs/helper-wasm-bytecode': 1.11.6
3138 '@webassemblyjs/ieee754': 1.11.6
3139 '@webassemblyjs/leb128': 1.11.6
3140 '@webassemblyjs/utf8': 1.11.6
3141 dev: true
693 3142
694 /ansi-escapes/4.3.2: 3143 /@webassemblyjs/wasm-opt@1.11.6:
695 resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} 3144 resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==}
696 engines: {node: '>=8'}
697 dependencies: 3145 dependencies:
698 type-fest: 0.21.3 3146 '@webassemblyjs/ast': 1.11.6
3147 '@webassemblyjs/helper-buffer': 1.11.6
3148 '@webassemblyjs/wasm-gen': 1.11.6
3149 '@webassemblyjs/wasm-parser': 1.11.6
699 dev: true 3150 dev: true
700 3151
701 /ansi-gray/0.1.1: 3152 /@webassemblyjs/wasm-parser@1.11.6:
702 resolution: {integrity: sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==} 3153 resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==}
703 engines: {node: '>=0.10.0'}
704 dependencies: 3154 dependencies:
705 ansi-wrap: 0.1.0 3155 '@webassemblyjs/ast': 1.11.6
706 dev: false 3156 '@webassemblyjs/helper-api-error': 1.11.6
3157 '@webassemblyjs/helper-wasm-bytecode': 1.11.6
3158 '@webassemblyjs/ieee754': 1.11.6
3159 '@webassemblyjs/leb128': 1.11.6
3160 '@webassemblyjs/utf8': 1.11.6
3161 dev: true
707 3162
708 /ansi-green/0.1.1: 3163 /@webassemblyjs/wast-printer@1.11.6:
709 resolution: {integrity: sha512-WJ70OI4jCaMy52vGa/ypFSKFb/TrYNPaQ2xco5nUwE0C5H8piume/uAZNNdXXiMQ6DbRmiE7l8oNBHu05ZKkrw==} 3164 resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==}
710 engines: {node: '>=0.10.0'}
711 dependencies: 3165 dependencies:
712 ansi-wrap: 0.1.0 3166 '@webassemblyjs/ast': 1.11.6
713 dev: false 3167 '@xtuc/long': 4.2.2
3168 dev: true
714 3169
715 /ansi-grey/0.1.1: 3170 /@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.88.2):
716 resolution: {integrity: sha512-+J1nM4lC+whSvf3T4jsp1KR+C63lypb+VkkwtLQMc1Dlt+nOvdZpFT0wwFTYoSlSwCcLUAaOpHF6kPkYpSa24A==} 3171 resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==}
717 engines: {node: '>=0.10.0'} 3172 engines: {node: '>=14.15.0'}
3173 peerDependencies:
3174 webpack: 5.x.x
3175 webpack-cli: 5.x.x
718 dependencies: 3176 dependencies:
719 ansi-wrap: 0.1.0 3177 webpack: 5.88.2(webpack-cli@5.1.4)
720 dev: false 3178 webpack-cli: 5.1.4(webpack@5.88.2)
3179 dev: true
721 3180
722 /ansi-hidden/0.1.1: 3181 /@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.88.2):
723 resolution: {integrity: sha512-8gB1bo9ym9qZ/Obvrse1flRsfp2RE+40B23DhQcKxY+GSeaOJblLnzBOxzvmLTWbi5jNON3as7wd9rC0fNK73Q==} 3182 resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==}
724 engines: {node: '>=0.10.0'} 3183 engines: {node: '>=14.15.0'}
3184 peerDependencies:
3185 webpack: 5.x.x
3186 webpack-cli: 5.x.x
725 dependencies: 3187 dependencies:
726 ansi-wrap: 0.1.0 3188 webpack: 5.88.2(webpack-cli@5.1.4)
727 dev: false 3189 webpack-cli: 5.1.4(webpack@5.88.2)
3190 dev: true
728 3191
729 /ansi-inverse/0.1.1: 3192 /@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.88.2):
730 resolution: {integrity: sha512-Kq8Z0dBRhQhDMN/Rso1Nu9niwiTsRkJncfJZXiyj7ApbfJrGrrubHXqXI37feJZkYcIx6SlTBdNCeK0OQ6X6ag==} 3193 resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==}
731 engines: {node: '>=0.10.0'} 3194 engines: {node: '>=14.15.0'}
3195 peerDependencies:
3196 webpack: 5.x.x
3197 webpack-cli: 5.x.x
3198 webpack-dev-server: '*'
3199 peerDependenciesMeta:
3200 webpack-dev-server:
3201 optional: true
732 dependencies: 3202 dependencies:
733 ansi-wrap: 0.1.0 3203 webpack: 5.88.2(webpack-cli@5.1.4)
3204 webpack-cli: 5.1.4(webpack@5.88.2)
3205 dev: true
3206
3207 /@xtuc/ieee754@1.2.0:
3208 resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==}
3209 dev: true
3210
3211 /@xtuc/long@4.2.2:
3212 resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
3213 dev: true
3214
3215 /abbrev@1.1.1:
3216 resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
3217 requiresBuild: true
734 dev: false 3218 dev: false
735 3219
736 /ansi-italic/0.1.1: 3220 /abort-controller@3.0.0:
737 resolution: {integrity: sha512-jreCxifSAqbaBvcibeQxcwhQDbEj7gF69XnpA6x83qbECEBaRBD1epqskrmov1z4B+zzQuEdwbWxgzvhKa+PkA==} 3221 resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
738 engines: {node: '>=0.10.0'} 3222 engines: {node: '>=6.5'}
3223 dependencies:
3224 event-target-shim: 5.0.1
3225
3226 /abstract-logging@2.0.1:
3227 resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==}
3228
3229 /accepts@1.3.8:
3230 resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
3231 engines: {node: '>= 0.6'}
739 dependencies: 3232 dependencies:
740 ansi-wrap: 0.1.0 3233 mime-types: 2.1.35
3234 negotiator: 0.6.3
3235
3236 /acorn-class-fields@1.0.0(acorn@8.10.0):
3237 resolution: {integrity: sha512-l+1FokF34AeCXGBHkrXFmml9nOIRI+2yBnBpO5MaVAaTIJ96irWLtcCxX+7hAp6USHFCe+iyyBB4ZhxV807wmA==}
3238 engines: {node: '>=4.8.2'}
3239 peerDependencies:
3240 acorn: ^6 || ^7 || ^8
3241 dependencies:
3242 acorn: 8.10.0
3243 acorn-private-class-elements: 1.0.0(acorn@8.10.0)
741 dev: false 3244 dev: false
742 3245
743 /ansi-magenta/0.1.1: 3246 /acorn-import-assertions@1.9.0(acorn@8.10.0):
744 resolution: {integrity: sha512-A1Giu+HRwyWuiXKyXPw2AhG1yWZjNHWO+5mpt+P+VWYkmGRpLPry0O5gmlJQEvpjNpl4RjFV7DJQ4iozWOmkbQ==} 3247 resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==}
745 engines: {node: '>=0.10.0'} 3248 peerDependencies:
3249 acorn: ^8
3250 dependencies:
3251 acorn: 8.10.0
3252 dev: true
3253
3254 /acorn-jsx@5.3.2(acorn@8.10.0):
3255 resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
3256 peerDependencies:
3257 acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
3258 dependencies:
3259 acorn: 8.10.0
3260 dev: true
3261
3262 /acorn-private-class-elements@1.0.0(acorn@8.10.0):
3263 resolution: {integrity: sha512-zYNcZtxKgVCg1brS39BEou86mIao1EV7eeREG+6WMwKbuYTeivRRs6S2XdWnboRde6G9wKh2w+WBydEyJsJ6mg==}
3264 engines: {node: '>=4.8.2'}
3265 peerDependencies:
3266 acorn: ^6.1.0 || ^7 || ^8
746 dependencies: 3267 dependencies:
747 ansi-wrap: 0.1.0 3268 acorn: 8.10.0
748 dev: false 3269 dev: false
749 3270
750 /ansi-red/0.1.1: 3271 /acorn-private-methods@1.0.0(acorn@8.10.0):
751 resolution: {integrity: sha512-ewaIr5y+9CUTGFwZfpECUbFlGcC0GCw1oqR9RI6h1gQCd9Aj2GxSckCnPsVJnmfMZbwFYE+leZGASgkWl06Jow==} 3272 resolution: {integrity: sha512-Jou2L3nfwfPpFdmmHObI3yUpVPM1bPohTUAZCyVDw5Efyn9LSS6E36neRLCRfIr8QjskAfdxRdABOrvP4c/gwQ==}
752 engines: {node: '>=0.10.0'} 3273 engines: {node: '>=4.8.2'}
3274 peerDependencies:
3275 acorn: ^6 || ^7 || ^8
753 dependencies: 3276 dependencies:
754 ansi-wrap: 0.1.0 3277 acorn: 8.10.0
3278 acorn-private-class-elements: 1.0.0(acorn@8.10.0)
755 dev: false 3279 dev: false
756 3280
757 /ansi-regex/2.1.1: 3281 /acorn-static-class-features@1.0.0(acorn@8.10.0):
758 resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} 3282 resolution: {integrity: sha512-XZJECjbmMOKvMHiNzbiPXuXpLAJfN3dAKtfIYbk1eHiWdsutlek+gS7ND4B8yJ3oqvHo1NxfafnezVmq7NXK0A==}
759 engines: {node: '>=0.10.0'} 3283 engines: {node: '>=4.8.2'}
3284 peerDependencies:
3285 acorn: ^6.1.0 || ^7 || ^8
3286 dependencies:
3287 acorn: 8.10.0
3288 acorn-private-class-elements: 1.0.0(acorn@8.10.0)
760 dev: false 3289 dev: false
761 3290
762 /ansi-regex/3.0.1: 3291 /acorn-walk@8.2.0:
763 resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} 3292 resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==}
764 engines: {node: '>=4'} 3293 engines: {node: '>=0.4.0'}
765 dev: false 3294 dev: false
766 3295
767 /ansi-regex/5.0.1: 3296 /acorn@8.10.0:
768 resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 3297 resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
769 engines: {node: '>=8'} 3298 engines: {node: '>=0.4.0'}
3299 hasBin: true
3300
3301 /adjust-sourcemap-loader@4.0.0:
3302 resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==}
3303 engines: {node: '>=8.9'}
3304 dependencies:
3305 loader-utils: 2.0.4
3306 regex-parser: 2.2.11
770 dev: true 3307 dev: true
771 3308
772 /ansi-reset/0.1.1: 3309 /adonis-preset-ts@2.1.0:
773 resolution: {integrity: sha512-n+D0qD3B+h/lP0dSwXX1SZMoXufdUVotLMwUuvXa50LtBAh3f+WV8b5nFMfLL/hgoPBUt+rG/pqqzF8krlZKcw==} 3310 resolution: {integrity: sha512-cQH/NP250gOF9k3TTDhVsTOPSAvyH4MhKVZ4ryYiihA+vnP27sut1gVIrRas3Evl5d2wEgWVGI5DgdP/ZFSk0w==}
774 engines: {node: '>=0.10.0'} 3311 dev: true
3312
3313 /agent-base@6.0.2:
3314 resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
3315 engines: {node: '>= 6.0.0'}
775 dependencies: 3316 dependencies:
776 ansi-wrap: 0.1.0 3317 debug: 4.3.4
3318 transitivePeerDependencies:
3319 - supports-color
777 dev: false 3320 dev: false
778 3321
779 /ansi-strikethrough/0.1.1: 3322 /agentkeepalive@4.5.0:
780 resolution: {integrity: sha512-gWkLPDvHH2pC9YEKqp8dIl0mg3sRglMPvioqGDIOXiwxjxUwIJ1gF86E2o4R5yLNh8IAkwHbaMtASkJfkQ2hIA==} 3323 resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==}
781 engines: {node: '>=0.10.0'} 3324 engines: {node: '>= 8.0.0'}
3325 requiresBuild: true
782 dependencies: 3326 dependencies:
783 ansi-wrap: 0.1.0 3327 humanize-ms: 1.2.1
784 dev: false 3328 dev: false
3329 optional: true
785 3330
786 /ansi-styles/3.2.1: 3331 /aggregate-error@3.1.0:
3332 resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
3333 engines: {node: '>=8'}
3334 dependencies:
3335 clean-stack: 2.2.0
3336 indent-string: 4.0.0
3337
3338 /ajv-formats@2.1.1(ajv@8.12.0):
3339 resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==}
3340 peerDependencies:
3341 ajv: ^8.0.0
3342 peerDependenciesMeta:
3343 ajv:
3344 optional: true
3345 dependencies:
3346 ajv: 8.12.0
3347 dev: true
3348
3349 /ajv-keywords@3.5.2(ajv@6.12.6):
3350 resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==}
3351 peerDependencies:
3352 ajv: ^6.9.1
3353 dependencies:
3354 ajv: 6.12.6
3355 dev: true
3356
3357 /ajv-keywords@5.1.0(ajv@8.12.0):
3358 resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==}
3359 peerDependencies:
3360 ajv: ^8.8.2
3361 dependencies:
3362 ajv: 8.12.0
3363 fast-deep-equal: 3.1.3
3364 dev: true
3365
3366 /ajv@6.12.6:
3367 resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
3368 dependencies:
3369 fast-deep-equal: 3.1.3
3370 fast-json-stable-stringify: 2.1.0
3371 json-schema-traverse: 0.4.1
3372 uri-js: 4.4.1
3373 dev: true
3374
3375 /ajv@8.12.0:
3376 resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==}
3377 dependencies:
3378 fast-deep-equal: 3.1.3
3379 json-schema-traverse: 1.0.0
3380 require-from-string: 2.0.2
3381 uri-js: 4.4.1
3382 dev: true
3383
3384 /ansi-colors@4.1.3:
3385 resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
3386 engines: {node: '>=6'}
3387
3388 /ansi-escapes@4.3.2:
3389 resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
3390 engines: {node: '>=8'}
3391 dependencies:
3392 type-fest: 0.21.3
3393
3394 /ansi-escapes@6.2.0:
3395 resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==}
3396 engines: {node: '>=14.16'}
3397 dependencies:
3398 type-fest: 3.13.1
3399 dev: true
3400
3401 /ansi-html-community@0.0.8:
3402 resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==}
3403 engines: {'0': node >= 0.8.0}
3404 hasBin: true
3405 dev: true
3406
3407 /ansi-regex@2.1.1:
3408 resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==}
3409 engines: {node: '>=0.10.0'}
3410 dev: true
3411
3412 /ansi-regex@5.0.1:
3413 resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
3414 engines: {node: '>=8'}
3415
3416 /ansi-styles@2.2.1:
3417 resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==}
3418 engines: {node: '>=0.10.0'}
3419 dev: true
3420
3421 /ansi-styles@3.2.1:
787 resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 3422 resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
788 engines: {node: '>=4'} 3423 engines: {node: '>=4'}
789 dependencies: 3424 dependencies:
790 color-convert: 1.9.3 3425 color-convert: 1.9.3
791 dev: true 3426 dev: true
792 3427
793 /ansi-styles/4.3.0: 3428 /ansi-styles@4.3.0:
794 resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 3429 resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
795 engines: {node: '>=8'} 3430 engines: {node: '>=8'}
796 dependencies: 3431 dependencies:
797 color-convert: 2.0.1 3432 color-convert: 2.0.1
3433
3434 /ansi-styles@5.2.0:
3435 resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
3436 engines: {node: '>=10'}
798 dev: true 3437 dev: true
799 3438
800 /ansi-underline/0.1.1: 3439 /ansicolors@0.3.2:
801 resolution: {integrity: sha512-D+Bzwio/0/a0Fu5vJzrIT6bFk43TW46vXfSvzysOTEHcXOAUJTVMHWDbELIzGU4AVxVw2rCTb7YyWS4my2cSKQ==} 3440 resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==}
802 engines: {node: '>=0.10.0'} 3441 dev: true
803 dependencies:
804 ansi-wrap: 0.1.0
805 dev: false
806 3442
807 /ansi-white/0.1.1: 3443 /anymatch@3.1.3:
808 resolution: {integrity: sha512-DJHaF2SRzBb9wZBgqIJNjjTa7JUJTO98sHeTS1sDopyKKRopL1KpaJ20R6W2f/ZGras8bYyIZDtNwYOVXNgNFg==} 3444 resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
809 engines: {node: '>=0.10.0'} 3445 engines: {node: '>= 8'}
810 dependencies: 3446 dependencies:
811 ansi-wrap: 0.1.0 3447 normalize-path: 3.0.0
812 dev: false 3448 picomatch: 2.3.1
3449 dev: true
813 3450
814 /ansi-wrap/0.1.0: 3451 /api-contract-validator@2.2.8(openapi-types@12.1.3):
815 resolution: {integrity: sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==} 3452 resolution: {integrity: sha512-YM3rMcrIp8Thf/WWbVBXBGX793Mm3Phw2pn3VbJpiZkpeTCTtF10huKPrzQ2gSIaK5GjAhTRJMAOyf+rsS7MAw==}
816 engines: {node: '>=0.10.0'} 3453 engines: {node: '>=8'}
817 dev: false 3454 dependencies:
3455 api-schema-builder: 2.0.11(openapi-types@12.1.3)
3456 chalk: 3.0.0
3457 columnify: 1.6.0
3458 jest-diff: 25.5.0
3459 jest-matcher-utils: 25.5.0
3460 lodash.flatten: 4.4.0
3461 lodash.get: 4.4.2
3462 lodash.set: 4.3.2
3463 uri-js: 4.4.1
3464 transitivePeerDependencies:
3465 - openapi-types
3466 dev: true
818 3467
819 /ansi-yellow/0.1.1: 3468 /api-schema-builder@2.0.11(openapi-types@12.1.3):
820 resolution: {integrity: sha512-6E3D4BQLXHLl3c/NwirWVZ+BCkMq2qsYxdeAGGOijKrx09FaqU+HktFL6QwAwNvgJiMLnv6AQ2C1gFZx0h1CBg==} 3469 resolution: {integrity: sha512-85zbwf8MtPWodhfnmQRW5YD/fuGR12FP+8TbcYai5wbRnoUmPYLftLSbp7NB6zQMPb61Gjz+ApPUSyTdcCos7g==}
821 engines: {node: '>=0.10.0'} 3470 engines: {node: '>=8'}
822 dependencies: 3471 dependencies:
823 ansi-wrap: 0.1.0 3472 ajv: 6.12.6
824 dev: false 3473 clone-deep: 4.0.1
3474 decimal.js: 10.4.3
3475 js-yaml: 3.14.1
3476 json-schema-deref-sync: 0.14.0
3477 lodash.get: 4.4.2
3478 openapi-schema-validator: 3.0.3
3479 swagger-parser: 10.0.3(openapi-types@12.1.3)
3480 transitivePeerDependencies:
3481 - openapi-types
3482 dev: true
825 3483
826 /any-promise/0.1.0: 3484 /aproba@2.0.0:
827 resolution: {integrity: sha512-lqzY9o+BbeGHRCOyxQkt/Tgvz0IZhTmQiA+LxQW8wSNpcTbj8K+0cZiSEvbpNZZP9/11Gy7dnLO3GNWUXO4d1g==} 3485 resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
828 dev: false 3486 dev: false
829 3487
830 /aproba/1.2.0: 3488 /are-we-there-yet@2.0.0:
831 resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} 3489 resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==}
3490 engines: {node: '>=10'}
3491 dependencies:
3492 delegates: 1.0.0
3493 readable-stream: 3.6.2
832 dev: false 3494 dev: false
833 3495
834 /are-we-there-yet/1.1.7: 3496 /are-we-there-yet@3.0.1:
835 resolution: {integrity: sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==} 3497 resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==}
3498 engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
3499 requiresBuild: true
836 dependencies: 3500 dependencies:
837 delegates: 1.0.0 3501 delegates: 1.0.0
838 readable-stream: 2.3.7 3502 readable-stream: 3.6.2
839 dev: false 3503 dev: false
3504 optional: true
840 3505
841 /argparse/1.0.10: 3506 /argparse@1.0.10:
842 resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 3507 resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
843 dependencies: 3508 dependencies:
844 sprintf-js: 1.0.3 3509 sprintf-js: 1.0.3
845 dev: true 3510 dev: true
846 3511
847 /arr-diff/4.0.0: 3512 /argparse@2.0.1:
3513 resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
3514 dev: true
3515
3516 /arr-diff@4.0.0:
848 resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} 3517 resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==}
849 engines: {node: '>=0.10.0'} 3518 engines: {node: '>=0.10.0'}
850 dev: false 3519 dev: true
851 3520
852 /arr-flatten/1.1.0: 3521 /arr-flatten@1.1.0:
853 resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} 3522 resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==}
854 engines: {node: '>=0.10.0'} 3523 engines: {node: '>=0.10.0'}
855 dev: false 3524 dev: true
856 3525
857 /arr-swap/1.0.1: 3526 /arr-union@3.1.0:
858 resolution: {integrity: sha512-SxBKd/By8+AaREcv/ZhFqmapfpqK4kyaQkUHwmJjlczI5ZtuuT5gofKHlCrSJ4oR7zXezFhv+7zsnLEdg9uGgQ==} 3527 resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==}
859 engines: {node: '>=0.10.0'} 3528 engines: {node: '>=0.10.0'}
3529 dev: true
3530
3531 /array-buffer-byte-length@1.0.0:
3532 resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==}
860 dependencies: 3533 dependencies:
861 is-number: 3.0.0 3534 call-bind: 1.0.2
862 dev: false 3535 is-array-buffer: 3.0.2
3536 dev: true
863 3537
864 /arr-union/3.1.0: 3538 /array-flatten@1.1.1:
865 resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} 3539 resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
866 engines: {node: '>=0.10.0'} 3540 dev: true
867 dev: false
868 3541
869 /array-each/1.0.1: 3542 /array-flatten@2.1.2:
870 resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==} 3543 resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==}
871 engines: {node: '>=0.10.0'} 3544 dev: true
872 dev: false
873 3545
874 /array-includes/3.1.6: 3546 /array-includes@3.1.7:
875 resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} 3547 resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==}
876 engines: {node: '>= 0.4'} 3548 engines: {node: '>= 0.4'}
877 dependencies: 3549 dependencies:
878 call-bind: 1.0.2 3550 call-bind: 1.0.2
879 define-properties: 1.1.4 3551 define-properties: 1.2.1
880 es-abstract: 1.20.5 3552 es-abstract: 1.22.2
881 get-intrinsic: 1.1.3 3553 get-intrinsic: 1.2.1
882 is-string: 1.0.7 3554 is-string: 1.0.7
883 dev: true 3555 dev: true
884 3556
885 /array-slice/1.1.0: 3557 /array-union@1.0.2:
886 resolution: {integrity: sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==} 3558 resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==}
887 engines: {node: '>=0.10.0'} 3559 engines: {node: '>=0.10.0'}
888 dev: false 3560 dependencies:
3561 array-uniq: 1.0.3
3562 dev: true
889 3563
890 /array-unique/0.3.2: 3564 /array-union@2.1.0:
3565 resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
3566 engines: {node: '>=8'}
3567 dev: true
3568
3569 /array-uniq@1.0.3:
3570 resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==}
3571 engines: {node: '>=0.10.0'}
3572 dev: true
3573
3574 /array-unique@0.3.2:
891 resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} 3575 resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==}
892 engines: {node: '>=0.10.0'} 3576 engines: {node: '>=0.10.0'}
893 dev: false 3577 dev: true
894 3578
895 /array.prototype.flat/1.3.1: 3579 /array.prototype.findlastindex@1.2.3:
896 resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} 3580 resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==}
897 engines: {node: '>= 0.4'} 3581 engines: {node: '>= 0.4'}
898 dependencies: 3582 dependencies:
899 call-bind: 1.0.2 3583 call-bind: 1.0.2
900 define-properties: 1.1.4 3584 define-properties: 1.2.1
901 es-abstract: 1.20.5 3585 es-abstract: 1.22.2
902 es-shim-unscopables: 1.0.0 3586 es-shim-unscopables: 1.0.0
3587 get-intrinsic: 1.2.1
903 dev: true 3588 dev: true
904 3589
905 /asn1/0.2.6: 3590 /array.prototype.flat@1.3.2:
906 resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} 3591 resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==}
3592 engines: {node: '>= 0.4'}
907 dependencies: 3593 dependencies:
908 safer-buffer: 2.1.2 3594 call-bind: 1.0.2
909 dev: false 3595 define-properties: 1.2.1
3596 es-abstract: 1.22.2
3597 es-shim-unscopables: 1.0.0
3598 dev: true
910 3599
911 /assert-plus/1.0.0: 3600 /array.prototype.flatmap@1.3.2:
912 resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} 3601 resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==}
913 engines: {node: '>=0.8'} 3602 engines: {node: '>= 0.4'}
914 dev: false 3603 dependencies:
3604 call-bind: 1.0.2
3605 define-properties: 1.2.1
3606 es-abstract: 1.22.2
3607 es-shim-unscopables: 1.0.0
3608 dev: true
3609
3610 /arraybuffer.prototype.slice@1.0.2:
3611 resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==}
3612 engines: {node: '>= 0.4'}
3613 dependencies:
3614 array-buffer-byte-length: 1.0.0
3615 call-bind: 1.0.2
3616 define-properties: 1.2.1
3617 es-abstract: 1.22.2
3618 get-intrinsic: 1.2.1
3619 is-array-buffer: 3.0.2
3620 is-shared-array-buffer: 1.0.2
3621 dev: true
3622
3623 /arrify@2.0.1:
3624 resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==}
3625 engines: {node: '>=8'}
3626 dev: true
3627
3628 /as-table@1.0.55:
3629 resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==}
3630 dependencies:
3631 printable-characters: 1.0.42
3632 dev: true
3633
3634 /asap@2.0.6:
3635 resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==}
3636 dev: true
3637
3638 /assertion-error@1.1.0:
3639 resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
3640 dev: true
3641
3642 /assets-webpack-plugin@7.0.0(webpack@5.88.2):
3643 resolution: {integrity: sha512-DMZ9r6HFxynWeONRMhSOFTvTrmit5dovdoUKdJgCG03M6CC7XiwNImPH+Ad1jaVrQ2n59e05lBhte52xPt4MSA==}
3644 engines: {node: '>=10.x.x'}
3645 peerDependencies:
3646 webpack: '>=5.0.0'
3647 dependencies:
3648 camelcase: 6.3.0
3649 escape-string-regexp: 4.0.0
3650 lodash: 4.17.21
3651 webpack: 5.88.2(webpack-cli@5.1.4)
3652 dev: true
915 3653
916 /assign-symbols/1.0.0: 3654 /assign-symbols@1.0.0:
917 resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} 3655 resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==}
918 engines: {node: '>=0.10.0'} 3656 engines: {node: '>=0.10.0'}
919 dev: false 3657 dev: true
920 3658
921 /astral-regex/2.0.0: 3659 /astral-regex@2.0.0:
922 resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} 3660 resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
923 engines: {node: '>=8'} 3661 engines: {node: '>=8'}
924 dev: true
925 3662
926 /async/3.2.4: 3663 /astring@1.8.6:
927 resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} 3664 resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==}
928 3665 hasBin: true
929 /asynckit/0.4.0:
930 resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
931 dev: false 3666 dev: false
932 3667
933 /at-least-node/1.0.0: 3668 /async-retry@1.3.3:
934 resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} 3669 resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==}
935 engines: {node: '>= 4.0.0'} 3670 dependencies:
936 dev: false 3671 retry: 0.13.1
3672 dev: true
3673
3674 /asynckit@0.4.0:
3675 resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
3676 dev: true
937 3677
938 /atob/2.1.2: 3678 /atob@2.1.2:
939 resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} 3679 resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==}
940 engines: {node: '>= 4.5.0'} 3680 engines: {node: '>= 4.5.0'}
941 hasBin: true 3681 hasBin: true
942 dev: false 3682 dev: true
943 3683
944 /aws-sign2/0.7.0: 3684 /atomic-sleep@1.0.0:
945 resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} 3685 resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
946 dev: false 3686 engines: {node: '>=8.0.0'}
947 3687
948 /aws4/1.11.0: 3688 /available-typed-arrays@1.0.5:
949 resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} 3689 resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
3690 engines: {node: '>= 0.4'}
3691
3692 /aws-sdk@2.1425.0:
3693 resolution: {integrity: sha512-DbY5z7E8RsrX8/0pMBKMuh/rWFic3AghtU2AWkUdzxDi0cUSK7rOSPS/OIURU9Rh0jaNXoA0ujBDdx/CC5CvRA==}
3694 engines: {node: '>= 10.0.0'}
3695 dependencies:
3696 buffer: 4.9.2
3697 events: 1.1.1
3698 ieee754: 1.1.13
3699 jmespath: 0.16.0
3700 querystring: 0.2.0
3701 sax: 1.2.1
3702 url: 0.10.3
3703 util: 0.12.5
3704 uuid: 8.0.0
3705 xml2js: 0.5.0
950 dev: false 3706 dev: false
951 3707
952 /balanced-match/1.0.2: 3708 /babel-code-frame@6.26.0:
3709 resolution: {integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==}
3710 dependencies:
3711 chalk: 1.1.3
3712 esutils: 2.0.3
3713 js-tokens: 3.0.2
3714 dev: true
3715
3716 /babel-loader@8.3.0(@babel/core@7.23.0)(webpack@5.88.2):
3717 resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==}
3718 engines: {node: '>= 8.9'}
3719 peerDependencies:
3720 '@babel/core': ^7.0.0
3721 webpack: '>=2'
3722 dependencies:
3723 '@babel/core': 7.23.0
3724 find-cache-dir: 3.3.2
3725 loader-utils: 2.0.4
3726 make-dir: 3.1.0
3727 schema-utils: 2.7.1
3728 webpack: 5.88.2(webpack-cli@5.1.4)
3729 dev: true
3730
3731 /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.23.0):
3732 resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==}
3733 peerDependencies:
3734 '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
3735 dependencies:
3736 '@babel/compat-data': 7.22.20
3737 '@babel/core': 7.23.0
3738 '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.0)
3739 semver: 6.3.1
3740 transitivePeerDependencies:
3741 - supports-color
3742 dev: true
3743
3744 /babel-plugin-polyfill-corejs3@0.8.4(@babel/core@7.23.0):
3745 resolution: {integrity: sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg==}
3746 peerDependencies:
3747 '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
3748 dependencies:
3749 '@babel/core': 7.23.0
3750 '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.0)
3751 core-js-compat: 3.32.2
3752 transitivePeerDependencies:
3753 - supports-color
3754 dev: true
3755
3756 /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.23.0):
3757 resolution: {integrity: sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==}
3758 peerDependencies:
3759 '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
3760 dependencies:
3761 '@babel/core': 7.23.0
3762 '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.0)
3763 transitivePeerDependencies:
3764 - supports-color
3765 dev: true
3766
3767 /balanced-match@1.0.2:
953 resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 3768 resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
954 3769
955 /base/0.11.2: 3770 /base64-js@1.5.1:
3771 resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
3772
3773 /base@0.11.2:
956 resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} 3774 resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==}
957 engines: {node: '>=0.10.0'} 3775 engines: {node: '>=0.10.0'}
958 dependencies: 3776 dependencies:
@@ -963,43 +3781,101 @@ packages:
963 isobject: 3.0.1 3781 isobject: 3.0.1
964 mixin-deep: 1.3.2 3782 mixin-deep: 1.3.2
965 pascalcase: 0.1.1 3783 pascalcase: 0.1.1
966 dev: false 3784 dev: true
967 3785
968 /basic-auth/2.0.1: 3786 /batch@0.6.1:
969 resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} 3787 resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==}
970 engines: {node: '>= 0.8'} 3788 dev: true
971 dependencies:
972 safe-buffer: 5.1.2
973 dev: false
974 3789
975 /bcrypt-pbkdf/1.0.2: 3790 /bcrypt@5.1.1:
976 resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} 3791 resolution: {integrity: sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==}
3792 engines: {node: '>= 10.0.0'}
3793 requiresBuild: true
977 dependencies: 3794 dependencies:
978 tweetnacl: 0.14.5 3795 '@mapbox/node-pre-gyp': 1.0.11
3796 node-addon-api: 5.1.0
3797 transitivePeerDependencies:
3798 - encoding
3799 - supports-color
979 dev: false 3800 dev: false
980 3801
981 /bcryptjs/2.4.3: 3802 /big-integer@1.6.51:
982 resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} 3803 resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==}
983 dev: false 3804 engines: {node: '>=0.6'}
3805 dev: true
3806
3807 /big.js@5.2.2:
3808 resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==}
3809 dev: true
984 3810
985 /bignumber.js/9.0.0: 3811 /bignumber.js@9.0.0:
986 resolution: {integrity: sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==} 3812 resolution: {integrity: sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==}
987 dev: false 3813 dev: false
988 3814
989 /bl/1.2.3: 3815 /binary-extensions@2.2.0:
3816 resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
3817 engines: {node: '>=8'}
3818 dev: true
3819
3820 /bl@1.2.3:
990 resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} 3821 resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==}
991 dependencies: 3822 dependencies:
992 readable-stream: 2.3.7 3823 readable-stream: 2.3.8
993 safe-buffer: 5.2.1 3824 safe-buffer: 5.2.1
994 dev: false 3825 dev: false
995 3826
996 /brace-expansion/1.1.11: 3827 /body-parser@1.20.1:
3828 resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==}
3829 engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
3830 dependencies:
3831 bytes: 3.1.2
3832 content-type: 1.0.5
3833 debug: 2.6.9
3834 depd: 2.0.0
3835 destroy: 1.2.0
3836 http-errors: 2.0.0
3837 iconv-lite: 0.4.24
3838 on-finished: 2.4.1
3839 qs: 6.11.0
3840 raw-body: 2.5.1
3841 type-is: 1.6.18
3842 unpipe: 1.0.0
3843 transitivePeerDependencies:
3844 - supports-color
3845 dev: true
3846
3847 /bonjour-service@1.1.1:
3848 resolution: {integrity: sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==}
3849 dependencies:
3850 array-flatten: 2.1.2
3851 dns-equal: 1.0.0
3852 fast-deep-equal: 3.1.3
3853 multicast-dns: 7.2.5
3854 dev: true
3855
3856 /boolbase@1.0.0:
3857 resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
3858 dev: true
3859
3860 /bplist-parser@0.2.0:
3861 resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==}
3862 engines: {node: '>= 5.10.0'}
3863 dependencies:
3864 big-integer: 1.6.51
3865 dev: true
3866
3867 /brace-expansion@1.1.11:
997 resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 3868 resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
998 dependencies: 3869 dependencies:
999 balanced-match: 1.0.2 3870 balanced-match: 1.0.2
1000 concat-map: 0.0.1 3871 concat-map: 0.0.1
1001 3872
1002 /braces/2.3.2: 3873 /brace-expansion@2.0.1:
3874 resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
3875 dependencies:
3876 balanced-match: 1.0.2
3877
3878 /braces@2.3.2:
1003 resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} 3879 resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==}
1004 engines: {node: '>=0.10.0'} 3880 engines: {node: '>=0.10.0'}
1005 dependencies: 3881 dependencies:
@@ -1015,49 +3891,116 @@ packages:
1015 to-regex: 3.0.2 3891 to-regex: 3.0.2
1016 transitivePeerDependencies: 3892 transitivePeerDependencies:
1017 - supports-color 3893 - supports-color
1018 dev: false 3894 dev: true
1019 3895
1020 /bson/1.1.6: 3896 /braces@3.0.2:
1021 resolution: {integrity: sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==} 3897 resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
1022 engines: {node: '>=0.6.19'} 3898 engines: {node: '>=8'}
1023 dev: false 3899 dependencies:
3900 fill-range: 7.0.1
1024 3901
1025 /btoa/1.2.1: 3902 /browserslist@4.22.1:
1026 resolution: {integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==} 3903 resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==}
1027 engines: {node: '>= 0.4.0'} 3904 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
1028 hasBin: true 3905 hasBin: true
1029 dev: false 3906 dependencies:
3907 caniuse-lite: 1.0.30001541
3908 electron-to-chromium: 1.4.537
3909 node-releases: 2.0.13
3910 update-browserslist-db: 1.0.13(browserslist@4.22.1)
3911 dev: true
1030 3912
1031 /buffer-alloc-unsafe/1.1.0: 3913 /buffer-alloc-unsafe@1.1.0:
1032 resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} 3914 resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==}
1033 dev: false 3915 dev: false
1034 3916
1035 /buffer-alloc/1.2.0: 3917 /buffer-alloc@1.2.0:
1036 resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} 3918 resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==}
1037 dependencies: 3919 dependencies:
1038 buffer-alloc-unsafe: 1.1.0 3920 buffer-alloc-unsafe: 1.1.0
1039 buffer-fill: 1.0.0 3921 buffer-fill: 1.0.0
1040 dev: false 3922 dev: false
1041 3923
1042 /buffer-equal-constant-time/1.0.1: 3924 /buffer-fill@1.0.0:
1043 resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==}
1044 dev: false
1045
1046 /buffer-fill/1.0.0:
1047 resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} 3925 resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==}
1048 dev: false 3926 dev: false
1049 3927
1050 /buffer-writer/2.0.0: 3928 /buffer-from@1.1.2:
3929 resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
3930
3931 /buffer-writer@2.0.0:
1051 resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} 3932 resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==}
1052 engines: {node: '>=4'} 3933 engines: {node: '>=4'}
1053 dev: false 3934 dev: false
1054 3935
1055 /bytes/3.1.2: 3936 /buffer@4.9.2:
3937 resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==}
3938 dependencies:
3939 base64-js: 1.5.1
3940 ieee754: 1.1.13
3941 isarray: 1.0.0
3942 dev: false
3943
3944 /buffer@6.0.3:
3945 resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
3946 dependencies:
3947 base64-js: 1.5.1
3948 ieee754: 1.2.1
3949
3950 /builtin-modules@3.3.0:
3951 resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
3952 engines: {node: '>=6'}
3953 dev: true
3954
3955 /builtins@1.0.3:
3956 resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==}
3957 dev: true
3958
3959 /bundle-name@3.0.0:
3960 resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==}
3961 engines: {node: '>=12'}
3962 dependencies:
3963 run-applescript: 5.0.0
3964 dev: true
3965
3966 /bytes@3.0.0:
3967 resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==}
3968 engines: {node: '>= 0.8'}
3969 dev: true
3970
3971 /bytes@3.1.2:
1056 resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 3972 resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
1057 engines: {node: '>= 0.8'} 3973 engines: {node: '>= 0.8'}
3974
3975 /cacache@15.3.0:
3976 resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==}
3977 engines: {node: '>= 10'}
3978 requiresBuild: true
3979 dependencies:
3980 '@npmcli/fs': 1.1.1
3981 '@npmcli/move-file': 1.1.2
3982 chownr: 2.0.0
3983 fs-minipass: 2.1.0
3984 glob: 7.2.3
3985 infer-owner: 1.0.4
3986 lru-cache: 6.0.0
3987 minipass: 3.3.6
3988 minipass-collect: 1.0.2
3989 minipass-flush: 1.0.5
3990 minipass-pipeline: 1.2.4
3991 mkdirp: 1.0.4
3992 p-map: 4.0.0
3993 promise-inflight: 1.0.1
3994 rimraf: 3.0.2
3995 ssri: 8.0.1
3996 tar: 6.2.0
3997 unique-filename: 1.1.1
3998 transitivePeerDependencies:
3999 - bluebird
1058 dev: false 4000 dev: false
4001 optional: true
1059 4002
1060 /cache-base/1.0.1: 4003 /cache-base@1.0.1:
1061 resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} 4004 resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==}
1062 engines: {node: '>=0.10.0'} 4005 engines: {node: '>=0.10.0'}
1063 dependencies: 4006 dependencies:
@@ -1070,57 +4013,105 @@ packages:
1070 to-object-path: 0.3.0 4013 to-object-path: 0.3.0
1071 union-value: 1.0.1 4014 union-value: 1.0.1
1072 unset-value: 1.0.0 4015 unset-value: 1.0.0
4016 dev: true
4017
4018 /cacheable-lookup@5.0.4:
4019 resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==}
4020 engines: {node: '>=10.6.0'}
1073 dev: false 4021 dev: false
1074 4022
1075 /cacheable-request/2.1.4: 4023 /cacheable-request@7.0.4:
1076 resolution: {integrity: sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==} 4024 resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==}
4025 engines: {node: '>=8'}
1077 dependencies: 4026 dependencies:
1078 clone-response: 1.0.2 4027 clone-response: 1.0.3
1079 get-stream: 3.0.0 4028 get-stream: 5.2.0
1080 http-cache-semantics: 3.8.1 4029 http-cache-semantics: 4.1.1
1081 keyv: 3.0.0 4030 keyv: 4.5.3
1082 lowercase-keys: 1.0.0 4031 lowercase-keys: 2.0.0
1083 normalize-url: 2.0.1 4032 normalize-url: 6.1.0
1084 responselike: 1.0.2 4033 responselike: 2.0.1
1085 dev: false 4034 dev: false
1086 4035
1087 /call-bind/1.0.2: 4036 /call-bind@1.0.2:
1088 resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 4037 resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
1089 dependencies: 4038 dependencies:
1090 function-bind: 1.1.1 4039 function-bind: 1.1.1
1091 get-intrinsic: 1.1.3 4040 get-intrinsic: 1.2.1
1092 4041
1093 /caller-path/0.1.0: 4042 /call-me-maybe@1.0.2:
1094 resolution: {integrity: sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g==} 4043 resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==}
1095 engines: {node: '>=0.10.0'} 4044 dev: true
4045
4046 /callsites@3.1.0:
4047 resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
4048 engines: {node: '>=6'}
4049 dev: true
4050
4051 /camel-case@4.1.2:
4052 resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
1096 dependencies: 4053 dependencies:
1097 callsites: 0.2.0 4054 pascal-case: 3.1.2
1098 dev: false 4055 tslib: 2.6.2
1099 4056
1100 /caller/1.1.0: 4057 /camelcase@6.3.0:
1101 resolution: {integrity: sha512-n+21IZC3j06YpCWaxmUy5AnVqhmCIM2bQtqQyy00HJlmStRt6kwDX5F9Z97pqwAB+G/tgSz6q/kUBbNyQzIubw==} 4058 resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
1102 dev: false 4059 engines: {node: '>=10'}
4060 dev: true
1103 4061
1104 /callsites/0.2.0: 4062 /caniuse-api@3.0.0:
1105 resolution: {integrity: sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A==} 4063 resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
1106 engines: {node: '>=0.10.0'} 4064 dependencies:
1107 dev: false 4065 browserslist: 4.22.1
4066 caniuse-lite: 1.0.30001541
4067 lodash.memoize: 4.1.2
4068 lodash.uniq: 4.5.0
4069 dev: true
1108 4070
1109 /callsites/3.1.0: 4071 /caniuse-lite@1.0.30001541:
1110 resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 4072 resolution: {integrity: sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw==}
1111 engines: {node: '>=6'}
1112 dev: true 4073 dev: true
1113 4074
1114 /camelcase/5.3.1: 4075 /capital-case@1.0.4:
1115 resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 4076 resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==}
1116 engines: {node: '>=6'} 4077 dependencies:
4078 no-case: 3.0.4
4079 tslib: 2.6.2
4080 upper-case-first: 2.0.2
4081
4082 /cardinal@2.1.1:
4083 resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==}
4084 hasBin: true
4085 dependencies:
4086 ansicolors: 0.3.2
4087 redeyed: 2.1.1
1117 dev: true 4088 dev: true
1118 4089
1119 /caseless/0.12.0: 4090 /chai@4.3.10:
1120 resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} 4091 resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==}
1121 dev: false 4092 engines: {node: '>=4'}
4093 dependencies:
4094 assertion-error: 1.1.0
4095 check-error: 1.0.3
4096 deep-eql: 4.1.3
4097 get-func-name: 2.0.2
4098 loupe: 2.3.6
4099 pathval: 1.1.1
4100 type-detect: 4.0.8
4101 dev: true
4102
4103 /chalk@1.1.3:
4104 resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==}
4105 engines: {node: '>=0.10.0'}
4106 dependencies:
4107 ansi-styles: 2.2.1
4108 escape-string-regexp: 1.0.5
4109 has-ansi: 2.0.0
4110 strip-ansi: 3.0.1
4111 supports-color: 2.0.0
4112 dev: true
1122 4113
1123 /chalk/2.4.2: 4114 /chalk@2.4.2:
1124 resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 4115 resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
1125 engines: {node: '>=4'} 4116 engines: {node: '>=4'}
1126 dependencies: 4117 dependencies:
@@ -1129,7 +4120,15 @@ packages:
1129 supports-color: 5.5.0 4120 supports-color: 5.5.0
1130 dev: true 4121 dev: true
1131 4122
1132 /chalk/4.1.2: 4123 /chalk@3.0.0:
4124 resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==}
4125 engines: {node: '>=8'}
4126 dependencies:
4127 ansi-styles: 4.3.0
4128 supports-color: 7.2.0
4129 dev: true
4130
4131 /chalk@4.1.2:
1133 resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 4132 resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
1134 engines: {node: '>=10'} 4133 engines: {node: '>=10'}
1135 dependencies: 4134 dependencies:
@@ -1137,35 +4136,72 @@ packages:
1137 supports-color: 7.2.0 4136 supports-color: 7.2.0
1138 dev: true 4137 dev: true
1139 4138
1140 /chance/1.1.9: 4139 /chalk@5.3.0:
1141 resolution: {integrity: sha512-TfxnA/DcZXRTA4OekA2zL9GH8qscbbl6X0ZqU4tXhGveVY/mXWvEQLt5GwZcYXTEyEFflVtj+pG8nc8EwSm1RQ==} 4140 resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
1142 dev: false 4141 engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
4142 dev: true
4143
4144 /change-case@4.1.2:
4145 resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==}
4146 dependencies:
4147 camel-case: 4.1.2
4148 capital-case: 1.0.4
4149 constant-case: 3.0.4
4150 dot-case: 3.0.4
4151 header-case: 2.0.4
4152 no-case: 3.0.4
4153 param-case: 3.0.4
4154 pascal-case: 3.1.2
4155 path-case: 3.0.4
4156 sentence-case: 3.0.4
4157 snake-case: 3.0.4
4158 tslib: 2.6.2
1143 4159
1144 /chardet/0.7.0: 4160 /charenc@0.0.2:
1145 resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} 4161 resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==}
1146 dev: true 4162 dev: true
1147 4163
1148 /choices-separator/2.0.0: 4164 /check-error@1.0.3:
1149 resolution: {integrity: sha512-BCKlzRcP2V6X+85TSKn09oGZkO2zK2zytGyZeHvM2s+kv/ydAzJtsc+rZqYRWNlojIBfkOnPxgKXrBefTFZbTQ==} 4165 resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
1150 engines: {node: '>=0.10.0'}
1151 dependencies: 4166 dependencies:
1152 ansi-dim: 0.1.1 4167 get-func-name: 2.0.2
1153 debug: 2.6.9 4168 dev: true
1154 strip-color: 0.1.0
1155 transitivePeerDependencies:
1156 - supports-color
1157 dev: false
1158 4169
1159 /chownr/1.1.4: 4170 /chokidar@3.5.3:
4171 resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
4172 engines: {node: '>= 8.10.0'}
4173 dependencies:
4174 anymatch: 3.1.3
4175 braces: 3.0.2
4176 glob-parent: 5.1.2
4177 is-binary-path: 2.1.0
4178 is-glob: 4.0.3
4179 normalize-path: 3.0.0
4180 readdirp: 3.6.0
4181 optionalDependencies:
4182 fsevents: 2.3.3
4183 dev: true
4184
4185 /chownr@1.1.4:
1160 resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} 4186 resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
1161 dev: false 4187 dev: false
1162 4188
1163 /ci-info/3.7.0: 4189 /chownr@2.0.0:
1164 resolution: {integrity: sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==} 4190 resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
4191 engines: {node: '>=10'}
4192 dev: false
4193
4194 /chrome-trace-event@1.0.3:
4195 resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==}
4196 engines: {node: '>=6.0'}
4197 dev: true
4198
4199 /ci-info@3.8.0:
4200 resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==}
1165 engines: {node: '>=8'} 4201 engines: {node: '>=8'}
1166 dev: true 4202 dev: true
1167 4203
1168 /class-utils/0.3.6: 4204 /class-utils@0.3.6:
1169 resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} 4205 resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==}
1170 engines: {node: '>=0.10.0'} 4206 engines: {node: '>=0.10.0'}
1171 dependencies: 4207 dependencies:
@@ -1173,238 +4209,315 @@ packages:
1173 define-property: 0.2.5 4209 define-property: 0.2.5
1174 isobject: 3.0.1 4210 isobject: 3.0.1
1175 static-extend: 0.1.2 4211 static-extend: 0.1.2
1176 dev: false
1177
1178 /cli-cursor/3.1.0:
1179 resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
1180 engines: {node: '>=8'}
1181 dependencies:
1182 restore-cursor: 3.1.0
1183 dev: true 4212 dev: true
1184 4213
1185 /cli-table/0.3.11: 4214 /clean-regexp@1.0.0:
1186 resolution: {integrity: sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==} 4215 resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==}
1187 engines: {node: '>= 0.2.0'} 4216 engines: {node: '>=4'}
1188 dependencies: 4217 dependencies:
1189 colors: 1.0.3 4218 escape-string-regexp: 1.0.5
1190 dev: false
1191
1192 /cli-width/3.0.0:
1193 resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==}
1194 engines: {node: '>= 10'}
1195 dev: true 4219 dev: true
1196 4220
1197 /cliui/6.0.0: 4221 /clean-stack@2.2.0:
1198 resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} 4222 resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
4223 engines: {node: '>=6'}
4224
4225 /clean-webpack-plugin@4.0.0(webpack@5.88.2):
4226 resolution: {integrity: sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==}
4227 engines: {node: '>=10.0.0'}
4228 peerDependencies:
4229 webpack: '>=4.0.0 <6.0.0'
1199 dependencies: 4230 dependencies:
1200 string-width: 4.2.3 4231 del: 4.1.1
1201 strip-ansi: 6.0.1 4232 webpack: 5.88.2(webpack-cli@5.1.4)
1202 wrap-ansi: 6.2.0
1203 dev: true 4233 dev: true
1204 4234
1205 /clone-deep/0.3.0: 4235 /cli-boxes@3.0.0:
1206 resolution: {integrity: sha512-qp1do6NplYZZcLU+TQ93+A735g1kNcnH75QbC1olpKJphe36CqkjFEK0PyFSoZlI3/1jO5KnDg64xdwWiEH/zA==} 4236 resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
1207 engines: {node: '>=0.10.0'} 4237 engines: {node: '>=10'}
4238
4239 /cli-cursor@3.1.0:
4240 resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
4241 engines: {node: '>=8'}
1208 dependencies: 4242 dependencies:
1209 for-own: 1.0.0 4243 restore-cursor: 3.1.0
1210 is-plain-object: 2.0.4
1211 kind-of: 3.2.2
1212 shallow-clone: 0.1.2
1213 dev: false
1214 4244
1215 /clone-deep/1.0.0: 4245 /cli-table3@0.6.3:
1216 resolution: {integrity: sha512-hmJRX8x1QOJVV+GUjOBzi6iauhPqc9hIF6xitWRBbiPZOBb6vGo/mDRIK9P74RTKSQK7AE8B0DDWY/vpRrPmQw==} 4246 resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==}
1217 engines: {node: '>=0.10.0'} 4247 engines: {node: 10.* || >= 12.*}
1218 dependencies: 4248 dependencies:
1219 for-own: 1.0.0 4249 string-width: 4.2.3
1220 is-plain-object: 2.0.4 4250 optionalDependencies:
1221 kind-of: 5.1.0 4251 '@colors/colors': 1.5.0
1222 shallow-clone: 1.0.0
1223 dev: false
1224 4252
1225 /clone-deep/4.0.1: 4253 /clone-deep@4.0.1:
1226 resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} 4254 resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==}
1227 engines: {node: '>=6'} 4255 engines: {node: '>=6'}
1228 dependencies: 4256 dependencies:
1229 is-plain-object: 2.0.4 4257 is-plain-object: 2.0.4
1230 kind-of: 6.0.3 4258 kind-of: 6.0.3
1231 shallow-clone: 3.0.1 4259 shallow-clone: 3.0.1
1232 dev: false 4260 dev: true
1233 4261
1234 /clone-response/1.0.2: 4262 /clone-response@1.0.3:
1235 resolution: {integrity: sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==} 4263 resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==}
1236 dependencies: 4264 dependencies:
1237 mimic-response: 1.0.1 4265 mimic-response: 1.0.1
1238 dev: false 4266 dev: false
1239 4267
1240 /clone/2.1.2: 4268 /clone@1.0.4:
1241 resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} 4269 resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
1242 engines: {node: '>=0.8'} 4270 engines: {node: '>=0.8'}
1243 dev: false 4271 dev: true
1244 4272
1245 /co-body/6.1.0: 4273 /clone@2.1.2:
1246 resolution: {integrity: sha512-m7pOT6CdLN7FuXUcpuz/8lfQ/L77x8SchHCF4G0RBTJO20Wzmhn5Sp4/5WsKy8OSpifBSUrmg83qEqaDHdyFuQ==} 4274 resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==}
1247 dependencies: 4275 engines: {node: '>=0.8'}
1248 inflation: 2.0.0 4276 dev: true
1249 qs: 6.11.0
1250 raw-body: 2.5.1
1251 type-is: 1.6.18
1252 dev: false
1253 4277
1254 /co-compose/4.0.0: 4278 /co-compose@7.0.3:
1255 resolution: {integrity: sha512-0wXLbbbkU49Pyj7Fjfu58wIoeLgyyRau3huJfxEimmytzI7M+o1XhK2ls872PjpOzyvw0U3KGLqxrIst8IHaWA==} 4279 resolution: {integrity: sha512-ZHLSLzeBXe5yaEyIHo9T92uVrbsBRLMXlG0G4/pSm9f6148l4mJTr1cii8Jl9ce+mbLmW5XqHURPC7gZFJNeZA==}
1256 dependencies:
1257 once: 1.4.0
1258 dev: false
1259 4280
1260 /code-point-at/1.1.0: 4281 /code-block-writer@11.0.3:
1261 resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} 4282 resolution: {integrity: sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==}
1262 engines: {node: '>=0.10.0'}
1263 dev: false 4283 dev: false
1264 4284
1265 /collection-visit/1.0.0: 4285 /collection-visit@1.0.0:
1266 resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} 4286 resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==}
1267 engines: {node: '>=0.10.0'} 4287 engines: {node: '>=0.10.0'}
1268 dependencies: 4288 dependencies:
1269 map-visit: 1.0.0 4289 map-visit: 1.0.0
1270 object-visit: 1.0.1 4290 object-visit: 1.0.1
1271 dev: false 4291 dev: true
1272 4292
1273 /color-convert/1.9.3: 4293 /color-convert@1.9.3:
1274 resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 4294 resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
1275 dependencies: 4295 dependencies:
1276 color-name: 1.1.3 4296 color-name: 1.1.3
4297 dev: true
1277 4298
1278 /color-convert/2.0.1: 4299 /color-convert@2.0.1:
1279 resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 4300 resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
1280 engines: {node: '>=7.0.0'} 4301 engines: {node: '>=7.0.0'}
1281 dependencies: 4302 dependencies:
1282 color-name: 1.1.4 4303 color-name: 1.1.4
1283 dev: true
1284 4304
1285 /color-name/1.1.3: 4305 /color-name@1.1.3:
1286 resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 4306 resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
4307 dev: true
1287 4308
1288 /color-name/1.1.4: 4309 /color-name@1.1.4:
1289 resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 4310 resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
1290 4311
1291 /color-string/1.9.1: 4312 /color-support@1.1.3:
1292 resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} 4313 resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
1293 dependencies: 4314 hasBin: true
1294 color-name: 1.1.4
1295 simple-swizzle: 0.2.2
1296 dev: false
1297 4315
1298 /color/3.2.1: 4316 /colord@2.9.3:
1299 resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} 4317 resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==}
1300 dependencies: 4318 dev: true
1301 color-convert: 1.9.3
1302 color-string: 1.9.1
1303 dev: false
1304 4319
1305 /colorette/1.2.1: 4320 /colorette@2.0.19:
1306 resolution: {integrity: sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==} 4321 resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==}
1307 dev: false 4322 dev: false
1308 4323
1309 /colors/1.0.3: 4324 /colorette@2.0.20:
1310 resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} 4325 resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
1311 engines: {node: '>=0.1.90'}
1312 dev: false
1313 4326
1314 /colorspace/1.1.4: 4327 /columnify@1.6.0:
1315 resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} 4328 resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==}
4329 engines: {node: '>=8.0.0'}
1316 dependencies: 4330 dependencies:
1317 color: 3.2.1 4331 strip-ansi: 6.0.1
1318 text-hex: 1.0.0 4332 wcwidth: 1.0.1
1319 dev: false 4333 dev: true
1320 4334
1321 /combined-stream/1.0.8: 4335 /combined-stream@1.0.8:
1322 resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 4336 resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
1323 engines: {node: '>= 0.8'} 4337 engines: {node: '>= 0.8'}
1324 dependencies: 4338 dependencies:
1325 delayed-stream: 1.0.0 4339 delayed-stream: 1.0.0
1326 dev: false 4340 dev: true
1327 4341
1328 /commander/2.20.3: 4342 /commander@10.0.1:
4343 resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==}
4344 engines: {node: '>=14'}
4345
4346 /commander@2.20.3:
1329 resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} 4347 resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
1330 dev: false 4348 dev: true
4349
4350 /commander@7.2.0:
4351 resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
4352 engines: {node: '>= 10'}
4353 dev: true
1331 4354
1332 /commander/6.2.1: 4355 /commander@9.5.0:
1333 resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} 4356 resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
4357 engines: {node: ^12.20.0 || >=14}
4358 requiresBuild: true
4359 dev: true
4360 optional: true
4361
4362 /comment-json@2.4.2:
4363 resolution: {integrity: sha512-T+iXox779qsqneMYx/x5BZyz4xjCeQRmuNVzz8tko7qZUs3MlzpA3RAs+O1XsgcKToNBMIvfVzafGOeiU7RggA==}
1334 engines: {node: '>= 6'} 4364 engines: {node: '>= 6'}
1335 dev: false 4365 dependencies:
4366 core-util-is: 1.0.3
4367 esprima: 4.0.1
4368 has-own-prop: 2.0.0
4369 repeat-string: 1.6.1
4370 dev: true
4371
4372 /commondir@1.0.1:
4373 resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
4374 dev: true
1336 4375
1337 /component-emitter/1.3.0: 4376 /component-emitter@1.3.0:
1338 resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} 4377 resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==}
1339 dev: false 4378 dev: true
4379
4380 /compressible@2.0.18:
4381 resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==}
4382 engines: {node: '>= 0.6'}
4383 dependencies:
4384 mime-db: 1.52.0
4385 dev: true
4386
4387 /compression@1.7.4:
4388 resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==}
4389 engines: {node: '>= 0.8.0'}
4390 dependencies:
4391 accepts: 1.3.8
4392 bytes: 3.0.0
4393 compressible: 2.0.18
4394 debug: 2.6.9
4395 on-headers: 1.0.2
4396 safe-buffer: 5.1.2
4397 vary: 1.1.2
4398 transitivePeerDependencies:
4399 - supports-color
4400 dev: true
1340 4401
1341 /concat-map/0.0.1: 4402 /concat-map@0.0.1:
1342 resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 4403 resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
1343 4404
1344 /confusing-browser-globals/1.0.11: 4405 /connect-history-api-fallback@2.0.0:
1345 resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} 4406 resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==}
4407 engines: {node: '>=0.8'}
1346 dev: true 4408 dev: true
1347 4409
1348 /console-control-strings/1.1.0: 4410 /consola@2.15.3:
4411 resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==}
4412 dev: true
4413
4414 /console-control-strings@1.1.0:
1349 resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} 4415 resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
1350 dev: false 4416 dev: false
1351 4417
1352 /content-disposition/0.5.4: 4418 /constant-case@3.0.4:
4419 resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==}
4420 dependencies:
4421 no-case: 3.0.4
4422 tslib: 2.6.2
4423 upper-case: 2.0.2
4424
4425 /content-disposition@0.5.4:
1353 resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} 4426 resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
1354 engines: {node: '>= 0.6'} 4427 engines: {node: '>= 0.6'}
1355 dependencies: 4428 dependencies:
1356 safe-buffer: 5.2.1 4429 safe-buffer: 5.2.1
1357 dev: false
1358 4430
1359 /cookie-signature/1.2.0: 4431 /content-type@1.0.5:
1360 resolution: {integrity: sha512-R0BOPfLGTitaKhgKROKZQN6iyq2iDQcH1DOF8nJoaWapguX5bC2w+Q/I9NmmM5lfcvEarnLZr+cCvmEYYSXvYA==} 4432 resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
1361 engines: {node: '>=6.6.0'} 4433 engines: {node: '>= 0.6'}
1362 dev: false 4434 dev: true
4435
4436 /convert-hrtime@3.0.0:
4437 resolution: {integrity: sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==}
4438 engines: {node: '>=8'}
4439 dev: true
4440
4441 /convert-source-map@1.9.0:
4442 resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
4443 dev: true
1363 4444
1364 /cookie/0.4.2: 4445 /convert-source-map@2.0.0:
1365 resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} 4446 resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
4447 dev: true
4448
4449 /cookie-signature@1.0.6:
4450 resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
4451 dev: true
4452
4453 /cookie@0.5.0:
4454 resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
1366 engines: {node: '>= 0.6'} 4455 engines: {node: '>= 0.6'}
1367 dev: false
1368 4456
1369 /copy-descriptor/0.1.1: 4457 /cookiejar@2.1.4:
4458 resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==}
4459 dev: true
4460
4461 /copy-descriptor@0.1.1:
1370 resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} 4462 resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==}
1371 engines: {node: '>=0.10.0'} 4463 engines: {node: '>=0.10.0'}
1372 dev: false 4464 dev: true
1373 4465
1374 /core-util-is/1.0.2: 4466 /core-js-compat@3.32.2:
1375 resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} 4467 resolution: {integrity: sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==}
1376 dev: false 4468 dependencies:
4469 browserslist: 4.22.1
4470 dev: true
1377 4471
1378 /core-util-is/1.0.3: 4472 /core-util-is@1.0.3:
1379 resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} 4473 resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
1380 dev: false
1381 4474
1382 /create-output-stream/0.0.1: 4475 /cp-file@7.0.0:
1383 resolution: {integrity: sha512-dpZSPgwTfG+xTe2Tqod9wDCGt7Cbo05XwACkOkP/RF3QFtEDhUX6lD/zr4HYnicCsl/qPSbYiRjBLsv5f1QWCA==} 4476 resolution: {integrity: sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==}
4477 engines: {node: '>=8'}
1384 dependencies: 4478 dependencies:
1385 mkdirp: 0.5.6 4479 graceful-fs: 4.2.11
1386 dev: false 4480 make-dir: 3.1.0
4481 nested-error-stacks: 2.1.1
4482 p-event: 4.2.0
4483 dev: true
1387 4484
1388 /cross-env/5.2.1: 4485 /cp-file@9.1.0:
1389 resolution: {integrity: sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==} 4486 resolution: {integrity: sha512-3scnzFj/94eb7y4wyXRWwvzLFaQp87yyfTnChIjlfYrVqp5lVO3E2hIJMeQIltUT0K2ZAB3An1qXcBmwGyvuwA==}
1390 engines: {node: '>=4.0'} 4487 engines: {node: '>=10'}
1391 hasBin: true
1392 dependencies: 4488 dependencies:
1393 cross-spawn: 6.0.5 4489 graceful-fs: 4.2.11
1394 dev: false 4490 make-dir: 3.1.0
4491 nested-error-stacks: 2.1.1
4492 p-event: 4.2.0
4493 dev: true
1395 4494
1396 /cross-spawn/6.0.5: 4495 /cpy@8.1.2:
1397 resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} 4496 resolution: {integrity: sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg==}
1398 engines: {node: '>=4.8'} 4497 engines: {node: '>=8'}
1399 dependencies: 4498 dependencies:
1400 nice-try: 1.0.5 4499 arrify: 2.0.1
1401 path-key: 2.0.1 4500 cp-file: 7.0.0
1402 semver: 5.7.1 4501 globby: 9.2.0
1403 shebang-command: 1.2.0 4502 has-glob: 1.0.0
1404 which: 1.3.1 4503 junk: 3.1.0
1405 dev: false 4504 nested-error-stacks: 2.1.1
4505 p-all: 2.1.0
4506 p-filter: 2.1.0
4507 p-map: 3.0.0
4508 transitivePeerDependencies:
4509 - supports-color
4510 dev: true
4511
4512 /cross-env@7.0.3:
4513 resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
4514 engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
4515 hasBin: true
4516 dependencies:
4517 cross-spawn: 7.0.3
4518 dev: true
1406 4519
1407 /cross-spawn/7.0.3: 4520 /cross-spawn@7.0.3:
1408 resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 4521 resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
1409 engines: {node: '>= 8'} 4522 engines: {node: '>= 8'}
1410 dependencies: 4523 dependencies:
@@ -1413,7 +4526,11 @@ packages:
1413 which: 2.0.2 4526 which: 2.0.2
1414 dev: true 4527 dev: true
1415 4528
1416 /csrf/3.1.0: 4529 /crypt@0.0.2:
4530 resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==}
4531 dev: true
4532
4533 /csrf@3.1.0:
1417 resolution: {integrity: sha512-uTqEnCvWRk042asU6JtapDTcJeeailFy4ydOQS28bj1hcLnYRiqi8SsD2jS412AY1I/4qdOwWZun774iqywf9w==} 4534 resolution: {integrity: sha512-uTqEnCvWRk042asU6JtapDTcJeeailFy4ydOQS28bj1hcLnYRiqi8SsD2jS412AY1I/4qdOwWZun774iqywf9w==}
1418 engines: {node: '>= 0.8'} 4535 engines: {node: '>= 0.8'}
1419 dependencies: 4536 dependencies:
@@ -1422,46 +4539,215 @@ packages:
1422 uid-safe: 2.1.5 4539 uid-safe: 2.1.5
1423 dev: false 4540 dev: false
1424 4541
1425 /dashdash/1.14.1: 4542 /css-declaration-sorter@6.4.1(postcss@8.4.31):
1426 resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} 4543 resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==}
1427 engines: {node: '>=0.10'} 4544 engines: {node: ^10 || ^12 || >=14}
4545 peerDependencies:
4546 postcss: ^8.0.9
1428 dependencies: 4547 dependencies:
1429 assert-plus: 1.0.0 4548 postcss: 8.4.31
1430 dev: false 4549 dev: true
1431 4550
1432 /debug/2.6.9: 4551 /css-loader@6.8.1(webpack@5.88.2):
1433 resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 4552 resolution: {integrity: sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==}
4553 engines: {node: '>= 12.13.0'}
1434 peerDependencies: 4554 peerDependencies:
1435 supports-color: '*' 4555 webpack: ^5.0.0
4556 dependencies:
4557 icss-utils: 5.1.0(postcss@8.4.31)
4558 postcss: 8.4.31
4559 postcss-modules-extract-imports: 3.0.0(postcss@8.4.31)
4560 postcss-modules-local-by-default: 4.0.3(postcss@8.4.31)
4561 postcss-modules-scope: 3.0.0(postcss@8.4.31)
4562 postcss-modules-values: 4.0.0(postcss@8.4.31)
4563 postcss-value-parser: 4.2.0
4564 semver: 7.5.4
4565 webpack: 5.88.2(webpack-cli@5.1.4)
4566 dev: true
4567
4568 /css-minimizer-webpack-plugin@5.0.1(webpack@5.88.2):
4569 resolution: {integrity: sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==}
4570 engines: {node: '>= 14.15.0'}
4571 peerDependencies:
4572 '@parcel/css': '*'
4573 '@swc/css': '*'
4574 clean-css: '*'
4575 csso: '*'
4576 esbuild: '*'
4577 lightningcss: '*'
4578 webpack: ^5.0.0
1436 peerDependenciesMeta: 4579 peerDependenciesMeta:
1437 supports-color: 4580 '@parcel/css':
4581 optional: true
4582 '@swc/css':
4583 optional: true
4584 clean-css:
4585 optional: true
4586 csso:
4587 optional: true
4588 esbuild:
4589 optional: true
4590 lightningcss:
1438 optional: true 4591 optional: true
1439 dependencies: 4592 dependencies:
1440 ms: 2.0.0 4593 '@jridgewell/trace-mapping': 0.3.19
4594 cssnano: 6.0.1(postcss@8.4.31)
4595 jest-worker: 29.7.0
4596 postcss: 8.4.31
4597 schema-utils: 4.2.0
4598 serialize-javascript: 6.0.1
4599 webpack: 5.88.2(webpack-cli@5.1.4)
4600 dev: true
1441 4601
1442 /debug/3.2.7: 4602 /css-select@4.3.0:
1443 resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 4603 resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
4604 dependencies:
4605 boolbase: 1.0.0
4606 css-what: 6.1.0
4607 domhandler: 4.3.1
4608 domutils: 2.8.0
4609 nth-check: 2.1.1
4610 dev: true
4611
4612 /css-select@5.1.0:
4613 resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==}
4614 dependencies:
4615 boolbase: 1.0.0
4616 css-what: 6.1.0
4617 domhandler: 5.0.3
4618 domutils: 3.1.0
4619 nth-check: 2.1.1
4620 dev: true
4621
4622 /css-tree@2.2.1:
4623 resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==}
4624 engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
4625 dependencies:
4626 mdn-data: 2.0.28
4627 source-map-js: 1.0.2
4628 dev: true
4629
4630 /css-tree@2.3.1:
4631 resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
4632 engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
4633 dependencies:
4634 mdn-data: 2.0.30
4635 source-map-js: 1.0.2
4636 dev: true
4637
4638 /css-what@6.1.0:
4639 resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
4640 engines: {node: '>= 6'}
4641 dev: true
4642
4643 /cssesc@3.0.0:
4644 resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
4645 engines: {node: '>=4'}
4646 hasBin: true
4647 dev: true
4648
4649 /cssnano-preset-default@6.0.1(postcss@8.4.31):
4650 resolution: {integrity: sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ==}
4651 engines: {node: ^14 || ^16 || >=18.0}
4652 peerDependencies:
4653 postcss: ^8.2.15
4654 dependencies:
4655 css-declaration-sorter: 6.4.1(postcss@8.4.31)
4656 cssnano-utils: 4.0.0(postcss@8.4.31)
4657 postcss: 8.4.31
4658 postcss-calc: 9.0.1(postcss@8.4.31)
4659 postcss-colormin: 6.0.0(postcss@8.4.31)
4660 postcss-convert-values: 6.0.0(postcss@8.4.31)
4661 postcss-discard-comments: 6.0.0(postcss@8.4.31)
4662 postcss-discard-duplicates: 6.0.0(postcss@8.4.31)
4663 postcss-discard-empty: 6.0.0(postcss@8.4.31)
4664 postcss-discard-overridden: 6.0.0(postcss@8.4.31)
4665 postcss-merge-longhand: 6.0.0(postcss@8.4.31)
4666 postcss-merge-rules: 6.0.1(postcss@8.4.31)
4667 postcss-minify-font-values: 6.0.0(postcss@8.4.31)
4668 postcss-minify-gradients: 6.0.0(postcss@8.4.31)
4669 postcss-minify-params: 6.0.0(postcss@8.4.31)
4670 postcss-minify-selectors: 6.0.0(postcss@8.4.31)
4671 postcss-normalize-charset: 6.0.0(postcss@8.4.31)
4672 postcss-normalize-display-values: 6.0.0(postcss@8.4.31)
4673 postcss-normalize-positions: 6.0.0(postcss@8.4.31)
4674 postcss-normalize-repeat-style: 6.0.0(postcss@8.4.31)
4675 postcss-normalize-string: 6.0.0(postcss@8.4.31)
4676 postcss-normalize-timing-functions: 6.0.0(postcss@8.4.31)
4677 postcss-normalize-unicode: 6.0.0(postcss@8.4.31)
4678 postcss-normalize-url: 6.0.0(postcss@8.4.31)
4679 postcss-normalize-whitespace: 6.0.0(postcss@8.4.31)
4680 postcss-ordered-values: 6.0.0(postcss@8.4.31)
4681 postcss-reduce-initial: 6.0.0(postcss@8.4.31)
4682 postcss-reduce-transforms: 6.0.0(postcss@8.4.31)
4683 postcss-svgo: 6.0.0(postcss@8.4.31)
4684 postcss-unique-selectors: 6.0.0(postcss@8.4.31)
4685 dev: true
4686
4687 /cssnano-utils@4.0.0(postcss@8.4.31):
4688 resolution: {integrity: sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw==}
4689 engines: {node: ^14 || ^16 || >=18.0}
4690 peerDependencies:
4691 postcss: ^8.2.15
4692 dependencies:
4693 postcss: 8.4.31
4694 dev: true
4695
4696 /cssnano@6.0.1(postcss@8.4.31):
4697 resolution: {integrity: sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg==}
4698 engines: {node: ^14 || ^16 || >=18.0}
4699 peerDependencies:
4700 postcss: ^8.2.15
4701 dependencies:
4702 cssnano-preset-default: 6.0.1(postcss@8.4.31)
4703 lilconfig: 2.1.0
4704 postcss: 8.4.31
4705 dev: true
4706
4707 /csso@5.0.5:
4708 resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==}
4709 engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
4710 dependencies:
4711 css-tree: 2.2.1
4712 dev: true
4713
4714 /cuid@2.1.8:
4715 resolution: {integrity: sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==}
4716 deprecated: Cuid and other k-sortable and non-cryptographic ids (Ulid, ObjectId, KSUID, all UUIDs) are all insecure. Use @paralleldrive/cuid2 instead.
4717
4718 /dag-map@1.0.2:
4719 resolution: {integrity: sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==}
4720 dev: true
4721
4722 /data-uri-to-buffer@2.0.2:
4723 resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==}
4724 dev: true
4725
4726 /dateformat@4.6.3:
4727 resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==}
4728
4729 /debug@2.6.9:
4730 resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
1444 peerDependencies: 4731 peerDependencies:
1445 supports-color: '*' 4732 supports-color: '*'
1446 peerDependenciesMeta: 4733 peerDependenciesMeta:
1447 supports-color: 4734 supports-color:
1448 optional: true 4735 optional: true
1449 dependencies: 4736 dependencies:
1450 ms: 2.1.3 4737 ms: 2.0.0
1451 4738
1452 /debug/4.3.1: 4739 /debug@3.2.7:
1453 resolution: {integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==} 4740 resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
1454 engines: {node: '>=6.0'}
1455 peerDependencies: 4741 peerDependencies:
1456 supports-color: '*' 4742 supports-color: '*'
1457 peerDependenciesMeta: 4743 peerDependenciesMeta:
1458 supports-color: 4744 supports-color:
1459 optional: true 4745 optional: true
1460 dependencies: 4746 dependencies:
1461 ms: 2.1.2 4747 ms: 2.1.3
1462 dev: false 4748 dev: true
1463 4749
1464 /debug/4.3.4: 4750 /debug@4.3.4:
1465 resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 4751 resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
1466 engines: {node: '>=6.0'} 4752 engines: {node: '>=6.0'}
1467 peerDependencies: 4753 peerDependencies:
@@ -1472,250 +4758,514 @@ packages:
1472 dependencies: 4758 dependencies:
1473 ms: 2.1.2 4759 ms: 2.1.2
1474 4760
1475 /decamelize/1.2.0: 4761 /decimal.js@10.4.3:
1476 resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} 4762 resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
1477 engines: {node: '>=0.10.0'}
1478 dev: true 4763 dev: true
1479 4764
1480 /decode-uri-component/0.2.2: 4765 /decode-uri-component@0.2.2:
1481 resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} 4766 resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
1482 engines: {node: '>=0.10'} 4767 engines: {node: '>=0.10'}
1483 dev: false 4768 dev: true
1484 4769
1485 /decompress-response/3.3.0: 4770 /decompress-response@6.0.0:
1486 resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} 4771 resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
1487 engines: {node: '>=4'} 4772 engines: {node: '>=10'}
1488 dependencies: 4773 dependencies:
1489 mimic-response: 1.0.1 4774 mimic-response: 3.1.0
1490 dev: false 4775 dev: false
1491 4776
1492 /deep-extend/0.6.0: 4777 /deep-eql@4.1.3:
4778 resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==}
4779 engines: {node: '>=6'}
4780 dependencies:
4781 type-detect: 4.0.8
4782 dev: true
4783
4784 /deep-extend@0.6.0:
1493 resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} 4785 resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
1494 engines: {node: '>=4.0.0'} 4786 engines: {node: '>=4.0.0'}
1495 dev: false 4787 dev: true
1496 4788
1497 /deep-is/0.1.4: 4789 /deep-is@0.1.4:
1498 resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 4790 resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
1499 dev: true 4791 dev: true
1500 4792
1501 /define-properties/1.1.4: 4793 /default-browser-id@3.0.0:
1502 resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} 4794 resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==}
4795 engines: {node: '>=12'}
4796 dependencies:
4797 bplist-parser: 0.2.0
4798 untildify: 4.0.0
4799 dev: true
4800
4801 /default-browser@4.0.0:
4802 resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==}
4803 engines: {node: '>=14.16'}
4804 dependencies:
4805 bundle-name: 3.0.0
4806 default-browser-id: 3.0.0
4807 execa: 7.2.0
4808 titleize: 3.0.0
4809 dev: true
4810
4811 /default-gateway@6.0.3:
4812 resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==}
4813 engines: {node: '>= 10'}
4814 dependencies:
4815 execa: 5.1.1
4816 dev: true
4817
4818 /defaults@1.0.4:
4819 resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
4820 dependencies:
4821 clone: 1.0.4
4822 dev: true
4823
4824 /defer-to-connect@2.0.1:
4825 resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==}
4826 engines: {node: '>=10'}
4827 dev: false
4828
4829 /define-data-property@1.1.0:
4830 resolution: {integrity: sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==}
1503 engines: {node: '>= 0.4'} 4831 engines: {node: '>= 0.4'}
1504 dependencies: 4832 dependencies:
4833 get-intrinsic: 1.2.1
4834 gopd: 1.0.1
4835 has-property-descriptors: 1.0.0
4836 dev: true
4837
4838 /define-lazy-prop@2.0.0:
4839 resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
4840 engines: {node: '>=8'}
4841 dev: true
4842
4843 /define-lazy-prop@3.0.0:
4844 resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
4845 engines: {node: '>=12'}
4846 dev: true
4847
4848 /define-properties@1.2.1:
4849 resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
4850 engines: {node: '>= 0.4'}
4851 dependencies:
4852 define-data-property: 1.1.0
1505 has-property-descriptors: 1.0.0 4853 has-property-descriptors: 1.0.0
1506 object-keys: 1.1.1 4854 object-keys: 1.1.1
1507 dev: true 4855 dev: true
1508 4856
1509 /define-property/0.2.5: 4857 /define-property@0.2.5:
1510 resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} 4858 resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==}
1511 engines: {node: '>=0.10.0'} 4859 engines: {node: '>=0.10.0'}
1512 dependencies: 4860 dependencies:
1513 is-descriptor: 0.1.6 4861 is-descriptor: 0.1.6
1514 dev: false 4862 dev: true
1515 4863
1516 /define-property/1.0.0: 4864 /define-property@1.0.0:
1517 resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} 4865 resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==}
1518 engines: {node: '>=0.10.0'} 4866 engines: {node: '>=0.10.0'}
1519 dependencies: 4867 dependencies:
1520 is-descriptor: 1.0.2 4868 is-descriptor: 1.0.2
1521 dev: false 4869 dev: true
1522 4870
1523 /define-property/2.0.2: 4871 /define-property@2.0.2:
1524 resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} 4872 resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==}
1525 engines: {node: '>=0.10.0'} 4873 engines: {node: '>=0.10.0'}
1526 dependencies: 4874 dependencies:
1527 is-descriptor: 1.0.2 4875 is-descriptor: 1.0.2
1528 isobject: 3.0.1 4876 isobject: 3.0.1
1529 dev: false 4877 dev: true
1530 4878
1531 /delayed-stream/1.0.0: 4879 /del@4.1.1:
4880 resolution: {integrity: sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==}
4881 engines: {node: '>=6'}
4882 dependencies:
4883 '@types/glob': 7.2.0
4884 globby: 6.1.0
4885 is-path-cwd: 2.2.0
4886 is-path-in-cwd: 2.1.0
4887 p-map: 2.1.0
4888 pify: 4.0.1
4889 rimraf: 2.7.1
4890 dev: true
4891
4892 /delayed-stream@1.0.0:
1532 resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 4893 resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
1533 engines: {node: '>=0.4.0'} 4894 engines: {node: '>=0.4.0'}
1534 dev: false 4895 dev: true
1535 4896
1536 /delegates/1.0.0: 4897 /delegates@1.0.0:
1537 resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} 4898 resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
1538 dev: false 4899 dev: false
1539 4900
1540 /depd/1.1.2: 4901 /depd@1.1.2:
1541 resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} 4902 resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==}
1542 engines: {node: '>= 0.6'} 4903 engines: {node: '>= 0.6'}
1543 dev: false 4904 dev: true
1544 4905
1545 /depd/2.0.0: 4906 /depd@2.0.0:
1546 resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 4907 resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
1547 engines: {node: '>= 0.8'} 4908 engines: {node: '>= 0.8'}
1548 dev: false
1549
1550 /destroy/1.0.4:
1551 resolution: {integrity: sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==}
1552 dev: false
1553 4909
1554 /destroy/1.2.0: 4910 /destroy@1.2.0:
1555 resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} 4911 resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
1556 engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 4912 engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
1557 dev: false
1558 4913
1559 /detect-file/1.0.0: 4914 /detect-indent@6.1.0:
1560 resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} 4915 resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
1561 engines: {node: '>=0.10.0'} 4916 engines: {node: '>=8'}
1562 dev: false 4917 dev: true
1563 4918
1564 /detect-libc/1.0.3: 4919 /detect-libc@2.0.2:
1565 resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} 4920 resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==}
1566 engines: {node: '>=0.10'} 4921 engines: {node: '>=8'}
1567 hasBin: true
1568 dev: false 4922 dev: false
1569 4923
1570 /didyoumean/1.2.2: 4924 /detect-node@2.1.0:
1571 resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 4925 resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==}
4926 dev: true
4927
4928 /dezalgo@1.0.4:
4929 resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==}
4930 dependencies:
4931 asap: 2.0.6
4932 wrappy: 1.0.2
4933 dev: true
4934
4935 /diff-sequences@25.2.6:
4936 resolution: {integrity: sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==}
4937 engines: {node: '>= 8.3'}
1572 dev: true 4938 dev: true
1573 4939
1574 /doctrine/2.1.0: 4940 /diff-sequences@29.6.3:
4941 resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
4942 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
4943 dev: true
4944
4945 /dir-glob@2.2.2:
4946 resolution: {integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==}
4947 engines: {node: '>=4'}
4948 dependencies:
4949 path-type: 3.0.0
4950 dev: true
4951
4952 /dir-glob@3.0.1:
4953 resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
4954 engines: {node: '>=8'}
4955 dependencies:
4956 path-type: 4.0.0
4957 dev: true
4958
4959 /dns-equal@1.0.0:
4960 resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==}
4961 dev: true
4962
4963 /dns-packet@5.6.1:
4964 resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==}
4965 engines: {node: '>=6'}
4966 dependencies:
4967 '@leichtgewicht/ip-codec': 2.0.4
4968 dev: true
4969
4970 /doctrine@2.1.0:
1575 resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 4971 resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
1576 engines: {node: '>=0.10.0'} 4972 engines: {node: '>=0.10.0'}
1577 dependencies: 4973 dependencies:
1578 esutils: 2.0.3 4974 esutils: 2.0.3
1579 dev: true 4975 dev: true
1580 4976
1581 /doctrine/3.0.0: 4977 /doctrine@3.0.0:
1582 resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 4978 resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
1583 engines: {node: '>=6.0.0'} 4979 engines: {node: '>=6.0.0'}
1584 dependencies: 4980 dependencies:
1585 esutils: 2.0.3 4981 esutils: 2.0.3
1586 dev: true 4982 dev: true
1587 4983
1588 /dotenv/6.2.0: 4984 /dom-converter@0.2.0:
1589 resolution: {integrity: sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==} 4985 resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==}
1590 engines: {node: '>=6'} 4986 dependencies:
4987 utila: 0.4.0
4988 dev: true
4989
4990 /dom-serializer@1.4.1:
4991 resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
4992 dependencies:
4993 domelementtype: 2.3.0
4994 domhandler: 4.3.1
4995 entities: 2.2.0
4996 dev: true
4997
4998 /dom-serializer@2.0.0:
4999 resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
5000 dependencies:
5001 domelementtype: 2.3.0
5002 domhandler: 5.0.3
5003 entities: 4.5.0
5004 dev: true
5005
5006 /domelementtype@2.3.0:
5007 resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
5008 dev: true
5009
5010 /domhandler@4.3.1:
5011 resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
5012 engines: {node: '>= 4'}
5013 dependencies:
5014 domelementtype: 2.3.0
5015 dev: true
5016
5017 /domhandler@5.0.3:
5018 resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
5019 engines: {node: '>= 4'}
5020 dependencies:
5021 domelementtype: 2.3.0
5022 dev: true
5023
5024 /domutils@2.8.0:
5025 resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
5026 dependencies:
5027 dom-serializer: 1.4.1
5028 domelementtype: 2.3.0
5029 domhandler: 4.3.1
5030 dev: true
5031
5032 /domutils@3.1.0:
5033 resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==}
5034 dependencies:
5035 dom-serializer: 2.0.0
5036 domelementtype: 2.3.0
5037 domhandler: 5.0.3
5038 dev: true
5039
5040 /dot-case@3.0.4:
5041 resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==}
5042 dependencies:
5043 no-case: 3.0.4
5044 tslib: 2.6.2
5045
5046 /dotenv@16.3.1:
5047 resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==}
5048 engines: {node: '>=12'}
5049
5050 /edge-error@2.0.8:
5051 resolution: {integrity: sha512-ORKH7rn/LEfgo0qrgoMMwFPfestNFvTO+dRLDmS+zgulhd9BVXfv/p+V6K3OyEeu2L0ysYp/71uHB31GIDe68A==}
1591 dev: false 5052 dev: false
1592 5053
1593 /duplexer3/0.1.5: 5054 /edge-error@3.0.0:
1594 resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} 5055 resolution: {integrity: sha512-TJE2A6KFqBMIe3EPyl/5V8veGYcMfpEtSNKfZkrSkQAyz3kh27etQ2erU6o0lkAFqDjjUl11YVzBIO2ij5/Zhw==}
1595 dev: false 5056 dev: false
1596 5057
1597 /ecc-jsbn/0.1.2: 5058 /edge-lexer@5.0.2:
1598 resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} 5059 resolution: {integrity: sha512-MSpv6JRPD96eZl0uPo8gIvE9cPAXb1eNRfZKlQpFYJ2O8cNdZDpN8RvT2zpu4XqC63HWs/c938qc3dWN+GJhFw==}
1599 dependencies: 5060 dependencies:
1600 jsbn: 0.1.1 5061 edge-error: 3.0.0
1601 safer-buffer: 2.1.2
1602 dev: false 5062 dev: false
1603 5063
1604 /ecdsa-sig-formatter/1.0.11: 5064 /edge-parser@8.2.2:
1605 resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} 5065 resolution: {integrity: sha512-48iOLaOD4PAxIU0jnLRNXUL8G6ktO79bA4adOGXzNHg2M+mHfudFI7QPdF6IO8gW0NC1N0TPvwLWK3FVkE9bLQ==}
1606 dependencies: 5066 dependencies:
1607 safe-buffer: 5.2.1 5067 acorn: 8.10.0
5068 astring: 1.8.6
5069 edge-error: 3.0.0
5070 edge-lexer: 5.0.2
5071 js-stringify: 1.0.2
1608 dev: false 5072 dev: false
1609 5073
1610 /edge.js/1.1.4: 5074 /edge-supercharged@3.1.1:
1611 resolution: {integrity: sha512-IF4RTNf15KLsn99nTDU90SMZ4fiCcN1WD5kTAB9jOdjx/HEPa3vf/Z+zDOMi6n7d4R0ypm4PzSRuhbIAHmEYcg==} 5075 resolution: {integrity: sha512-Pxgst3UeR+0PWuTIG2QHuFgFe73TMoVMphRsa/bOmIvOkQ87cD7+VxiS9ph2KbA4djJ2ChbdgtbNiIvju5yXEw==}
1612 dependencies: 5076 dependencies:
1613 debug: 3.2.7 5077 '@poppinss/utils': 3.3.1
1614 encodeurl: 1.0.2 5078 slash: 3.0.0
1615 escape-html: 1.0.3
1616 esprima: 4.0.1
1617 indent-string: 3.2.0
1618 lodash: 4.17.21
1619 node-exceptions: 3.0.0
1620 require-uncached: 1.0.3
1621 upcast: 2.1.2
1622 transitivePeerDependencies:
1623 - supports-color
1624 dev: false 5079 dev: false
1625 5080
1626 /ee-first/1.1.1: 5081 /edge.js@5.5.1:
1627 resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} 5082 resolution: {integrity: sha512-lAhEdj1tW2VOJsP5X38wSHjjaXXwoteZ+8PDAJ50rAKzBxpw4QsdXK2jVzMFgRoTMUf7C+x+Tp51R9yxGTLO0w==}
5083 dependencies:
5084 '@poppinss/inspect': 1.0.1
5085 '@poppinss/utils': 5.0.0
5086 edge-error: 3.0.0
5087 edge-lexer: 5.0.2
5088 edge-parser: 8.2.2
5089 js-stringify: 1.0.2
5090 macroable: 7.0.2
5091 stringify-attributes: 2.0.0
1628 dev: false 5092 dev: false
1629 5093
1630 /emoji-regex/8.0.0: 5094 /editorconfig@0.15.3:
1631 resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 5095 resolution: {integrity: sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==}
5096 hasBin: true
5097 dependencies:
5098 commander: 2.20.3
5099 lru-cache: 4.1.5
5100 semver: 5.7.2
5101 sigmund: 1.0.1
1632 dev: true 5102 dev: true
1633 5103
1634 /enabled/2.0.0: 5104 /ee-first@1.1.1:
1635 resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} 5105 resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
1636 dev: false 5106
5107 /electron-to-chromium@1.4.537:
5108 resolution: {integrity: sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA==}
5109 dev: true
5110
5111 /emittery@0.10.2:
5112 resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==}
5113 engines: {node: '>=12'}
5114
5115 /emittery@0.13.1:
5116 resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
5117 engines: {node: '>=12'}
5118 dev: true
5119
5120 /emoji-regex@8.0.0:
5121 resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
5122
5123 /emojis-list@3.0.0:
5124 resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==}
5125 engines: {node: '>= 4'}
5126 dev: true
1637 5127
1638 /encodeurl/1.0.2: 5128 /encodeurl@1.0.2:
1639 resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} 5129 resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
1640 engines: {node: '>= 0.8'} 5130 engines: {node: '>= 0.8'}
5131
5132 /encoding@0.1.13:
5133 resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==}
5134 requiresBuild: true
5135 dependencies:
5136 iconv-lite: 0.6.3
1641 dev: false 5137 dev: false
5138 optional: true
1642 5139
1643 /end-of-stream/1.4.4: 5140 /end-of-stream@1.4.4:
1644 resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} 5141 resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
1645 dependencies: 5142 dependencies:
1646 once: 1.4.0 5143 once: 1.4.0
1647 dev: false
1648 5144
1649 /enquirer/1.0.3: 5145 /enhanced-resolve@5.15.0:
1650 resolution: {integrity: sha512-3y9zemKlEhH6oW/WBrqofpc2JLtFkoolvWFFTTMPVede1lQ/E83xjdaE4L82RJCYgaiGB5ctjHX/BRbVk2iuJA==} 5146 resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==}
1651 engines: {node: '>=5.0'} 5147 engines: {node: '>=10.13.0'}
1652 dependencies: 5148 dependencies:
1653 choices-separator: 2.0.0 5149 graceful-fs: 4.2.11
1654 collection-visit: 1.0.0 5150 tapable: 2.2.1
1655 component-emitter: 1.3.0 5151 dev: true
1656 debug: 2.6.9
1657 extend-shallow: 2.0.1
1658 get-value: 2.0.6
1659 isobject: 3.0.1
1660 promise-reduce: 2.1.0
1661 prompt-input: 3.0.0
1662 prompt-question: 3.0.3
1663 readline-ui: 2.2.3
1664 set-value: 1.0.0
1665 transitivePeerDependencies:
1666 - supports-color
1667 dev: false
1668 5152
1669 /enquirer/2.3.6: 5153 /enquirer@2.4.1:
1670 resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} 5154 resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==}
1671 engines: {node: '>=8.6'} 5155 engines: {node: '>=8.6'}
1672 dependencies: 5156 dependencies:
1673 ansi-colors: 4.1.3 5157 ansi-colors: 4.1.3
5158 strip-ansi: 6.0.1
5159
5160 /entities@2.2.0:
5161 resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
1674 dev: true 5162 dev: true
1675 5163
1676 /error-symbol/0.1.0: 5164 /entities@4.5.0:
1677 resolution: {integrity: sha512-VyjaKxUmeDX/m2lxm/aknsJ1GWDWUO2Ze2Ad8S1Pb9dykAm9TjSKp5CjrNyltYqZ5W/PO6TInAmO2/BfwMyT1g==} 5165 resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
1678 engines: {node: '>=0.10.0'} 5166 engines: {node: '>=0.12'}
5167 dev: true
5168
5169 /env-paths@2.2.1:
5170 resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
5171 engines: {node: '>=6'}
5172 requiresBuild: true
5173 dev: false
5174 optional: true
5175
5176 /envinfo@7.10.0:
5177 resolution: {integrity: sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==}
5178 engines: {node: '>=4'}
5179 hasBin: true
5180 dev: true
5181
5182 /err-code@2.0.3:
5183 resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==}
5184 requiresBuild: true
1679 dev: false 5185 dev: false
5186 optional: true
1680 5187
1681 /es-abstract/1.20.5: 5188 /error-ex@1.3.2:
1682 resolution: {integrity: sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==} 5189 resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
5190 dependencies:
5191 is-arrayish: 0.2.1
5192 dev: true
5193
5194 /error-stack-parser@2.1.4:
5195 resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==}
5196 dependencies:
5197 stackframe: 1.3.4
5198 dev: true
5199
5200 /es-abstract@1.22.2:
5201 resolution: {integrity: sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==}
1683 engines: {node: '>= 0.4'} 5202 engines: {node: '>= 0.4'}
1684 dependencies: 5203 dependencies:
5204 array-buffer-byte-length: 1.0.0
5205 arraybuffer.prototype.slice: 1.0.2
5206 available-typed-arrays: 1.0.5
1685 call-bind: 1.0.2 5207 call-bind: 1.0.2
5208 es-set-tostringtag: 2.0.1
1686 es-to-primitive: 1.2.1 5209 es-to-primitive: 1.2.1
1687 function-bind: 1.1.1 5210 function.prototype.name: 1.1.6
1688 function.prototype.name: 1.1.5 5211 get-intrinsic: 1.2.1
1689 get-intrinsic: 1.1.3
1690 get-symbol-description: 1.0.0 5212 get-symbol-description: 1.0.0
5213 globalthis: 1.0.3
1691 gopd: 1.0.1 5214 gopd: 1.0.1
1692 has: 1.0.3 5215 has: 1.0.3
1693 has-property-descriptors: 1.0.0 5216 has-property-descriptors: 1.0.0
5217 has-proto: 1.0.1
1694 has-symbols: 1.0.3 5218 has-symbols: 1.0.3
1695 internal-slot: 1.0.3 5219 internal-slot: 1.0.5
5220 is-array-buffer: 3.0.2
1696 is-callable: 1.2.7 5221 is-callable: 1.2.7
1697 is-negative-zero: 2.0.2 5222 is-negative-zero: 2.0.2
1698 is-regex: 1.1.4 5223 is-regex: 1.1.4
1699 is-shared-array-buffer: 1.0.2 5224 is-shared-array-buffer: 1.0.2
1700 is-string: 1.0.7 5225 is-string: 1.0.7
5226 is-typed-array: 1.1.12
1701 is-weakref: 1.0.2 5227 is-weakref: 1.0.2
1702 object-inspect: 1.12.2 5228 object-inspect: 1.12.3
1703 object-keys: 1.1.1 5229 object-keys: 1.1.1
1704 object.assign: 4.1.4 5230 object.assign: 4.1.4
1705 regexp.prototype.flags: 1.4.3 5231 regexp.prototype.flags: 1.5.1
5232 safe-array-concat: 1.0.1
1706 safe-regex-test: 1.0.0 5233 safe-regex-test: 1.0.0
1707 string.prototype.trimend: 1.0.6 5234 string.prototype.trim: 1.2.8
1708 string.prototype.trimstart: 1.0.6 5235 string.prototype.trimend: 1.0.7
5236 string.prototype.trimstart: 1.0.7
5237 typed-array-buffer: 1.0.0
5238 typed-array-byte-length: 1.0.0
5239 typed-array-byte-offset: 1.0.0
5240 typed-array-length: 1.0.4
1709 unbox-primitive: 1.0.2 5241 unbox-primitive: 1.0.2
5242 which-typed-array: 1.1.11
5243 dev: true
5244
5245 /es-module-lexer@0.3.26:
5246 resolution: {integrity: sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA==}
5247 dev: false
5248
5249 /es-module-lexer@1.3.1:
5250 resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==}
5251 dev: true
5252
5253 /es-set-tostringtag@2.0.1:
5254 resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==}
5255 engines: {node: '>= 0.4'}
5256 dependencies:
5257 get-intrinsic: 1.2.1
5258 has: 1.0.3
5259 has-tostringtag: 1.0.0
1710 dev: true 5260 dev: true
1711 5261
1712 /es-shim-unscopables/1.0.0: 5262 /es-shim-unscopables@1.0.0:
1713 resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} 5263 resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==}
1714 dependencies: 5264 dependencies:
1715 has: 1.0.3 5265 has: 1.0.3
1716 dev: true 5266 dev: true
1717 5267
1718 /es-to-primitive/1.2.1: 5268 /es-to-primitive@1.2.1:
1719 resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 5269 resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
1720 engines: {node: '>= 0.4'} 5270 engines: {node: '>= 0.4'}
1721 dependencies: 5271 dependencies:
@@ -1724,45 +5274,48 @@ packages:
1724 is-symbol: 1.0.4 5274 is-symbol: 1.0.4
1725 dev: true 5275 dev: true
1726 5276
1727 /escape-html/1.0.3: 5277 /escalade@3.1.1:
5278 resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
5279 engines: {node: '>=6'}
5280
5281 /escape-goat@2.1.1:
5282 resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==}
5283 engines: {node: '>=8'}
5284
5285 /escape-html@1.0.3:
1728 resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 5286 resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
1729 dev: false
1730 5287
1731 /escape-string-regexp/1.0.5: 5288 /escape-string-regexp@1.0.5:
1732 resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 5289 resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
1733 engines: {node: '>=0.8.0'} 5290 engines: {node: '>=0.8.0'}
1734 dev: true 5291 dev: true
1735 5292
1736 /escape-string-regexp/4.0.0: 5293 /escape-string-regexp@4.0.0:
1737 resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 5294 resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
1738 engines: {node: '>=10'} 5295 engines: {node: '>=10'}
1739 dev: true 5296 dev: true
1740 5297
1741 /eslint-config-airbnb-base/14.2.1_hpmu7kn6tcn2vnxpfzvv33bxmy: 5298 /eslint-config-prettier@8.9.0(eslint@8.46.0):
1742 resolution: {integrity: sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==} 5299 resolution: {integrity: sha512-+sbni7NfVXnOpnRadUA8S28AUlsZt9GjgFvABIRL9Hkn8KqNzOp+7Lw4QWtrwn20KzU3wqu1QoOj2m+7rKRqkA==}
1743 engines: {node: '>= 6'} 5300 hasBin: true
1744 peerDependencies: 5301 peerDependencies:
1745 eslint: ^5.16.0 || ^6.8.0 || ^7.2.0 5302 eslint: '>=7.0.0'
1746 eslint-plugin-import: ^2.22.1
1747 dependencies: 5303 dependencies:
1748 confusing-browser-globals: 1.0.11 5304 eslint: 8.46.0
1749 eslint: 7.32.0
1750 eslint-plugin-import: 2.26.0_eslint@7.32.0
1751 object.assign: 4.1.4
1752 object.entries: 1.1.6
1753 dev: true 5305 dev: true
1754 5306
1755 /eslint-import-resolver-node/0.3.6: 5307 /eslint-import-resolver-node@0.3.9:
1756 resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} 5308 resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
1757 dependencies: 5309 dependencies:
1758 debug: 3.2.7 5310 debug: 3.2.7
1759 resolve: 1.22.1 5311 is-core-module: 2.13.0
5312 resolve: 1.22.6
1760 transitivePeerDependencies: 5313 transitivePeerDependencies:
1761 - supports-color 5314 - supports-color
1762 dev: true 5315 dev: true
1763 5316
1764 /eslint-module-utils/2.7.4_gw5q3jyuku4zrugqrckhwmprvm: 5317 /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.2.0)(eslint-import-resolver-node@0.3.9)(eslint@8.46.0):
1765 resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} 5318 resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
1766 engines: {node: '>=4'} 5319 engines: {node: '>=4'}
1767 peerDependencies: 5320 peerDependencies:
1768 '@typescript-eslint/parser': '*' 5321 '@typescript-eslint/parser': '*'
@@ -1782,15 +5335,30 @@ packages:
1782 eslint-import-resolver-webpack: 5335 eslint-import-resolver-webpack:
1783 optional: true 5336 optional: true
1784 dependencies: 5337 dependencies:
5338 '@typescript-eslint/parser': 6.2.0(eslint@8.46.0)(typescript@5.1.6)
1785 debug: 3.2.7 5339 debug: 3.2.7
1786 eslint: 7.32.0 5340 eslint: 8.46.0
1787 eslint-import-resolver-node: 0.3.6 5341 eslint-import-resolver-node: 0.3.9
5342 transitivePeerDependencies:
5343 - supports-color
5344 dev: true
5345
5346 /eslint-plugin-adonis@2.1.1(eslint@8.46.0)(typescript@5.1.6):
5347 resolution: {integrity: sha512-iC3eZXofK4q+KOGypiquT74amCpeqW+5K5WZ7pezUvrXgmFkZMn7MSQjAg44KVzq6pQdXFuRNlnS+ijcwx0AMw==}
5348 engines: {node: '>=10.0.0'}
5349 peerDependencies:
5350 eslint: ^8.0.0
5351 dependencies:
5352 '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.46.0)(typescript@5.1.6)
5353 '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.1.6)
5354 eslint: 8.46.0
1788 transitivePeerDependencies: 5355 transitivePeerDependencies:
1789 - supports-color 5356 - supports-color
5357 - typescript
1790 dev: true 5358 dev: true
1791 5359
1792 /eslint-plugin-import/2.26.0_eslint@7.32.0: 5360 /eslint-plugin-import@2.28.0(@typescript-eslint/parser@6.2.0)(eslint@8.46.0):
1793 resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} 5361 resolution: {integrity: sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==}
1794 engines: {node: '>=4'} 5362 engines: {node: '>=4'}
1795 peerDependencies: 5363 peerDependencies:
1796 '@typescript-eslint/parser': '*' 5364 '@typescript-eslint/parser': '*'
@@ -1799,27 +5367,78 @@ packages:
1799 '@typescript-eslint/parser': 5367 '@typescript-eslint/parser':
1800 optional: true 5368 optional: true
1801 dependencies: 5369 dependencies:
1802 array-includes: 3.1.6 5370 '@typescript-eslint/parser': 6.2.0(eslint@8.46.0)(typescript@5.1.6)
1803 array.prototype.flat: 1.3.1 5371 array-includes: 3.1.7
1804 debug: 2.6.9 5372 array.prototype.findlastindex: 1.2.3
5373 array.prototype.flat: 1.3.2
5374 array.prototype.flatmap: 1.3.2
5375 debug: 3.2.7
1805 doctrine: 2.1.0 5376 doctrine: 2.1.0
1806 eslint: 7.32.0 5377 eslint: 8.46.0
1807 eslint-import-resolver-node: 0.3.6 5378 eslint-import-resolver-node: 0.3.9
1808 eslint-module-utils: 2.7.4_gw5q3jyuku4zrugqrckhwmprvm 5379 eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.2.0)(eslint-import-resolver-node@0.3.9)(eslint@8.46.0)
1809 has: 1.0.3 5380 has: 1.0.3
1810 is-core-module: 2.11.0 5381 is-core-module: 2.13.0
1811 is-glob: 4.0.3 5382 is-glob: 4.0.3
1812 minimatch: 3.1.2 5383 minimatch: 3.1.2
1813 object.values: 1.1.6 5384 object.fromentries: 2.0.7
1814 resolve: 1.22.1 5385 object.groupby: 1.0.1
1815 tsconfig-paths: 3.14.1 5386 object.values: 1.1.7
5387 resolve: 1.22.6
5388 semver: 6.3.1
5389 tsconfig-paths: 3.14.2
1816 transitivePeerDependencies: 5390 transitivePeerDependencies:
1817 - eslint-import-resolver-typescript 5391 - eslint-import-resolver-typescript
1818 - eslint-import-resolver-webpack 5392 - eslint-import-resolver-webpack
1819 - supports-color 5393 - supports-color
1820 dev: true 5394 dev: true
1821 5395
1822 /eslint-scope/5.1.1: 5396 /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.0):
5397 resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==}
5398 engines: {node: ^14.18.0 || >=16.0.0}
5399 peerDependencies:
5400 '@types/eslint': '>=8.0.0'
5401 eslint: '>=8.0.0'
5402 eslint-config-prettier: '*'
5403 prettier: '>=3.0.0'
5404 peerDependenciesMeta:
5405 '@types/eslint':
5406 optional: true
5407 eslint-config-prettier:
5408 optional: true
5409 dependencies:
5410 eslint: 8.46.0
5411 eslint-config-prettier: 8.9.0(eslint@8.46.0)
5412 prettier: 3.0.0
5413 prettier-linter-helpers: 1.0.0
5414 synckit: 0.8.5
5415 dev: true
5416
5417 /eslint-plugin-unicorn@48.0.1(eslint@8.46.0):
5418 resolution: {integrity: sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==}
5419 engines: {node: '>=16'}
5420 peerDependencies:
5421 eslint: '>=8.44.0'
5422 dependencies:
5423 '@babel/helper-validator-identifier': 7.22.20
5424 '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0)
5425 ci-info: 3.8.0
5426 clean-regexp: 1.0.0
5427 eslint: 8.46.0
5428 esquery: 1.5.0
5429 indent-string: 4.0.0
5430 is-builtin-module: 3.2.1
5431 jsesc: 3.0.2
5432 lodash: 4.17.21
5433 pluralize: 8.0.0
5434 read-pkg-up: 7.0.1
5435 regexp-tree: 0.1.27
5436 regjsparser: 0.10.0
5437 semver: 7.5.4
5438 strip-indent: 3.0.0
5439 dev: true
5440
5441 /eslint-scope@5.1.1:
1823 resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 5442 resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
1824 engines: {node: '>=8.0.0'} 5443 engines: {node: '>=8.0.0'}
1825 dependencies: 5444 dependencies:
@@ -1827,130 +5446,166 @@ packages:
1827 estraverse: 4.3.0 5446 estraverse: 4.3.0
1828 dev: true 5447 dev: true
1829 5448
1830 /eslint-utils/2.1.0: 5449 /eslint-scope@7.2.2:
1831 resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} 5450 resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
1832 engines: {node: '>=6'} 5451 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1833 dependencies: 5452 dependencies:
1834 eslint-visitor-keys: 1.3.0 5453 esrecurse: 4.3.0
1835 dev: true 5454 estraverse: 5.3.0
1836
1837 /eslint-visitor-keys/1.3.0:
1838 resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==}
1839 engines: {node: '>=4'}
1840 dev: true 5455 dev: true
1841 5456
1842 /eslint-visitor-keys/2.1.0: 5457 /eslint-visitor-keys@3.4.3:
1843 resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 5458 resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
1844 engines: {node: '>=10'} 5459 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1845 dev: true 5460 dev: true
1846 5461
1847 /eslint/7.32.0: 5462 /eslint@8.46.0:
1848 resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} 5463 resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==}
1849 engines: {node: ^10.12.0 || >=12.0.0} 5464 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1850 hasBin: true 5465 hasBin: true
1851 dependencies: 5466 dependencies:
1852 '@babel/code-frame': 7.12.11 5467 '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0)
1853 '@eslint/eslintrc': 0.4.3 5468 '@eslint-community/regexpp': 4.9.0
1854 '@humanwhocodes/config-array': 0.5.0 5469 '@eslint/eslintrc': 2.1.2
5470 '@eslint/js': 8.50.0
5471 '@humanwhocodes/config-array': 0.11.11
5472 '@humanwhocodes/module-importer': 1.0.1
5473 '@nodelib/fs.walk': 1.2.8
1855 ajv: 6.12.6 5474 ajv: 6.12.6
1856 chalk: 4.1.2 5475 chalk: 4.1.2
1857 cross-spawn: 7.0.3 5476 cross-spawn: 7.0.3
1858 debug: 4.3.4 5477 debug: 4.3.4
1859 doctrine: 3.0.0 5478 doctrine: 3.0.0
1860 enquirer: 2.3.6
1861 escape-string-regexp: 4.0.0 5479 escape-string-regexp: 4.0.0
1862 eslint-scope: 5.1.1 5480 eslint-scope: 7.2.2
1863 eslint-utils: 2.1.0 5481 eslint-visitor-keys: 3.4.3
1864 eslint-visitor-keys: 2.1.0 5482 espree: 9.6.1
1865 espree: 7.3.1 5483 esquery: 1.5.0
1866 esquery: 1.4.0
1867 esutils: 2.0.3 5484 esutils: 2.0.3
1868 fast-deep-equal: 3.1.3 5485 fast-deep-equal: 3.1.3
1869 file-entry-cache: 6.0.1 5486 file-entry-cache: 6.0.1
1870 functional-red-black-tree: 1.0.1 5487 find-up: 5.0.0
1871 glob-parent: 5.1.2 5488 glob-parent: 6.0.2
1872 globals: 13.18.0 5489 globals: 13.22.0
1873 ignore: 4.0.6 5490 graphemer: 1.4.0
1874 import-fresh: 3.3.0 5491 ignore: 5.2.4
1875 imurmurhash: 0.1.4 5492 imurmurhash: 0.1.4
1876 is-glob: 4.0.3 5493 is-glob: 4.0.3
1877 js-yaml: 3.14.1 5494 is-path-inside: 3.0.3
5495 js-yaml: 4.1.0
1878 json-stable-stringify-without-jsonify: 1.0.1 5496 json-stable-stringify-without-jsonify: 1.0.1
1879 levn: 0.4.1 5497 levn: 0.4.1
1880 lodash.merge: 4.6.2 5498 lodash.merge: 4.6.2
1881 minimatch: 3.1.2 5499 minimatch: 3.1.2
1882 natural-compare: 1.4.0 5500 natural-compare: 1.4.0
1883 optionator: 0.9.1 5501 optionator: 0.9.3
1884 progress: 2.0.3
1885 regexpp: 3.2.0
1886 semver: 7.3.5
1887 strip-ansi: 6.0.1 5502 strip-ansi: 6.0.1
1888 strip-json-comments: 3.1.1
1889 table: 6.8.1
1890 text-table: 0.2.0 5503 text-table: 0.2.0
1891 v8-compile-cache: 2.3.0
1892 transitivePeerDependencies: 5504 transitivePeerDependencies:
1893 - supports-color 5505 - supports-color
1894 dev: true 5506 dev: true
1895 5507
1896 /esm/3.2.25: 5508 /esm@3.2.25:
1897 resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} 5509 resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==}
1898 engines: {node: '>=6'} 5510 engines: {node: '>=6'}
1899 dev: false 5511 dev: false
1900 5512
1901 /espree/7.3.1: 5513 /espree@9.6.1:
1902 resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} 5514 resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
1903 engines: {node: ^10.12.0 || >=12.0.0} 5515 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1904 dependencies: 5516 dependencies:
1905 acorn: 7.4.1 5517 acorn: 8.10.0
1906 acorn-jsx: 5.3.2_acorn@7.4.1 5518 acorn-jsx: 5.3.2(acorn@8.10.0)
1907 eslint-visitor-keys: 1.3.0 5519 eslint-visitor-keys: 3.4.3
1908 dev: true 5520 dev: true
1909 5521
1910 /esprima/4.0.1: 5522 /esprima@4.0.1:
1911 resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 5523 resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
1912 engines: {node: '>=4'} 5524 engines: {node: '>=4'}
1913 hasBin: true 5525 hasBin: true
5526 dev: true
1914 5527
1915 /esquery/1.4.0: 5528 /esquery@1.5.0:
1916 resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} 5529 resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
1917 engines: {node: '>=0.10'} 5530 engines: {node: '>=0.10'}
1918 dependencies: 5531 dependencies:
1919 estraverse: 5.3.0 5532 estraverse: 5.3.0
1920 dev: true 5533 dev: true
1921 5534
1922 /esrecurse/4.3.0: 5535 /esrecurse@4.3.0:
1923 resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 5536 resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
1924 engines: {node: '>=4.0'} 5537 engines: {node: '>=4.0'}
1925 dependencies: 5538 dependencies:
1926 estraverse: 5.3.0 5539 estraverse: 5.3.0
1927 dev: true 5540 dev: true
1928 5541
1929 /estraverse/4.3.0: 5542 /estraverse@4.3.0:
1930 resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 5543 resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
1931 engines: {node: '>=4.0'} 5544 engines: {node: '>=4.0'}
1932 dev: true 5545 dev: true
1933 5546
1934 /estraverse/5.3.0: 5547 /estraverse@5.3.0:
1935 resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 5548 resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1936 engines: {node: '>=4.0'} 5549 engines: {node: '>=4.0'}
1937 dev: true 5550 dev: true
1938 5551
1939 /esutils/2.0.3: 5552 /esutils@2.0.3:
1940 resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 5553 resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1941 engines: {node: '>=0.10.0'} 5554 engines: {node: '>=0.10.0'}
1942 dev: true 5555 dev: true
1943 5556
1944 /etag/1.8.1: 5557 /etag@1.8.1:
1945 resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} 5558 resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
1946 engines: {node: '>= 0.6'} 5559 engines: {node: '>= 0.6'}
1947 dev: false
1948 5560
1949 /eventemitter2/5.0.1: 5561 /event-target-shim@5.0.1:
1950 resolution: {integrity: sha512-5EM1GHXycJBS6mauYAbVKT1cVs7POKWb2NXD4Vyt8dDqeZa7LaDK1/sjtL+Zb0lzTpSNil4596Dyu97hz37QLg==} 5562 resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
5563 engines: {node: '>=6'}
5564
5565 /eventemitter3@4.0.7:
5566 resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
5567 dev: true
5568
5569 /events@1.1.1:
5570 resolution: {integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==}
5571 engines: {node: '>=0.4.x'}
1951 dev: false 5572 dev: false
1952 5573
1953 /expand-brackets/2.1.4: 5574 /events@3.3.0:
5575 resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
5576 engines: {node: '>=0.8.x'}
5577
5578 /execa@5.1.1:
5579 resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
5580 engines: {node: '>=10'}
5581 dependencies:
5582 cross-spawn: 7.0.3
5583 get-stream: 6.0.1
5584 human-signals: 2.1.0
5585 is-stream: 2.0.1
5586 merge-stream: 2.0.0
5587 npm-run-path: 4.0.1
5588 onetime: 5.1.2
5589 signal-exit: 3.0.7
5590 strip-final-newline: 2.0.0
5591 dev: true
5592
5593 /execa@7.2.0:
5594 resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==}
5595 engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0}
5596 dependencies:
5597 cross-spawn: 7.0.3
5598 get-stream: 6.0.1
5599 human-signals: 4.3.1
5600 is-stream: 3.0.0
5601 merge-stream: 2.0.0
5602 npm-run-path: 5.1.0
5603 onetime: 6.0.0
5604 signal-exit: 3.0.7
5605 strip-final-newline: 3.0.0
5606 dev: true
5607
5608 /expand-brackets@2.1.4:
1954 resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} 5609 resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==}
1955 engines: {node: '>=0.10.0'} 5610 engines: {node: '>=0.10.0'}
1956 dependencies: 5611 dependencies:
@@ -1963,44 +5618,67 @@ packages:
1963 to-regex: 3.0.2 5618 to-regex: 3.0.2
1964 transitivePeerDependencies: 5619 transitivePeerDependencies:
1965 - supports-color 5620 - supports-color
1966 dev: false 5621 dev: true
1967 5622
1968 /expand-tilde/2.0.2: 5623 /express@4.18.2:
1969 resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} 5624 resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==}
1970 engines: {node: '>=0.10.0'} 5625 engines: {node: '>= 0.10.0'}
1971 dependencies: 5626 dependencies:
1972 homedir-polyfill: 1.0.3 5627 accepts: 1.3.8
1973 dev: false 5628 array-flatten: 1.1.1
5629 body-parser: 1.20.1
5630 content-disposition: 0.5.4
5631 content-type: 1.0.5
5632 cookie: 0.5.0
5633 cookie-signature: 1.0.6
5634 debug: 2.6.9
5635 depd: 2.0.0
5636 encodeurl: 1.0.2
5637 escape-html: 1.0.3
5638 etag: 1.8.1
5639 finalhandler: 1.2.0
5640 fresh: 0.5.2
5641 http-errors: 2.0.0
5642 merge-descriptors: 1.0.1
5643 methods: 1.1.2
5644 on-finished: 2.4.1
5645 parseurl: 1.3.3
5646 path-to-regexp: 0.1.7
5647 proxy-addr: 2.0.7
5648 qs: 6.11.0
5649 range-parser: 1.2.1
5650 safe-buffer: 5.2.1
5651 send: 0.18.0
5652 serve-static: 1.15.0
5653 setprototypeof: 1.2.0
5654 statuses: 2.0.1
5655 type-is: 1.6.18
5656 utils-merge: 1.0.1
5657 vary: 1.1.2
5658 transitivePeerDependencies:
5659 - supports-color
5660 dev: true
1974 5661
1975 /extend-shallow/2.0.1: 5662 /extend-shallow@2.0.1:
1976 resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} 5663 resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
1977 engines: {node: '>=0.10.0'} 5664 engines: {node: '>=0.10.0'}
1978 dependencies: 5665 dependencies:
1979 is-extendable: 0.1.1 5666 is-extendable: 0.1.1
1980 dev: false 5667 dev: true
1981 5668
1982 /extend-shallow/3.0.2: 5669 /extend-shallow@3.0.2:
1983 resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} 5670 resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==}
1984 engines: {node: '>=0.10.0'} 5671 engines: {node: '>=0.10.0'}
1985 dependencies: 5672 dependencies:
1986 assign-symbols: 1.0.0 5673 assign-symbols: 1.0.0
1987 is-extendable: 1.0.1 5674 is-extendable: 1.0.1
1988 dev: false 5675 dev: true
1989 5676
1990 /extend/3.0.2: 5677 /extend@3.0.2:
1991 resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} 5678 resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
1992 dev: false
1993
1994 /external-editor/3.1.0:
1995 resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
1996 engines: {node: '>=4'}
1997 dependencies:
1998 chardet: 0.7.0
1999 iconv-lite: 0.4.24
2000 tmp: 0.0.33
2001 dev: true 5679 dev: true
2002 5680
2003 /extglob/2.0.4: 5681 /extglob@2.0.4:
2004 resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} 5682 resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==}
2005 engines: {node: '>=0.10.0'} 5683 engines: {node: '>=0.10.0'}
2006 dependencies: 5684 dependencies:
@@ -2014,53 +5692,101 @@ packages:
2014 to-regex: 3.0.2 5692 to-regex: 3.0.2
2015 transitivePeerDependencies: 5693 transitivePeerDependencies:
2016 - supports-color 5694 - supports-color
2017 dev: false 5695 dev: true
2018 5696
2019 /extsprintf/1.3.0: 5697 /fast-copy@3.0.1:
2020 resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} 5698 resolution: {integrity: sha512-Knr7NOtK3HWRYGtHoJrjkaWepqT8thIVGAwt0p0aUs1zqkAzXZV4vo9fFNwyb5fcqK1GKYFYxldQdIDVKhUAfA==}
2021 engines: {'0': node >=0.6.0}
2022 dev: false
2023 5699
2024 /fast-deep-equal/3.1.3: 5700 /fast-deep-equal@3.1.3:
2025 resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 5701 resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
2026 5702
2027 /fast-json-stable-stringify/2.1.0: 5703 /fast-diff@1.3.0:
5704 resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
5705 dev: true
5706
5707 /fast-glob@2.2.7:
5708 resolution: {integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==}
5709 engines: {node: '>=4.0.0'}
5710 dependencies:
5711 '@mrmlnc/readdir-enhanced': 2.2.1
5712 '@nodelib/fs.stat': 1.1.3
5713 glob-parent: 3.1.0
5714 is-glob: 4.0.3
5715 merge2: 1.4.1
5716 micromatch: 3.1.10
5717 transitivePeerDependencies:
5718 - supports-color
5719 dev: true
5720
5721 /fast-glob@3.3.1:
5722 resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
5723 engines: {node: '>=8.6.0'}
5724 dependencies:
5725 '@nodelib/fs.stat': 2.0.5
5726 '@nodelib/fs.walk': 1.2.8
5727 glob-parent: 5.1.2
5728 merge2: 1.4.1
5729 micromatch: 4.0.5
5730
5731 /fast-json-stable-stringify@2.1.0:
2028 resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 5732 resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
5733 dev: true
2029 5734
2030 /fast-levenshtein/2.0.6: 5735 /fast-levenshtein@2.0.6:
2031 resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 5736 resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
2032 dev: true 5737 dev: true
2033 5738
2034 /fast-levenshtein/3.0.0: 5739 /fast-levenshtein@3.0.0:
2035 resolution: {integrity: sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==} 5740 resolution: {integrity: sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==}
2036 dependencies: 5741 dependencies:
2037 fastest-levenshtein: 1.0.16 5742 fastest-levenshtein: 1.0.16
2038 dev: false 5743 dev: true
2039 5744
2040 /fastest-levenshtein/1.0.16: 5745 /fast-redact@3.3.0:
5746 resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==}
5747 engines: {node: '>=6'}
5748
5749 /fast-safe-stringify@2.1.1:
5750 resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==}
5751
5752 /fastest-levenshtein@1.0.16:
2041 resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} 5753 resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==}
2042 engines: {node: '>= 4.9.1'} 5754 engines: {node: '>= 4.9.1'}
2043 dev: false 5755 dev: true
2044 5756
2045 /fecha/4.2.3: 5757 /fastq@1.15.0:
2046 resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} 5758 resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
2047 dev: false 5759 dependencies:
5760 reusify: 1.0.4
2048 5761
2049 /figures/3.2.0: 5762 /faye-websocket@0.11.4:
2050 resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} 5763 resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==}
2051 engines: {node: '>=8'} 5764 engines: {node: '>=0.8.0'}
2052 dependencies: 5765 dependencies:
2053 escape-string-regexp: 1.0.5 5766 websocket-driver: 0.7.4
2054 dev: true 5767 dev: true
2055 5768
2056 /file-entry-cache/6.0.1: 5769 /file-entry-cache@6.0.1:
2057 resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 5770 resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
2058 engines: {node: ^10.12.0 || >=12.0.0} 5771 engines: {node: ^10.12.0 || >=12.0.0}
2059 dependencies: 5772 dependencies:
2060 flat-cache: 3.0.4 5773 flat-cache: 3.1.0
2061 dev: true 5774 dev: true
2062 5775
2063 /fill-range/4.0.0: 5776 /file-type@12.4.2:
5777 resolution: {integrity: sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==}
5778 engines: {node: '>=8'}
5779 dev: false
5780
5781 /file-type@16.5.4:
5782 resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==}
5783 engines: {node: '>=10'}
5784 dependencies:
5785 readable-web-to-node-stream: 3.0.2
5786 strtok3: 6.3.0
5787 token-types: 4.2.1
5788
5789 /fill-range@4.0.0:
2064 resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} 5790 resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==}
2065 engines: {node: '>=0.10.0'} 5791 engines: {node: '>=0.10.0'}
2066 dependencies: 5792 dependencies:
@@ -2068,250 +5794,339 @@ packages:
2068 is-number: 3.0.0 5794 is-number: 3.0.0
2069 repeat-string: 1.6.1 5795 repeat-string: 1.6.1
2070 to-regex-range: 2.1.1 5796 to-regex-range: 2.1.1
2071 dev: false 5797 dev: true
2072 5798
2073 /find-up/4.1.0: 5799 /fill-range@7.0.1:
2074 resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 5800 resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
2075 engines: {node: '>=8'} 5801 engines: {node: '>=8'}
2076 dependencies: 5802 dependencies:
2077 locate-path: 5.0.0 5803 to-regex-range: 5.0.1
2078 path-exists: 4.0.0
2079 dev: true
2080 5804
2081 /findup-sync/3.0.0: 5805 /finalhandler@1.2.0:
2082 resolution: {integrity: sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==} 5806 resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==}
2083 engines: {node: '>= 0.10'} 5807 engines: {node: '>= 0.8'}
2084 dependencies: 5808 dependencies:
2085 detect-file: 1.0.0 5809 debug: 2.6.9
2086 is-glob: 4.0.3 5810 encodeurl: 1.0.2
2087 micromatch: 3.1.10 5811 escape-html: 1.0.3
2088 resolve-dir: 1.0.1 5812 on-finished: 2.4.1
5813 parseurl: 1.3.3
5814 statuses: 2.0.1
5815 unpipe: 1.0.0
2089 transitivePeerDependencies: 5816 transitivePeerDependencies:
2090 - supports-color 5817 - supports-color
2091 dev: false 5818 dev: true
2092 5819
2093 /fined/1.2.0: 5820 /find-cache-dir@3.3.2:
2094 resolution: {integrity: sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==} 5821 resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==}
2095 engines: {node: '>= 0.10'} 5822 engines: {node: '>=8'}
2096 dependencies: 5823 dependencies:
2097 expand-tilde: 2.0.2 5824 commondir: 1.0.1
2098 is-plain-object: 2.0.4 5825 make-dir: 3.1.0
2099 object.defaults: 1.1.0 5826 pkg-dir: 4.2.0
2100 object.pick: 1.3.0 5827 dev: true
2101 parse-filepath: 1.0.2
2102 dev: false
2103 5828
2104 /flagged-respawn/1.0.1: 5829 /find-up@3.0.0:
2105 resolution: {integrity: sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==} 5830 resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==}
2106 engines: {node: '>= 0.10'} 5831 engines: {node: '>=6'}
2107 dev: false 5832 dependencies:
5833 locate-path: 3.0.0
5834 dev: true
2108 5835
2109 /flat-cache/3.0.4: 5836 /find-up@4.1.0:
2110 resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 5837 resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
2111 engines: {node: ^10.12.0 || >=12.0.0} 5838 engines: {node: '>=8'}
2112 dependencies: 5839 dependencies:
2113 flatted: 3.2.7 5840 locate-path: 5.0.0
2114 rimraf: 3.0.2 5841 path-exists: 4.0.0
2115 dev: true 5842 dev: true
2116 5843
2117 /flatted/3.2.7: 5844 /find-up@5.0.0:
2118 resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} 5845 resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
5846 engines: {node: '>=10'}
5847 dependencies:
5848 locate-path: 6.0.0
5849 path-exists: 4.0.0
2119 dev: true 5850 dev: true
2120 5851
2121 /fn.name/1.1.0: 5852 /flat-cache@3.1.0:
2122 resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} 5853 resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==}
2123 dev: false 5854 engines: {node: '>=12.0.0'}
5855 dependencies:
5856 flatted: 3.2.9
5857 keyv: 4.5.3
5858 rimraf: 3.0.2
5859 dev: true
2124 5860
2125 /for-in/0.1.8: 5861 /flatstr@1.0.12:
2126 resolution: {integrity: sha512-F0to7vbBSHP8E3l6dCjxNOLuSFAACIxFy3UehTUlG7svlXi37HHsDkyVcHo0Pq8QwrE+pXvWSVX3ZT1T9wAZ9g==} 5862 resolution: {integrity: sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==}
2127 engines: {node: '>=0.10.0'}
2128 dev: false
2129 5863
2130 /for-in/1.0.2: 5864 /flatted@3.2.9:
2131 resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} 5865 resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==}
2132 engines: {node: '>=0.10.0'} 5866 dev: true
2133 dev: false
2134 5867
2135 /for-own/1.0.0: 5868 /flattie@1.1.0:
2136 resolution: {integrity: sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==} 5869 resolution: {integrity: sha512-xU99gDEnciIwJdGcBmNHnzTJ/w5AT+VFJOu6sTB6WM8diOYNA3Sa+K1DiEBQ7XH4QikQq3iFW1U+jRVcotQnBw==}
2137 engines: {node: '>=0.10.0'} 5870 engines: {node: '>=8'}
5871
5872 /follow-redirects@1.15.3:
5873 resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==}
5874 engines: {node: '>=4.0'}
5875 peerDependencies:
5876 debug: '*'
5877 peerDependenciesMeta:
5878 debug:
5879 optional: true
5880 dev: true
5881
5882 /for-each@0.3.3:
5883 resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
2138 dependencies: 5884 dependencies:
2139 for-in: 1.0.2 5885 is-callable: 1.2.7
2140 dev: false
2141 5886
2142 /forever-agent/0.6.1: 5887 /for-in@1.0.2:
2143 resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} 5888 resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==}
2144 dev: false 5889 engines: {node: '>=0.10.0'}
5890 dev: true
2145 5891
2146 /form-data/2.3.3: 5892 /form-data@3.0.1:
2147 resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} 5893 resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==}
2148 engines: {node: '>= 0.12'} 5894 engines: {node: '>= 6'}
2149 dependencies: 5895 dependencies:
2150 asynckit: 0.4.0 5896 asynckit: 0.4.0
2151 combined-stream: 1.0.8 5897 combined-stream: 1.0.8
2152 mime-types: 2.1.35 5898 mime-types: 2.1.35
2153 dev: false 5899 dev: true
2154 5900
2155 /form-data/2.5.1: 5901 /form-data@4.0.0:
2156 resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} 5902 resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
2157 engines: {node: '>= 0.12'} 5903 engines: {node: '>= 6'}
2158 dependencies: 5904 dependencies:
2159 asynckit: 0.4.0 5905 asynckit: 0.4.0
2160 combined-stream: 1.0.8 5906 combined-stream: 1.0.8
2161 mime-types: 2.1.35 5907 mime-types: 2.1.35
2162 dev: false 5908 dev: true
5909
5910 /formidable@2.1.2:
5911 resolution: {integrity: sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==}
5912 dependencies:
5913 dezalgo: 1.0.4
5914 hexoid: 1.0.0
5915 once: 1.4.0
5916 qs: 6.11.2
5917 dev: true
2163 5918
2164 /forwarded/0.2.0: 5919 /forwarded@0.2.0:
2165 resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 5920 resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
2166 engines: {node: '>= 0.6'} 5921 engines: {node: '>= 0.6'}
2167 dev: false
2168 5922
2169 /fragment-cache/0.2.1: 5923 /fragment-cache@0.2.1:
2170 resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} 5924 resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==}
2171 engines: {node: '>=0.10.0'} 5925 engines: {node: '>=0.10.0'}
2172 dependencies: 5926 dependencies:
2173 map-cache: 0.2.2 5927 map-cache: 0.2.2
2174 dev: false 5928 dev: true
2175 5929
2176 /fresh/0.5.2: 5930 /fresh@0.5.2:
2177 resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} 5931 resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
2178 engines: {node: '>= 0.6'} 5932 engines: {node: '>= 0.6'}
2179 dev: false
2180
2181 /from2/2.3.0:
2182 resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==}
2183 dependencies:
2184 inherits: 2.0.4
2185 readable-stream: 2.3.7
2186 dev: false
2187 5933
2188 /fs-constants/1.0.0: 5934 /fs-constants@1.0.0:
2189 resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} 5935 resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
2190 dev: false 5936 dev: false
2191 5937
2192 /fs-extra/6.0.1: 5938 /fs-extra@10.1.0:
2193 resolution: {integrity: sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==} 5939 resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
5940 engines: {node: '>=12'}
2194 dependencies: 5941 dependencies:
2195 graceful-fs: 4.2.10 5942 graceful-fs: 4.2.11
2196 jsonfile: 4.0.0 5943 jsonfile: 6.1.0
2197 universalify: 0.1.2 5944 universalify: 2.0.0
2198 dev: false 5945
5946 /fs-extra@11.1.1:
5947 resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==}
5948 engines: {node: '>=14.14'}
5949 dependencies:
5950 graceful-fs: 4.2.11
5951 jsonfile: 6.1.0
5952 universalify: 2.0.0
2199 5953
2200 /fs-extra/8.1.0: 5954 /fs-extra@8.1.0:
2201 resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} 5955 resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
2202 engines: {node: '>=6 <7 || >=8'} 5956 engines: {node: '>=6 <7 || >=8'}
2203 dependencies: 5957 dependencies:
2204 graceful-fs: 4.2.10 5958 graceful-fs: 4.2.11
2205 jsonfile: 4.0.0 5959 jsonfile: 4.0.0
2206 universalify: 0.1.2 5960 universalify: 0.1.2
2207 dev: false 5961 dev: true
2208 5962
2209 /fs-extra/9.1.0: 5963 /fs-minipass@2.1.0:
2210 resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} 5964 resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
2211 engines: {node: '>=10'} 5965 engines: {node: '>= 8'}
2212 dependencies: 5966 dependencies:
2213 at-least-node: 1.0.0 5967 minipass: 3.3.6
2214 graceful-fs: 4.2.10
2215 jsonfile: 6.1.0
2216 universalify: 2.0.0
2217 dev: false 5968 dev: false
2218 5969
2219 /fs-minipass/1.2.7: 5970 /fs-monkey@1.0.5:
2220 resolution: {integrity: sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==} 5971 resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==}
2221 dependencies: 5972
2222 minipass: 2.9.0 5973 /fs-readdir-recursive@1.1.0:
2223 dev: false 5974 resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==}
2224 5975
2225 /fs.realpath/1.0.0: 5976 /fs.realpath@1.0.0:
2226 resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 5977 resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
2227 5978
2228 /function-bind/1.1.1: 5979 /fsevents@2.3.3:
5980 resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
5981 engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
5982 os: [darwin]
5983 requiresBuild: true
5984 dev: true
5985 optional: true
5986
5987 /function-bind@1.1.1:
2229 resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 5988 resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
2230 5989
2231 /function.prototype.name/1.1.5: 5990 /function.prototype.name@1.1.6:
2232 resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} 5991 resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
2233 engines: {node: '>= 0.4'} 5992 engines: {node: '>= 0.4'}
2234 dependencies: 5993 dependencies:
2235 call-bind: 1.0.2 5994 call-bind: 1.0.2
2236 define-properties: 1.1.4 5995 define-properties: 1.2.1
2237 es-abstract: 1.20.5 5996 es-abstract: 1.22.2
2238 functions-have-names: 1.2.3 5997 functions-have-names: 1.2.3
2239 dev: true 5998 dev: true
2240 5999
2241 /functional-red-black-tree/1.0.1: 6000 /functions-have-names@1.2.3:
2242 resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==}
2243 dev: true
2244
2245 /functions-have-names/1.2.3:
2246 resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 6001 resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
2247 dev: true 6002 dev: true
2248 6003
2249 /gauge/2.7.4: 6004 /gauge@3.0.2:
2250 resolution: {integrity: sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==} 6005 resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==}
6006 engines: {node: '>=10'}
2251 dependencies: 6007 dependencies:
2252 aproba: 1.2.0 6008 aproba: 2.0.0
6009 color-support: 1.1.3
2253 console-control-strings: 1.1.0 6010 console-control-strings: 1.1.0
2254 has-unicode: 2.0.1 6011 has-unicode: 2.0.1
2255 object-assign: 4.1.1 6012 object-assign: 4.1.1
2256 signal-exit: 3.0.7 6013 signal-exit: 3.0.7
2257 string-width: 1.0.2 6014 string-width: 4.2.3
2258 strip-ansi: 3.0.1 6015 strip-ansi: 6.0.1
2259 wide-align: 1.1.5 6016 wide-align: 1.1.5
2260 dev: false 6017 dev: false
2261 6018
2262 /get-caller-file/2.0.5: 6019 /gauge@4.0.4:
2263 resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 6020 resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==}
2264 engines: {node: 6.* || 8.* || >= 10.*} 6021 engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
6022 requiresBuild: true
6023 dependencies:
6024 aproba: 2.0.0
6025 color-support: 1.1.3
6026 console-control-strings: 1.1.0
6027 has-unicode: 2.0.1
6028 signal-exit: 3.0.7
6029 string-width: 4.2.3
6030 strip-ansi: 6.0.1
6031 wide-align: 1.1.5
6032 dev: false
6033 optional: true
6034
6035 /gensync@1.0.0-beta.2:
6036 resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
6037 engines: {node: '>=6.9.0'}
6038 dev: true
6039
6040 /get-func-name@2.0.2:
6041 resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
2265 dev: true 6042 dev: true
2266 6043
2267 /get-intrinsic/1.1.3: 6044 /get-intrinsic@1.2.1:
2268 resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} 6045 resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==}
2269 dependencies: 6046 dependencies:
2270 function-bind: 1.1.1 6047 function-bind: 1.1.1
2271 has: 1.0.3 6048 has: 1.0.3
6049 has-proto: 1.0.1
2272 has-symbols: 1.0.3 6050 has-symbols: 1.0.3
2273 6051
2274 /get-stream/3.0.0: 6052 /get-package-type@0.1.0:
2275 resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} 6053 resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
6054 engines: {node: '>=8.0.0'}
6055 dev: false
6056
6057 /get-port@3.2.0:
6058 resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==}
2276 engines: {node: '>=4'} 6059 engines: {node: '>=4'}
6060 dev: true
6061
6062 /get-port@5.1.1:
6063 resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==}
6064 engines: {node: '>=8'}
6065 dev: true
6066
6067 /get-source@2.0.12:
6068 resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==}
6069 dependencies:
6070 data-uri-to-buffer: 2.0.2
6071 source-map: 0.6.1
6072 dev: true
6073
6074 /get-stream@5.2.0:
6075 resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
6076 engines: {node: '>=8'}
6077 dependencies:
6078 pump: 3.0.0
2277 dev: false 6079 dev: false
2278 6080
2279 /get-stream/6.0.1: 6081 /get-stream@6.0.1:
2280 resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 6082 resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
2281 engines: {node: '>=10'} 6083 engines: {node: '>=10'}
2282 dev: false
2283 6084
2284 /get-symbol-description/1.0.0: 6085 /get-symbol-description@1.0.0:
2285 resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 6086 resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
2286 engines: {node: '>= 0.4'} 6087 engines: {node: '>= 0.4'}
2287 dependencies: 6088 dependencies:
2288 call-bind: 1.0.2 6089 call-bind: 1.0.2
2289 get-intrinsic: 1.1.3 6090 get-intrinsic: 1.2.1
2290 dev: true 6091 dev: true
2291 6092
2292 /get-value/2.0.6: 6093 /get-value@2.0.6:
2293 resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} 6094 resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==}
2294 engines: {node: '>=0.10.0'} 6095 engines: {node: '>=0.10.0'}
2295 dev: false 6096 dev: true
2296 6097
2297 /getopts/2.2.5: 6098 /getopts@2.3.0:
2298 resolution: {integrity: sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA==} 6099 resolution: {integrity: sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==}
2299 dev: false
2300 6100
2301 /getpass/0.1.7: 6101 /glob-parent@3.1.0:
2302 resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} 6102 resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==}
2303 dependencies: 6103 dependencies:
2304 assert-plus: 1.0.0 6104 is-glob: 3.1.0
2305 dev: false 6105 path-dirname: 1.0.2
6106 dev: true
2306 6107
2307 /glob-parent/5.1.2: 6108 /glob-parent@5.1.2:
2308 resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 6109 resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
2309 engines: {node: '>= 6'} 6110 engines: {node: '>= 6'}
2310 dependencies: 6111 dependencies:
2311 is-glob: 4.0.3 6112 is-glob: 4.0.3
6113
6114 /glob-parent@6.0.2:
6115 resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
6116 engines: {node: '>=10.13.0'}
6117 dependencies:
6118 is-glob: 4.0.3
6119 dev: true
6120
6121 /glob-to-regexp@0.3.0:
6122 resolution: {integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==}
6123 dev: true
6124
6125 /glob-to-regexp@0.4.1:
6126 resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
2312 dev: true 6127 dev: true
2313 6128
2314 /glob/7.2.3: 6129 /glob@7.2.3:
2315 resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 6130 resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
2316 dependencies: 6131 dependencies:
2317 fs.realpath: 1.0.0 6132 fs.realpath: 1.0.0
@@ -2321,201 +6136,279 @@ packages:
2321 once: 1.4.0 6136 once: 1.4.0
2322 path-is-absolute: 1.0.1 6137 path-is-absolute: 1.0.1
2323 6138
2324 /global-modules/1.0.0: 6139 /glob@8.1.0:
2325 resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} 6140 resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
2326 engines: {node: '>=0.10.0'} 6141 engines: {node: '>=12'}
2327 dependencies: 6142 dependencies:
2328 global-prefix: 1.0.2 6143 fs.realpath: 1.0.0
2329 is-windows: 1.0.2 6144 inflight: 1.0.6
2330 resolve-dir: 1.0.1 6145 inherits: 2.0.4
2331 dev: false 6146 minimatch: 5.1.6
6147 once: 1.4.0
2332 6148
2333 /global-prefix/1.0.2: 6149 /globals@11.12.0:
2334 resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} 6150 resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
2335 engines: {node: '>=0.10.0'} 6151 engines: {node: '>=4'}
2336 dependencies: 6152 dev: true
2337 expand-tilde: 2.0.2
2338 homedir-polyfill: 1.0.3
2339 ini: 1.3.8
2340 is-windows: 1.0.2
2341 which: 1.3.1
2342 dev: false
2343 6153
2344 /globals/13.18.0: 6154 /globals@13.22.0:
2345 resolution: {integrity: sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==} 6155 resolution: {integrity: sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==}
2346 engines: {node: '>=8'} 6156 engines: {node: '>=8'}
2347 dependencies: 6157 dependencies:
2348 type-fest: 0.20.2 6158 type-fest: 0.20.2
2349 dev: true 6159 dev: true
2350 6160
2351 /gopd/1.0.1: 6161 /globalthis@1.0.3:
2352 resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 6162 resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
6163 engines: {node: '>= 0.4'}
2353 dependencies: 6164 dependencies:
2354 get-intrinsic: 1.1.3 6165 define-properties: 1.2.1
2355 dev: true 6166 dev: true
2356 6167
2357 /got/8.3.0: 6168 /globby@11.1.0:
2358 resolution: {integrity: sha512-kBNy/S2CGwrYgDSec5KTWGKUvupwkkTVAjIsVFF2shXO13xpZdFP4d4kxa//CLX2tN/rV0aYwK8vY6UKWGn2vQ==} 6169 resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
2359 engines: {node: '>=4'} 6170 engines: {node: '>=10'}
2360 dependencies: 6171 dependencies:
2361 '@sindresorhus/is': 0.7.0 6172 array-union: 2.1.0
2362 '@types/keyv': 3.1.4 6173 dir-glob: 3.0.1
2363 '@types/responselike': 1.0.0 6174 fast-glob: 3.3.1
2364 cacheable-request: 2.1.4 6175 ignore: 5.2.4
2365 decompress-response: 3.3.0 6176 merge2: 1.4.1
2366 duplexer3: 0.1.5 6177 slash: 3.0.0
2367 get-stream: 3.0.0 6178 dev: true
2368 into-stream: 3.1.0
2369 is-retry-allowed: 1.2.0
2370 isurl: 1.0.0
2371 lowercase-keys: 1.0.1
2372 mimic-response: 1.0.1
2373 p-cancelable: 0.4.1
2374 p-timeout: 2.0.1
2375 pify: 3.0.0
2376 safe-buffer: 5.2.1
2377 timed-out: 4.0.1
2378 url-parse-lax: 3.0.0
2379 url-to-options: 1.0.1
2380 dev: false
2381
2382 /graceful-fs/4.2.10:
2383 resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
2384 dev: false
2385 6179
2386 /har-schema/2.0.0: 6180 /globby@6.1.0:
2387 resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} 6181 resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==}
2388 engines: {node: '>=4'} 6182 engines: {node: '>=0.10.0'}
2389 dev: false 6183 dependencies:
6184 array-union: 1.0.2
6185 glob: 7.2.3
6186 object-assign: 4.1.1
6187 pify: 2.3.0
6188 pinkie-promise: 2.0.1
6189 dev: true
2390 6190
2391 /har-validator/5.1.5: 6191 /globby@9.2.0:
2392 resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} 6192 resolution: {integrity: sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==}
2393 engines: {node: '>=6'} 6193 engines: {node: '>=6'}
2394 deprecated: this library is no longer supported
2395 dependencies: 6194 dependencies:
2396 ajv: 6.12.6 6195 '@types/glob': 7.2.0
2397 har-schema: 2.0.0 6196 array-union: 1.0.2
6197 dir-glob: 2.2.2
6198 fast-glob: 2.2.7
6199 glob: 7.2.3
6200 ignore: 4.0.6
6201 pify: 4.0.1
6202 slash: 2.0.0
6203 transitivePeerDependencies:
6204 - supports-color
6205 dev: true
6206
6207 /gopd@1.0.1:
6208 resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
6209 dependencies:
6210 get-intrinsic: 1.2.1
6211
6212 /got@11.8.6:
6213 resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==}
6214 engines: {node: '>=10.19.0'}
6215 dependencies:
6216 '@sindresorhus/is': 4.6.0
6217 '@szmarczak/http-timer': 4.0.6
6218 '@types/cacheable-request': 6.0.3
6219 '@types/responselike': 1.0.1
6220 cacheable-lookup: 5.0.4
6221 cacheable-request: 7.0.4
6222 decompress-response: 6.0.0
6223 http2-wrapper: 1.0.3
6224 lowercase-keys: 2.0.0
6225 p-cancelable: 2.1.1
6226 responselike: 2.0.1
2398 dev: false 6227 dev: false
2399 6228
2400 /has-bigints/1.0.2: 6229 /graceful-fs@4.2.11:
6230 resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
6231
6232 /graphemer@1.4.0:
6233 resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
6234 dev: true
6235
6236 /handle-thing@2.0.1:
6237 resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==}
6238 dev: true
6239
6240 /has-ansi@2.0.0:
6241 resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==}
6242 engines: {node: '>=0.10.0'}
6243 dependencies:
6244 ansi-regex: 2.1.1
6245 dev: true
6246
6247 /has-bigints@1.0.2:
2401 resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 6248 resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
2402 dev: true 6249 dev: true
2403 6250
2404 /has-flag/3.0.0: 6251 /has-flag@3.0.0:
2405 resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 6252 resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
2406 engines: {node: '>=4'} 6253 engines: {node: '>=4'}
2407 dev: true 6254 dev: true
2408 6255
2409 /has-flag/4.0.0: 6256 /has-flag@4.0.0:
2410 resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 6257 resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
2411 engines: {node: '>=8'} 6258 engines: {node: '>=8'}
6259
6260 /has-glob@1.0.0:
6261 resolution: {integrity: sha512-D+8A457fBShSEI3tFCj65PAbT++5sKiFtdCdOam0gnfBgw9D277OERk+HM9qYJXmdVLZ/znez10SqHN0BBQ50g==}
6262 engines: {node: '>=0.10.0'}
6263 dependencies:
6264 is-glob: 3.1.0
6265 dev: true
6266
6267 /has-own-prop@2.0.0:
6268 resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==}
6269 engines: {node: '>=8'}
2412 dev: true 6270 dev: true
2413 6271
2414 /has-property-descriptors/1.0.0: 6272 /has-property-descriptors@1.0.0:
2415 resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 6273 resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
2416 dependencies: 6274 dependencies:
2417 get-intrinsic: 1.1.3 6275 get-intrinsic: 1.2.1
2418 dev: true 6276 dev: true
2419 6277
2420 /has-symbol-support-x/1.4.2: 6278 /has-proto@1.0.1:
2421 resolution: {integrity: sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==} 6279 resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
2422 dev: false 6280 engines: {node: '>= 0.4'}
2423 6281
2424 /has-symbols/1.0.3: 6282 /has-symbols@1.0.3:
2425 resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 6283 resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
2426 engines: {node: '>= 0.4'} 6284 engines: {node: '>= 0.4'}
2427 6285
2428 /has-to-string-tag-x/1.4.1: 6286 /has-tostringtag@1.0.0:
2429 resolution: {integrity: sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==}
2430 dependencies:
2431 has-symbol-support-x: 1.4.2
2432 dev: false
2433
2434 /has-tostringtag/1.0.0:
2435 resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 6287 resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
2436 engines: {node: '>= 0.4'} 6288 engines: {node: '>= 0.4'}
2437 dependencies: 6289 dependencies:
2438 has-symbols: 1.0.3 6290 has-symbols: 1.0.3
2439 dev: true
2440 6291
2441 /has-unicode/2.0.1: 6292 /has-unicode@2.0.1:
2442 resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} 6293 resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
2443 dev: false 6294 dev: false
2444 6295
2445 /has-value/0.3.1: 6296 /has-value@0.3.1:
2446 resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} 6297 resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==}
2447 engines: {node: '>=0.10.0'} 6298 engines: {node: '>=0.10.0'}
2448 dependencies: 6299 dependencies:
2449 get-value: 2.0.6 6300 get-value: 2.0.6
2450 has-values: 0.1.4 6301 has-values: 0.1.4
2451 isobject: 2.1.0 6302 isobject: 2.1.0
2452 dev: false 6303 dev: true
2453 6304
2454 /has-value/1.0.0: 6305 /has-value@1.0.0:
2455 resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} 6306 resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==}
2456 engines: {node: '>=0.10.0'} 6307 engines: {node: '>=0.10.0'}
2457 dependencies: 6308 dependencies:
2458 get-value: 2.0.6 6309 get-value: 2.0.6
2459 has-values: 1.0.0 6310 has-values: 1.0.0
2460 isobject: 3.0.1 6311 isobject: 3.0.1
2461 dev: false 6312 dev: true
2462 6313
2463 /has-values/0.1.4: 6314 /has-values@0.1.4:
2464 resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} 6315 resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==}
2465 engines: {node: '>=0.10.0'} 6316 engines: {node: '>=0.10.0'}
2466 dev: false 6317 dev: true
2467 6318
2468 /has-values/1.0.0: 6319 /has-values@1.0.0:
2469 resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} 6320 resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==}
2470 engines: {node: '>=0.10.0'} 6321 engines: {node: '>=0.10.0'}
2471 dependencies: 6322 dependencies:
2472 is-number: 3.0.0 6323 is-number: 3.0.0
2473 kind-of: 4.0.0 6324 kind-of: 4.0.0
2474 dev: false 6325 dev: true
2475 6326
2476 /has/1.0.3: 6327 /has-yarn@2.1.0:
6328 resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==}
6329 engines: {node: '>=8'}
6330 dev: true
6331
6332 /has@1.0.3:
2477 resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 6333 resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
2478 engines: {node: '>= 0.4.0'} 6334 engines: {node: '>= 0.4.0'}
2479 dependencies: 6335 dependencies:
2480 function-bind: 1.1.1 6336 function-bind: 1.1.1
2481 6337
2482 /haye/2.0.2: 6338 /haye@3.0.0:
2483 resolution: {integrity: sha512-C+jeFipAuwLLmQziwQrXuHzUIihDzqoLpCpwDWYFQVCIyqi5ZvC+4YtzawPTmd1tIKo0ULf+4P0Mw8irUdXIpg==} 6339 resolution: {integrity: sha512-yWxbPdeex78IR3x3X/DdqkZbVG4rP4UaRdUGmpClfnUh1C61mASt7Iav8vk2tXcTMSygBHDDfgoVqk68NJqzhQ==}
2484 dev: false
2485 6340
2486 /homedir-polyfill/1.0.3: 6341 /he@1.2.0:
2487 resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} 6342 resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
2488 engines: {node: '>=0.10.0'} 6343 hasBin: true
6344
6345 /header-case@2.0.4:
6346 resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==}
2489 dependencies: 6347 dependencies:
2490 parse-passwd: 1.0.0 6348 capital-case: 1.0.4
6349 tslib: 2.6.2
6350
6351 /helmet-csp@3.4.0:
6352 resolution: {integrity: sha512-a+YgzWw6dajqhQfb6ktxil0FsQuWTKzrLSUfy55dxS8fuvl1jidTIMPZ2udN15mjjcpBPgTHNHGF5tyWKYyR8w==}
6353 engines: {node: '>=10.0.0'}
2491 dev: false 6354 dev: false
2492 6355
2493 /http-cache-semantics/3.8.1: 6356 /help-me@4.2.0:
2494 resolution: {integrity: sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==} 6357 resolution: {integrity: sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA==}
6358 dependencies:
6359 glob: 8.1.0
6360 readable-stream: 3.6.2
6361
6362 /hexoid@1.0.0:
6363 resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==}
6364 engines: {node: '>=8'}
6365 dev: true
6366
6367 /hosted-git-info@2.8.9:
6368 resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
6369 dev: true
6370
6371 /hpack.js@2.1.6:
6372 resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==}
6373 dependencies:
6374 inherits: 2.0.4
6375 obuf: 1.1.2
6376 readable-stream: 2.3.8
6377 wbuf: 1.7.3
6378 dev: true
6379
6380 /html-entities@2.4.0:
6381 resolution: {integrity: sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==}
6382 dev: true
6383
6384 /htmlparser2@6.1.0:
6385 resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==}
6386 dependencies:
6387 domelementtype: 2.3.0
6388 domhandler: 4.3.1
6389 domutils: 2.8.0
6390 entities: 2.2.0
6391 dev: true
6392
6393 /http-cache-semantics@4.1.1:
6394 resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
2495 dev: false 6395 dev: false
2496 6396
2497 /http-errors/1.6.3: 6397 /http-deceiver@1.2.7:
6398 resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==}
6399 dev: true
6400
6401 /http-errors@1.6.3:
2498 resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} 6402 resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==}
2499 engines: {node: '>= 0.6'} 6403 engines: {node: '>= 0.6'}
2500 dependencies: 6404 dependencies:
2501 depd: 1.1.2 6405 depd: 1.1.2
2502 inherits: 2.0.3 6406 inherits: 2.0.3
2503 setprototypeof: 1.1.0 6407 setprototypeof: 1.1.0
2504 statuses: 1.4.0
2505 dev: false
2506
2507 /http-errors/1.8.1:
2508 resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==}
2509 engines: {node: '>= 0.6'}
2510 dependencies:
2511 depd: 1.1.2
2512 inherits: 2.0.4
2513 setprototypeof: 1.2.0
2514 statuses: 1.5.0 6408 statuses: 1.5.0
2515 toidentifier: 1.0.1 6409 dev: true
2516 dev: false
2517 6410
2518 /http-errors/2.0.0: 6411 /http-errors@2.0.0:
2519 resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} 6412 resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
2520 engines: {node: '>= 0.8'} 6413 engines: {node: '>= 0.8'}
2521 dependencies: 6414 dependencies:
@@ -2524,18 +6417,63 @@ packages:
2524 setprototypeof: 1.2.0 6417 setprototypeof: 1.2.0
2525 statuses: 2.0.1 6418 statuses: 2.0.1
2526 toidentifier: 1.0.1 6419 toidentifier: 1.0.1
6420
6421 /http-parser-js@0.5.8:
6422 resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==}
6423 dev: true
6424
6425 /http-proxy-agent@4.0.1:
6426 resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==}
6427 engines: {node: '>= 6'}
6428 requiresBuild: true
6429 dependencies:
6430 '@tootallnate/once': 1.1.2
6431 agent-base: 6.0.2
6432 debug: 4.3.4
6433 transitivePeerDependencies:
6434 - supports-color
2527 dev: false 6435 dev: false
6436 optional: true
6437
6438 /http-proxy-middleware@2.0.6(@types/express@4.17.18):
6439 resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==}
6440 engines: {node: '>=12.0.0'}
6441 peerDependencies:
6442 '@types/express': ^4.17.13
6443 peerDependenciesMeta:
6444 '@types/express':
6445 optional: true
6446 dependencies:
6447 '@types/express': 4.17.18
6448 '@types/http-proxy': 1.17.12
6449 http-proxy: 1.18.1
6450 is-glob: 4.0.3
6451 is-plain-obj: 3.0.0
6452 micromatch: 4.0.5
6453 transitivePeerDependencies:
6454 - debug
6455 dev: true
2528 6456
2529 /http-signature/1.2.0: 6457 /http-proxy@1.18.1:
2530 resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} 6458 resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==}
2531 engines: {node: '>=0.8', npm: '>=1.3.7'} 6459 engines: {node: '>=8.0.0'}
2532 dependencies: 6460 dependencies:
2533 assert-plus: 1.0.0 6461 eventemitter3: 4.0.7
2534 jsprim: 1.4.2 6462 follow-redirects: 1.15.3
2535 sshpk: 1.17.0 6463 requires-port: 1.0.0
6464 transitivePeerDependencies:
6465 - debug
6466 dev: true
6467
6468 /http2-wrapper@1.0.3:
6469 resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==}
6470 engines: {node: '>=10.19.0'}
6471 dependencies:
6472 quick-lru: 5.1.1
6473 resolve-alpn: 1.2.1
2536 dev: false 6474 dev: false
2537 6475
2538 /https-proxy-agent/5.0.1: 6476 /https-proxy-agent@5.0.1:
2539 resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} 6477 resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
2540 engines: {node: '>= 6'} 6478 engines: {node: '>= 6'}
2541 dependencies: 6479 dependencies:
@@ -2545,30 +6483,116 @@ packages:
2545 - supports-color 6483 - supports-color
2546 dev: false 6484 dev: false
2547 6485
2548 /husky/7.0.4: 6486 /human-signals@2.1.0:
2549 resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==} 6487 resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
2550 engines: {node: '>=12'} 6488 engines: {node: '>=10.17.0'}
6489 dev: true
6490
6491 /human-signals@4.3.1:
6492 resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==}
6493 engines: {node: '>=14.18.0'}
6494 dev: true
6495
6496 /humanize-ms@1.2.1:
6497 resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
6498 requiresBuild: true
6499 dependencies:
6500 ms: 2.1.3
6501 dev: false
6502 optional: true
6503
6504 /husky@8.0.3:
6505 resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==}
6506 engines: {node: '>=14'}
2551 hasBin: true 6507 hasBin: true
2552 dev: true 6508 dev: true
2553 6509
2554 /iconv-lite/0.4.24: 6510 /ical-generator@4.1.0(@types/luxon@3.3.1)(luxon@3.3.0)(moment@2.29.4):
6511 resolution: {integrity: sha512-5GrFDJ8SAOj8cB9P1uEZIfKrNxSZ1R2eOQfZePL+CtdWh4RwNXWe8b0goajz+Hu37vcipG3RVldoa2j57Y20IA==}
6512 engines: {node: ^14.8.0 || >=16.0.0}
6513 peerDependencies:
6514 '@touch4it/ical-timezones': '>=1.6.0'
6515 '@types/luxon': '>= 1.26.0'
6516 '@types/mocha': '>= 8.2.1'
6517 '@types/node': '>= 15.0.0'
6518 dayjs: '>= 1.10.0'
6519 luxon: '>= 1.26.0'
6520 moment: '>= 2.29.0'
6521 moment-timezone: '>= 0.5.33'
6522 rrule: '>= 2.6.8'
6523 peerDependenciesMeta:
6524 '@touch4it/ical-timezones':
6525 optional: true
6526 '@types/luxon':
6527 optional: true
6528 '@types/mocha':
6529 optional: true
6530 '@types/node':
6531 optional: true
6532 dayjs:
6533 optional: true
6534 luxon:
6535 optional: true
6536 moment:
6537 optional: true
6538 moment-timezone:
6539 optional: true
6540 rrule:
6541 optional: true
6542 dependencies:
6543 '@types/luxon': 3.3.1
6544 luxon: 3.3.0
6545 moment: 2.29.4
6546 uuid-random: 1.3.2
6547 dev: false
6548
6549 /iconv-lite@0.4.24:
2555 resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 6550 resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
2556 engines: {node: '>=0.10.0'} 6551 engines: {node: '>=0.10.0'}
2557 dependencies: 6552 dependencies:
2558 safer-buffer: 2.1.2 6553 safer-buffer: 2.1.2
2559 6554
2560 /ignore-walk/3.0.4: 6555 /iconv-lite@0.6.3:
2561 resolution: {integrity: sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==} 6556 resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
6557 engines: {node: '>=0.10.0'}
6558 requiresBuild: true
2562 dependencies: 6559 dependencies:
2563 minimatch: 3.1.2 6560 safer-buffer: 2.1.2
2564 dev: false 6561 dev: false
6562 optional: true
6563
6564 /icss-utils@5.1.0(postcss@8.4.31):
6565 resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==}
6566 engines: {node: ^10 || ^12 || >= 14}
6567 peerDependencies:
6568 postcss: ^8.1.0
6569 dependencies:
6570 postcss: 8.4.31
6571 dev: true
2565 6572
2566 /ignore/4.0.6: 6573 /ieee754@1.1.13:
6574 resolution: {integrity: sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==}
6575 dev: false
6576
6577 /ieee754@1.2.1:
6578 resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
6579
6580 /igniculus@1.5.0:
6581 resolution: {integrity: sha512-vhj2J/cSzNg2G5tcK4Z1KZdeYmQa5keoxFULUYAxctK/zHJb1oraO7noCqnJxKe1b2eZdiiaSL1IHPOFAI8UYQ==}
6582 engines: {node: '>=4.0.0'}
6583 dev: false
6584
6585 /ignore@4.0.6:
2567 resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} 6586 resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==}
2568 engines: {node: '>= 4'} 6587 engines: {node: '>= 4'}
2569 dev: true 6588 dev: true
2570 6589
2571 /import-fresh/3.3.0: 6590 /ignore@5.2.4:
6591 resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
6592 engines: {node: '>= 4'}
6593 dev: true
6594
6595 /import-fresh@3.3.0:
2572 resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 6596 resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
2573 engines: {node: '>=6'} 6597 engines: {node: '>=6'}
2574 dependencies: 6598 dependencies:
@@ -2576,133 +6600,138 @@ packages:
2576 resolve-from: 4.0.0 6600 resolve-from: 4.0.0
2577 dev: true 6601 dev: true
2578 6602
2579 /imurmurhash/0.1.4: 6603 /import-local@3.1.0:
6604 resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==}
6605 engines: {node: '>=8'}
6606 hasBin: true
6607 dependencies:
6608 pkg-dir: 4.2.0
6609 resolve-cwd: 3.0.0
6610 dev: true
6611
6612 /imurmurhash@0.1.4:
2580 resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 6613 resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
2581 engines: {node: '>=0.8.19'} 6614 engines: {node: '>=0.8.19'}
6615
6616 /inclusion@1.0.1:
6617 resolution: {integrity: sha512-TRicJXpIfJN+a47xxjs5nfy2V5l413e4aAtsLYRG+OsDM3A3uloBd/+fDmj23RVuIL9VQfwtb37iIc0rtMw9KA==}
6618 dependencies:
6619 parent-module: 2.0.0
2582 dev: true 6620 dev: true
2583 6621
2584 /indent-string/3.2.0: 6622 /indent-string@4.0.0:
2585 resolution: {integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==} 6623 resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
2586 engines: {node: '>=4'} 6624 engines: {node: '>=8'}
2587 dev: false
2588 6625
2589 /indicative/5.0.8: 6626 /infer-owner@1.0.4:
2590 resolution: {integrity: sha512-Do9YKlrxyvK6RpMs9AdtxmjhweKrA6hJbJejY81iD8aYjjvOU4HYkJcM2IUxC3S7ZRm/L11u67QT4OQ101N5HQ==} 6627 resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==}
6628 requiresBuild: true
2591 dev: false 6629 dev: false
6630 optional: true
2592 6631
2593 /inflation/2.0.0: 6632 /inflation@2.0.0:
2594 resolution: {integrity: sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==} 6633 resolution: {integrity: sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==}
2595 engines: {node: '>= 0.8.0'} 6634 engines: {node: '>= 0.8.0'}
2596 dev: false
2597 6635
2598 /inflight/1.0.6: 6636 /inflight@1.0.6:
2599 resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 6637 resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
2600 dependencies: 6638 dependencies:
2601 once: 1.4.0 6639 once: 1.4.0
2602 wrappy: 1.0.2 6640 wrappy: 1.0.2
2603 6641
2604 /info-symbol/0.1.0: 6642 /inherits@2.0.3:
2605 resolution: {integrity: sha512-qkc9wjLDQ+dYYZnY5uJXGNNHyZ0UOMDUnhvy0SEZGVVYmQ5s4i8cPAin2MbU6OxJgi8dfj/AnwqPx0CJE6+Lsw==}
2606 engines: {node: '>=0.10.0'}
2607 dev: false
2608
2609 /inherits/2.0.3:
2610 resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} 6643 resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==}
2611 dev: false 6644 dev: true
2612 6645
2613 /inherits/2.0.4: 6646 /inherits@2.0.4:
2614 resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 6647 resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
2615 6648
2616 /ini/1.3.8: 6649 /ini@1.3.8:
2617 resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 6650 resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
2618 dev: false
2619
2620 /inquirer/7.3.3:
2621 resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==}
2622 engines: {node: '>=8.0.0'}
2623 dependencies:
2624 ansi-escapes: 4.3.2
2625 chalk: 4.1.2
2626 cli-cursor: 3.1.0
2627 cli-width: 3.0.0
2628 external-editor: 3.1.0
2629 figures: 3.2.0
2630 lodash: 4.17.21
2631 mute-stream: 0.0.8
2632 run-async: 2.4.1
2633 rxjs: 6.6.7
2634 string-width: 4.2.3
2635 strip-ansi: 6.0.1
2636 through: 2.3.8
2637 dev: true 6651 dev: true
2638 6652
2639 /internal-slot/1.0.3: 6653 /internal-slot@1.0.5:
2640 resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} 6654 resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
2641 engines: {node: '>= 0.4'} 6655 engines: {node: '>= 0.4'}
2642 dependencies: 6656 dependencies:
2643 get-intrinsic: 1.1.3 6657 get-intrinsic: 1.2.1
2644 has: 1.0.3 6658 has: 1.0.3
2645 side-channel: 1.0.4 6659 side-channel: 1.0.4
2646 dev: true 6660 dev: true
2647 6661
2648 /interpret/2.2.0: 6662 /interpret@2.2.0:
2649 resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} 6663 resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==}
2650 engines: {node: '>= 0.10'} 6664 engines: {node: '>= 0.10'}
2651 dev: false 6665 dev: false
2652 6666
2653 /into-stream/3.1.0: 6667 /interpret@3.1.1:
2654 resolution: {integrity: sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==} 6668 resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==}
2655 engines: {node: '>=4'} 6669 engines: {node: '>=10.13.0'}
2656 dependencies: 6670 dev: true
2657 from2: 2.3.0 6671
2658 p-is-promise: 1.1.0 6672 /ip@2.0.0:
6673 resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==}
6674 requiresBuild: true
2659 dev: false 6675 dev: false
6676 optional: true
2660 6677
2661 /ipaddr.js/1.9.1: 6678 /ipaddr.js@1.9.1:
2662 resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 6679 resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
2663 engines: {node: '>= 0.10'} 6680 engines: {node: '>= 0.10'}
2664 dev: false
2665 6681
2666 /is-absolute/1.0.0: 6682 /ipaddr.js@2.1.0:
2667 resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} 6683 resolution: {integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==}
2668 engines: {node: '>=0.10.0'} 6684 engines: {node: '>= 10'}
2669 dependencies: 6685 dev: true
2670 is-relative: 1.0.0
2671 is-windows: 1.0.2
2672 dev: false
2673 6686
2674 /is-accessor-descriptor/0.1.6: 6687 /is-accessor-descriptor@0.1.6:
2675 resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==} 6688 resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==}
2676 engines: {node: '>=0.10.0'} 6689 engines: {node: '>=0.10.0'}
2677 dependencies: 6690 dependencies:
2678 kind-of: 3.2.2 6691 kind-of: 3.2.2
2679 dev: false 6692 dev: true
2680 6693
2681 /is-accessor-descriptor/1.0.0: 6694 /is-accessor-descriptor@1.0.0:
2682 resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} 6695 resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==}
2683 engines: {node: '>=0.10.0'} 6696 engines: {node: '>=0.10.0'}
2684 dependencies: 6697 dependencies:
2685 kind-of: 6.0.3 6698 kind-of: 6.0.3
2686 dev: false 6699 dev: true
2687
2688 /is-arrayish/0.3.2:
2689 resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
2690 dev: false
2691 6700
2692 /is-arrow-function/2.0.3: 6701 /is-arguments@1.1.1:
2693 resolution: {integrity: sha512-iDStzcT1FJMzx+TjCOK//uDugSe/Mif/8a+T0htydQ3qkJGvSweTZpVYz4hpJH0baloSPiAFQdA8WslAgJphvQ==} 6702 resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
2694 engines: {node: '>= 0.4'} 6703 engines: {node: '>= 0.4'}
2695 dependencies: 6704 dependencies:
2696 is-callable: 1.2.7 6705 call-bind: 1.0.2
6706 has-tostringtag: 1.0.0
2697 dev: false 6707 dev: false
2698 6708
2699 /is-bigint/1.0.4: 6709 /is-array-buffer@3.0.2:
6710 resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
6711 dependencies:
6712 call-bind: 1.0.2
6713 get-intrinsic: 1.2.1
6714 is-typed-array: 1.1.12
6715 dev: true
6716
6717 /is-arrayish@0.2.1:
6718 resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
6719 dev: true
6720
6721 /is-bigint@1.0.4:
2700 resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 6722 resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
2701 dependencies: 6723 dependencies:
2702 has-bigints: 1.0.2 6724 has-bigints: 1.0.2
2703 dev: true 6725 dev: true
2704 6726
2705 /is-boolean-object/1.1.2: 6727 /is-binary-path@2.1.0:
6728 resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
6729 engines: {node: '>=8'}
6730 dependencies:
6731 binary-extensions: 2.2.0
6732 dev: true
6733
6734 /is-boolean-object@1.1.2:
2706 resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 6735 resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
2707 engines: {node: '>= 0.4'} 6736 engines: {node: '>= 0.4'}
2708 dependencies: 6737 dependencies:
@@ -2710,145 +6739,217 @@ packages:
2710 has-tostringtag: 1.0.0 6739 has-tostringtag: 1.0.0
2711 dev: true 6740 dev: true
2712 6741
2713 /is-buffer/1.1.6: 6742 /is-buffer@1.1.6:
2714 resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} 6743 resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==}
2715 dev: false 6744 dev: true
6745
6746 /is-builtin-module@3.2.1:
6747 resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==}
6748 engines: {node: '>=6'}
6749 dependencies:
6750 builtin-modules: 3.3.0
6751 dev: true
2716 6752
2717 /is-callable/1.2.7: 6753 /is-callable@1.2.7:
2718 resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 6754 resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
2719 engines: {node: '>= 0.4'} 6755 engines: {node: '>= 0.4'}
2720 6756
2721 /is-ci/3.0.1: 6757 /is-ci@3.0.1:
2722 resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} 6758 resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==}
2723 hasBin: true 6759 hasBin: true
2724 dependencies: 6760 dependencies:
2725 ci-info: 3.7.0 6761 ci-info: 3.8.0
2726 dev: true 6762 dev: true
2727 6763
2728 /is-core-module/2.11.0: 6764 /is-core-module@2.13.0:
2729 resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} 6765 resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==}
2730 dependencies: 6766 dependencies:
2731 has: 1.0.3 6767 has: 1.0.3
2732 6768
2733 /is-data-descriptor/0.1.4: 6769 /is-data-descriptor@0.1.4:
2734 resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} 6770 resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==}
2735 engines: {node: '>=0.10.0'} 6771 engines: {node: '>=0.10.0'}
2736 dependencies: 6772 dependencies:
2737 kind-of: 3.2.2 6773 kind-of: 3.2.2
2738 dev: false 6774 dev: true
2739 6775
2740 /is-data-descriptor/1.0.0: 6776 /is-data-descriptor@1.0.0:
2741 resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} 6777 resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==}
2742 engines: {node: '>=0.10.0'} 6778 engines: {node: '>=0.10.0'}
2743 dependencies: 6779 dependencies:
2744 kind-of: 6.0.3 6780 kind-of: 6.0.3
2745 dev: false 6781 dev: true
2746 6782
2747 /is-date-object/1.0.5: 6783 /is-date-object@1.0.5:
2748 resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 6784 resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
2749 engines: {node: '>= 0.4'} 6785 engines: {node: '>= 0.4'}
2750 dependencies: 6786 dependencies:
2751 has-tostringtag: 1.0.0 6787 has-tostringtag: 1.0.0
2752 dev: true 6788 dev: true
2753 6789
2754 /is-descriptor/0.1.6: 6790 /is-descriptor@0.1.6:
2755 resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} 6791 resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==}
2756 engines: {node: '>=0.10.0'} 6792 engines: {node: '>=0.10.0'}
2757 dependencies: 6793 dependencies:
2758 is-accessor-descriptor: 0.1.6 6794 is-accessor-descriptor: 0.1.6
2759 is-data-descriptor: 0.1.4 6795 is-data-descriptor: 0.1.4
2760 kind-of: 5.1.0 6796 kind-of: 5.1.0
2761 dev: false 6797 dev: true
2762 6798
2763 /is-descriptor/1.0.2: 6799 /is-descriptor@1.0.2:
2764 resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} 6800 resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==}
2765 engines: {node: '>=0.10.0'} 6801 engines: {node: '>=0.10.0'}
2766 dependencies: 6802 dependencies:
2767 is-accessor-descriptor: 1.0.0 6803 is-accessor-descriptor: 1.0.0
2768 is-data-descriptor: 1.0.0 6804 is-data-descriptor: 1.0.0
2769 kind-of: 6.0.3 6805 kind-of: 6.0.3
2770 dev: false 6806 dev: true
2771 6807
2772 /is-extendable/0.1.1: 6808 /is-docker@2.2.1:
6809 resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
6810 engines: {node: '>=8'}
6811 hasBin: true
6812 dev: true
6813
6814 /is-docker@3.0.0:
6815 resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
6816 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
6817 hasBin: true
6818 dev: true
6819
6820 /is-extendable@0.1.1:
2773 resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} 6821 resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
2774 engines: {node: '>=0.10.0'} 6822 engines: {node: '>=0.10.0'}
2775 dev: false 6823 dev: true
2776 6824
2777 /is-extendable/1.0.1: 6825 /is-extendable@1.0.1:
2778 resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} 6826 resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==}
2779 engines: {node: '>=0.10.0'} 6827 engines: {node: '>=0.10.0'}
2780 dependencies: 6828 dependencies:
2781 is-plain-object: 2.0.4 6829 is-plain-object: 2.0.4
2782 dev: false 6830 dev: true
2783 6831
2784 /is-extglob/2.1.1: 6832 /is-extglob@1.0.0:
2785 resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 6833 resolution: {integrity: sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==}
2786 engines: {node: '>=0.10.0'} 6834 engines: {node: '>=0.10.0'}
6835 dev: true
2787 6836
2788 /is-fullwidth-code-point/1.0.0: 6837 /is-extglob@2.1.1:
2789 resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} 6838 resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
2790 engines: {node: '>=0.10.0'} 6839 engines: {node: '>=0.10.0'}
6840
6841 /is-fullwidth-code-point@3.0.0:
6842 resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
6843 engines: {node: '>=8'}
6844
6845 /is-generator-function@1.0.10:
6846 resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
6847 engines: {node: '>= 0.4'}
2791 dependencies: 6848 dependencies:
2792 number-is-nan: 1.0.1 6849 has-tostringtag: 1.0.0
2793 dev: false 6850 dev: false
2794 6851
2795 /is-fullwidth-code-point/2.0.0: 6852 /is-glob@2.0.1:
2796 resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} 6853 resolution: {integrity: sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==}
2797 engines: {node: '>=4'} 6854 engines: {node: '>=0.10.0'}
2798 dev: false 6855 dependencies:
6856 is-extglob: 1.0.0
6857 dev: true
2799 6858
2800 /is-fullwidth-code-point/3.0.0: 6859 /is-glob@3.1.0:
2801 resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 6860 resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==}
2802 engines: {node: '>=8'} 6861 engines: {node: '>=0.10.0'}
6862 dependencies:
6863 is-extglob: 2.1.1
2803 dev: true 6864 dev: true
2804 6865
2805 /is-glob/4.0.3: 6866 /is-glob@4.0.3:
2806 resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 6867 resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
2807 engines: {node: '>=0.10.0'} 6868 engines: {node: '>=0.10.0'}
2808 dependencies: 6869 dependencies:
2809 is-extglob: 2.1.1 6870 is-extglob: 2.1.1
2810 6871
2811 /is-negative-zero/2.0.2: 6872 /is-inside-container@1.0.0:
6873 resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
6874 engines: {node: '>=14.16'}
6875 hasBin: true
6876 dependencies:
6877 is-docker: 3.0.0
6878 dev: true
6879
6880 /is-invalid-path@0.1.0:
6881 resolution: {integrity: sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==}
6882 engines: {node: '>=0.10.0'}
6883 dependencies:
6884 is-glob: 2.0.1
6885 dev: true
6886
6887 /is-lambda@1.0.1:
6888 resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==}
6889 requiresBuild: true
6890 dev: false
6891 optional: true
6892
6893 /is-negative-zero@2.0.2:
2812 resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 6894 resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
2813 engines: {node: '>= 0.4'} 6895 engines: {node: '>= 0.4'}
2814 dev: true 6896 dev: true
2815 6897
2816 /is-number-object/1.0.7: 6898 /is-number-object@1.0.7:
2817 resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 6899 resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
2818 engines: {node: '>= 0.4'} 6900 engines: {node: '>= 0.4'}
2819 dependencies: 6901 dependencies:
2820 has-tostringtag: 1.0.0 6902 has-tostringtag: 1.0.0
2821 dev: true 6903 dev: true
2822 6904
2823 /is-number/3.0.0: 6905 /is-number@3.0.0:
2824 resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} 6906 resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==}
2825 engines: {node: '>=0.10.0'} 6907 engines: {node: '>=0.10.0'}
2826 dependencies: 6908 dependencies:
2827 kind-of: 3.2.2 6909 kind-of: 3.2.2
2828 dev: false 6910 dev: true
2829 6911
2830 /is-number/6.0.0: 6912 /is-number@7.0.0:
2831 resolution: {integrity: sha512-Wu1VHeILBK8KAWJUAiSZQX94GmOE45Rg6/538fKwiloUu21KncEkYGPqob2oSZ5mUT73vLGrHQjKw3KMPwfDzg==} 6913 resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
2832 engines: {node: '>=0.10.0'} 6914 engines: {node: '>=0.12.0'}
2833 dev: false
2834 6915
2835 /is-object/1.0.2: 6916 /is-path-cwd@2.2.0:
2836 resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==} 6917 resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==}
2837 dev: false 6918 engines: {node: '>=6'}
6919 dev: true
2838 6920
2839 /is-plain-obj/1.1.0: 6921 /is-path-in-cwd@2.1.0:
2840 resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} 6922 resolution: {integrity: sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==}
2841 engines: {node: '>=0.10.0'} 6923 engines: {node: '>=6'}
2842 dev: false 6924 dependencies:
6925 is-path-inside: 2.1.0
6926 dev: true
6927
6928 /is-path-inside@2.1.0:
6929 resolution: {integrity: sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==}
6930 engines: {node: '>=6'}
6931 dependencies:
6932 path-is-inside: 1.0.2
6933 dev: true
6934
6935 /is-path-inside@3.0.3:
6936 resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
6937 engines: {node: '>=8'}
6938 dev: true
6939
6940 /is-plain-obj@3.0.0:
6941 resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==}
6942 engines: {node: '>=10'}
6943 dev: true
2843 6944
2844 /is-plain-object/2.0.4: 6945 /is-plain-object@2.0.4:
2845 resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} 6946 resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
2846 engines: {node: '>=0.10.0'} 6947 engines: {node: '>=0.10.0'}
2847 dependencies: 6948 dependencies:
2848 isobject: 3.0.1 6949 isobject: 3.0.1
2849 dev: false 6950 dev: true
2850 6951
2851 /is-regex/1.1.4: 6952 /is-regex@1.1.4:
2852 resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 6953 resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
2853 engines: {node: '>= 0.4'} 6954 engines: {node: '>= 0.4'}
2854 dependencies: 6955 dependencies:
@@ -2856,101 +6957,185 @@ packages:
2856 has-tostringtag: 1.0.0 6957 has-tostringtag: 1.0.0
2857 dev: true 6958 dev: true
2858 6959
2859 /is-relative/1.0.0: 6960 /is-shared-array-buffer@1.0.2:
2860 resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==}
2861 engines: {node: '>=0.10.0'}
2862 dependencies:
2863 is-unc-path: 1.0.0
2864 dev: false
2865
2866 /is-retry-allowed/1.2.0:
2867 resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==}
2868 engines: {node: '>=0.10.0'}
2869 dev: false
2870
2871 /is-shared-array-buffer/1.0.2:
2872 resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 6961 resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
2873 dependencies: 6962 dependencies:
2874 call-bind: 1.0.2 6963 call-bind: 1.0.2
2875 dev: true 6964 dev: true
2876 6965
2877 /is-stream/2.0.1: 6966 /is-stream@2.0.1:
2878 resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 6967 resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
2879 engines: {node: '>=8'} 6968 engines: {node: '>=8'}
2880 dev: false 6969 dev: true
2881 6970
2882 /is-string/1.0.7: 6971 /is-stream@3.0.0:
6972 resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
6973 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
6974 dev: true
6975
6976 /is-string@1.0.7:
2883 resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 6977 resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
2884 engines: {node: '>= 0.4'} 6978 engines: {node: '>= 0.4'}
2885 dependencies: 6979 dependencies:
2886 has-tostringtag: 1.0.0 6980 has-tostringtag: 1.0.0
2887 dev: true 6981 dev: true
2888 6982
2889 /is-symbol/1.0.4: 6983 /is-symbol@1.0.4:
2890 resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 6984 resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
2891 engines: {node: '>= 0.4'} 6985 engines: {node: '>= 0.4'}
2892 dependencies: 6986 dependencies:
2893 has-symbols: 1.0.3 6987 has-symbols: 1.0.3
2894 dev: true 6988 dev: true
2895 6989
2896 /is-typedarray/1.0.0: 6990 /is-typed-array@1.1.12:
2897 resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} 6991 resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==}
2898 dev: false 6992 engines: {node: '>= 0.4'}
6993 dependencies:
6994 which-typed-array: 1.1.11
2899 6995
2900 /is-unc-path/1.0.0: 6996 /is-valid-path@0.1.1:
2901 resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} 6997 resolution: {integrity: sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==}
2902 engines: {node: '>=0.10.0'} 6998 engines: {node: '>=0.10.0'}
2903 dependencies: 6999 dependencies:
2904 unc-path-regex: 0.1.2 7000 is-invalid-path: 0.1.0
2905 dev: false 7001 dev: true
2906 7002
2907 /is-weakref/1.0.2: 7003 /is-weakref@1.0.2:
2908 resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 7004 resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
2909 dependencies: 7005 dependencies:
2910 call-bind: 1.0.2 7006 call-bind: 1.0.2
2911 dev: true 7007 dev: true
2912 7008
2913 /is-windows/1.0.2: 7009 /is-windows@1.0.2:
2914 resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} 7010 resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
2915 engines: {node: '>=0.10.0'} 7011 engines: {node: '>=0.10.0'}
2916 dev: false 7012 dev: true
7013
7014 /is-wsl@2.2.0:
7015 resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
7016 engines: {node: '>=8'}
7017 dependencies:
7018 is-docker: 2.2.1
7019 dev: true
2917 7020
2918 /isarray/1.0.0: 7021 /isarray@1.0.0:
2919 resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} 7022 resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
2920 dev: false
2921 7023
2922 /isexe/2.0.0: 7024 /isarray@2.0.5:
7025 resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
7026 dev: true
7027
7028 /isexe@2.0.0:
2923 resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 7029 resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
2924 7030
2925 /isobject/2.1.0: 7031 /isobject@2.1.0:
2926 resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} 7032 resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==}
2927 engines: {node: '>=0.10.0'} 7033 engines: {node: '>=0.10.0'}
2928 dependencies: 7034 dependencies:
2929 isarray: 1.0.0 7035 isarray: 1.0.0
2930 dev: false 7036 dev: true
2931 7037
2932 /isobject/3.0.1: 7038 /isobject@3.0.1:
2933 resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} 7039 resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
2934 engines: {node: '>=0.10.0'} 7040 engines: {node: '>=0.10.0'}
7041 dev: true
7042
7043 /jest-diff@25.5.0:
7044 resolution: {integrity: sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==}
7045 engines: {node: '>= 8.3'}
7046 dependencies:
7047 chalk: 3.0.0
7048 diff-sequences: 25.2.6
7049 jest-get-type: 25.2.6
7050 pretty-format: 25.5.0
7051 dev: true
7052
7053 /jest-diff@29.7.0:
7054 resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==}
7055 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7056 dependencies:
7057 chalk: 4.1.2
7058 diff-sequences: 29.6.3
7059 jest-get-type: 29.6.3
7060 pretty-format: 29.7.0
7061 dev: true
7062
7063 /jest-get-type@25.2.6:
7064 resolution: {integrity: sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==}
7065 engines: {node: '>= 8.3'}
7066 dev: true
7067
7068 /jest-get-type@29.6.3:
7069 resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==}
7070 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7071 dev: true
7072
7073 /jest-matcher-utils@25.5.0:
7074 resolution: {integrity: sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw==}
7075 engines: {node: '>= 8.3'}
7076 dependencies:
7077 chalk: 3.0.0
7078 jest-diff: 25.5.0
7079 jest-get-type: 25.2.6
7080 pretty-format: 25.5.0
7081 dev: true
7082
7083 /jest-util@29.7.0:
7084 resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==}
7085 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7086 dependencies:
7087 '@jest/types': 29.6.3
7088 '@types/node': 20.7.2
7089 chalk: 4.1.2
7090 ci-info: 3.8.0
7091 graceful-fs: 4.2.11
7092 picomatch: 2.3.1
7093 dev: true
7094
7095 /jest-worker@27.5.1:
7096 resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
7097 engines: {node: '>= 10.13.0'}
7098 dependencies:
7099 '@types/node': 20.7.2
7100 merge-stream: 2.0.0
7101 supports-color: 8.1.1
7102
7103 /jest-worker@29.7.0:
7104 resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
7105 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7106 dependencies:
7107 '@types/node': 20.7.2
7108 jest-util: 29.7.0
7109 merge-stream: 2.0.0
7110 supports-color: 8.1.1
7111 dev: true
7112
7113 /jmespath@0.16.0:
7114 resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==}
7115 engines: {node: '>= 0.6.0'}
2935 dev: false 7116 dev: false
2936 7117
2937 /isstream/0.1.2: 7118 /jose@4.14.6:
2938 resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} 7119 resolution: {integrity: sha512-EqJPEUlZD0/CSUMubKtMaYUOtWe91tZXTWMJZoKSbLk+KtdhNdcvppH8lA9XwVu2V4Ailvsj0GBZJ2ZwDjfesQ==}
2939 dev: false 7120 dev: false
2940 7121
2941 /isurl/1.0.0: 7122 /joycon@3.1.1:
2942 resolution: {integrity: sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==} 7123 resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
2943 engines: {node: '>= 4'} 7124 engines: {node: '>=10'}
2944 dependencies: 7125
2945 has-to-string-tag-x: 1.4.1 7126 /js-stringify@1.0.2:
2946 is-object: 1.0.2 7127 resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==}
2947 dev: false 7128 dev: false
2948 7129
2949 /js-tokens/4.0.0: 7130 /js-tokens@3.0.2:
7131 resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==}
7132 dev: true
7133
7134 /js-tokens@4.0.0:
2950 resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 7135 resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
2951 dev: true 7136 dev: true
2952 7137
2953 /js-yaml/3.14.1: 7138 /js-yaml@3.14.1:
2954 resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 7139 resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
2955 hasBin: true 7140 hasBin: true
2956 dependencies: 7141 dependencies:
@@ -2958,164 +7143,162 @@ packages:
2958 esprima: 4.0.1 7143 esprima: 4.0.1
2959 dev: true 7144 dev: true
2960 7145
2961 /jsbn/0.1.1: 7146 /js-yaml@4.1.0:
2962 resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} 7147 resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
2963 dev: false 7148 hasBin: true
7149 dependencies:
7150 argparse: 2.0.1
7151 dev: true
2964 7152
2965 /json-buffer/3.0.0: 7153 /jsesc@0.5.0:
2966 resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} 7154 resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==}
2967 dev: false 7155 hasBin: true
7156 dev: true
2968 7157
2969 /json-fixer/1.6.15: 7158 /jsesc@2.5.2:
2970 resolution: {integrity: sha512-TuDuZ5KrgyjoCIppdPXBMqiGfota55+odM+j2cQ5rt/XKyKmqGB3Whz1F8SN8+60yYGy/Nu5lbRZ+rx8kBIvBw==} 7159 resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
2971 engines: {node: '>=10'} 7160 engines: {node: '>=4'}
7161 hasBin: true
7162 dev: true
7163
7164 /jsesc@3.0.2:
7165 resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
7166 engines: {node: '>=6'}
7167 hasBin: true
7168 dev: true
7169
7170 /json-buffer@3.0.1:
7171 resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
7172
7173 /json-parse-even-better-errors@2.3.1:
7174 resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
7175 dev: true
7176
7177 /json-schema-deref-sync@0.14.0:
7178 resolution: {integrity: sha512-yGR1xmhdiD6R0MSrwWcFxQzAj5b3i5Gb/mt5tvQKgFMMeNe0KZYNEN/jWr7G+xn39Azqgcvk4ZKMs8dQl8e4wA==}
7179 engines: {node: '>=6.0.0'}
2972 dependencies: 7180 dependencies:
2973 '@babel/runtime': 7.20.6 7181 clone: 2.1.2
2974 chalk: 4.1.2 7182 dag-map: 1.0.2
2975 pegjs: 0.10.0 7183 is-valid-path: 0.1.1
7184 lodash: 4.17.21
7185 md5: 2.2.1
7186 memory-cache: 0.2.0
7187 traverse: 0.6.7
7188 valid-url: 1.0.9
2976 dev: true 7189 dev: true
2977 7190
2978 /json-schema-traverse/0.4.1: 7191 /json-schema-traverse@0.4.1:
2979 resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 7192 resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
7193 dev: true
2980 7194
2981 /json-schema-traverse/1.0.0: 7195 /json-schema-traverse@1.0.0:
2982 resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 7196 resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
2983 dev: true 7197 dev: true
2984 7198
2985 /json-schema/0.4.0: 7199 /json-stable-stringify-without-jsonify@1.0.1:
2986 resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==}
2987 dev: false
2988
2989 /json-stable-stringify-without-jsonify/1.0.1:
2990 resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 7200 resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
2991 dev: true 7201 dev: true
2992 7202
2993 /json-stringify-safe/5.0.1: 7203 /json5@1.0.2:
2994 resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} 7204 resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
2995 dev: false
2996
2997 /json5/1.0.1:
2998 resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==}
2999 hasBin: true 7205 hasBin: true
3000 dependencies: 7206 dependencies:
3001 minimist: 1.2.7 7207 minimist: 1.2.8
7208 dev: true
7209
7210 /json5@2.2.3:
7211 resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
7212 engines: {node: '>=6'}
7213 hasBin: true
3002 dev: true 7214 dev: true
3003 7215
3004 /jsonfile/4.0.0: 7216 /jsonfile@4.0.0:
3005 resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} 7217 resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
3006 optionalDependencies: 7218 optionalDependencies:
3007 graceful-fs: 4.2.10 7219 graceful-fs: 4.2.11
3008 dev: false 7220 dev: true
3009 7221
3010 /jsonfile/6.1.0: 7222 /jsonfile@6.1.0:
3011 resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} 7223 resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
3012 dependencies: 7224 dependencies:
3013 universalify: 2.0.0 7225 universalify: 2.0.0
3014 optionalDependencies: 7226 optionalDependencies:
3015 graceful-fs: 4.2.10 7227 graceful-fs: 4.2.11
3016 dev: false
3017
3018 /jsonwebtoken/8.5.1:
3019 resolution: {integrity: sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==}
3020 engines: {node: '>=4', npm: '>=1.4.28'}
3021 dependencies:
3022 jws: 3.2.2
3023 lodash.includes: 4.3.0
3024 lodash.isboolean: 3.0.3
3025 lodash.isinteger: 4.0.4
3026 lodash.isnumber: 3.0.3
3027 lodash.isplainobject: 4.0.6
3028 lodash.isstring: 4.0.1
3029 lodash.once: 4.1.1
3030 ms: 2.1.3
3031 semver: 5.7.1
3032 dev: false
3033 7228
3034 /jsprim/1.4.2: 7229 /junk@3.1.0:
3035 resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} 7230 resolution: {integrity: sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==}
3036 engines: {node: '>=0.6.0'} 7231 engines: {node: '>=8'}
3037 dependencies: 7232 dev: true
3038 assert-plus: 1.0.0
3039 extsprintf: 1.3.0
3040 json-schema: 0.4.0
3041 verror: 1.10.0
3042 dev: false
3043
3044 /jwa/1.4.1:
3045 resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==}
3046 dependencies:
3047 buffer-equal-constant-time: 1.0.1
3048 ecdsa-sig-formatter: 1.0.11
3049 safe-buffer: 5.2.1
3050 dev: false
3051
3052 /jws/3.2.2:
3053 resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==}
3054 dependencies:
3055 jwa: 1.4.1
3056 safe-buffer: 5.2.1
3057 dev: false
3058 7233
3059 /keyv/3.0.0: 7234 /keyv@4.5.3:
3060 resolution: {integrity: sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==} 7235 resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==}
3061 dependencies: 7236 dependencies:
3062 json-buffer: 3.0.0 7237 json-buffer: 3.0.1
3063 dev: false
3064 7238
3065 /kind-of/2.0.1: 7239 /kind-of@3.2.2:
3066 resolution: {integrity: sha512-0u8i1NZ/mg0b+W3MGGw5I7+6Eib2nx72S/QvXa0hYjEkjTknYmEYQJwGu3mLC0BrhtJjtQafTkyRUQ75Kx0LVg==}
3067 engines: {node: '>=0.10.0'}
3068 dependencies:
3069 is-buffer: 1.1.6
3070 dev: false
3071
3072 /kind-of/3.2.2:
3073 resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} 7240 resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==}
3074 engines: {node: '>=0.10.0'} 7241 engines: {node: '>=0.10.0'}
3075 dependencies: 7242 dependencies:
3076 is-buffer: 1.1.6 7243 is-buffer: 1.1.6
3077 dev: false 7244 dev: true
3078 7245
3079 /kind-of/4.0.0: 7246 /kind-of@4.0.0:
3080 resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} 7247 resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==}
3081 engines: {node: '>=0.10.0'} 7248 engines: {node: '>=0.10.0'}
3082 dependencies: 7249 dependencies:
3083 is-buffer: 1.1.6 7250 is-buffer: 1.1.6
3084 dev: false 7251 dev: true
3085 7252
3086 /kind-of/5.1.0: 7253 /kind-of@5.1.0:
3087 resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} 7254 resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==}
3088 engines: {node: '>=0.10.0'} 7255 engines: {node: '>=0.10.0'}
3089 dev: false 7256 dev: true
3090 7257
3091 /kind-of/6.0.3: 7258 /kind-of@6.0.3:
3092 resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} 7259 resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
3093 engines: {node: '>=0.10.0'} 7260 engines: {node: '>=0.10.0'}
3094 dev: false
3095 7261
3096 /kleur/2.0.2: 7262 /kleur@3.0.3:
3097 resolution: {integrity: sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ==} 7263 resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
3098 engines: {node: '>=6'} 7264 engines: {node: '>=6'}
3099 deprecated: Please upgrade to kleur@3 or migrate to 'ansi-colors' if you prefer the old syntax. Visit <https://github.com/lukeed/kleur/releases/tag/v3.0.0\> for migration path(s). 7265 dev: true
3100 dev: false
3101 7266
3102 /kleur/4.1.5: 7267 /kleur@4.1.5:
3103 resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 7268 resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
3104 engines: {node: '>=6'} 7269 engines: {node: '>=6'}
7270
7271 /knex-dynamic-connection@3.1.0(mysql@2.18.1)(pg@8.11.1)(sqlite3@5.1.6):
7272 resolution: {integrity: sha512-owRQ9cHBtaBUfYBs/dyt1s/Y0PYwUE66apnfYpzzMTkN2tNlzC1s7owqDJleHOelhJERZgd4jd1BZgcdfXLEhQ==}
7273 engines: {node: '>=14.0.0'}
7274 dependencies:
7275 debug: 4.3.4
7276 knex: 2.5.1(mysql@2.18.1)(pg@8.11.1)(sqlite3@5.1.6)
7277 transitivePeerDependencies:
7278 - better-sqlite3
7279 - mysql
7280 - mysql2
7281 - pg
7282 - pg-native
7283 - sqlite3
7284 - supports-color
7285 - tedious
3105 dev: false 7286 dev: false
3106 7287
3107 /knex/0.21.21_siu2g6ofdcuoryphtpy44uq2je: 7288 /knex@2.5.1(mysql@2.18.1)(pg@8.11.1)(sqlite3@5.1.6):
3108 resolution: {integrity: sha512-cjw5qO1EzVKjbywcVa61IQJMLt7PfYBRI/2NwCA/B9beXgbw652wDNLz+JM+UKKNsfwprq0ugYqBYc9q4JN36A==} 7289 resolution: {integrity: sha512-z78DgGKUr4SE/6cm7ku+jHvFT0X97aERh/f0MUKAKgFnwCYBEW4TFBqtHWFYiJFid7fMrtpZ/gxJthvz5mEByA==}
3109 engines: {node: '>=10'} 7290 engines: {node: '>=12'}
3110 hasBin: true 7291 hasBin: true
3111 peerDependencies: 7292 peerDependencies:
3112 mssql: ^6.2.1 7293 better-sqlite3: '*'
3113 mysql: ^2.18.1 7294 mysql: '*'
3114 mysql2: ^2.1.0 7295 mysql2: '*'
3115 pg: ^8.3.0 7296 pg: '*'
3116 sqlite3: ^5.0.0 7297 pg-native: '*'
7298 sqlite3: '*'
7299 tedious: '*'
3117 peerDependenciesMeta: 7300 peerDependenciesMeta:
3118 mssql: 7301 better-sqlite3:
3119 optional: true 7302 optional: true
3120 mysql: 7303 mysql:
3121 optional: true 7304 optional: true
@@ -3123,50 +7306,46 @@ packages:
3123 optional: true 7306 optional: true
3124 pg: 7307 pg:
3125 optional: true 7308 optional: true
7309 pg-native:
7310 optional: true
3126 sqlite3: 7311 sqlite3:
3127 optional: true 7312 optional: true
7313 tedious:
7314 optional: true
3128 dependencies: 7315 dependencies:
3129 colorette: 1.2.1 7316 colorette: 2.0.19
3130 commander: 6.2.1 7317 commander: 10.0.1
3131 debug: 4.3.1 7318 debug: 4.3.4
7319 escalade: 3.1.1
3132 esm: 3.2.25 7320 esm: 3.2.25
3133 getopts: 2.2.5 7321 get-package-type: 0.1.0
7322 getopts: 2.3.0
3134 interpret: 2.2.0 7323 interpret: 2.2.0
3135 liftoff: 3.1.0
3136 lodash: 4.17.21 7324 lodash: 4.17.21
3137 mysql: 2.18.1 7325 mysql: 2.18.1
3138 pg: 8.8.0 7326 pg: 8.11.1
3139 pg-connection-string: 2.4.0 7327 pg-connection-string: 2.6.1
3140 sqlite3: 4.2.0 7328 rechoir: 0.8.0
7329 resolve-from: 5.0.0
7330 sqlite3: 5.1.6
3141 tarn: 3.0.2 7331 tarn: 3.0.2
3142 tildify: 2.0.0 7332 tildify: 2.0.0
3143 v8flags: 3.2.0
3144 transitivePeerDependencies: 7333 transitivePeerDependencies:
3145 - supports-color 7334 - supports-color
3146 dev: false 7335 dev: false
3147 7336
3148 /koalas/1.0.2: 7337 /launch-editor@2.6.0:
3149 resolution: {integrity: sha512-RYhBbYaTTTHId3l6fnMZc3eGQNW6FVCqMG6AMwA5I1Mafr6AflaXeoi6x3xQuATRotGYRLk6+1ELZH4dstFNOA==} 7338 resolution: {integrity: sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==}
3150 engines: {node: '>=0.10.0'}
3151 dev: false
3152
3153 /kuler/2.0.0:
3154 resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==}
3155 dev: false
3156
3157 /lazy-cache/0.2.7:
3158 resolution: {integrity: sha512-gkX52wvU/R8DVMMt78ATVPFMJqfW8FPz1GZ1sVHBVQHmu/WvhIWE4cE1GBzhJNFicDeYhnwp6Rl35BcAIM3YOQ==}
3159 engines: {node: '>=0.10.0'}
3160 dev: false
3161
3162 /lazy-cache/2.0.2:
3163 resolution: {integrity: sha512-7vp2Acd2+Kz4XkzxGxaB1FWOi8KjWIWsgdfD5MCb86DWvlLqhRPM+d6Pro3iNEL5VT9mstz5hKAlcd+QR6H3aA==}
3164 engines: {node: '>=0.10.0'}
3165 dependencies: 7339 dependencies:
3166 set-getter: 0.1.1 7340 picocolors: 1.0.0
3167 dev: false 7341 shell-quote: 1.8.1
7342 dev: true
3168 7343
3169 /levn/0.4.1: 7344 /leven@3.1.0:
7345 resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
7346 engines: {node: '>=6'}
7347
7348 /levn@0.4.1:
3170 resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 7349 resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
3171 engines: {node: '>= 0.8.0'} 7350 engines: {node: '>= 0.8.0'}
3172 dependencies: 7351 dependencies:
@@ -3174,162 +7353,279 @@ packages:
3174 type-check: 0.4.0 7353 type-check: 0.4.0
3175 dev: true 7354 dev: true
3176 7355
3177 /liftoff/3.1.0: 7356 /lilconfig@2.1.0:
3178 resolution: {integrity: sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==} 7357 resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
3179 engines: {node: '>= 0.8'} 7358 engines: {node: '>=10'}
7359 dev: true
7360
7361 /lines-and-columns@1.2.4:
7362 resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
7363 dev: true
7364
7365 /listify@1.0.3:
7366 resolution: {integrity: sha512-083swF7iH7bx8666zdzBColpgEuy46HjN3r1isD4zV6Ix7FuHfb/2/WVnl4CH8hjuoWeFF7P5KkKNXUnJCFEJg==}
7367 engines: {node: '>= 0.4'}
7368 dev: true
7369
7370 /loader-runner@4.3.0:
7371 resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==}
7372 engines: {node: '>=6.11.5'}
7373 dev: true
7374
7375 /loader-utils@2.0.4:
7376 resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==}
7377 engines: {node: '>=8.9.0'}
3180 dependencies: 7378 dependencies:
3181 extend: 3.0.2 7379 big.js: 5.2.2
3182 findup-sync: 3.0.0 7380 emojis-list: 3.0.0
3183 fined: 1.2.0 7381 json5: 2.2.3
3184 flagged-respawn: 1.0.1 7382 dev: true
3185 is-plain-object: 2.0.4
3186 object.map: 1.0.1
3187 rechoir: 0.6.2
3188 resolve: 1.22.1
3189 transitivePeerDependencies:
3190 - supports-color
3191 dev: false
3192 7383
3193 /locate-path/5.0.0: 7384 /locate-path@3.0.0:
7385 resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==}
7386 engines: {node: '>=6'}
7387 dependencies:
7388 p-locate: 3.0.0
7389 path-exists: 3.0.0
7390 dev: true
7391
7392 /locate-path@5.0.0:
3194 resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 7393 resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
3195 engines: {node: '>=8'} 7394 engines: {node: '>=8'}
3196 dependencies: 7395 dependencies:
3197 p-locate: 4.1.0 7396 p-locate: 4.1.0
3198 dev: true 7397 dev: true
3199 7398
3200 /lodash.includes/4.3.0: 7399 /locate-path@6.0.0:
3201 resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} 7400 resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
3202 dev: false 7401 engines: {node: '>=10'}
7402 dependencies:
7403 p-locate: 5.0.0
7404 dev: true
3203 7405
3204 /lodash.isboolean/3.0.3: 7406 /lodash.debounce@4.0.8:
3205 resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} 7407 resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
3206 dev: false 7408 dev: true
3207 7409
3208 /lodash.isinteger/4.0.4: 7410 /lodash.flatten@4.4.0:
3209 resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} 7411 resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==}
3210 dev: false 7412 dev: true
3211 7413
3212 /lodash.isnumber/3.0.3: 7414 /lodash.get@4.4.2:
3213 resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} 7415 resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==}
3214 dev: false 7416 dev: true
3215 7417
3216 /lodash.isplainobject/4.0.6: 7418 /lodash.isequal@4.5.0:
3217 resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} 7419 resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
3218 dev: false 7420 dev: true
3219 7421
3220 /lodash.isstring/4.0.1: 7422 /lodash.memoize@4.1.2:
3221 resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} 7423 resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
3222 dev: false 7424 dev: true
3223 7425
3224 /lodash.merge/4.6.2: 7426 /lodash.merge@4.6.2:
3225 resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 7427 resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
3226 dev: true 7428 dev: true
3227 7429
3228 /lodash.once/4.1.1: 7430 /lodash.set@4.3.2:
3229 resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} 7431 resolution: {integrity: sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==}
3230 dev: false 7432 dev: true
3231 7433
3232 /lodash.truncate/4.4.2: 7434 /lodash.uniq@4.5.0:
3233 resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} 7435 resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==}
3234 dev: true 7436 dev: true
3235 7437
3236 /lodash/4.17.21: 7438 /lodash@4.17.21:
3237 resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 7439 resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
3238 7440
3239 /log-ok/0.1.1: 7441 /log-update@4.0.0:
3240 resolution: {integrity: sha512-cc8VrkS6C+9TFuYAwuHpshrcrGRAv7d0tUJ0GdM72ZBlKXtlgjUZF84O+OhQUdiVHoF7U/nVxwpjOdwUJ8d3Vg==} 7442 resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==}
3241 engines: {node: '>=0.10.0'} 7443 engines: {node: '>=10'}
3242 dependencies: 7444 dependencies:
3243 ansi-green: 0.1.1 7445 ansi-escapes: 4.3.2
3244 success-symbol: 0.1.0 7446 cli-cursor: 3.1.0
3245 dev: false 7447 slice-ansi: 4.0.0
7448 wrap-ansi: 6.2.0
3246 7449
3247 /log-utils/0.2.1: 7450 /loupe@2.3.6:
3248 resolution: {integrity: sha512-udyegKoMz9eGfpKAX//Khy7sVAZ8b1F7oLDnepZv/1/y8xTvsyPgqQrM94eG8V0vcc2BieYI2kVW4+aa6m+8Qw==} 7451 resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==}
3249 engines: {node: '>=0.10.0'}
3250 dependencies: 7452 dependencies:
3251 ansi-colors: 0.2.0 7453 get-func-name: 2.0.2
3252 error-symbol: 0.1.0 7454 dev: true
3253 info-symbol: 0.1.0
3254 log-ok: 0.1.1
3255 success-symbol: 0.1.0
3256 time-stamp: 1.1.0
3257 warning-symbol: 0.1.0
3258 dev: false
3259 7455
3260 /logform/2.4.2: 7456 /lower-case@2.0.2:
3261 resolution: {integrity: sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==} 7457 resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
3262 dependencies: 7458 dependencies:
3263 '@colors/colors': 1.5.0 7459 tslib: 2.6.2
3264 fecha: 4.2.3
3265 ms: 2.1.3
3266 safe-stable-stringify: 2.4.1
3267 triple-beam: 1.3.0
3268 dev: false
3269 7460
3270 /lowercase-keys/1.0.0: 7461 /lowercase-keys@2.0.0:
3271 resolution: {integrity: sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==} 7462 resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==}
3272 engines: {node: '>=0.10.0'} 7463 engines: {node: '>=8'}
3273 dev: false
3274
3275 /lowercase-keys/1.0.1:
3276 resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==}
3277 engines: {node: '>=0.10.0'}
3278 dev: false 7464 dev: false
3279 7465
3280 /lru-cache/4.1.5: 7466 /lru-cache@4.1.5:
3281 resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} 7467 resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==}
3282 dependencies: 7468 dependencies:
3283 pseudomap: 1.0.2 7469 pseudomap: 1.0.2
3284 yallist: 2.1.2 7470 yallist: 2.1.2
3285 dev: false 7471 dev: true
7472
7473 /lru-cache@5.1.1:
7474 resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
7475 dependencies:
7476 yallist: 3.1.1
7477 dev: true
3286 7478
3287 /lru-cache/6.0.0: 7479 /lru-cache@6.0.0:
3288 resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 7480 resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
3289 engines: {node: '>=10'} 7481 engines: {node: '>=10'}
3290 dependencies: 7482 dependencies:
3291 yallist: 4.0.0 7483 yallist: 4.0.0
3292 7484
3293 /lru_map/0.3.3: 7485 /luxon@3.3.0:
3294 resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} 7486 resolution: {integrity: sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==}
7487 engines: {node: '>=12'}
3295 dev: false 7488 dev: false
3296 7489
3297 /macroable/1.0.0: 7490 /luxon@3.4.3:
3298 resolution: {integrity: sha512-nsPllAMlOY4q0PpqybUtfvSeLtAC6/5nt1LIPtjp3vYloMeMUSzaLVJadNP57+ZysJEb9Q9HBzqqM69zupKwfg==} 7491 resolution: {integrity: sha512-tFWBiv3h7z+T/tDaoxA8rqTxy1CHV6gHS//QdaH4pulbq/JuBSGgQspQQqcgnwdAx6pNI7cmvz5Sv/addzHmUg==}
7492 engines: {node: '>=12'}
7493
7494 /macroable@7.0.2:
7495 resolution: {integrity: sha512-QS9p+Q20YBxpE0dJBnF6CPURP7p1GUsxnhTxTWH5nG3A1F5w8Rg3T4Xyh5UlrFSbHp88oOciVP/0agsNLhkHdQ==}
7496
7497 /make-dir@3.1.0:
7498 resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
7499 engines: {node: '>=8'}
3299 dependencies: 7500 dependencies:
3300 node-exceptions: 2.0.2 7501 semver: 6.3.1
3301 dev: false
3302 7502
3303 /make-iterator/1.0.1: 7503 /make-fetch-happen@9.1.0:
3304 resolution: {integrity: sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==} 7504 resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==}
3305 engines: {node: '>=0.10.0'} 7505 engines: {node: '>= 10'}
7506 requiresBuild: true
3306 dependencies: 7507 dependencies:
3307 kind-of: 6.0.3 7508 agentkeepalive: 4.5.0
7509 cacache: 15.3.0
7510 http-cache-semantics: 4.1.1
7511 http-proxy-agent: 4.0.1
7512 https-proxy-agent: 5.0.1
7513 is-lambda: 1.0.1
7514 lru-cache: 6.0.0
7515 minipass: 3.3.6
7516 minipass-collect: 1.0.2
7517 minipass-fetch: 1.4.1
7518 minipass-flush: 1.0.5
7519 minipass-pipeline: 1.2.4
7520 negotiator: 0.6.3
7521 promise-retry: 2.0.1
7522 socks-proxy-agent: 6.2.1
7523 ssri: 8.0.1
7524 transitivePeerDependencies:
7525 - bluebird
7526 - supports-color
3308 dev: false 7527 dev: false
7528 optional: true
7529
7530 /map-age-cleaner@0.1.3:
7531 resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==}
7532 engines: {node: '>=6'}
7533 dependencies:
7534 p-defer: 1.0.0
7535 dev: true
3309 7536
3310 /map-cache/0.2.2: 7537 /map-cache@0.2.2:
3311 resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} 7538 resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==}
3312 engines: {node: '>=0.10.0'} 7539 engines: {node: '>=0.10.0'}
3313 dev: false 7540 dev: true
3314 7541
3315 /map-visit/1.0.0: 7542 /map-visit@1.0.0:
3316 resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} 7543 resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==}
3317 engines: {node: '>=0.10.0'} 7544 engines: {node: '>=0.10.0'}
3318 dependencies: 7545 dependencies:
3319 object-visit: 1.0.1 7546 object-visit: 1.0.1
3320 dev: false 7547 dev: true
3321 7548
3322 /media-typer/0.3.0: 7549 /marked-terminal@5.2.0(marked@4.3.0):
7550 resolution: {integrity: sha512-Piv6yNwAQXGFjZSaiNljyNFw7jKDdGrw70FSbtxEyldLsyeuV5ZHm/1wW++kWbrOF1VPnUgYOhB2oLL0ZpnekA==}
7551 engines: {node: '>=14.13.1 || >=16.0.0'}
7552 peerDependencies:
7553 marked: ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0
7554 dependencies:
7555 ansi-escapes: 6.2.0
7556 cardinal: 2.1.1
7557 chalk: 5.3.0
7558 cli-table3: 0.6.3
7559 marked: 4.3.0
7560 node-emoji: 1.11.0
7561 supports-hyperlinks: 2.3.0
7562 dev: true
7563
7564 /marked@4.3.0:
7565 resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==}
7566 engines: {node: '>= 12'}
7567 hasBin: true
7568 dev: true
7569
7570 /md5@2.2.1:
7571 resolution: {integrity: sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==}
7572 dependencies:
7573 charenc: 0.0.2
7574 crypt: 0.0.2
7575 is-buffer: 1.1.6
7576 dev: true
7577
7578 /mdn-data@2.0.28:
7579 resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==}
7580 dev: true
7581
7582 /mdn-data@2.0.30:
7583 resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
7584 dev: true
7585
7586 /media-typer@0.3.0:
3323 resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} 7587 resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
3324 engines: {node: '>= 0.6'} 7588 engines: {node: '>= 0.6'}
3325 dev: false
3326 7589
3327 /media-typer/1.1.0: 7590 /media-typer@1.1.0:
3328 resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} 7591 resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
3329 engines: {node: '>= 0.8'} 7592 engines: {node: '>= 0.8'}
3330 dev: false
3331 7593
3332 /micromatch/3.1.10: 7594 /mem@8.1.1:
7595 resolution: {integrity: sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==}
7596 engines: {node: '>=10'}
7597 dependencies:
7598 map-age-cleaner: 0.1.3
7599 mimic-fn: 3.1.0
7600 dev: true
7601
7602 /memfs@3.5.3:
7603 resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==}
7604 engines: {node: '>= 4.0.0'}
7605 dependencies:
7606 fs-monkey: 1.0.5
7607
7608 /memory-cache@0.2.0:
7609 resolution: {integrity: sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==}
7610 dev: true
7611
7612 /merge-descriptors@1.0.1:
7613 resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==}
7614 dev: true
7615
7616 /merge-stream@2.0.0:
7617 resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
7618
7619 /merge2@1.4.1:
7620 resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
7621 engines: {node: '>= 8'}
7622
7623 /methods@1.1.2:
7624 resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
7625 engines: {node: '>= 0.6'}
7626 dev: true
7627
7628 /micromatch@3.1.10:
3333 resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} 7629 resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==}
3334 engines: {node: '>=0.10.0'} 7630 engines: {node: '>=0.10.0'}
3335 dependencies: 7631 dependencies:
@@ -3348,121 +7644,256 @@ packages:
3348 to-regex: 3.0.2 7644 to-regex: 3.0.2
3349 transitivePeerDependencies: 7645 transitivePeerDependencies:
3350 - supports-color 7646 - supports-color
3351 dev: false 7647 dev: true
3352 7648
3353 /mime-db/1.52.0: 7649 /micromatch@4.0.5:
7650 resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
7651 engines: {node: '>=8.6'}
7652 dependencies:
7653 braces: 3.0.2
7654 picomatch: 2.3.1
7655
7656 /mime-db@1.52.0:
3354 resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 7657 resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
3355 engines: {node: '>= 0.6'} 7658 engines: {node: '>= 0.6'}
7659
7660 /mime-kind@3.0.0:
7661 resolution: {integrity: sha512-sx9lClVP7GXY2mO3aVDWTQLhfvAdDvNhGi3o3g7+ae3aKaoybeGbEIlnreoRKjrbDpvlPltlkIryxOtatojeXQ==}
7662 engines: {node: '>=8.3.0'}
7663 dependencies:
7664 file-type: 12.4.2
7665 mime-types: 2.1.35
3356 dev: false 7666 dev: false
3357 7667
3358 /mime-types/2.1.35: 7668 /mime-types@2.1.35:
3359 resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 7669 resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
3360 engines: {node: '>= 0.6'} 7670 engines: {node: '>= 0.6'}
3361 dependencies: 7671 dependencies:
3362 mime-db: 1.52.0 7672 mime-db: 1.52.0
3363 dev: false
3364
3365 /mime/1.4.1:
3366 resolution: {integrity: sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==}
3367 hasBin: true
3368 dev: false
3369 7673
3370 /mime/1.6.0: 7674 /mime@1.6.0:
3371 resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} 7675 resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
3372 engines: {node: '>=4'} 7676 engines: {node: '>=4'}
3373 hasBin: true 7677 hasBin: true
3374 dev: false
3375 7678
3376 /mimic-fn/2.1.0: 7679 /mime@2.6.0:
7680 resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==}
7681 engines: {node: '>=4.0.0'}
7682 hasBin: true
7683 dev: true
7684
7685 /mimic-fn@2.1.0:
3377 resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 7686 resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
3378 engines: {node: '>=6'} 7687 engines: {node: '>=6'}
7688
7689 /mimic-fn@3.1.0:
7690 resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==}
7691 engines: {node: '>=8'}
3379 dev: true 7692 dev: true
3380 7693
3381 /mimic-response/1.0.1: 7694 /mimic-fn@4.0.0:
7695 resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
7696 engines: {node: '>=12'}
7697 dev: true
7698
7699 /mimic-response@1.0.1:
3382 resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} 7700 resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==}
3383 engines: {node: '>=4'} 7701 engines: {node: '>=4'}
3384 dev: false 7702 dev: false
3385 7703
3386 /minimatch/3.1.2: 7704 /mimic-response@3.1.0:
7705 resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
7706 engines: {node: '>=10'}
7707 dev: false
7708
7709 /min-indent@1.0.1:
7710 resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
7711 engines: {node: '>=4'}
7712 dev: true
7713
7714 /mini-css-extract-plugin@2.7.6(webpack@5.88.2):
7715 resolution: {integrity: sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==}
7716 engines: {node: '>= 12.13.0'}
7717 peerDependencies:
7718 webpack: ^5.0.0
7719 dependencies:
7720 schema-utils: 4.2.0
7721 webpack: 5.88.2(webpack-cli@5.1.4)
7722 dev: true
7723
7724 /minimalistic-assert@1.0.1:
7725 resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==}
7726 dev: true
7727
7728 /minimatch@3.1.2:
3387 resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 7729 resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
3388 dependencies: 7730 dependencies:
3389 brace-expansion: 1.1.11 7731 brace-expansion: 1.1.11
3390 7732
3391 /minimist/1.2.7: 7733 /minimatch@5.1.6:
3392 resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} 7734 resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
7735 engines: {node: '>=10'}
7736 dependencies:
7737 brace-expansion: 2.0.1
3393 7738
3394 /minipass/2.9.0: 7739 /minimist@1.2.8:
3395 resolution: {integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==} 7740 resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
7741
7742 /minipass-collect@1.0.2:
7743 resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==}
7744 engines: {node: '>= 8'}
7745 requiresBuild: true
3396 dependencies: 7746 dependencies:
3397 safe-buffer: 5.2.1 7747 minipass: 3.3.6
3398 yallist: 3.1.1
3399 dev: false 7748 dev: false
7749 optional: true
3400 7750
3401 /minizlib/1.3.3: 7751 /minipass-fetch@1.4.1:
3402 resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==} 7752 resolution: {integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==}
7753 engines: {node: '>=8'}
7754 requiresBuild: true
3403 dependencies: 7755 dependencies:
3404 minipass: 2.9.0 7756 minipass: 3.3.6
7757 minipass-sized: 1.0.3
7758 minizlib: 2.1.2
7759 optionalDependencies:
7760 encoding: 0.1.13
3405 dev: false 7761 dev: false
7762 optional: true
3406 7763
3407 /mixin-deep/1.3.2: 7764 /minipass-flush@1.0.5:
7765 resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==}
7766 engines: {node: '>= 8'}
7767 requiresBuild: true
7768 dependencies:
7769 minipass: 3.3.6
7770 dev: false
7771 optional: true
7772
7773 /minipass-pipeline@1.2.4:
7774 resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==}
7775 engines: {node: '>=8'}
7776 requiresBuild: true
7777 dependencies:
7778 minipass: 3.3.6
7779 dev: false
7780 optional: true
7781
7782 /minipass-sized@1.0.3:
7783 resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==}
7784 engines: {node: '>=8'}
7785 requiresBuild: true
7786 dependencies:
7787 minipass: 3.3.6
7788 dev: false
7789 optional: true
7790
7791 /minipass@3.3.6:
7792 resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==}
7793 engines: {node: '>=8'}
7794 dependencies:
7795 yallist: 4.0.0
7796 dev: false
7797
7798 /minipass@5.0.0:
7799 resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
7800 engines: {node: '>=8'}
7801 dev: false
7802
7803 /minizlib@2.1.2:
7804 resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
7805 engines: {node: '>= 8'}
7806 dependencies:
7807 minipass: 3.3.6
7808 yallist: 4.0.0
7809 dev: false
7810
7811 /mixin-deep@1.3.2:
3408 resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} 7812 resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==}
3409 engines: {node: '>=0.10.0'} 7813 engines: {node: '>=0.10.0'}
3410 dependencies: 7814 dependencies:
3411 for-in: 1.0.2 7815 for-in: 1.0.2
3412 is-extendable: 1.0.1 7816 is-extendable: 1.0.1
3413 dev: false 7817 dev: true
3414 7818
3415 /mixin-object/2.0.1: 7819 /mkdirp@0.5.6:
3416 resolution: {integrity: sha512-ALGF1Jt9ouehcaXaHhn6t1yGWRqGaHkPFndtFVHfZXOvkIZ/yoGaSi0AHVTafb3ZBGg4dr/bDwnaEKqCXzchMA==} 7820 resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
3417 engines: {node: '>=0.10.0'} 7821 hasBin: true
3418 dependencies: 7822 dependencies:
3419 for-in: 0.1.8 7823 minimist: 1.2.8
3420 is-extendable: 0.1.1
3421 dev: false 7824 dev: false
3422 7825
3423 /mkdirp/0.5.6: 7826 /mkdirp@1.0.4:
3424 resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} 7827 resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
7828 engines: {node: '>=10'}
3425 hasBin: true 7829 hasBin: true
3426 dependencies:
3427 minimist: 1.2.7
3428 dev: false 7830 dev: false
3429 7831
3430 /moment/2.29.4: 7832 /moment@2.29.4:
3431 resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} 7833 resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==}
3432 dev: false 7834 dev: false
3433 7835
3434 /ms/2.0.0: 7836 /mrm-core@7.1.13:
7837 resolution: {integrity: sha512-+AlsNuryLYw9HWqf+HBcNXULiwBEfcmb2VDccvYyg71x25bC8nJOn0YJA13x1PUUEF0aEbc5RTfqa6weMtRHaw==}
7838 engines: {node: '>=10.13'}
7839 dependencies:
7840 babel-code-frame: 6.26.0
7841 comment-json: 2.4.2
7842 detect-indent: 6.1.0
7843 editorconfig: 0.15.3
7844 find-up: 4.1.0
7845 fs-extra: 8.1.0
7846 kleur: 3.0.3
7847 listify: 1.0.3
7848 lodash: 4.17.21
7849 minimist: 1.2.8
7850 prop-ini: 0.0.2
7851 rc: 1.2.8
7852 readme-badger: 0.3.0
7853 semver: 6.3.1
7854 smpltmpl: 1.0.2
7855 split-lines: 2.1.0
7856 strip-bom: 4.0.0
7857 validate-npm-package-name: 3.0.0
7858 webpack-merge: 4.2.2
7859 yaml: 2.3.2
7860 dev: true
7861
7862 /ms@2.0.0:
3435 resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 7863 resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
3436 7864
3437 /ms/2.1.2: 7865 /ms@2.1.2:
3438 resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 7866 resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
3439 7867
3440 /ms/2.1.3: 7868 /ms@2.1.3:
3441 resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 7869 resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
3442 7870
3443 /multiparty/4.2.3: 7871 /multi-part-lite@1.0.0:
3444 resolution: {integrity: sha512-Ak6EUJZuhGS8hJ3c2fY6UW5MbkGUPMBEGd13djUzoY/BHqV/gTuFWtC6IuVA7A2+v3yjBS6c4or50xhzTQZImQ==} 7872 resolution: {integrity: sha512-KxIRbBZZ45hoKX1ROD/19wJr0ql1bef1rE8Y1PCwD3PuNXV42pp7Wo8lEHYuAajoT4vfAFcd3rPjlkyEEyt1nw==}
3445 engines: {node: '>= 0.10'} 7873 engines: {node: '>=8.3.0'}
3446 dependencies:
3447 http-errors: 1.8.1
3448 safe-buffer: 5.2.1
3449 uid-safe: 2.1.5
3450 dev: false 7874 dev: false
3451 7875
3452 /mustache/4.2.0: 7876 /multi-part@3.0.0:
3453 resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} 7877 resolution: {integrity: sha512-pDbdYQ6DLDxAsD83w9R7r7rlW56cETL7hIB5bCWX7FJYw0K+kL5JwHr0I8tRk9lGeFcAzf+2OEzXWlG/4wCnFw==}
3454 hasBin: true 7878 engines: {node: '>=8.3.0'}
3455 dev: false 7879 dependencies:
3456 7880 mime-kind: 3.0.0
3457 /mute-stream/0.0.7: 7881 multi-part-lite: 1.0.0
3458 resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==}
3459 dev: false 7882 dev: false
3460 7883
3461 /mute-stream/0.0.8: 7884 /multicast-dns@7.2.5:
3462 resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} 7885 resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==}
7886 hasBin: true
7887 dependencies:
7888 dns-packet: 5.6.1
7889 thunky: 1.1.0
3463 dev: true 7890 dev: true
3464 7891
3465 /mysql/2.18.1: 7892 /mustache@4.2.0:
7893 resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==}
7894 hasBin: true
7895
7896 /mysql@2.18.1:
3466 resolution: {integrity: sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==} 7897 resolution: {integrity: sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==}
3467 engines: {node: '>= 0.6'} 7898 engines: {node: '>= 0.6'}
3468 dependencies: 7899 dependencies:
@@ -3472,11 +7903,13 @@ packages:
3472 sqlstring: 2.3.1 7903 sqlstring: 2.3.1
3473 dev: false 7904 dev: false
3474 7905
3475 /nan/2.17.0: 7906 /nanoid@3.3.6:
3476 resolution: {integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==} 7907 resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
3477 dev: false 7908 engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
7909 hasBin: true
7910 dev: true
3478 7911
3479 /nanomatch/1.2.13: 7912 /nanomatch@1.2.13:
3480 resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} 7913 resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==}
3481 engines: {node: '>=0.10.0'} 7914 engines: {node: '>=0.10.0'}
3482 dependencies: 7915 dependencies:
@@ -3493,57 +7926,50 @@ packages:
3493 to-regex: 3.0.2 7926 to-regex: 3.0.2
3494 transitivePeerDependencies: 7927 transitivePeerDependencies:
3495 - supports-color 7928 - supports-color
3496 dev: false 7929 dev: true
3497 7930
3498 /natural-compare/1.4.0: 7931 /natural-compare-lite@1.4.0:
3499 resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 7932 resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
3500 dev: true 7933 dev: true
3501 7934
3502 /needle/2.9.1: 7935 /natural-compare@1.4.0:
3503 resolution: {integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==} 7936 resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
3504 engines: {node: '>= 4.4.x'} 7937 dev: true
3505 hasBin: true
3506 dependencies:
3507 debug: 3.2.7
3508 iconv-lite: 0.4.24
3509 sax: 1.2.4
3510 transitivePeerDependencies:
3511 - supports-color
3512 dev: false
3513 7938
3514 /negotiator/0.6.3: 7939 /negotiator@0.6.3:
3515 resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} 7940 resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
3516 engines: {node: '>= 0.6'} 7941 engines: {node: '>= 0.6'}
3517 dev: false
3518 7942
3519 /nice-try/1.0.5: 7943 /neo-async@2.6.2:
3520 resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} 7944 resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
3521 dev: false 7945 dev: true
3522 7946
3523 /node-cookie/2.1.2: 7947 /nested-error-stacks@2.1.1:
3524 resolution: {integrity: sha512-8/k8V9/2hCESYMmNVtJiHweKlP1ZqjrzG3bv+cSooiWurHB6N7KqVdX/s7ojbBXTwOJrLKJzC9rlPRvFRYuKRA==} 7948 resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==}
3525 dependencies: 7949 dev: true
3526 cookie: 0.4.2
3527 cookie-signature: 1.2.0
3528 simple-encryptor: 3.0.0
3529 dev: false
3530 7950
3531 /node-csp/1.0.1: 7951 /no-case@3.0.4:
3532 resolution: {integrity: sha512-t0TZaoJVYlWR/rgIlQvNedyUIVvAnzQIPqxIyUiS2W4PzSFDa93RRcKxLF/KNZGFvKUFlFf6guHZI23fiDBF+A==} 7952 resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
3533 dependencies: 7953 dependencies:
3534 platform: 1.3.6 7954 lower-case: 2.0.2
3535 dev: false 7955 tslib: 2.6.2
3536 7956
3537 /node-exceptions/2.0.2: 7957 /node-addon-api@4.3.0:
3538 resolution: {integrity: sha512-nILccFLvnaOBoKZZtWfZipn/hlThZOT6UJOLX6SA3yLMYPcvLTIF26PXx73sPnAg45p05iYFYw2jvayNHz4rDA==} 7958 resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==}
3539 dev: false 7959 dev: false
3540 7960
3541 /node-exceptions/3.0.0: 7961 /node-addon-api@5.1.0:
3542 resolution: {integrity: sha512-pFhMAqdN1avrFwtZs66HxYiVnbnH9wjXB4m8IKs5Z9+r7U5voqxT+EDbVkRfge+V7JnkOgKhN4HfKBn1o5g9Wg==} 7962 resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==}
3543 dev: false 7963 dev: false
3544 7964
3545 /node-fetch/2.6.7: 7965 /node-emoji@1.11.0:
3546 resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} 7966 resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==}
7967 dependencies:
7968 lodash: 4.17.21
7969 dev: true
7970
7971 /node-fetch@2.7.0:
7972 resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
3547 engines: {node: 4.x || >=6.0.0} 7973 engines: {node: 4.x || >=6.0.0}
3548 peerDependencies: 7974 peerDependencies:
3549 encoding: ^0.1.0 7975 encoding: ^0.1.0
@@ -3552,403 +7978,548 @@ packages:
3552 optional: true 7978 optional: true
3553 dependencies: 7979 dependencies:
3554 whatwg-url: 5.0.0 7980 whatwg-url: 5.0.0
3555
3556 /node-guard/1.0.0:
3557 resolution: {integrity: sha512-LX911hOl63/YBO3Skl/jQ9QQG+lE++66xaF9/lg7G02bBpdgHMmSdMK5+jgo7p/3i5hn4fGOipX3Ko17Yzfi2w==}
3558 dev: false 7981 dev: false
3559 7982
3560 /node-pre-gyp/0.11.0: 7983 /node-forge@1.3.1:
3561 resolution: {integrity: sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==} 7984 resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
3562 deprecated: 'Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future' 7985 engines: {node: '>= 6.13.0'}
7986 dev: true
7987
7988 /node-gyp@8.4.1:
7989 resolution: {integrity: sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==}
7990 engines: {node: '>= 10.12.0'}
3563 hasBin: true 7991 hasBin: true
7992 requiresBuild: true
3564 dependencies: 7993 dependencies:
3565 detect-libc: 1.0.3 7994 env-paths: 2.2.1
3566 mkdirp: 0.5.6 7995 glob: 7.2.3
3567 needle: 2.9.1 7996 graceful-fs: 4.2.11
3568 nopt: 4.0.3 7997 make-fetch-happen: 9.1.0
3569 npm-packlist: 1.4.8 7998 nopt: 5.0.0
3570 npmlog: 4.1.2 7999 npmlog: 6.0.2
3571 rc: 1.2.8 8000 rimraf: 3.0.2
3572 rimraf: 2.7.1 8001 semver: 7.5.4
3573 semver: 5.7.1 8002 tar: 6.2.0
3574 tar: 4.4.19 8003 which: 2.0.2
3575 transitivePeerDependencies: 8004 transitivePeerDependencies:
8005 - bluebird
3576 - supports-color 8006 - supports-color
3577 dev: false 8007 dev: false
8008 optional: true
3578 8009
3579 /node-req/2.1.2: 8010 /node-releases@2.0.13:
3580 resolution: {integrity: sha512-zJqZ03vs0oHN8u+wn7kUT/vj63jQdQvNYWjbRMGNVu7ijV3mVz8UwX7pJl7LUugOT2x8vBKasKqbUqnh6GDKMQ==} 8011 resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
3581 dependencies: 8012 dev: true
3582 accepts: 1.3.8
3583 fresh: 0.5.2
3584 parseurl: 1.3.3
3585 proxy-addr: 2.0.7
3586 qs: 6.11.0
3587 type-is: 1.6.18
3588 dev: false
3589 8013
3590 /node-res/4.1.4: 8014 /node-repl-await@0.1.2:
3591 resolution: {integrity: sha512-CE6NEM51MVeySzGn6stEuohJzYPHovjo9+/UK147peh8Hslth/S+IpXKupb1qv9QeIxbgnKJ9WoVOpEwJd5pYg==} 8015 resolution: {integrity: sha512-e03zlI31RjF6Ks9+/ju0gY55dZSm21XXMSzy85FGZtDxuAZCa/iQwzWoQjmZvaolQCrIjzs0e4shxZs1bxbpUg==}
3592 dependencies: 8016 dependencies:
3593 content-disposition: 0.5.4 8017 acorn: 8.10.0
3594 etag: 1.8.1 8018 acorn-class-fields: 1.0.0(acorn@8.10.0)
3595 mime-types: 2.1.35 8019 acorn-private-methods: 1.0.0(acorn@8.10.0)
3596 send: 0.16.2 8020 acorn-static-class-features: 1.0.0(acorn@8.10.0)
3597 vary: 1.1.2 8021 acorn-walk: 8.2.0
3598 transitivePeerDependencies:
3599 - supports-color
3600 dev: false 8022 dev: false
3601 8023
3602 /nodemailer/4.7.0: 8024 /nodemailer@6.9.5:
3603 resolution: {integrity: sha512-IludxDypFpYw4xpzKdMAozBSkzKHmNBvGanUREjJItgJ2NYcK/s8+PggVhj7c2yGFQykKsnnmv1+Aqo0ZfjHmw==} 8025 resolution: {integrity: sha512-/dmdWo62XjumuLc5+AYQZeiRj+PRR8y8qKtFCOyuOl1k/hckZd8durUUHs/ucKx6/8kN+wFxqKJlQ/LK/qR5FA==}
3604 engines: {node: '>=6.0.0'} 8026 engines: {node: '>=6.0.0'}
3605 dev: false 8027 dev: false
3606 8028
3607 /nopt/4.0.3: 8029 /nopt@5.0.0:
3608 resolution: {integrity: sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==} 8030 resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==}
8031 engines: {node: '>=6'}
3609 hasBin: true 8032 hasBin: true
3610 dependencies: 8033 dependencies:
3611 abbrev: 1.1.1 8034 abbrev: 1.1.1
3612 osenv: 0.1.5
3613 dev: false 8035 dev: false
3614 8036
3615 /normalize-url/2.0.1: 8037 /normalize-package-data@2.5.0:
3616 resolution: {integrity: sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==} 8038 resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
3617 engines: {node: '>=4'}
3618 dependencies: 8039 dependencies:
3619 prepend-http: 2.0.0 8040 hosted-git-info: 2.8.9
3620 query-string: 5.1.1 8041 resolve: 1.22.6
3621 sort-keys: 2.0.0 8042 semver: 5.7.2
3622 dev: false 8043 validate-npm-package-license: 3.0.4
8044 dev: true
3623 8045
3624 /npm-bundled/1.1.2: 8046 /normalize-path@3.0.0:
3625 resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} 8047 resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
3626 dependencies: 8048 engines: {node: '>=0.10.0'}
3627 npm-normalize-package-bin: 1.0.1 8049 dev: true
3628 dev: false
3629 8050
3630 /npm-normalize-package-bin/1.0.1: 8051 /normalize-url@6.1.0:
3631 resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} 8052 resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==}
3632 dev: false 8053 engines: {node: '>=10'}
3633 8054
3634 /npm-packlist/1.4.8: 8055 /npm-run-path@4.0.1:
3635 resolution: {integrity: sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==} 8056 resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
8057 engines: {node: '>=8'}
3636 dependencies: 8058 dependencies:
3637 ignore-walk: 3.0.4 8059 path-key: 3.1.1
3638 npm-bundled: 1.1.2 8060 dev: true
3639 npm-normalize-package-bin: 1.0.1
3640 dev: false
3641 8061
3642 /npmlog/4.1.2: 8062 /npm-run-path@5.1.0:
3643 resolution: {integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==} 8063 resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==}
8064 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
3644 dependencies: 8065 dependencies:
3645 are-we-there-yet: 1.1.7 8066 path-key: 4.0.0
8067 dev: true
8068
8069 /npmlog@5.0.1:
8070 resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==}
8071 dependencies:
8072 are-we-there-yet: 2.0.0
3646 console-control-strings: 1.1.0 8073 console-control-strings: 1.1.0
3647 gauge: 2.7.4 8074 gauge: 3.0.2
3648 set-blocking: 2.0.0 8075 set-blocking: 2.0.0
3649 dev: false 8076 dev: false
3650 8077
3651 /number-is-nan/1.0.1: 8078 /npmlog@6.0.2:
3652 resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} 8079 resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==}
3653 engines: {node: '>=0.10.0'} 8080 engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
8081 requiresBuild: true
8082 dependencies:
8083 are-we-there-yet: 3.0.1
8084 console-control-strings: 1.1.0
8085 gauge: 4.0.4
8086 set-blocking: 2.0.0
3654 dev: false 8087 dev: false
8088 optional: true
3655 8089
3656 /oauth-sign/0.9.0: 8090 /nth-check@2.1.1:
3657 resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} 8091 resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
3658 dev: false 8092 dependencies:
8093 boolbase: 1.0.0
8094 dev: true
3659 8095
3660 /object-assign/4.1.1: 8096 /object-assign@4.1.1:
3661 resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 8097 resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
3662 engines: {node: '>=0.10.0'} 8098 engines: {node: '>=0.10.0'}
3663 dev: false
3664 8099
3665 /object-copy/0.1.0: 8100 /object-copy@0.1.0:
3666 resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} 8101 resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==}
3667 engines: {node: '>=0.10.0'} 8102 engines: {node: '>=0.10.0'}
3668 dependencies: 8103 dependencies:
3669 copy-descriptor: 0.1.1 8104 copy-descriptor: 0.1.1
3670 define-property: 0.2.5 8105 define-property: 0.2.5
3671 kind-of: 3.2.2 8106 kind-of: 3.2.2
3672 dev: false 8107 dev: true
3673 8108
3674 /object-inspect/1.12.2: 8109 /object-inspect@1.12.3:
3675 resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} 8110 resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
3676 8111
3677 /object-keys/1.1.1: 8112 /object-keys@1.1.1:
3678 resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 8113 resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
3679 engines: {node: '>= 0.4'} 8114 engines: {node: '>= 0.4'}
3680 dev: true 8115 dev: true
3681 8116
3682 /object-visit/1.0.1: 8117 /object-visit@1.0.1:
3683 resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} 8118 resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==}
3684 engines: {node: '>=0.10.0'} 8119 engines: {node: '>=0.10.0'}
3685 dependencies: 8120 dependencies:
3686 isobject: 3.0.1 8121 isobject: 3.0.1
3687 dev: false 8122 dev: true
3688 8123
3689 /object.assign/4.1.4: 8124 /object.assign@4.1.4:
3690 resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} 8125 resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==}
3691 engines: {node: '>= 0.4'} 8126 engines: {node: '>= 0.4'}
3692 dependencies: 8127 dependencies:
3693 call-bind: 1.0.2 8128 call-bind: 1.0.2
3694 define-properties: 1.1.4 8129 define-properties: 1.2.1
3695 has-symbols: 1.0.3 8130 has-symbols: 1.0.3
3696 object-keys: 1.1.1 8131 object-keys: 1.1.1
3697 dev: true 8132 dev: true
3698 8133
3699 /object.defaults/1.1.0: 8134 /object.fromentries@2.0.7:
3700 resolution: {integrity: sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==} 8135 resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==}
3701 engines: {node: '>=0.10.0'}
3702 dependencies:
3703 array-each: 1.0.1
3704 array-slice: 1.1.0
3705 for-own: 1.0.0
3706 isobject: 3.0.1
3707 dev: false
3708
3709 /object.entries/1.1.6:
3710 resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==}
3711 engines: {node: '>= 0.4'} 8136 engines: {node: '>= 0.4'}
3712 dependencies: 8137 dependencies:
3713 call-bind: 1.0.2 8138 call-bind: 1.0.2
3714 define-properties: 1.1.4 8139 define-properties: 1.2.1
3715 es-abstract: 1.20.5 8140 es-abstract: 1.22.2
3716 dev: true 8141 dev: true
3717 8142
3718 /object.map/1.0.1: 8143 /object.groupby@1.0.1:
3719 resolution: {integrity: sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==} 8144 resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==}
3720 engines: {node: '>=0.10.0'}
3721 dependencies: 8145 dependencies:
3722 for-own: 1.0.0 8146 call-bind: 1.0.2
3723 make-iterator: 1.0.1 8147 define-properties: 1.2.1
3724 dev: false 8148 es-abstract: 1.22.2
8149 get-intrinsic: 1.2.1
8150 dev: true
3725 8151
3726 /object.pick/1.3.0: 8152 /object.pick@1.3.0:
3727 resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} 8153 resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==}
3728 engines: {node: '>=0.10.0'} 8154 engines: {node: '>=0.10.0'}
3729 dependencies: 8155 dependencies:
3730 isobject: 3.0.1 8156 isobject: 3.0.1
3731 dev: false 8157 dev: true
3732 8158
3733 /object.values/1.1.6: 8159 /object.values@1.1.7:
3734 resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} 8160 resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==}
3735 engines: {node: '>= 0.4'} 8161 engines: {node: '>= 0.4'}
3736 dependencies: 8162 dependencies:
3737 call-bind: 1.0.2 8163 call-bind: 1.0.2
3738 define-properties: 1.1.4 8164 define-properties: 1.2.1
3739 es-abstract: 1.20.5 8165 es-abstract: 1.22.2
3740 dev: true 8166 dev: true
3741 8167
3742 /on-finished/2.3.0: 8168 /obuf@1.1.2:
3743 resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} 8169 resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==}
3744 engines: {node: '>= 0.8'} 8170 dev: true
3745 dependencies:
3746 ee-first: 1.1.1
3747 dev: false
3748 8171
3749 /on-finished/2.4.1: 8172 /on-exit-leak-free@2.1.0:
8173 resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==}
8174
8175 /on-finished@2.4.1:
3750 resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} 8176 resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
3751 engines: {node: '>= 0.8'} 8177 engines: {node: '>= 0.8'}
3752 dependencies: 8178 dependencies:
3753 ee-first: 1.1.1 8179 ee-first: 1.1.1
3754 dev: false
3755 8180
3756 /once/1.4.0: 8181 /on-headers@1.0.2:
8182 resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==}
8183 engines: {node: '>= 0.8'}
8184 dev: true
8185
8186 /once@1.4.0:
3757 resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 8187 resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
3758 dependencies: 8188 dependencies:
3759 wrappy: 1.0.2 8189 wrappy: 1.0.2
3760 8190
3761 /one-time/1.0.0: 8191 /onetime@5.1.2:
3762 resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==}
3763 dependencies:
3764 fn.name: 1.1.0
3765 dev: false
3766
3767 /onetime/5.1.2:
3768 resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 8192 resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
3769 engines: {node: '>=6'} 8193 engines: {node: '>=6'}
3770 dependencies: 8194 dependencies:
3771 mimic-fn: 2.1.0 8195 mimic-fn: 2.1.0
8196
8197 /onetime@6.0.0:
8198 resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
8199 engines: {node: '>=12'}
8200 dependencies:
8201 mimic-fn: 4.0.0
8202 dev: true
8203
8204 /open@8.4.2:
8205 resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
8206 engines: {node: '>=12'}
8207 dependencies:
8208 define-lazy-prop: 2.0.0
8209 is-docker: 2.2.1
8210 is-wsl: 2.2.0
8211 dev: true
8212
8213 /open@9.1.0:
8214 resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==}
8215 engines: {node: '>=14.16'}
8216 dependencies:
8217 default-browser: 4.0.0
8218 define-lazy-prop: 3.0.0
8219 is-inside-container: 1.0.0
8220 is-wsl: 2.2.0
8221 dev: true
8222
8223 /openapi-schema-validator@3.0.3:
8224 resolution: {integrity: sha512-KKpeNEvAmpy6B2JCfyrM4yWjL6vggDCVbBoR8Yfkj0Jltc6PCW+dBbcg+1yrTCuDv80qBQJ6w0ejA71DlOFegA==}
8225 dependencies:
8226 ajv: 6.12.6
8227 lodash.merge: 4.6.2
8228 openapi-types: 1.3.4
8229 swagger-schema-official: 2.0.0-bab6bed
3772 dev: true 8230 dev: true
3773 8231
3774 /optionator/0.9.1: 8232 /openapi-types@1.3.4:
3775 resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 8233 resolution: {integrity: sha512-h8rADpW3k/wepLdERKF0VKMAPdoFYNQCLGPmc/f8sgQ2dxUy+7sY4WAX2XDUDjhKTjbJVbxxofLkzy7f1/tE4g==}
8234 dev: true
8235
8236 /openapi-types@12.1.3:
8237 resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==}
8238 dev: true
8239
8240 /optionator@0.9.3:
8241 resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
3776 engines: {node: '>= 0.8.0'} 8242 engines: {node: '>= 0.8.0'}
3777 dependencies: 8243 dependencies:
8244 '@aashutoshrathi/word-wrap': 1.2.6
3778 deep-is: 0.1.4 8245 deep-is: 0.1.4
3779 fast-levenshtein: 2.0.6 8246 fast-levenshtein: 2.0.6
3780 levn: 0.4.1 8247 levn: 0.4.1
3781 prelude-ls: 1.2.1 8248 prelude-ls: 1.2.1
3782 type-check: 0.4.0 8249 type-check: 0.4.0
3783 word-wrap: 1.2.3
3784 dev: true 8250 dev: true
3785 8251
3786 /os-homedir/1.0.2: 8252 /p-all@2.1.0:
3787 resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} 8253 resolution: {integrity: sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA==}
3788 engines: {node: '>=0.10.0'} 8254 engines: {node: '>=6'}
8255 dependencies:
8256 p-map: 2.1.0
8257 dev: true
8258
8259 /p-cancelable@2.1.1:
8260 resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==}
8261 engines: {node: '>=8'}
3789 dev: false 8262 dev: false
3790 8263
3791 /os-tmpdir/1.0.2: 8264 /p-defer@1.0.0:
3792 resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} 8265 resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==}
3793 engines: {node: '>=0.10.0'} 8266 engines: {node: '>=4'}
8267 dev: true
3794 8268
3795 /osenv/0.1.5: 8269 /p-event@4.2.0:
3796 resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==} 8270 resolution: {integrity: sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==}
8271 engines: {node: '>=8'}
3797 dependencies: 8272 dependencies:
3798 os-homedir: 1.0.2 8273 p-timeout: 3.2.0
3799 os-tmpdir: 1.0.2 8274 dev: true
3800 dev: false
3801 8275
3802 /p-cancelable/0.4.1: 8276 /p-filter@2.1.0:
3803 resolution: {integrity: sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==} 8277 resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==}
3804 engines: {node: '>=4'} 8278 engines: {node: '>=8'}
3805 dev: false 8279 dependencies:
8280 p-map: 2.1.0
8281 dev: true
3806 8282
3807 /p-finally/1.0.0: 8283 /p-finally@1.0.0:
3808 resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} 8284 resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
3809 engines: {node: '>=4'} 8285 engines: {node: '>=4'}
3810 dev: false 8286 dev: true
3811
3812 /p-is-promise/1.1.0:
3813 resolution: {integrity: sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==}
3814 engines: {node: '>=4'}
3815 dev: false
3816 8287
3817 /p-limit/2.3.0: 8288 /p-limit@2.3.0:
3818 resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 8289 resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
3819 engines: {node: '>=6'} 8290 engines: {node: '>=6'}
3820 dependencies: 8291 dependencies:
3821 p-try: 2.2.0 8292 p-try: 2.2.0
3822 dev: true 8293 dev: true
3823 8294
3824 /p-locate/4.1.0: 8295 /p-limit@3.1.0:
8296 resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
8297 engines: {node: '>=10'}
8298 dependencies:
8299 yocto-queue: 0.1.0
8300 dev: true
8301
8302 /p-locate@3.0.0:
8303 resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==}
8304 engines: {node: '>=6'}
8305 dependencies:
8306 p-limit: 2.3.0
8307 dev: true
8308
8309 /p-locate@4.1.0:
3825 resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 8310 resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
3826 engines: {node: '>=8'} 8311 engines: {node: '>=8'}
3827 dependencies: 8312 dependencies:
3828 p-limit: 2.3.0 8313 p-limit: 2.3.0
3829 dev: true 8314 dev: true
3830 8315
3831 /p-timeout/2.0.1: 8316 /p-locate@5.0.0:
3832 resolution: {integrity: sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==} 8317 resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
3833 engines: {node: '>=4'} 8318 engines: {node: '>=10'}
3834 dependencies: 8319 dependencies:
3835 p-finally: 1.0.0 8320 p-limit: 3.1.0
8321 dev: true
8322
8323 /p-map@2.1.0:
8324 resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==}
8325 engines: {node: '>=6'}
8326 dev: true
8327
8328 /p-map@3.0.0:
8329 resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==}
8330 engines: {node: '>=8'}
8331 dependencies:
8332 aggregate-error: 3.1.0
8333 dev: true
8334
8335 /p-map@4.0.0:
8336 resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
8337 engines: {node: '>=10'}
8338 requiresBuild: true
8339 dependencies:
8340 aggregate-error: 3.1.0
3836 dev: false 8341 dev: false
8342 optional: true
3837 8343
3838 /p-try/2.2.0: 8344 /p-retry@4.6.2:
8345 resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==}
8346 engines: {node: '>=8'}
8347 dependencies:
8348 '@types/retry': 0.12.0
8349 retry: 0.13.1
8350 dev: true
8351
8352 /p-timeout@3.2.0:
8353 resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==}
8354 engines: {node: '>=8'}
8355 dependencies:
8356 p-finally: 1.0.0
8357 dev: true
8358
8359 /p-try@2.2.0:
3839 resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 8360 resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
3840 engines: {node: '>=6'} 8361 engines: {node: '>=6'}
3841 dev: true 8362 dev: true
3842 8363
3843 /packet-reader/1.0.0: 8364 /packet-reader@1.0.0:
3844 resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} 8365 resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==}
3845 dev: false 8366 dev: false
3846 8367
3847 /parent-module/1.0.1: 8368 /param-case@3.0.4:
8369 resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==}
8370 dependencies:
8371 dot-case: 3.0.4
8372 tslib: 2.6.2
8373
8374 /parent-module@1.0.1:
3848 resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 8375 resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
3849 engines: {node: '>=6'} 8376 engines: {node: '>=6'}
3850 dependencies: 8377 dependencies:
3851 callsites: 3.1.0 8378 callsites: 3.1.0
3852 dev: true 8379 dev: true
3853 8380
3854 /parse-filepath/1.0.2: 8381 /parent-module@2.0.0:
3855 resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} 8382 resolution: {integrity: sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==}
3856 engines: {node: '>=0.8'} 8383 engines: {node: '>=8'}
3857 dependencies: 8384 dependencies:
3858 is-absolute: 1.0.0 8385 callsites: 3.1.0
3859 map-cache: 0.2.2 8386 dev: true
3860 path-root: 0.1.1
3861 dev: false
3862 8387
3863 /parse-passwd/1.0.0: 8388 /parse-imports@0.0.5:
3864 resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} 8389 resolution: {integrity: sha512-yA6mDNotJmyAXcEdi2AjiHfI8Llk+/uv/jgBgvzFVP8iGaHC5L3rR6VQk/1qEE3SvLUsDQ2GdQMfPTi0qrmt8Q==}
3865 engines: {node: '>=0.10.0'} 8390 engines: {node: '>= 10'}
8391 dependencies:
8392 es-module-lexer: 0.3.26
8393 slashes: 2.0.2
3866 dev: false 8394 dev: false
3867 8395
3868 /parseurl/1.3.3: 8396 /parse-json@5.2.0:
8397 resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
8398 engines: {node: '>=8'}
8399 dependencies:
8400 '@babel/code-frame': 7.22.13
8401 error-ex: 1.3.2
8402 json-parse-even-better-errors: 2.3.1
8403 lines-and-columns: 1.2.4
8404 dev: true
8405
8406 /parseurl@1.3.3:
3869 resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 8407 resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
3870 engines: {node: '>= 0.8'} 8408 engines: {node: '>= 0.8'}
3871 dev: false
3872 8409
3873 /pascalcase/0.1.1: 8410 /pascal-case@3.1.2:
8411 resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
8412 dependencies:
8413 no-case: 3.0.4
8414 tslib: 2.6.2
8415
8416 /pascalcase@0.1.1:
3874 resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} 8417 resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==}
3875 engines: {node: '>=0.10.0'} 8418 engines: {node: '>=0.10.0'}
8419 dev: true
8420
8421 /path-browserify@1.0.1:
8422 resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
3876 dev: false 8423 dev: false
3877 8424
3878 /path-exists/4.0.0: 8425 /path-case@3.0.4:
8426 resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==}
8427 dependencies:
8428 dot-case: 3.0.4
8429 tslib: 2.6.2
8430
8431 /path-dirname@1.0.2:
8432 resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==}
8433 dev: true
8434
8435 /path-exists@3.0.0:
8436 resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==}
8437 engines: {node: '>=4'}
8438 dev: true
8439
8440 /path-exists@4.0.0:
3879 resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 8441 resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
3880 engines: {node: '>=8'} 8442 engines: {node: '>=8'}
3881 dev: true 8443 dev: true
3882 8444
3883 /path-is-absolute/1.0.1: 8445 /path-is-absolute@1.0.1:
3884 resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 8446 resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
3885 engines: {node: '>=0.10.0'} 8447 engines: {node: '>=0.10.0'}
8448 requiresBuild: true
3886 8449
3887 /path-key/2.0.1: 8450 /path-is-inside@1.0.2:
3888 resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} 8451 resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==}
3889 engines: {node: '>=4'} 8452 dev: true
3890 dev: false
3891 8453
3892 /path-key/3.1.1: 8454 /path-key@3.1.1:
3893 resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 8455 resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
3894 engines: {node: '>=8'} 8456 engines: {node: '>=8'}
3895 dev: true 8457 dev: true
3896 8458
3897 /path-parse/1.0.7: 8459 /path-key@4.0.0:
8460 resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
8461 engines: {node: '>=12'}
8462 dev: true
8463
8464 /path-parse@1.0.7:
3898 resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 8465 resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
3899 8466
3900 /path-root-regex/0.1.2: 8467 /path-to-regexp@0.1.7:
3901 resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} 8468 resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
3902 engines: {node: '>=0.10.0'} 8469 dev: true
3903 dev: false
3904 8470
3905 /path-root/0.1.1: 8471 /path-type@3.0.0:
3906 resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} 8472 resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==}
3907 engines: {node: '>=0.10.0'} 8473 engines: {node: '>=4'}
3908 dependencies: 8474 dependencies:
3909 path-root-regex: 0.1.2 8475 pify: 3.0.0
3910 dev: false 8476 dev: true
3911 8477
3912 /path-to-regexp/2.4.0: 8478 /path-type@4.0.0:
3913 resolution: {integrity: sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w==} 8479 resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
3914 dev: false 8480 engines: {node: '>=8'}
8481 dev: true
3915 8482
3916 /pegjs/0.10.0: 8483 /pathval@1.1.1:
3917 resolution: {integrity: sha512-qI5+oFNEGi3L5HAxDwN2LA4Gg7irF70Zs25edhjld9QemOgp0CbvMtbFcMvFtEo1OityPrcCzkQFB8JP/hxgow==} 8484 resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
3918 engines: {node: '>=0.10'}
3919 hasBin: true
3920 dev: true 8485 dev: true
3921 8486
3922 /performance-now/2.1.0: 8487 /peek-readable@4.1.0:
3923 resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} 8488 resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==}
8489 engines: {node: '>=8'}
8490
8491 /pg-cloudflare@1.1.1:
8492 resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==}
8493 requiresBuild: true
3924 dev: false 8494 dev: false
8495 optional: true
3925 8496
3926 /pg-connection-string/2.4.0: 8497 /pg-connection-string@2.6.1:
3927 resolution: {integrity: sha512-3iBXuv7XKvxeMrIgym7njT+HlZkwZqqGX4Bu9cci8xHZNT+Um1gWKqCsAzcC0d95rcKMU5WBg6YRUcHyV0HZKQ==} 8498 resolution: {integrity: sha512-w6ZzNu6oMmIzEAYVw+RLK0+nqHPt8K3ZnknKi+g48Ak2pr3dtljJW3o+D/n2zzCG07Zoe9VOX3aiKpj+BN0pjg==}
3928 dev: false 8499 dev: false
3929 8500
3930 /pg-connection-string/2.5.0: 8501 /pg-connection-string@2.6.2:
3931 resolution: {integrity: sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==} 8502 resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==}
3932 dev: false 8503 dev: false
3933 8504
3934 /pg-int8/1.0.1: 8505 /pg-int8@1.0.1:
3935 resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} 8506 resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==}
3936 engines: {node: '>=4.0.0'} 8507 engines: {node: '>=4.0.0'}
3937 dev: false 8508 dev: false
3938 8509
3939 /pg-pool/3.5.2_pg@8.8.0: 8510 /pg-pool@3.6.1(pg@8.11.1):
3940 resolution: {integrity: sha512-His3Fh17Z4eg7oANLob6ZvH8xIVen3phEZh2QuyrIl4dQSDVEabNducv6ysROKpDNPSD+12tONZVWfSgMvDD9w==} 8511 resolution: {integrity: sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==}
3941 peerDependencies: 8512 peerDependencies:
3942 pg: '>=8.0' 8513 pg: '>=8.0'
3943 dependencies: 8514 dependencies:
3944 pg: 8.8.0 8515 pg: 8.11.1
3945 dev: false 8516 dev: false
3946 8517
3947 /pg-protocol/1.5.0: 8518 /pg-protocol@1.6.0:
3948 resolution: {integrity: sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==} 8519 resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==}
3949 dev: false 8520 dev: false
3950 8521
3951 /pg-types/2.2.0: 8522 /pg-types@2.2.0:
3952 resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} 8523 resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==}
3953 engines: {node: '>=4'} 8524 engines: {node: '>=4'}
3954 dependencies: 8525 dependencies:
@@ -3959,8 +8530,8 @@ packages:
3959 postgres-interval: 1.2.0 8530 postgres-interval: 1.2.0
3960 dev: false 8531 dev: false
3961 8532
3962 /pg/8.8.0: 8533 /pg@8.11.1:
3963 resolution: {integrity: sha512-UXYN0ziKj+AeNNP7VDMwrehpACThH7LUl/p8TDFpEUuSejCUIwGSfxpHsPvtM6/WXFy6SU4E5RG4IJV/TZAGjw==} 8534 resolution: {integrity: sha512-utdq2obft07MxaDg0zBJI+l/M3mBRfIpEN3iSemsz0G5F2/VXx+XzqF4oxrbIZXQxt2AZzIUzyVg/YM6xOP/WQ==}
3964 engines: {node: '>= 8.0.0'} 8535 engines: {node: '>= 8.0.0'}
3965 peerDependencies: 8536 peerDependencies:
3966 pg-native: '>=3.0.1' 8537 pg-native: '>=3.0.1'
@@ -3970,386 +8541,678 @@ packages:
3970 dependencies: 8541 dependencies:
3971 buffer-writer: 2.0.0 8542 buffer-writer: 2.0.0
3972 packet-reader: 1.0.0 8543 packet-reader: 1.0.0
3973 pg-connection-string: 2.5.0 8544 pg-connection-string: 2.6.2
3974 pg-pool: 3.5.2_pg@8.8.0 8545 pg-pool: 3.6.1(pg@8.11.1)
3975 pg-protocol: 1.5.0 8546 pg-protocol: 1.6.0
3976 pg-types: 2.2.0 8547 pg-types: 2.2.0
3977 pgpass: 1.0.5 8548 pgpass: 1.0.5
8549 optionalDependencies:
8550 pg-cloudflare: 1.1.1
3978 dev: false 8551 dev: false
3979 8552
3980 /pgpass/1.0.5: 8553 /pgpass@1.0.5:
3981 resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} 8554 resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==}
3982 dependencies: 8555 dependencies:
3983 split2: 4.1.0 8556 split2: 4.2.0
8557 dev: false
8558
8559 /phc-bcrypt@1.0.8:
8560 resolution: {integrity: sha512-k2Q1J+K4KOf47Uee7fqGFiu1nWKCqd17ks44U/WUHOZ4UvR2iRvkPpZtMQBLGbD82Ows/s+DiNhAMBOj7jPnrQ==}
8561 engines: {node: '>=12'}
8562 dependencies:
8563 '@kdf/salt': 2.0.1
8564 '@phc/format': 1.0.0
8565 bcrypt: 5.1.1
8566 tsse: 2.1.0
8567 transitivePeerDependencies:
8568 - encoding
8569 - supports-color
3984 dev: false 8570 dev: false
3985 8571
3986 /pify/3.0.0: 8572 /picocolors@1.0.0:
8573 resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
8574 dev: true
8575
8576 /picomatch@2.3.1:
8577 resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
8578 engines: {node: '>=8.6'}
8579
8580 /pify@2.3.0:
8581 resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
8582 engines: {node: '>=0.10.0'}
8583 dev: true
8584
8585 /pify@3.0.0:
3987 resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} 8586 resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
3988 engines: {node: '>=4'} 8587 engines: {node: '>=4'}
3989 dev: false 8588 dev: true
3990 8589
3991 /pify/4.0.1: 8590 /pify@4.0.1:
3992 resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} 8591 resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
3993 engines: {node: '>=6'} 8592 engines: {node: '>=6'}
3994 dev: false 8593 dev: true
3995 8594
3996 /pify/5.0.0: 8595 /pinkie-promise@2.0.1:
3997 resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} 8596 resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==}
3998 engines: {node: '>=10'} 8597 engines: {node: '>=0.10.0'}
8598 dependencies:
8599 pinkie: 2.0.4
3999 dev: true 8600 dev: true
4000 8601
4001 /platform/1.3.6: 8602 /pinkie@2.0.4:
4002 resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} 8603 resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==}
4003 dev: false 8604 engines: {node: '>=0.10.0'}
8605 dev: true
4004 8606
4005 /pluralize/8.0.0: 8607 /pino-abstract-transport@1.1.0:
4006 resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} 8608 resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==}
4007 engines: {node: '>=4'} 8609 dependencies:
4008 dev: false 8610 readable-stream: 4.4.2
8611 split2: 4.2.0
4009 8612
4010 /pointer-symbol/1.0.0: 8613 /pino-pretty@10.2.0:
4011 resolution: {integrity: sha512-pozTTFO3kG9HQWXCSTJkCgq4fBF8lUQf+5bLddTEW6v4zdjQhcBVfLmKzABEMJMA7s8jhzi0sgANIwdrf4kq+A==} 8614 resolution: {integrity: sha512-tRvpyEmGtc2D+Lr3FulIZ+R1baggQ4S3xD2Ar93KixFEDx6SEAUP3W5aYuEw1C73d6ROrNcB2IXLteW8itlwhA==}
8615 hasBin: true
8616 dependencies:
8617 colorette: 2.0.20
8618 dateformat: 4.6.3
8619 fast-copy: 3.0.1
8620 fast-safe-stringify: 2.1.1
8621 help-me: 4.2.0
8622 joycon: 3.1.1
8623 minimist: 1.2.8
8624 on-exit-leak-free: 2.1.0
8625 pino-abstract-transport: 1.1.0
8626 pump: 3.0.0
8627 readable-stream: 4.4.2
8628 secure-json-parse: 2.7.0
8629 sonic-boom: 3.4.0
8630 strip-json-comments: 3.1.1
8631
8632 /pino-std-serializers@3.2.0:
8633 resolution: {integrity: sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==}
8634
8635 /pino-std-serializers@6.2.2:
8636 resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==}
8637
8638 /pino@6.14.0:
8639 resolution: {integrity: sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg==}
8640 hasBin: true
8641 dependencies:
8642 fast-redact: 3.3.0
8643 fast-safe-stringify: 2.1.1
8644 flatstr: 1.0.12
8645 pino-std-serializers: 3.2.0
8646 process-warning: 1.0.0
8647 quick-format-unescaped: 4.0.4
8648 sonic-boom: 1.4.1
8649
8650 /pirates@4.0.6:
8651 resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
8652 engines: {node: '>= 6'}
8653 dev: true
8654
8655 /pkg-dir@4.2.0:
8656 resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
8657 engines: {node: '>=8'}
8658 dependencies:
8659 find-up: 4.1.0
8660 dev: true
8661
8662 /pkg-up@3.1.0:
8663 resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==}
8664 engines: {node: '>=8'}
8665 dependencies:
8666 find-up: 3.0.0
8667 dev: true
8668
8669 /pluralize@8.0.0:
8670 resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
4012 engines: {node: '>=4'} 8671 engines: {node: '>=4'}
4013 dev: false
4014 8672
4015 /posix-character-classes/0.1.1: 8673 /posix-character-classes@0.1.1:
4016 resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} 8674 resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==}
4017 engines: {node: '>=0.10.0'} 8675 engines: {node: '>=0.10.0'}
4018 dev: false 8676 dev: true
4019 8677
4020 /postgres-array/2.0.0: 8678 /postcss-calc@9.0.1(postcss@8.4.31):
4021 resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} 8679 resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==}
4022 engines: {node: '>=4'} 8680 engines: {node: ^14 || ^16 || >=18.0}
4023 dev: false 8681 peerDependencies:
8682 postcss: ^8.2.2
8683 dependencies:
8684 postcss: 8.4.31
8685 postcss-selector-parser: 6.0.13
8686 postcss-value-parser: 4.2.0
8687 dev: true
4024 8688
4025 /postgres-bytea/1.0.0: 8689 /postcss-colormin@6.0.0(postcss@8.4.31):
4026 resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} 8690 resolution: {integrity: sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw==}
4027 engines: {node: '>=0.10.0'} 8691 engines: {node: ^14 || ^16 || >=18.0}
4028 dev: false 8692 peerDependencies:
8693 postcss: ^8.2.15
8694 dependencies:
8695 browserslist: 4.22.1
8696 caniuse-api: 3.0.0
8697 colord: 2.9.3
8698 postcss: 8.4.31
8699 postcss-value-parser: 4.2.0
8700 dev: true
4029 8701
4030 /postgres-date/1.0.7: 8702 /postcss-convert-values@6.0.0(postcss@8.4.31):
4031 resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} 8703 resolution: {integrity: sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw==}
4032 engines: {node: '>=0.10.0'} 8704 engines: {node: ^14 || ^16 || >=18.0}
4033 dev: false 8705 peerDependencies:
8706 postcss: ^8.2.15
8707 dependencies:
8708 browserslist: 4.22.1
8709 postcss: 8.4.31
8710 postcss-value-parser: 4.2.0
8711 dev: true
4034 8712
4035 /postgres-interval/1.2.0: 8713 /postcss-discard-comments@6.0.0(postcss@8.4.31):
4036 resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} 8714 resolution: {integrity: sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw==}
4037 engines: {node: '>=0.10.0'} 8715 engines: {node: ^14 || ^16 || >=18.0}
8716 peerDependencies:
8717 postcss: ^8.2.15
4038 dependencies: 8718 dependencies:
4039 xtend: 4.0.2 8719 postcss: 8.4.31
4040 dev: false 8720 dev: true
4041 8721
4042 /prelude-ls/1.2.1: 8722 /postcss-discard-duplicates@6.0.0(postcss@8.4.31):
4043 resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 8723 resolution: {integrity: sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA==}
4044 engines: {node: '>= 0.8.0'} 8724 engines: {node: ^14 || ^16 || >=18.0}
8725 peerDependencies:
8726 postcss: ^8.2.15
8727 dependencies:
8728 postcss: 8.4.31
4045 dev: true 8729 dev: true
4046 8730
4047 /prepend-http/2.0.0: 8731 /postcss-discard-empty@6.0.0(postcss@8.4.31):
4048 resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} 8732 resolution: {integrity: sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ==}
4049 engines: {node: '>=4'} 8733 engines: {node: ^14 || ^16 || >=18.0}
4050 dev: false 8734 peerDependencies:
8735 postcss: ^8.2.15
8736 dependencies:
8737 postcss: 8.4.31
8738 dev: true
4051 8739
4052 /prettier/2.3.2: 8740 /postcss-discard-overridden@6.0.0(postcss@8.4.31):
4053 resolution: {integrity: sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==} 8741 resolution: {integrity: sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw==}
4054 engines: {node: '>=10.13.0'} 8742 engines: {node: ^14 || ^16 || >=18.0}
4055 hasBin: true 8743 peerDependencies:
8744 postcss: ^8.2.15
8745 dependencies:
8746 postcss: 8.4.31
4056 dev: true 8747 dev: true
4057 8748
4058 /pretty-hrtime/1.0.3: 8749 /postcss-merge-longhand@6.0.0(postcss@8.4.31):
4059 resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} 8750 resolution: {integrity: sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg==}
4060 engines: {node: '>= 0.8'} 8751 engines: {node: ^14 || ^16 || >=18.0}
4061 dev: false 8752 peerDependencies:
8753 postcss: ^8.2.15
8754 dependencies:
8755 postcss: 8.4.31
8756 postcss-value-parser: 4.2.0
8757 stylehacks: 6.0.0(postcss@8.4.31)
8758 dev: true
4062 8759
4063 /process-nextick-args/2.0.1: 8760 /postcss-merge-rules@6.0.1(postcss@8.4.31):
4064 resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} 8761 resolution: {integrity: sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw==}
4065 dev: false 8762 engines: {node: ^14 || ^16 || >=18.0}
8763 peerDependencies:
8764 postcss: ^8.2.15
8765 dependencies:
8766 browserslist: 4.22.1
8767 caniuse-api: 3.0.0
8768 cssnano-utils: 4.0.0(postcss@8.4.31)
8769 postcss: 8.4.31
8770 postcss-selector-parser: 6.0.13
8771 dev: true
4066 8772
4067 /progress/2.0.3: 8773 /postcss-minify-font-values@6.0.0(postcss@8.4.31):
4068 resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} 8774 resolution: {integrity: sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA==}
4069 engines: {node: '>=0.4.0'} 8775 engines: {node: ^14 || ^16 || >=18.0}
8776 peerDependencies:
8777 postcss: ^8.2.15
8778 dependencies:
8779 postcss: 8.4.31
8780 postcss-value-parser: 4.2.0
4070 dev: true 8781 dev: true
4071 8782
4072 /promise-reduce/2.1.0: 8783 /postcss-minify-gradients@6.0.0(postcss@8.4.31):
4073 resolution: {integrity: sha512-1sJPG9/CCNn+ZxvOLarfCTe+wYoDyS8MwftEIgOLu0UWrR0P9vTvxaMlr0uz4dz+RlZ1d4J6jnKGFdQ8z4LR4Q==} 8784 resolution: {integrity: sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA==}
8785 engines: {node: ^14 || ^16 || >=18.0}
8786 peerDependencies:
8787 postcss: ^8.2.15
4074 dependencies: 8788 dependencies:
4075 any-promise: 0.1.0 8789 colord: 2.9.3
4076 dev: false 8790 cssnano-utils: 4.0.0(postcss@8.4.31)
8791 postcss: 8.4.31
8792 postcss-value-parser: 4.2.0
8793 dev: true
4077 8794
4078 /prompt-actions/3.0.2: 8795 /postcss-minify-params@6.0.0(postcss@8.4.31):
4079 resolution: {integrity: sha512-dhz2Fl7vK+LPpmnQ/S/eSut4BnH4NZDLyddHKi5uTU/2PDn3grEMGkgsll16V5RpVUh/yxdiam0xsM0RD4xvtg==} 8796 resolution: {integrity: sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ==}
4080 engines: {node: '>=4'} 8797 engines: {node: ^14 || ^16 || >=18.0}
8798 peerDependencies:
8799 postcss: ^8.2.15
4081 dependencies: 8800 dependencies:
4082 debug: 2.6.9 8801 browserslist: 4.22.1
4083 transitivePeerDependencies: 8802 cssnano-utils: 4.0.0(postcss@8.4.31)
4084 - supports-color 8803 postcss: 8.4.31
4085 dev: false 8804 postcss-value-parser: 4.2.0
8805 dev: true
4086 8806
4087 /prompt-base/4.1.0: 8807 /postcss-minify-selectors@6.0.0(postcss@8.4.31):
4088 resolution: {integrity: sha512-svGzgLUKZoqomz9SGMkf1hBG8Wl3K7JGuRCXc/Pv7xw8239hhaTBXrmjt7EXA9P/QZzdyT8uNWt9F/iJTXq75g==} 8808 resolution: {integrity: sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g==}
4089 engines: {node: '>=5.0'} 8809 engines: {node: ^14 || ^16 || >=18.0}
8810 peerDependencies:
8811 postcss: ^8.2.15
4090 dependencies: 8812 dependencies:
4091 component-emitter: 1.3.0 8813 postcss: 8.4.31
4092 debug: 3.2.7 8814 postcss-selector-parser: 6.0.13
4093 koalas: 1.0.2 8815 dev: true
4094 log-utils: 0.2.1 8816
4095 prompt-actions: 3.0.2 8817 /postcss-modules-extract-imports@3.0.0(postcss@8.4.31):
4096 prompt-question: 5.0.2 8818 resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==}
4097 readline-ui: 2.2.3 8819 engines: {node: ^10 || ^12 || >= 14}
4098 readline-utils: 2.2.3 8820 peerDependencies:
4099 static-extend: 0.1.2 8821 postcss: ^8.1.0
4100 transitivePeerDependencies: 8822 dependencies:
4101 - supports-color 8823 postcss: 8.4.31
4102 dev: false 8824 dev: true
4103 8825
4104 /prompt-checkbox/2.2.0: 8826 /postcss-modules-local-by-default@4.0.3(postcss@8.4.31):
4105 resolution: {integrity: sha512-T/QWgkdUmKjRSr0FQlV8O+LfgmBk8PwDbWhzllm7mwWNAjs3qOVuru5Y1gV4/14L73zCncqcuwGwvnDyVcVgvA==} 8827 resolution: {integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==}
4106 engines: {node: '>=5.0'} 8828 engines: {node: ^10 || ^12 || >= 14}
8829 peerDependencies:
8830 postcss: ^8.1.0
4107 dependencies: 8831 dependencies:
4108 ansi-cyan: 0.1.1 8832 icss-utils: 5.1.0(postcss@8.4.31)
4109 debug: 2.6.9 8833 postcss: 8.4.31
4110 prompt-base: 4.1.0 8834 postcss-selector-parser: 6.0.13
4111 transitivePeerDependencies: 8835 postcss-value-parser: 4.2.0
4112 - supports-color 8836 dev: true
4113 dev: false
4114 8837
4115 /prompt-choices/3.0.6: 8838 /postcss-modules-scope@3.0.0(postcss@8.4.31):
4116 resolution: {integrity: sha512-KURGzPH4Dvsc3kM1f4yFnqGQ7B/xWb5gj23+ICgFHBUyHYSRAdxOu5aliHvI+RIPs5NQlF94zMVpXPLA34Ni3Q==} 8839 resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==}
4117 engines: {node: '>=0.10.0'} 8840 engines: {node: ^10 || ^12 || >= 14}
8841 peerDependencies:
8842 postcss: ^8.1.0
4118 dependencies: 8843 dependencies:
4119 arr-flatten: 1.1.0 8844 postcss: 8.4.31
4120 choices-separator: 2.0.0 8845 postcss-selector-parser: 6.0.13
4121 clone-deep: 0.3.0 8846 dev: true
4122 collection-visit: 1.0.0
4123 debug: 2.6.9
4124 define-property: 1.0.0
4125 extend-shallow: 2.0.1
4126 is-number: 3.0.0
4127 kind-of: 4.0.0
4128 lazy-cache: 2.0.2
4129 log-utils: 0.2.1
4130 pointer-symbol: 1.0.0
4131 radio-symbol: 2.0.0
4132 set-value: 1.0.0
4133 strip-color: 0.1.0
4134 terminal-paginator: 2.0.2
4135 toggle-array: 1.0.1
4136 transitivePeerDependencies:
4137 - supports-color
4138 dev: false
4139 8847
4140 /prompt-choices/4.1.0: 8848 /postcss-modules-values@4.0.0(postcss@8.4.31):
4141 resolution: {integrity: sha512-ZNYLv6rW9z9n0WdwCkEuS+w5nUAGzRgtRt6GQ5aFNFz6MIcU7nHFlHOwZtzy7RQBk80KzUGPSRQphvMiQzB8pg==} 8849 resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==}
4142 engines: {node: '>=4.0.0'} 8850 engines: {node: ^10 || ^12 || >= 14}
8851 peerDependencies:
8852 postcss: ^8.1.0
4143 dependencies: 8853 dependencies:
4144 arr-flatten: 1.1.0 8854 icss-utils: 5.1.0(postcss@8.4.31)
4145 arr-swap: 1.0.1 8855 postcss: 8.4.31
4146 choices-separator: 2.0.0 8856 dev: true
4147 clone-deep: 4.0.1
4148 collection-visit: 1.0.0
4149 define-property: 2.0.2
4150 is-number: 6.0.0
4151 kind-of: 6.0.3
4152 koalas: 1.0.2
4153 log-utils: 0.2.1
4154 pointer-symbol: 1.0.0
4155 radio-symbol: 2.0.0
4156 set-value: 3.0.3
4157 strip-color: 0.1.0
4158 terminal-paginator: 2.0.2
4159 toggle-array: 1.0.1
4160 transitivePeerDependencies:
4161 - supports-color
4162 dev: false
4163 8857
4164 /prompt-confirm/2.0.4: 8858 /postcss-normalize-charset@6.0.0(postcss@8.4.31):
4165 resolution: {integrity: sha512-X5lzbC8/kMNHdPOqQPfMKpH4VV2f7v2OTRJoN69ZYBirSwTeQaf9ZhmzPEO9ybMA0YV2Pha5MV27u2/U4ahWfg==} 8859 resolution: {integrity: sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ==}
4166 engines: {node: '>=6.0'} 8860 engines: {node: ^14 || ^16 || >=18.0}
8861 peerDependencies:
8862 postcss: ^8.2.15
4167 dependencies: 8863 dependencies:
4168 ansi-cyan: 0.1.1 8864 postcss: 8.4.31
4169 prompt-base: 4.1.0 8865 dev: true
4170 transitivePeerDependencies:
4171 - supports-color
4172 dev: false
4173 8866
4174 /prompt-expand/1.0.1: 8867 /postcss-normalize-display-values@6.0.0(postcss@8.4.31):
4175 resolution: {integrity: sha512-BDTw6tuWF6TuM1ZmwN5K/p6FCmm2E/QeQbtKoL76HrVdgjUQab9MQnIcWfTPh5d0NOO7Rf/Y1onvIQMkEw3Srg==} 8868 resolution: {integrity: sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw==}
4176 engines: {node: '>=6'} 8869 engines: {node: ^14 || ^16 || >=18.0}
8870 peerDependencies:
8871 postcss: ^8.2.15
4177 dependencies: 8872 dependencies:
4178 ansi-colors: 1.1.0 8873 postcss: 8.4.31
4179 prompt-rawlist: 2.0.1 8874 postcss-value-parser: 4.2.0
4180 transitivePeerDependencies: 8875 dev: true
4181 - supports-color
4182 dev: false
4183 8876
4184 /prompt-input/3.0.0: 8877 /postcss-normalize-positions@6.0.0(postcss@8.4.31):
4185 resolution: {integrity: sha512-c0udMEi7nWE+n+enZKfyMl+HWZ6/0qFELGqzWTQ1D2QXCFwDpFZ1X41+CmYwjGwEkGFQVBTLMH+8VenvR5uGOA==} 8878 resolution: {integrity: sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg==}
4186 engines: {node: '>=5.0'} 8879 engines: {node: ^14 || ^16 || >=18.0}
8880 peerDependencies:
8881 postcss: ^8.2.15
4187 dependencies: 8882 dependencies:
4188 debug: 2.6.9 8883 postcss: 8.4.31
4189 prompt-base: 4.1.0 8884 postcss-value-parser: 4.2.0
4190 transitivePeerDependencies: 8885 dev: true
4191 - supports-color
4192 dev: false
4193 8886
4194 /prompt-list/2.2.0: 8887 /postcss-normalize-repeat-style@6.0.0(postcss@8.4.31):
4195 resolution: {integrity: sha512-41Eu3las4OthLTotMC6VyGPQaLXKWnoyqirgGKzTHxErV5JEediDkdjv+FF4AKTwBCkpt2I0TQSa24qAU1b9Bw==} 8888 resolution: {integrity: sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A==}
4196 engines: {node: '>=5.0'} 8889 engines: {node: ^14 || ^16 || >=18.0}
8890 peerDependencies:
8891 postcss: ^8.2.15
4197 dependencies: 8892 dependencies:
4198 ansi-cyan: 0.1.1 8893 postcss: 8.4.31
4199 ansi-dim: 0.1.1 8894 postcss-value-parser: 4.2.0
4200 debug: 3.2.7 8895 dev: true
4201 prompt-radio: 1.2.1
4202 transitivePeerDependencies:
4203 - supports-color
4204 dev: false
4205 8896
4206 /prompt-list/3.2.0: 8897 /postcss-normalize-string@6.0.0(postcss@8.4.31):
4207 resolution: {integrity: sha512-PDao47cmC9+m2zEUghH+WIIascd8SuyyWO+akuUubd0XxOQyUH96HMdIcL3YnNS8kJUHwddH1rHVgL9vZA1QsQ==} 8898 resolution: {integrity: sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w==}
8899 engines: {node: ^14 || ^16 || >=18.0}
8900 peerDependencies:
8901 postcss: ^8.2.15
8902 dependencies:
8903 postcss: 8.4.31
8904 postcss-value-parser: 4.2.0
8905 dev: true
8906
8907 /postcss-normalize-timing-functions@6.0.0(postcss@8.4.31):
8908 resolution: {integrity: sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg==}
8909 engines: {node: ^14 || ^16 || >=18.0}
8910 peerDependencies:
8911 postcss: ^8.2.15
8912 dependencies:
8913 postcss: 8.4.31
8914 postcss-value-parser: 4.2.0
8915 dev: true
8916
8917 /postcss-normalize-unicode@6.0.0(postcss@8.4.31):
8918 resolution: {integrity: sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg==}
8919 engines: {node: ^14 || ^16 || >=18.0}
8920 peerDependencies:
8921 postcss: ^8.2.15
8922 dependencies:
8923 browserslist: 4.22.1
8924 postcss: 8.4.31
8925 postcss-value-parser: 4.2.0
8926 dev: true
8927
8928 /postcss-normalize-url@6.0.0(postcss@8.4.31):
8929 resolution: {integrity: sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw==}
8930 engines: {node: ^14 || ^16 || >=18.0}
8931 peerDependencies:
8932 postcss: ^8.2.15
8933 dependencies:
8934 postcss: 8.4.31
8935 postcss-value-parser: 4.2.0
8936 dev: true
8937
8938 /postcss-normalize-whitespace@6.0.0(postcss@8.4.31):
8939 resolution: {integrity: sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw==}
8940 engines: {node: ^14 || ^16 || >=18.0}
8941 peerDependencies:
8942 postcss: ^8.2.15
8943 dependencies:
8944 postcss: 8.4.31
8945 postcss-value-parser: 4.2.0
8946 dev: true
8947
8948 /postcss-ordered-values@6.0.0(postcss@8.4.31):
8949 resolution: {integrity: sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg==}
8950 engines: {node: ^14 || ^16 || >=18.0}
8951 peerDependencies:
8952 postcss: ^8.2.15
8953 dependencies:
8954 cssnano-utils: 4.0.0(postcss@8.4.31)
8955 postcss: 8.4.31
8956 postcss-value-parser: 4.2.0
8957 dev: true
8958
8959 /postcss-reduce-initial@6.0.0(postcss@8.4.31):
8960 resolution: {integrity: sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA==}
8961 engines: {node: ^14 || ^16 || >=18.0}
8962 peerDependencies:
8963 postcss: ^8.2.15
8964 dependencies:
8965 browserslist: 4.22.1
8966 caniuse-api: 3.0.0
8967 postcss: 8.4.31
8968 dev: true
8969
8970 /postcss-reduce-transforms@6.0.0(postcss@8.4.31):
8971 resolution: {integrity: sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w==}
8972 engines: {node: ^14 || ^16 || >=18.0}
8973 peerDependencies:
8974 postcss: ^8.2.15
8975 dependencies:
8976 postcss: 8.4.31
8977 postcss-value-parser: 4.2.0
8978 dev: true
8979
8980 /postcss-selector-parser@6.0.13:
8981 resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
4208 engines: {node: '>=4'} 8982 engines: {node: '>=4'}
4209 dependencies: 8983 dependencies:
4210 ansi-cyan: 0.1.1 8984 cssesc: 3.0.0
4211 ansi-dim: 0.1.1 8985 util-deprecate: 1.0.2
4212 prompt-radio: 1.2.1 8986 dev: true
4213 transitivePeerDependencies:
4214 - supports-color
4215 dev: false
4216 8987
4217 /prompt-password/1.2.0: 8988 /postcss-svgo@6.0.0(postcss@8.4.31):
4218 resolution: {integrity: sha512-lBehk9YPGLxH9hAJ+VU7Bj/ePi9t5kPL/1ZBGZ2fLrDX1QeaBwi4RtQggZrsbMalGJaXaAuo/7VOa7QvbE2hAQ==} 8989 resolution: {integrity: sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw==}
4219 engines: {node: '>=5.0'} 8990 engines: {node: ^14 || ^16 || >= 18}
8991 peerDependencies:
8992 postcss: ^8.2.15
4220 dependencies: 8993 dependencies:
4221 debug: 2.6.9 8994 postcss: 8.4.31
4222 prompt-base: 4.1.0 8995 postcss-value-parser: 4.2.0
4223 transitivePeerDependencies: 8996 svgo: 3.0.2
4224 - supports-color 8997 dev: true
8998
8999 /postcss-unique-selectors@6.0.0(postcss@8.4.31):
9000 resolution: {integrity: sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw==}
9001 engines: {node: ^14 || ^16 || >=18.0}
9002 peerDependencies:
9003 postcss: ^8.2.15
9004 dependencies:
9005 postcss: 8.4.31
9006 postcss-selector-parser: 6.0.13
9007 dev: true
9008
9009 /postcss-value-parser@4.2.0:
9010 resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
9011 dev: true
9012
9013 /postcss@8.4.31:
9014 resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
9015 engines: {node: ^10 || ^12 || >=14}
9016 dependencies:
9017 nanoid: 3.3.6
9018 picocolors: 1.0.0
9019 source-map-js: 1.0.2
9020 dev: true
9021
9022 /postgres-array@2.0.0:
9023 resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==}
9024 engines: {node: '>=4'}
4225 dev: false 9025 dev: false
4226 9026
4227 /prompt-question/3.0.3: 9027 /postgres-bytea@1.0.0:
4228 resolution: {integrity: sha512-F1zOy65ICBRMx+vhlSow7ptiHTUPwJJJN6Ww4/i/AN9zKAYbDOhk95MhxyepqV6ROX/KhTPGdqO/EcOhlPbs2Q==} 9028 resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==}
4229 engines: {node: '>=0.10.0'} 9029 engines: {node: '>=0.10.0'}
4230 dependencies:
4231 clone-deep: 0.3.0
4232 debug: 2.6.9
4233 define-property: 1.0.0
4234 extend-shallow: 2.0.1
4235 kind-of: 4.0.0
4236 koalas: 1.0.2
4237 prompt-choices: 3.0.6
4238 transitivePeerDependencies:
4239 - supports-color
4240 dev: false 9030 dev: false
4241 9031
4242 /prompt-question/5.0.2: 9032 /postgres-date@1.0.7:
4243 resolution: {integrity: sha512-wreaLbbu8f5+7zXds199uiT11Ojp59Z4iBi6hONlSLtsKGTvL2UY8VglcxQ3t/X4qWIxsNCg6aT4O8keO65v6Q==} 9033 resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==}
4244 engines: {node: '>=4.0.0'} 9034 engines: {node: '>=0.10.0'}
9035 dev: false
9036
9037 /postgres-interval@1.2.0:
9038 resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==}
9039 engines: {node: '>=0.10.0'}
4245 dependencies: 9040 dependencies:
4246 clone-deep: 1.0.0 9041 xtend: 4.0.2
4247 debug: 3.2.7
4248 define-property: 1.0.0
4249 isobject: 3.0.1
4250 kind-of: 5.1.0
4251 koalas: 1.0.2
4252 prompt-choices: 4.1.0
4253 transitivePeerDependencies:
4254 - supports-color
4255 dev: false 9042 dev: false
4256 9043
4257 /prompt-radio/1.2.1: 9044 /prelude-ls@1.2.1:
4258 resolution: {integrity: sha512-vH1iAkgbWyvZBC1BTajydiHmwJP4F1b684gq0fm2wOjPVW1zaDo01OXWr/Dske0XdoHhtZFNMOXNj/ZUSRBywg==} 9045 resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
4259 engines: {node: '>=5.0'} 9046 engines: {node: '>= 0.8.0'}
9047 dev: true
9048
9049 /prettier-linter-helpers@1.0.0:
9050 resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
9051 engines: {node: '>=6.0.0'}
4260 dependencies: 9052 dependencies:
4261 debug: 2.6.9 9053 fast-diff: 1.3.0
4262 prompt-checkbox: 2.2.0 9054 dev: true
4263 transitivePeerDependencies: 9055
4264 - supports-color 9056 /prettier@3.0.0:
9057 resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==}
9058 engines: {node: '>=14'}
9059 hasBin: true
9060 dev: true
9061
9062 /pretty-error@4.0.0:
9063 resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==}
9064 dependencies:
9065 lodash: 4.17.21
9066 renderkid: 3.0.0
9067 dev: true
9068
9069 /pretty-format@25.5.0:
9070 resolution: {integrity: sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==}
9071 engines: {node: '>= 8.3'}
9072 dependencies:
9073 '@jest/types': 25.5.0
9074 ansi-regex: 5.0.1
9075 ansi-styles: 4.3.0
9076 react-is: 16.13.1
9077 dev: true
9078
9079 /pretty-format@29.7.0:
9080 resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
9081 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
9082 dependencies:
9083 '@jest/schemas': 29.6.3
9084 ansi-styles: 5.2.0
9085 react-is: 18.2.0
9086 dev: true
9087
9088 /pretty-hrtime@1.0.3:
9089 resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==}
9090 engines: {node: '>= 0.8'}
9091
9092 /printable-characters@1.0.42:
9093 resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==}
9094 dev: true
9095
9096 /process-nextick-args@2.0.1:
9097 resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
9098
9099 /process-warning@1.0.0:
9100 resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==}
9101
9102 /process@0.11.10:
9103 resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
9104 engines: {node: '>= 0.6.0'}
9105
9106 /promise-inflight@1.0.1:
9107 resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
9108 requiresBuild: true
9109 peerDependencies:
9110 bluebird: '*'
9111 peerDependenciesMeta:
9112 bluebird:
9113 optional: true
4265 dev: false 9114 dev: false
9115 optional: true
4266 9116
4267 /prompt-rawlist/2.0.1: 9117 /promise-retry@2.0.1:
4268 resolution: {integrity: sha512-mhCPnC7fvjcCZuksiF380arJKiXjSP9WT6kZqO+biFg+yHBpDLAs4GCck5nRkvL9ikYur/wPz6fAzV63HI7gLg==} 9118 resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==}
4269 engines: {node: '>=5.0'} 9119 engines: {node: '>=10'}
9120 requiresBuild: true
4270 dependencies: 9121 dependencies:
4271 ansi-cyan: 0.1.1 9122 err-code: 2.0.3
4272 ansi-dim: 0.1.1 9123 retry: 0.12.0
4273 ansi-red: 0.1.1
4274 is-number: 3.0.0
4275 prompt-list: 2.2.0
4276 transitivePeerDependencies:
4277 - supports-color
4278 dev: false 9124 dev: false
9125 optional: true
4279 9126
4280 /proxy-addr/2.0.7: 9127 /prop-ini@0.0.2:
9128 resolution: {integrity: sha512-qyU57WvAvZDbzmRy9xDbJGVwrGJhmA+rYnVjy4xtX4Ny9c7gzvpmf/j7A3oq9ChbPh15MZQKjPep2mNdnAhtig==}
9129 dependencies:
9130 extend: 3.0.2
9131 dev: true
9132
9133 /proxy-addr@2.0.7:
4281 resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 9134 resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
4282 engines: {node: '>= 0.10'} 9135 engines: {node: '>= 0.10'}
4283 dependencies: 9136 dependencies:
4284 forwarded: 0.2.0 9137 forwarded: 0.2.0
4285 ipaddr.js: 1.9.1 9138 ipaddr.js: 1.9.1
4286 dev: false
4287 9139
4288 /pseudomap/1.0.2: 9140 /pseudomap@1.0.2:
4289 resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} 9141 resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==}
4290 dev: false 9142 dev: true
4291 9143
4292 /psl/1.9.0: 9144 /pump@1.0.3:
4293 resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} 9145 resolution: {integrity: sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==}
9146 dependencies:
9147 end-of-stream: 1.4.4
9148 once: 1.4.0
4294 dev: false 9149 dev: false
4295 9150
4296 /pump/1.0.3: 9151 /pump@3.0.0:
4297 resolution: {integrity: sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==} 9152 resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
4298 dependencies: 9153 dependencies:
4299 end-of-stream: 1.4.4 9154 end-of-stream: 1.4.4
4300 once: 1.4.0 9155 once: 1.4.0
9156
9157 /punycode@1.3.2:
9158 resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==}
4301 dev: false 9159 dev: false
4302 9160
4303 /punycode/2.1.1: 9161 /punycode@2.3.0:
4304 resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 9162 resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
4305 engines: {node: '>=6'} 9163 engines: {node: '>=6'}
9164 dev: true
4306 9165
4307 /qs/6.11.0: 9166 /qs@6.11.0:
4308 resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} 9167 resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==}
4309 engines: {node: '>=0.6'} 9168 engines: {node: '>=0.6'}
4310 dependencies: 9169 dependencies:
4311 side-channel: 1.0.4 9170 side-channel: 1.0.4
4312 dev: false 9171 dev: true
4313 9172
4314 /qs/6.5.3: 9173 /qs@6.11.2:
4315 resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} 9174 resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==}
4316 engines: {node: '>=0.6'} 9175 engines: {node: '>=0.6'}
4317 dev: false
4318
4319 /query-string/5.1.1:
4320 resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==}
4321 engines: {node: '>=0.10.0'}
4322 dependencies: 9176 dependencies:
4323 decode-uri-component: 0.2.2 9177 side-channel: 1.0.4
4324 object-assign: 4.1.1 9178
4325 strict-uri-encode: 1.1.0 9179 /querystring@0.2.0:
9180 resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==}
9181 engines: {node: '>=0.4.x'}
9182 deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
4326 dev: false 9183 dev: false
4327 9184
4328 /radio-symbol/2.0.0: 9185 /queue-microtask@1.2.3:
4329 resolution: {integrity: sha512-fpuWhwGD4XG1BfUWKXhCqdguCXzGi/DDb6RzmAGZo9R75enjlx0l+ZhHF93KNG7iNpT0Vi7wEqbf8ZErbe+JtQ==} 9186 resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
4330 engines: {node: '>=0.10.0'} 9187
4331 dependencies: 9188 /quick-format-unescaped@4.0.4:
4332 ansi-gray: 0.1.1 9189 resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==}
4333 ansi-green: 0.1.1 9190
4334 is-windows: 1.0.2 9191 /quick-lru@5.1.1:
9192 resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
9193 engines: {node: '>=10'}
4335 dev: false 9194 dev: false
4336 9195
4337 /rand-token/0.4.0: 9196 /rand-token@1.0.1:
4338 resolution: {integrity: sha512-FLNNsir2R+XY8LKsZ+8u/w0qZ4sGit7cpNdznsI77cAVob6UlVPueDKRyjJ3W1Q6FJLgAVH98JvlqqpSaL7NEQ==} 9197 resolution: {integrity: sha512-Zri5SfJmEzBJ3IexFdigvPSCamslJ7UjLkUn0tlgH7COJvaUr5V7FyUYgKifEMTw7gFO8ZLcWjcU+kq8akipzg==}
4339 engines: {node: '>= 0.8.0'} 9198 engines: {node: '>= 10'}
4340 dev: false 9199 dev: false
4341 9200
4342 /random-bytes/1.0.0: 9201 /random-bytes@1.0.0:
4343 resolution: {integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==} 9202 resolution: {integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==}
4344 engines: {node: '>= 0.8'} 9203 engines: {node: '>= 0.8'}
4345 dev: false
4346 9204
4347 /range-parser/1.2.1: 9205 /randombytes@2.1.0:
9206 resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
9207 dependencies:
9208 safe-buffer: 5.2.1
9209 dev: true
9210
9211 /range-parser@1.2.1:
4348 resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 9212 resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
4349 engines: {node: '>= 0.6'} 9213 engines: {node: '>= 0.6'}
4350 dev: false
4351 9214
4352 /raw-body/2.5.1: 9215 /raw-body@2.5.1:
4353 resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} 9216 resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==}
4354 engines: {node: '>= 0.8'} 9217 engines: {node: '>= 0.8'}
4355 dependencies: 9218 dependencies:
@@ -4357,19 +9220,55 @@ packages:
4357 http-errors: 2.0.0 9220 http-errors: 2.0.0
4358 iconv-lite: 0.4.24 9221 iconv-lite: 0.4.24
4359 unpipe: 1.0.0 9222 unpipe: 1.0.0
4360 dev: false 9223 dev: true
9224
9225 /raw-body@2.5.2:
9226 resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
9227 engines: {node: '>= 0.8'}
9228 dependencies:
9229 bytes: 3.1.2
9230 http-errors: 2.0.0
9231 iconv-lite: 0.4.24
9232 unpipe: 1.0.0
4361 9233
4362 /rc/1.2.8: 9234 /rc@1.2.8:
4363 resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} 9235 resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
4364 hasBin: true 9236 hasBin: true
4365 dependencies: 9237 dependencies:
4366 deep-extend: 0.6.0 9238 deep-extend: 0.6.0
4367 ini: 1.3.8 9239 ini: 1.3.8
4368 minimist: 1.2.7 9240 minimist: 1.2.8
4369 strip-json-comments: 2.0.1 9241 strip-json-comments: 2.0.1
4370 dev: false 9242 dev: true
9243
9244 /react-is@16.13.1:
9245 resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
9246 dev: true
9247
9248 /react-is@18.2.0:
9249 resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
9250 dev: true
9251
9252 /read-pkg-up@7.0.1:
9253 resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
9254 engines: {node: '>=8'}
9255 dependencies:
9256 find-up: 4.1.0
9257 read-pkg: 5.2.0
9258 type-fest: 0.8.1
9259 dev: true
9260
9261 /read-pkg@5.2.0:
9262 resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
9263 engines: {node: '>=8'}
9264 dependencies:
9265 '@types/normalize-package-data': 2.4.2
9266 normalize-package-data: 2.5.0
9267 parse-json: 5.2.0
9268 type-fest: 0.6.0
9269 dev: true
4371 9270
4372 /readable-stream/2.3.7: 9271 /readable-stream@2.3.7:
4373 resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} 9272 resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==}
4374 dependencies: 9273 dependencies:
4375 core-util-is: 1.0.3 9274 core-util-is: 1.0.3
@@ -4381,314 +9280,390 @@ packages:
4381 util-deprecate: 1.0.2 9280 util-deprecate: 1.0.2
4382 dev: false 9281 dev: false
4383 9282
4384 /readable-stream/3.6.0: 9283 /readable-stream@2.3.8:
4385 resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} 9284 resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
9285 dependencies:
9286 core-util-is: 1.0.3
9287 inherits: 2.0.4
9288 isarray: 1.0.0
9289 process-nextick-args: 2.0.1
9290 safe-buffer: 5.1.2
9291 string_decoder: 1.1.1
9292 util-deprecate: 1.0.2
9293
9294 /readable-stream@3.6.2:
9295 resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
4386 engines: {node: '>= 6'} 9296 engines: {node: '>= 6'}
4387 dependencies: 9297 dependencies:
4388 inherits: 2.0.4 9298 inherits: 2.0.4
4389 string_decoder: 1.3.0 9299 string_decoder: 1.3.0
4390 util-deprecate: 1.0.2 9300 util-deprecate: 1.0.2
4391 dev: false
4392 9301
4393 /readline-ui/2.2.3: 9302 /readable-stream@4.4.2:
4394 resolution: {integrity: sha512-ix7jz0PxqQqcIuq3yQTHv1TOhlD2IHO74aNO+lSuXsRYm1d+pdyup1yF3zKyLK1wWZrVNGjkzw5tUegO2IDy+A==} 9303 resolution: {integrity: sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==}
4395 engines: {node: '>=4.0'} 9304 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
4396 dependencies: 9305 dependencies:
4397 component-emitter: 1.3.0 9306 abort-controller: 3.0.0
4398 debug: 2.6.9 9307 buffer: 6.0.3
4399 readline-utils: 2.2.3 9308 events: 3.3.0
4400 string-width: 2.1.1 9309 process: 0.11.10
4401 transitivePeerDependencies: 9310 string_decoder: 1.3.0
4402 - supports-color
4403 dev: false
4404 9311
4405 /readline-utils/2.2.3: 9312 /readable-web-to-node-stream@3.0.2:
4406 resolution: {integrity: sha512-cjFo7R7e7AaFOz2JLQ4EgsHh4+l7mw29Eu3DAEPgGeWbYQFKqyxWsL61/McC6b2oJAvn14Ea8eUms9o8ZFC1iQ==} 9313 resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==}
4407 engines: {node: '>=4.0'} 9314 engines: {node: '>=8'}
4408 dependencies: 9315 dependencies:
4409 arr-flatten: 1.1.0 9316 readable-stream: 3.6.2
4410 extend-shallow: 2.0.1
4411 is-buffer: 1.1.6
4412 is-number: 3.0.0
4413 is-windows: 1.0.2
4414 koalas: 1.0.2
4415 mute-stream: 0.0.7
4416 strip-color: 0.1.0
4417 window-size: 1.1.1
4418 dev: false
4419 9317
4420 /rechoir/0.6.2: 9318 /readdirp@3.6.0:
4421 resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} 9319 resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
4422 engines: {node: '>= 0.10'} 9320 engines: {node: '>=8.10.0'}
9321 dependencies:
9322 picomatch: 2.3.1
9323 dev: true
9324
9325 /readme-badger@0.3.0:
9326 resolution: {integrity: sha512-+sMOLSs1imZUISZ2Rhz7qqVd77QtpcAPbGeIraFdgJmijb04YtdlPjGNBvDChTNtLbeQ6JNGQy3pOgslWfaP3g==}
9327 dependencies:
9328 balanced-match: 1.0.2
9329 dev: true
9330
9331 /rechoir@0.8.0:
9332 resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==}
9333 engines: {node: '>= 10.13.0'}
9334 dependencies:
9335 resolve: 1.22.6
9336
9337 /redeyed@2.1.1:
9338 resolution: {integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==}
4423 dependencies: 9339 dependencies:
4424 resolve: 1.22.1 9340 esprima: 4.0.1
9341 dev: true
9342
9343 /reflect-metadata@0.1.13:
9344 resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==}
4425 dev: false 9345 dev: false
4426 9346
4427 /regenerator-runtime/0.13.11: 9347 /regenerate-unicode-properties@10.1.1:
4428 resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} 9348 resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==}
9349 engines: {node: '>=4'}
9350 dependencies:
9351 regenerate: 1.4.2
9352 dev: true
9353
9354 /regenerate@1.4.2:
9355 resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==}
4429 dev: true 9356 dev: true
4430 9357
4431 /regex-not/1.0.2: 9358 /regenerator-runtime@0.14.0:
9359 resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==}
9360 dev: true
9361
9362 /regenerator-transform@0.15.2:
9363 resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==}
9364 dependencies:
9365 '@babel/runtime': 7.23.1
9366 dev: true
9367
9368 /regex-not@1.0.2:
4432 resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} 9369 resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==}
4433 engines: {node: '>=0.10.0'} 9370 engines: {node: '>=0.10.0'}
4434 dependencies: 9371 dependencies:
4435 extend-shallow: 3.0.2 9372 extend-shallow: 3.0.2
4436 safe-regex: 1.1.0 9373 safe-regex: 1.1.0
4437 dev: false 9374 dev: true
9375
9376 /regex-parser@2.2.11:
9377 resolution: {integrity: sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==}
9378 dev: true
4438 9379
4439 /regexp.prototype.flags/1.4.3: 9380 /regexp-tree@0.1.27:
4440 resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} 9381 resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==}
9382 hasBin: true
9383 dev: true
9384
9385 /regexp.prototype.flags@1.5.1:
9386 resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==}
4441 engines: {node: '>= 0.4'} 9387 engines: {node: '>= 0.4'}
4442 dependencies: 9388 dependencies:
4443 call-bind: 1.0.2 9389 call-bind: 1.0.2
4444 define-properties: 1.1.4 9390 define-properties: 1.2.1
4445 functions-have-names: 1.2.3 9391 set-function-name: 2.0.1
4446 dev: true 9392 dev: true
4447 9393
4448 /regexpp/3.2.0: 9394 /regexpu-core@5.3.2:
4449 resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} 9395 resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==}
4450 engines: {node: '>=8'} 9396 engines: {node: '>=4'}
9397 dependencies:
9398 '@babel/regjsgen': 0.8.0
9399 regenerate: 1.4.2
9400 regenerate-unicode-properties: 10.1.1
9401 regjsparser: 0.9.1
9402 unicode-match-property-ecmascript: 2.0.0
9403 unicode-match-property-value-ecmascript: 2.1.0
9404 dev: true
9405
9406 /regjsparser@0.10.0:
9407 resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==}
9408 hasBin: true
9409 dependencies:
9410 jsesc: 0.5.0
9411 dev: true
9412
9413 /regjsparser@0.9.1:
9414 resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==}
9415 hasBin: true
9416 dependencies:
9417 jsesc: 0.5.0
9418 dev: true
9419
9420 /renderkid@3.0.0:
9421 resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==}
9422 dependencies:
9423 css-select: 4.3.0
9424 dom-converter: 0.2.0
9425 htmlparser2: 6.1.0
9426 lodash: 4.17.21
9427 strip-ansi: 6.0.1
4451 dev: true 9428 dev: true
4452 9429
4453 /repeat-element/1.1.4: 9430 /repeat-element@1.1.4:
4454 resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} 9431 resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==}
4455 engines: {node: '>=0.10.0'} 9432 engines: {node: '>=0.10.0'}
4456 dev: false 9433 dev: true
4457 9434
4458 /repeat-string/1.6.1: 9435 /repeat-string@1.6.1:
4459 resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} 9436 resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
4460 engines: {node: '>=0.10'} 9437 engines: {node: '>=0.10'}
4461 dev: false 9438 dev: true
4462
4463 /request/2.88.2:
4464 resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==}
4465 engines: {node: '>= 6'}
4466 deprecated: request has been deprecated, see https://github.com/request/request/issues/3142
4467 dependencies:
4468 aws-sign2: 0.7.0
4469 aws4: 1.11.0
4470 caseless: 0.12.0
4471 combined-stream: 1.0.8
4472 extend: 3.0.2
4473 forever-agent: 0.6.1
4474 form-data: 2.3.3
4475 har-validator: 5.1.5
4476 http-signature: 1.2.0
4477 is-typedarray: 1.0.0
4478 isstream: 0.1.2
4479 json-stringify-safe: 5.0.1
4480 mime-types: 2.1.35
4481 oauth-sign: 0.9.0
4482 performance-now: 2.1.0
4483 qs: 6.5.3
4484 safe-buffer: 5.2.1
4485 tough-cookie: 2.5.0
4486 tunnel-agent: 0.6.0
4487 uuid: 3.4.0
4488 dev: false
4489 9439
4490 /require-all/3.0.0: 9440 /require-all@3.0.0:
4491 resolution: {integrity: sha512-jPGN876lc5exWYrMcgZSd7U42P0PmVQzxnQB13fCSzmyGnqQWW4WUz5DosZ/qe24hz+5o9lSvW2epBNZ1xa6Fw==} 9441 resolution: {integrity: sha512-jPGN876lc5exWYrMcgZSd7U42P0PmVQzxnQB13fCSzmyGnqQWW4WUz5DosZ/qe24hz+5o9lSvW2epBNZ1xa6Fw==}
4492 engines: {node: '>= 0.8'} 9442 engines: {node: '>= 0.8'}
4493 dev: false
4494
4495 /require-directory/2.1.1:
4496 resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
4497 engines: {node: '>=0.10.0'}
4498 dev: true
4499 9443
4500 /require-from-string/2.0.2: 9444 /require-from-string@2.0.2:
4501 resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 9445 resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
4502 engines: {node: '>=0.10.0'} 9446 engines: {node: '>=0.10.0'}
4503 dev: true 9447 dev: true
4504 9448
4505 /require-main-filename/2.0.0: 9449 /requires-port@1.0.0:
4506 resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} 9450 resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
4507 dev: true 9451 dev: true
4508 9452
4509 /require-stack/1.0.2: 9453 /resolve-alpn@1.2.1:
4510 resolution: {integrity: sha512-a3Nx86n2BdNDGocv4hLWDQtWP0Ec4LFvfb/xQ6wfibAmT+7qm7QLgFNcBZ6Ukbqq0a+K4CjxAuhG9Btg8NSdbQ==} 9454 resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
4511 dependencies:
4512 syntax-error: 1.4.0
4513 dev: false 9455 dev: false
4514 9456
4515 /require-uncached/1.0.3: 9457 /resolve-cwd@3.0.0:
4516 resolution: {integrity: sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w==} 9458 resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
4517 engines: {node: '>=0.10.0'} 9459 engines: {node: '>=8'}
4518 dependencies:
4519 caller-path: 0.1.0
4520 resolve-from: 1.0.1
4521 dev: false
4522
4523 /resetable/1.0.3:
4524 resolution: {integrity: sha512-AJuhrcU5TVUaM5j0wSjZXlzt0Qb5pai7nDI+klgv7deuSHy5Kom7ovwBt5tMMO3XmJ9YYSCbKhkgDJHL4MEerQ==}
4525 dependencies:
4526 clone: 2.1.2
4527 dev: false
4528
4529 /resolve-dir/1.0.1:
4530 resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==}
4531 engines: {node: '>=0.10.0'}
4532 dependencies: 9460 dependencies:
4533 expand-tilde: 2.0.2 9461 resolve-from: 5.0.0
4534 global-modules: 1.0.0 9462 dev: true
4535 dev: false
4536
4537 /resolve-from/1.0.1:
4538 resolution: {integrity: sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==}
4539 engines: {node: '>=0.10.0'}
4540 dev: false
4541 9463
4542 /resolve-from/4.0.0: 9464 /resolve-from@4.0.0:
4543 resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 9465 resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
4544 engines: {node: '>=4'} 9466 engines: {node: '>=4'}
4545 dev: true 9467 dev: true
4546 9468
4547 /resolve-url/0.2.1: 9469 /resolve-from@5.0.0:
9470 resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
9471 engines: {node: '>=8'}
9472
9473 /resolve-url-loader@5.0.0:
9474 resolution: {integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==}
9475 engines: {node: '>=12'}
9476 dependencies:
9477 adjust-sourcemap-loader: 4.0.0
9478 convert-source-map: 1.9.0
9479 loader-utils: 2.0.4
9480 postcss: 8.4.31
9481 source-map: 0.6.1
9482 dev: true
9483
9484 /resolve-url@0.2.1:
4548 resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} 9485 resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==}
4549 deprecated: https://github.com/lydell/resolve-url#deprecated 9486 deprecated: https://github.com/lydell/resolve-url#deprecated
4550 dev: false 9487 dev: true
4551 9488
4552 /resolve/1.22.1: 9489 /resolve@1.22.6:
4553 resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 9490 resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==}
4554 hasBin: true 9491 hasBin: true
4555 dependencies: 9492 dependencies:
4556 is-core-module: 2.11.0 9493 is-core-module: 2.13.0
4557 path-parse: 1.0.7 9494 path-parse: 1.0.7
4558 supports-preserve-symlinks-flag: 1.0.0 9495 supports-preserve-symlinks-flag: 1.0.0
4559 9496
4560 /responselike/1.0.2: 9497 /responselike@2.0.1:
4561 resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} 9498 resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==}
4562 dependencies: 9499 dependencies:
4563 lowercase-keys: 1.0.1 9500 lowercase-keys: 2.0.0
4564 dev: false 9501 dev: false
4565 9502
4566 /restore-cursor/3.1.0: 9503 /restore-cursor@3.1.0:
4567 resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} 9504 resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
4568 engines: {node: '>=8'} 9505 engines: {node: '>=8'}
4569 dependencies: 9506 dependencies:
4570 onetime: 5.1.2 9507 onetime: 5.1.2
4571 signal-exit: 3.0.7 9508 signal-exit: 3.0.7
4572 dev: true
4573 9509
4574 /ret/0.1.15: 9510 /ret@0.1.15:
4575 resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} 9511 resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==}
4576 engines: {node: '>=0.12'} 9512 engines: {node: '>=0.12'}
9513 dev: true
9514
9515 /retry@0.12.0:
9516 resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==}
9517 engines: {node: '>= 4'}
9518 requiresBuild: true
4577 dev: false 9519 dev: false
9520 optional: true
9521
9522 /retry@0.13.1:
9523 resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==}
9524 engines: {node: '>= 4'}
9525 dev: true
4578 9526
4579 /rimraf/2.7.1: 9527 /reusify@1.0.4:
9528 resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
9529 engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
9530
9531 /rev-hash@3.0.0:
9532 resolution: {integrity: sha512-s+87HfEKAu95TaTxnbCobn0/BkbzR23LHSwVdYvr8mn5+PPjzy+hTWyh92b5oaLgig9TKPe5d6ZcubsVBtUrZg==}
9533 engines: {node: '>=8'}
9534 dev: true
9535
9536 /rimraf@2.7.1:
4580 resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} 9537 resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
4581 hasBin: true 9538 hasBin: true
4582 dependencies: 9539 dependencies:
4583 glob: 7.2.3 9540 glob: 7.2.3
4584 dev: false 9541 dev: true
4585 9542
4586 /rimraf/3.0.2: 9543 /rimraf@3.0.2:
4587 resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 9544 resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
4588 hasBin: true 9545 hasBin: true
4589 dependencies: 9546 dependencies:
4590 glob: 7.2.3 9547 glob: 7.2.3
4591 dev: true
4592 9548
4593 /rndm/1.2.0: 9549 /rndm@1.2.0:
4594 resolution: {integrity: sha512-fJhQQI5tLrQvYIYFpOnFinzv9dwmR7hRnUz1XqP3OJ1jIweTNOd6aTO4jwQSgcBSFUB+/KHJxuGneime+FdzOw==} 9550 resolution: {integrity: sha512-fJhQQI5tLrQvYIYFpOnFinzv9dwmR7hRnUz1XqP3OJ1jIweTNOd6aTO4jwQSgcBSFUB+/KHJxuGneime+FdzOw==}
4595 dev: false 9551 dev: false
4596 9552
4597 /run-async/2.4.1: 9553 /run-applescript@5.0.0:
4598 resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} 9554 resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==}
4599 engines: {node: '>=0.12.0'} 9555 engines: {node: '>=12'}
9556 dependencies:
9557 execa: 5.1.1
4600 dev: true 9558 dev: true
4601 9559
4602 /rxjs/6.6.7: 9560 /run-parallel@1.2.0:
4603 resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} 9561 resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
4604 engines: {npm: '>=2.0.0'}
4605 dependencies: 9562 dependencies:
4606 tslib: 1.14.1 9563 queue-microtask: 1.2.3
9564
9565 /safe-array-concat@1.0.1:
9566 resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==}
9567 engines: {node: '>=0.4'}
9568 dependencies:
9569 call-bind: 1.0.2
9570 get-intrinsic: 1.2.1
9571 has-symbols: 1.0.3
9572 isarray: 2.0.5
4607 dev: true 9573 dev: true
4608 9574
4609 /safe-buffer/5.1.2: 9575 /safe-buffer@5.1.2:
4610 resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 9576 resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
4611 dev: false
4612 9577
4613 /safe-buffer/5.2.1: 9578 /safe-buffer@5.2.1:
4614 resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 9579 resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
4615 dev: false
4616 9580
4617 /safe-regex-test/1.0.0: 9581 /safe-regex-test@1.0.0:
4618 resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} 9582 resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
4619 dependencies: 9583 dependencies:
4620 call-bind: 1.0.2 9584 call-bind: 1.0.2
4621 get-intrinsic: 1.1.3 9585 get-intrinsic: 1.2.1
4622 is-regex: 1.1.4 9586 is-regex: 1.1.4
4623 dev: true 9587 dev: true
4624 9588
4625 /safe-regex/1.1.0: 9589 /safe-regex@1.1.0:
4626 resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} 9590 resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==}
4627 dependencies: 9591 dependencies:
4628 ret: 0.1.15 9592 ret: 0.1.15
4629 dev: false 9593 dev: true
4630
4631 /safe-stable-stringify/2.4.1:
4632 resolution: {integrity: sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==}
4633 engines: {node: '>=10'}
4634 dev: false
4635 9594
4636 /safer-buffer/2.1.2: 9595 /safer-buffer@2.1.2:
4637 resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 9596 resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
4638 9597
4639 /sanitize-filename/1.6.3: 9598 /sanitize-filename@1.6.3:
4640 resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} 9599 resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==}
4641 dependencies: 9600 dependencies:
4642 truncate-utf8-bytes: 1.0.2 9601 truncate-utf8-bytes: 1.0.2
4643 dev: false 9602 dev: false
4644 9603
4645 /sax/1.2.4: 9604 /sax@1.2.1:
4646 resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} 9605 resolution: {integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==}
4647 dev: false 9606 dev: false
4648 9607
4649 /scmp/2.0.0: 9608 /schema-utils@2.7.1:
4650 resolution: {integrity: sha512-FaHoAk75AYhT+rnBmMpkvHSIcQma4OHzYXOhn1XXtgNomi0FTV8YEXYuh2EIdCg5IKMVyFbXeJT4Cn96+fzABg==} 9609 resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==}
4651 dev: false 9610 engines: {node: '>= 8.9.0'}
9611 dependencies:
9612 '@types/json-schema': 7.0.13
9613 ajv: 6.12.6
9614 ajv-keywords: 3.5.2(ajv@6.12.6)
9615 dev: true
9616
9617 /schema-utils@3.3.0:
9618 resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==}
9619 engines: {node: '>= 10.13.0'}
9620 dependencies:
9621 '@types/json-schema': 7.0.13
9622 ajv: 6.12.6
9623 ajv-keywords: 3.5.2(ajv@6.12.6)
9624 dev: true
9625
9626 /schema-utils@4.2.0:
9627 resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==}
9628 engines: {node: '>= 12.13.0'}
9629 dependencies:
9630 '@types/json-schema': 7.0.13
9631 ajv: 8.12.0
9632 ajv-formats: 2.1.1(ajv@8.12.0)
9633 ajv-keywords: 5.1.0(ajv@8.12.0)
9634 dev: true
4652 9635
4653 /semver/5.5.1: 9636 /secure-json-parse@2.7.0:
4654 resolution: {integrity: sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==} 9637 resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==}
9638
9639 /select-hose@2.0.0:
9640 resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==}
9641 dev: true
9642
9643 /selfsigned@2.1.1:
9644 resolution: {integrity: sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==}
9645 engines: {node: '>=10'}
9646 dependencies:
9647 node-forge: 1.3.1
9648 dev: true
9649
9650 /semver@5.7.2:
9651 resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
4655 hasBin: true 9652 hasBin: true
4656 dev: false 9653 dev: true
4657 9654
4658 /semver/5.7.1: 9655 /semver@6.3.1:
4659 resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} 9656 resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
4660 hasBin: true 9657 hasBin: true
4661 dev: false
4662 9658
4663 /semver/7.3.5: 9659 /semver@7.5.4:
4664 resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} 9660 resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
4665 engines: {node: '>=10'} 9661 engines: {node: '>=10'}
4666 hasBin: true 9662 hasBin: true
4667 dependencies: 9663 dependencies:
4668 lru-cache: 6.0.0 9664 lru-cache: 6.0.0
4669 9665
4670 /send/0.16.2: 9666 /send@0.18.0:
4671 resolution: {integrity: sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==}
4672 engines: {node: '>= 0.8.0'}
4673 dependencies:
4674 debug: 2.6.9
4675 depd: 1.1.2
4676 destroy: 1.0.4
4677 encodeurl: 1.0.2
4678 escape-html: 1.0.3
4679 etag: 1.8.1
4680 fresh: 0.5.2
4681 http-errors: 1.6.3
4682 mime: 1.4.1
4683 ms: 2.0.0
4684 on-finished: 2.3.0
4685 range-parser: 1.2.1
4686 statuses: 1.4.0
4687 transitivePeerDependencies:
4688 - supports-color
4689 dev: false
4690
4691 /send/0.18.0:
4692 resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} 9667 resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}
4693 engines: {node: '>= 0.8.0'} 9668 engines: {node: '>= 0.8.0'}
4694 dependencies: 9669 dependencies:
@@ -4707,9 +9682,36 @@ packages:
4707 statuses: 2.0.1 9682 statuses: 2.0.1
4708 transitivePeerDependencies: 9683 transitivePeerDependencies:
4709 - supports-color 9684 - supports-color
4710 dev: false
4711 9685
4712 /serve-static/1.15.0: 9686 /sentence-case@3.0.4:
9687 resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==}
9688 dependencies:
9689 no-case: 3.0.4
9690 tslib: 2.6.2
9691 upper-case-first: 2.0.2
9692
9693 /serialize-javascript@6.0.1:
9694 resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==}
9695 dependencies:
9696 randombytes: 2.1.0
9697 dev: true
9698
9699 /serve-index@1.9.1:
9700 resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==}
9701 engines: {node: '>= 0.8.0'}
9702 dependencies:
9703 accepts: 1.3.8
9704 batch: 0.6.1
9705 debug: 2.6.9
9706 escape-html: 1.0.3
9707 http-errors: 1.6.3
9708 mime-types: 2.1.35
9709 parseurl: 1.3.3
9710 transitivePeerDependencies:
9711 - supports-color
9712 dev: true
9713
9714 /serve-static@1.15.0:
4713 resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} 9715 resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==}
4714 engines: {node: '>= 0.8.0'} 9716 engines: {node: '>= 0.8.0'}
4715 dependencies: 9717 dependencies:
@@ -4719,30 +9721,25 @@ packages:
4719 send: 0.18.0 9721 send: 0.18.0
4720 transitivePeerDependencies: 9722 transitivePeerDependencies:
4721 - supports-color 9723 - supports-color
4722 dev: false
4723 9724
4724 /set-blocking/2.0.0: 9725 /set-blocking@2.0.0:
4725 resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} 9726 resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
4726
4727 /set-getter/0.1.1:
4728 resolution: {integrity: sha512-9sVWOy+gthr+0G9DzqqLaYNA7+5OKkSmcqjL9cBpDEaZrr3ShQlyX2cZ/O/ozE41oxn/Tt0LGEM/w4Rub3A3gw==}
4729 engines: {node: '>=0.10.0'}
4730 dependencies:
4731 to-object-path: 0.3.0
4732 dev: false 9727 dev: false
4733 9728
4734 /set-value/1.0.0: 9729 /set-cookie-parser@2.6.0:
4735 resolution: {integrity: sha512-O/eSWP94iwlwQwOopxjcoU2fvT5Oh496WbPdYD5SUrQ1YG23ZoNuWTKqG8+hpUUrvecOsHWUFV7UfeZbChfddw==} 9730 resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==}
4736 engines: {node: '>=0.10.0'} 9731 dev: true
4737 deprecated: Critical bug fixed in v3.0.1, please upgrade to the latest version. 9732
9733 /set-function-name@2.0.1:
9734 resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==}
9735 engines: {node: '>= 0.4'}
4738 dependencies: 9736 dependencies:
4739 extend-shallow: 2.0.1 9737 define-data-property: 1.1.0
4740 is-extendable: 0.1.1 9738 functions-have-names: 1.2.3
4741 is-plain-object: 2.0.4 9739 has-property-descriptors: 1.0.0
4742 to-object-path: 0.3.0 9740 dev: true
4743 dev: false
4744 9741
4745 /set-value/2.0.1: 9742 /set-value@2.0.1:
4746 resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} 9743 resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==}
4747 engines: {node: '>=0.10.0'} 9744 engines: {node: '>=0.10.0'}
4748 dependencies: 9745 dependencies:
@@ -4750,128 +9747,114 @@ packages:
4750 is-extendable: 0.1.1 9747 is-extendable: 0.1.1
4751 is-plain-object: 2.0.4 9748 is-plain-object: 2.0.4
4752 split-string: 3.1.0 9749 split-string: 3.1.0
4753 dev: false 9750 dev: true
4754
4755 /set-value/3.0.3:
4756 resolution: {integrity: sha512-Xsn/XSatoVOGBbp5hs3UylFDs5Bi9i+ArpVJKdHPniZHoEgRniXTqHWrWrGQ0PbEClVT6WtfnBwR8CAHC9sveg==}
4757 engines: {node: '>=6.0'}
4758 dependencies:
4759 is-plain-object: 2.0.4
4760 dev: false
4761 9751
4762 /setprototypeof/1.1.0: 9752 /setprototypeof@1.1.0:
4763 resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} 9753 resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==}
4764 dev: false 9754 dev: true
4765 9755
4766 /setprototypeof/1.2.0: 9756 /setprototypeof@1.2.0:
4767 resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 9757 resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
4768 dev: false
4769
4770 /shallow-clone/0.1.2:
4771 resolution: {integrity: sha512-J1zdXCky5GmNnuauESROVu31MQSnLoYvlyEn6j2Ztk6Q5EHFIhxkMhYcv6vuDzl2XEzoRr856QwzMgWM/TmZgw==}
4772 engines: {node: '>=0.10.0'}
4773 dependencies:
4774 is-extendable: 0.1.1
4775 kind-of: 2.0.1
4776 lazy-cache: 0.2.7
4777 mixin-object: 2.0.1
4778 dev: false
4779
4780 /shallow-clone/1.0.0:
4781 resolution: {integrity: sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==}
4782 engines: {node: '>=0.10.0'}
4783 dependencies:
4784 is-extendable: 0.1.1
4785 kind-of: 5.1.0
4786 mixin-object: 2.0.1
4787 dev: false
4788 9758
4789 /shallow-clone/3.0.1: 9759 /shallow-clone@3.0.1:
4790 resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} 9760 resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==}
4791 engines: {node: '>=8'} 9761 engines: {node: '>=8'}
4792 dependencies: 9762 dependencies:
4793 kind-of: 6.0.3 9763 kind-of: 6.0.3
4794 dev: false 9764 dev: true
4795
4796 /shebang-command/1.2.0:
4797 resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
4798 engines: {node: '>=0.10.0'}
4799 dependencies:
4800 shebang-regex: 1.0.0
4801 dev: false
4802 9765
4803 /shebang-command/2.0.0: 9766 /shebang-command@2.0.0:
4804 resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 9767 resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
4805 engines: {node: '>=8'} 9768 engines: {node: '>=8'}
4806 dependencies: 9769 dependencies:
4807 shebang-regex: 3.0.0 9770 shebang-regex: 3.0.0
4808 dev: true 9771 dev: true
4809 9772
4810 /shebang-regex/1.0.0: 9773 /shebang-regex@3.0.0:
4811 resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
4812 engines: {node: '>=0.10.0'}
4813 dev: false
4814
4815 /shebang-regex/3.0.0:
4816 resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 9774 resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
4817 engines: {node: '>=8'} 9775 engines: {node: '>=8'}
4818 dev: true 9776 dev: true
4819 9777
4820 /side-channel/1.0.4: 9778 /shell-quote@1.8.1:
9779 resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==}
9780 dev: true
9781
9782 /side-channel@1.0.4:
4821 resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 9783 resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
4822 dependencies: 9784 dependencies:
4823 call-bind: 1.0.2 9785 call-bind: 1.0.2
4824 get-intrinsic: 1.1.3 9786 get-intrinsic: 1.2.1
4825 object-inspect: 1.12.2 9787 object-inspect: 1.12.3
4826 9788
4827 /signal-exit/3.0.7: 9789 /sigmund@1.0.1:
9790 resolution: {integrity: sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==}
9791 dev: true
9792
9793 /signal-exit@3.0.7:
4828 resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 9794 resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
4829 9795
4830 /simple-encryptor/2.0.0: 9796 /slash@2.0.0:
4831 resolution: {integrity: sha512-dqjQbp9RwfMrE+my/7Pgz9viIsHmY3aQtybGJQkv2sL79YuDGmkxUjlmEBFGP6bcUjBRnSvqsBAcv1ro0Y4/5A==} 9797 resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==}
4832 dependencies: 9798 engines: {node: '>=6'}
4833 scmp: 2.0.0 9799 dev: true
4834 dev: false
4835 9800
4836 /simple-encryptor/3.0.0: 9801 /slash@3.0.0:
4837 resolution: {integrity: sha512-xRgj9pU3Gfkl+6iBYRoXM4BdEwY4bLdL1W0tp7AjGTA7Hytv5iwmB5tvJh6K2iVszvPPYimQjLFV8jRZz3fJ1g==} 9802 resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
4838 engines: {node: '>= 4.5.0'} 9803 engines: {node: '>=8'}
4839 dependencies:
4840 scmp: 2.0.0
4841 dev: false
4842 9804
4843 /simple-swizzle/0.2.2: 9805 /slashes@2.0.2:
4844 resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} 9806 resolution: {integrity: sha512-68p+QkFAQQRetIUzNXAdktNJr8AYLxJukjBegYQz8F7VATsBJG621UYtY/vS2j9jerxdJ1k6Tc25K4DXEw1d5w==}
4845 dependencies:
4846 is-arrayish: 0.3.2
4847 dev: false 9807 dev: false
4848 9808
4849 /slice-ansi/4.0.0: 9809 /slice-ansi@4.0.0:
4850 resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} 9810 resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
4851 engines: {node: '>=10'} 9811 engines: {node: '>=10'}
4852 dependencies: 9812 dependencies:
4853 ansi-styles: 4.3.0 9813 ansi-styles: 4.3.0
4854 astral-regex: 2.0.0 9814 astral-regex: 2.0.0
4855 is-fullwidth-code-point: 3.0.0 9815 is-fullwidth-code-point: 3.0.0
9816
9817 /slugify@1.6.6:
9818 resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==}
9819 engines: {node: '>=8.0.0'}
9820
9821 /smart-buffer@4.2.0:
9822 resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
9823 engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
9824 requiresBuild: true
9825 dev: false
9826 optional: true
9827
9828 /smpltmpl@1.0.2:
9829 resolution: {integrity: sha512-Hq23NNgeZigOzIiX1dkb6W3gFn2/XQj43KhPxu65IMieG/gIwf/lQb1IudjYv0c/5LwJeS/mPayYzyo+8WJMxQ==}
9830 engines: {node: '>=4'}
9831 dependencies:
9832 babel-code-frame: 6.26.0
4856 dev: true 9833 dev: true
4857 9834
4858 /snapdragon-node/2.1.1: 9835 /snake-case@3.0.4:
9836 resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==}
9837 dependencies:
9838 dot-case: 3.0.4
9839 tslib: 2.6.2
9840
9841 /snapdragon-node@2.1.1:
4859 resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} 9842 resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==}
4860 engines: {node: '>=0.10.0'} 9843 engines: {node: '>=0.10.0'}
4861 dependencies: 9844 dependencies:
4862 define-property: 1.0.0 9845 define-property: 1.0.0
4863 isobject: 3.0.1 9846 isobject: 3.0.1
4864 snapdragon-util: 3.0.1 9847 snapdragon-util: 3.0.1
4865 dev: false 9848 dev: true
4866 9849
4867 /snapdragon-util/3.0.1: 9850 /snapdragon-util@3.0.1:
4868 resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} 9851 resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==}
4869 engines: {node: '>=0.10.0'} 9852 engines: {node: '>=0.10.0'}
4870 dependencies: 9853 dependencies:
4871 kind-of: 3.2.2 9854 kind-of: 3.2.2
4872 dev: false 9855 dev: true
4873 9856
4874 /snapdragon/0.8.2: 9857 /snapdragon@0.8.2:
4875 resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} 9858 resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==}
4876 engines: {node: '>=0.10.0'} 9859 engines: {node: '>=0.10.0'}
4877 dependencies: 9860 dependencies:
@@ -4885,16 +9868,61 @@ packages:
4885 use: 3.1.1 9868 use: 3.1.1
4886 transitivePeerDependencies: 9869 transitivePeerDependencies:
4887 - supports-color 9870 - supports-color
9871 dev: true
9872
9873 /sockjs@0.3.24:
9874 resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==}
9875 dependencies:
9876 faye-websocket: 0.11.4
9877 uuid: 8.3.2
9878 websocket-driver: 0.7.4
9879 dev: true
9880
9881 /socks-proxy-agent@6.2.1:
9882 resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==}
9883 engines: {node: '>= 10'}
9884 requiresBuild: true
9885 dependencies:
9886 agent-base: 6.0.2
9887 debug: 4.3.4
9888 socks: 2.7.1
9889 transitivePeerDependencies:
9890 - supports-color
4888 dev: false 9891 dev: false
9892 optional: true
4889 9893
4890 /sort-keys/2.0.0: 9894 /socks@2.7.1:
4891 resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} 9895 resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==}
4892 engines: {node: '>=4'} 9896 engines: {node: '>= 10.13.0', npm: '>= 3.0.0'}
9897 requiresBuild: true
4893 dependencies: 9898 dependencies:
4894 is-plain-obj: 1.1.0 9899 ip: 2.0.0
9900 smart-buffer: 4.2.0
4895 dev: false 9901 dev: false
9902 optional: true
9903
9904 /sonic-boom@1.4.1:
9905 resolution: {integrity: sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==}
9906 dependencies:
9907 atomic-sleep: 1.0.0
9908 flatstr: 1.0.12
9909
9910 /sonic-boom@2.8.0:
9911 resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==}
9912 dependencies:
9913 atomic-sleep: 1.0.0
9914
9915 /sonic-boom@3.4.0:
9916 resolution: {integrity: sha512-zSe9QQW30nPzjkSJ0glFQO5T9lHsk39tz+2bAAwCj8CNgEG8ItZiX7Wb2ZgA8I04dwRGCcf1m3ABJa8AYm12Fw==}
9917 dependencies:
9918 atomic-sleep: 1.0.0
4896 9919
4897 /source-map-resolve/0.5.3: 9920 /source-map-js@1.0.2:
9921 resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
9922 engines: {node: '>=0.10.0'}
9923 dev: true
9924
9925 /source-map-resolve@0.5.3:
4898 resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} 9926 resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==}
4899 deprecated: See https://github.com/lydell/source-map-resolve#deprecated 9927 deprecated: See https://github.com/lydell/source-map-resolve#deprecated
4900 dependencies: 9928 dependencies:
@@ -4903,233 +9931,382 @@ packages:
4903 resolve-url: 0.2.1 9931 resolve-url: 0.2.1
4904 source-map-url: 0.4.1 9932 source-map-url: 0.4.1
4905 urix: 0.1.0 9933 urix: 0.1.0
4906 dev: false 9934 dev: true
4907 9935
4908 /source-map-url/0.4.1: 9936 /source-map-support@0.5.21:
9937 resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
9938 dependencies:
9939 buffer-from: 1.1.2
9940 source-map: 0.6.1
9941
9942 /source-map-url@0.4.1:
4909 resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} 9943 resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==}
4910 deprecated: See https://github.com/lydell/source-map-url#deprecated 9944 deprecated: See https://github.com/lydell/source-map-url#deprecated
4911 dev: false 9945 dev: true
4912 9946
4913 /source-map/0.5.7: 9947 /source-map@0.5.7:
4914 resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} 9948 resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
4915 engines: {node: '>=0.10.0'} 9949 engines: {node: '>=0.10.0'}
4916 dev: false 9950 dev: true
9951
9952 /source-map@0.6.1:
9953 resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
9954 engines: {node: '>=0.10.0'}
9955
9956 /spdx-correct@3.2.0:
9957 resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
9958 dependencies:
9959 spdx-expression-parse: 3.0.1
9960 spdx-license-ids: 3.0.15
9961 dev: true
9962
9963 /spdx-exceptions@2.3.0:
9964 resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==}
9965 dev: true
9966
9967 /spdx-expression-parse@3.0.1:
9968 resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
9969 dependencies:
9970 spdx-exceptions: 2.3.0
9971 spdx-license-ids: 3.0.15
9972 dev: true
9973
9974 /spdx-license-ids@3.0.15:
9975 resolution: {integrity: sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==}
9976 dev: true
9977
9978 /spdy-transport@3.0.0:
9979 resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==}
9980 dependencies:
9981 debug: 4.3.4
9982 detect-node: 2.1.0
9983 hpack.js: 2.1.6
9984 obuf: 1.1.2
9985 readable-stream: 3.6.2
9986 wbuf: 1.7.3
9987 transitivePeerDependencies:
9988 - supports-color
9989 dev: true
9990
9991 /spdy@4.0.2:
9992 resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==}
9993 engines: {node: '>=6.0.0'}
9994 dependencies:
9995 debug: 4.3.4
9996 handle-thing: 2.0.1
9997 http-deceiver: 1.2.7
9998 select-hose: 2.0.0
9999 spdy-transport: 3.0.0
10000 transitivePeerDependencies:
10001 - supports-color
10002 dev: true
4917 10003
4918 /split-string/3.1.0: 10004 /split-lines@2.1.0:
10005 resolution: {integrity: sha512-8dv+1zKgTpfTkOy8XZLFyWrfxO0NV/bj/3EaQ+hBrBxGv2DwiroljPjU8NlCr+59nLnsVm9WYT7lXKwe4TC6bw==}
10006 engines: {node: '>=6'}
10007 dev: true
10008
10009 /split-string@3.1.0:
4919 resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} 10010 resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==}
4920 engines: {node: '>=0.10.0'} 10011 engines: {node: '>=0.10.0'}
4921 dependencies: 10012 dependencies:
4922 extend-shallow: 3.0.2 10013 extend-shallow: 3.0.2
4923 dev: false 10014 dev: true
4924 10015
4925 /split2/4.1.0: 10016 /split2@4.2.0:
4926 resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==} 10017 resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
4927 engines: {node: '>= 10.x'} 10018 engines: {node: '>= 10.x'}
4928 dev: false
4929 10019
4930 /sprintf-js/1.0.3: 10020 /sprintf-js@1.0.3:
4931 resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 10021 resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
4932 dev: true 10022 dev: true
4933 10023
4934 /sqlite3/4.2.0: 10024 /sqlite3@5.1.6:
4935 resolution: {integrity: sha512-roEOz41hxui2Q7uYnWsjMOTry6TcNUNmp8audCx18gF10P2NknwdpF+E+HKvz/F2NvPKGGBF4NGc+ZPQ+AABwg==} 10025 resolution: {integrity: sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw==}
4936 requiresBuild: true 10026 requiresBuild: true
10027 peerDependenciesMeta:
10028 node-gyp:
10029 optional: true
4937 dependencies: 10030 dependencies:
4938 nan: 2.17.0 10031 '@mapbox/node-pre-gyp': 1.0.11
4939 node-pre-gyp: 0.11.0 10032 node-addon-api: 4.3.0
10033 tar: 6.2.0
10034 optionalDependencies:
10035 node-gyp: 8.4.1
4940 transitivePeerDependencies: 10036 transitivePeerDependencies:
10037 - bluebird
10038 - encoding
4941 - supports-color 10039 - supports-color
4942 dev: false 10040 dev: false
4943 10041
4944 /sqlstring/2.3.1: 10042 /sqlstring@2.3.1:
4945 resolution: {integrity: sha512-ooAzh/7dxIG5+uDik1z/Rd1vli0+38izZhGzSa34FwR7IbelPWCCKSNIl8jlL/F7ERvy8CB2jNeM1E9i9mXMAQ==} 10043 resolution: {integrity: sha512-ooAzh/7dxIG5+uDik1z/Rd1vli0+38izZhGzSa34FwR7IbelPWCCKSNIl8jlL/F7ERvy8CB2jNeM1E9i9mXMAQ==}
4946 engines: {node: '>= 0.6'} 10044 engines: {node: '>= 0.6'}
4947 dev: false 10045 dev: false
4948 10046
4949 /sshpk/1.17.0: 10047 /ssri@8.0.1:
4950 resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} 10048 resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==}
4951 engines: {node: '>=0.10.0'} 10049 engines: {node: '>= 8'}
4952 hasBin: true 10050 requiresBuild: true
4953 dependencies: 10051 dependencies:
4954 asn1: 0.2.6 10052 minipass: 3.3.6
4955 assert-plus: 1.0.0
4956 bcrypt-pbkdf: 1.0.2
4957 dashdash: 1.14.1
4958 ecc-jsbn: 0.1.2
4959 getpass: 0.1.7
4960 jsbn: 0.1.1
4961 safer-buffer: 2.1.2
4962 tweetnacl: 0.14.5
4963 dev: false 10053 dev: false
10054 optional: true
4964 10055
4965 /stack-trace/0.0.10: 10056 /stackframe@1.3.4:
4966 resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} 10057 resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==}
4967 dev: false 10058 dev: true
4968 10059
4969 /static-extend/0.1.2: 10060 /stacktracey@2.1.8:
10061 resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==}
10062 dependencies:
10063 as-table: 1.0.55
10064 get-source: 2.0.12
10065 dev: true
10066
10067 /static-extend@0.1.2:
4970 resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} 10068 resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==}
4971 engines: {node: '>=0.10.0'} 10069 engines: {node: '>=0.10.0'}
4972 dependencies: 10070 dependencies:
4973 define-property: 0.2.5 10071 define-property: 0.2.5
4974 object-copy: 0.1.0 10072 object-copy: 0.1.0
4975 dev: false 10073 dev: true
4976
4977 /statuses/1.4.0:
4978 resolution: {integrity: sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==}
4979 engines: {node: '>= 0.6'}
4980 dev: false
4981 10074
4982 /statuses/1.5.0: 10075 /statuses@1.5.0:
4983 resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} 10076 resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
4984 engines: {node: '>= 0.6'} 10077 engines: {node: '>= 0.6'}
4985 dev: false 10078 dev: true
4986 10079
4987 /statuses/2.0.1: 10080 /statuses@2.0.1:
4988 resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} 10081 resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
4989 engines: {node: '>= 0.8'} 10082 engines: {node: '>= 0.8'}
4990 dev: false
4991
4992 /strict-uri-encode/1.1.0:
4993 resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==}
4994 engines: {node: '>=0.10.0'}
4995 dev: false
4996 10083
4997 /string-width/1.0.2: 10084 /string-width@4.2.3:
4998 resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==}
4999 engines: {node: '>=0.10.0'}
5000 dependencies:
5001 code-point-at: 1.1.0
5002 is-fullwidth-code-point: 1.0.0
5003 strip-ansi: 3.0.1
5004 dev: false
5005
5006 /string-width/2.1.1:
5007 resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==}
5008 engines: {node: '>=4'}
5009 dependencies:
5010 is-fullwidth-code-point: 2.0.0
5011 strip-ansi: 4.0.0
5012 dev: false
5013
5014 /string-width/4.2.3:
5015 resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 10085 resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
5016 engines: {node: '>=8'} 10086 engines: {node: '>=8'}
5017 dependencies: 10087 dependencies:
5018 emoji-regex: 8.0.0 10088 emoji-regex: 8.0.0
5019 is-fullwidth-code-point: 3.0.0 10089 is-fullwidth-code-point: 3.0.0
5020 strip-ansi: 6.0.1 10090 strip-ansi: 6.0.1
10091
10092 /string.prototype.trim@1.2.8:
10093 resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==}
10094 engines: {node: '>= 0.4'}
10095 dependencies:
10096 call-bind: 1.0.2
10097 define-properties: 1.2.1
10098 es-abstract: 1.22.2
5021 dev: true 10099 dev: true
5022 10100
5023 /string.prototype.trimend/1.0.6: 10101 /string.prototype.trimend@1.0.7:
5024 resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} 10102 resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==}
5025 dependencies: 10103 dependencies:
5026 call-bind: 1.0.2 10104 call-bind: 1.0.2
5027 define-properties: 1.1.4 10105 define-properties: 1.2.1
5028 es-abstract: 1.20.5 10106 es-abstract: 1.22.2
5029 dev: true 10107 dev: true
5030 10108
5031 /string.prototype.trimstart/1.0.6: 10109 /string.prototype.trimstart@1.0.7:
5032 resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} 10110 resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==}
5033 dependencies: 10111 dependencies:
5034 call-bind: 1.0.2 10112 call-bind: 1.0.2
5035 define-properties: 1.1.4 10113 define-properties: 1.2.1
5036 es-abstract: 1.20.5 10114 es-abstract: 1.22.2
5037 dev: true 10115 dev: true
5038 10116
5039 /string_decoder/1.1.1: 10117 /string_decoder@1.1.1:
5040 resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} 10118 resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
5041 dependencies: 10119 dependencies:
5042 safe-buffer: 5.1.2 10120 safe-buffer: 5.1.2
5043 dev: false
5044 10121
5045 /string_decoder/1.3.0: 10122 /string_decoder@1.3.0:
5046 resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 10123 resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
5047 dependencies: 10124 dependencies:
5048 safe-buffer: 5.2.1 10125 safe-buffer: 5.2.1
5049 dev: false
5050 10126
5051 /strip-ansi/3.0.1: 10127 /stringify-attributes@2.0.0:
10128 resolution: {integrity: sha512-wrVfRV6sCCB6wr3gx8OgKsp/9dSWWbKr8ifLfOxEcd/BBoa8d5pAf4BZb/jQW1JZnoZImjvUdxdo3ikYHZmYiw==}
10129 engines: {node: '>=8'}
10130 dependencies:
10131 escape-goat: 2.1.1
10132
10133 /strip-ansi@3.0.1:
5052 resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} 10134 resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==}
5053 engines: {node: '>=0.10.0'} 10135 engines: {node: '>=0.10.0'}
5054 dependencies: 10136 dependencies:
5055 ansi-regex: 2.1.1 10137 ansi-regex: 2.1.1
5056 dev: false 10138 dev: true
5057
5058 /strip-ansi/4.0.0:
5059 resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==}
5060 engines: {node: '>=4'}
5061 dependencies:
5062 ansi-regex: 3.0.1
5063 dev: false
5064 10139
5065 /strip-ansi/6.0.1: 10140 /strip-ansi@6.0.1:
5066 resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 10141 resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
5067 engines: {node: '>=8'} 10142 engines: {node: '>=8'}
5068 dependencies: 10143 dependencies:
5069 ansi-regex: 5.0.1 10144 ansi-regex: 5.0.1
5070 dev: true
5071 10145
5072 /strip-bom/3.0.0: 10146 /strip-bom@3.0.0:
5073 resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 10147 resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
5074 engines: {node: '>=4'} 10148 engines: {node: '>=4'}
5075 dev: true 10149 dev: true
5076 10150
5077 /strip-color/0.1.0: 10151 /strip-bom@4.0.0:
5078 resolution: {integrity: sha512-p9LsUieSjWNNAxVCXLeilaDlmuUOrDS5/dF9znM1nZc7EGX5+zEFC0bEevsNIaldjlks+2jns5Siz6F9iK6jwA==} 10152 resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==}
5079 engines: {node: '>=0.10.0'} 10153 engines: {node: '>=8'}
5080 dev: false 10154 dev: true
10155
10156 /strip-final-newline@2.0.0:
10157 resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
10158 engines: {node: '>=6'}
10159 dev: true
5081 10160
5082 /strip-json-comments/2.0.1: 10161 /strip-final-newline@3.0.0:
10162 resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
10163 engines: {node: '>=12'}
10164 dev: true
10165
10166 /strip-indent@3.0.0:
10167 resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
10168 engines: {node: '>=8'}
10169 dependencies:
10170 min-indent: 1.0.1
10171 dev: true
10172
10173 /strip-json-comments@2.0.1:
5083 resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} 10174 resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
5084 engines: {node: '>=0.10.0'} 10175 engines: {node: '>=0.10.0'}
5085 dev: false 10176 dev: true
5086 10177
5087 /strip-json-comments/3.1.1: 10178 /strip-json-comments@3.1.1:
5088 resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 10179 resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
5089 engines: {node: '>=8'} 10180 engines: {node: '>=8'}
10181
10182 /strtok3@6.3.0:
10183 resolution: {integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==}
10184 engines: {node: '>=10'}
10185 dependencies:
10186 '@tokenizer/token': 0.3.0
10187 peek-readable: 4.1.0
10188
10189 /style-loader@3.3.3(webpack@5.88.2):
10190 resolution: {integrity: sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==}
10191 engines: {node: '>= 12.13.0'}
10192 peerDependencies:
10193 webpack: ^5.0.0
10194 dependencies:
10195 webpack: 5.88.2(webpack-cli@5.1.4)
5090 dev: true 10196 dev: true
5091 10197
5092 /success-symbol/0.1.0: 10198 /stylehacks@6.0.0(postcss@8.4.31):
5093 resolution: {integrity: sha512-7S6uOTxPklNGxOSbDIg4KlVLBQw1UiGVyfCUYgYxrZUKRblUkmGj7r8xlfQoFudvqLv6Ap5gd76/IIFfI9JG2A==} 10199 resolution: {integrity: sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw==}
5094 engines: {node: '>=0.10.0'} 10200 engines: {node: ^14 || ^16 || >=18.0}
5095 dev: false 10201 peerDependencies:
10202 postcss: ^8.2.15
10203 dependencies:
10204 browserslist: 4.22.1
10205 postcss: 8.4.31
10206 postcss-selector-parser: 6.0.13
10207 dev: true
5096 10208
5097 /supports-color/5.5.0: 10209 /superagent@8.1.2:
10210 resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==}
10211 engines: {node: '>=6.4.0 <13 || >=14'}
10212 dependencies:
10213 component-emitter: 1.3.0
10214 cookiejar: 2.1.4
10215 debug: 4.3.4
10216 fast-safe-stringify: 2.1.1
10217 form-data: 4.0.0
10218 formidable: 2.1.2
10219 methods: 1.1.2
10220 mime: 2.6.0
10221 qs: 6.11.2
10222 semver: 7.5.4
10223 transitivePeerDependencies:
10224 - supports-color
10225 dev: true
10226
10227 /supports-color@2.0.0:
10228 resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==}
10229 engines: {node: '>=0.8.0'}
10230 dev: true
10231
10232 /supports-color@5.5.0:
5098 resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 10233 resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
5099 engines: {node: '>=4'} 10234 engines: {node: '>=4'}
5100 dependencies: 10235 dependencies:
5101 has-flag: 3.0.0 10236 has-flag: 3.0.0
5102 dev: true 10237 dev: true
5103 10238
5104 /supports-color/7.2.0: 10239 /supports-color@7.2.0:
5105 resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 10240 resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
5106 engines: {node: '>=8'} 10241 engines: {node: '>=8'}
5107 dependencies: 10242 dependencies:
5108 has-flag: 4.0.0 10243 has-flag: 4.0.0
5109 dev: true 10244 dev: true
5110 10245
5111 /supports-preserve-symlinks-flag/1.0.0: 10246 /supports-color@8.1.1:
10247 resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
10248 engines: {node: '>=10'}
10249 dependencies:
10250 has-flag: 4.0.0
10251
10252 /supports-hyperlinks@2.3.0:
10253 resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==}
10254 engines: {node: '>=8'}
10255 dependencies:
10256 has-flag: 4.0.0
10257 supports-color: 7.2.0
10258 dev: true
10259
10260 /supports-preserve-symlinks-flag@1.0.0:
5112 resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 10261 resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
5113 engines: {node: '>= 0.4'} 10262 engines: {node: '>= 0.4'}
5114 10263
5115 /syntax-error/1.4.0: 10264 /svgo@3.0.2:
5116 resolution: {integrity: sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==} 10265 resolution: {integrity: sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==}
10266 engines: {node: '>=14.0.0'}
10267 hasBin: true
5117 dependencies: 10268 dependencies:
5118 acorn-node: 1.8.2 10269 '@trysound/sax': 0.2.0
5119 dev: false 10270 commander: 7.2.0
10271 css-select: 5.1.0
10272 css-tree: 2.3.1
10273 csso: 5.0.5
10274 picocolors: 1.0.0
10275 dev: true
5120 10276
5121 /table/6.8.1: 10277 /swagger-parser@10.0.3(openapi-types@12.1.3):
5122 resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} 10278 resolution: {integrity: sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg==}
5123 engines: {node: '>=10.0.0'} 10279 engines: {node: '>=10'}
5124 dependencies: 10280 dependencies:
5125 ajv: 8.11.2 10281 '@apidevtools/swagger-parser': 10.0.3(openapi-types@12.1.3)
5126 lodash.truncate: 4.4.2 10282 transitivePeerDependencies:
5127 slice-ansi: 4.0.0 10283 - openapi-types
5128 string-width: 4.2.3 10284 dev: true
5129 strip-ansi: 6.0.1 10285
10286 /swagger-schema-official@2.0.0-bab6bed:
10287 resolution: {integrity: sha512-rCC0NWGKr/IJhtRuPq/t37qvZHI/mH4I4sxflVM+qgVe5Z2uOCivzWaVbuioJaB61kvm5UvB7b49E+oBY0M8jA==}
5130 dev: true 10288 dev: true
5131 10289
5132 /tar-fs/1.16.3: 10290 /sync-rpc@1.3.6:
10291 resolution: {integrity: sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==}
10292 dependencies:
10293 get-port: 3.2.0
10294 dev: true
10295
10296 /synckit@0.8.5:
10297 resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==}
10298 engines: {node: ^14.18.0 || >=16.0.0}
10299 dependencies:
10300 '@pkgr/utils': 2.4.2
10301 tslib: 2.6.2
10302 dev: true
10303
10304 /tapable@2.2.1:
10305 resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
10306 engines: {node: '>=6'}
10307 dev: true
10308
10309 /tar-fs@1.16.3:
5133 resolution: {integrity: sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==} 10310 resolution: {integrity: sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==}
5134 dependencies: 10311 dependencies:
5135 chownr: 1.1.4 10312 chownr: 1.1.4
@@ -5138,7 +10315,7 @@ packages:
5138 tar-stream: 1.6.2 10315 tar-stream: 1.6.2
5139 dev: false 10316 dev: false
5140 10317
5141 /tar-stream/1.6.2: 10318 /tar-stream@1.6.2:
5142 resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} 10319 resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==}
5143 engines: {node: '>= 0.8.0'} 10320 engines: {node: '>= 0.8.0'}
5144 dependencies: 10321 dependencies:
@@ -5146,99 +10323,140 @@ packages:
5146 buffer-alloc: 1.2.0 10323 buffer-alloc: 1.2.0
5147 end-of-stream: 1.4.4 10324 end-of-stream: 1.4.4
5148 fs-constants: 1.0.0 10325 fs-constants: 1.0.0
5149 readable-stream: 2.3.7 10326 readable-stream: 2.3.8
5150 to-buffer: 1.1.1 10327 to-buffer: 1.1.1
5151 xtend: 4.0.2 10328 xtend: 4.0.2
5152 dev: false 10329 dev: false
5153 10330
5154 /tar/4.4.19: 10331 /tar@6.2.0:
5155 resolution: {integrity: sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==} 10332 resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==}
5156 engines: {node: '>=4.5'} 10333 engines: {node: '>=10'}
5157 dependencies: 10334 dependencies:
5158 chownr: 1.1.4 10335 chownr: 2.0.0
5159 fs-minipass: 1.2.7 10336 fs-minipass: 2.1.0
5160 minipass: 2.9.0 10337 minipass: 5.0.0
5161 minizlib: 1.3.3 10338 minizlib: 2.1.2
5162 mkdirp: 0.5.6 10339 mkdirp: 1.0.4
5163 safe-buffer: 5.2.1 10340 yallist: 4.0.0
5164 yallist: 3.1.1
5165 dev: false 10341 dev: false
5166 10342
5167 /targz/1.0.1: 10343 /targz@1.0.1:
5168 resolution: {integrity: sha512-6q4tP9U55mZnRuMTBqnqc3nwYQY3kv+QthCFZuMk+Tn1qYUnMPmL/JZ/mzgXINzFpSqfU+242IFmFU9VPvqaQw==} 10344 resolution: {integrity: sha512-6q4tP9U55mZnRuMTBqnqc3nwYQY3kv+QthCFZuMk+Tn1qYUnMPmL/JZ/mzgXINzFpSqfU+242IFmFU9VPvqaQw==}
5169 dependencies: 10345 dependencies:
5170 tar-fs: 1.16.3 10346 tar-fs: 1.16.3
5171 dev: false 10347 dev: false
5172 10348
5173 /tarn/3.0.2: 10349 /tarn@3.0.2:
5174 resolution: {integrity: sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==} 10350 resolution: {integrity: sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==}
5175 engines: {node: '>=8.0.0'} 10351 engines: {node: '>=8.0.0'}
5176 dev: false 10352 dev: false
5177 10353
5178 /terminal-paginator/2.0.2: 10354 /term-size@2.2.1:
5179 resolution: {integrity: sha512-IZMT5ECF9p4s+sNCV8uvZSW9E1+9zy9Ji9xz2oee8Jfo7hUFpauyjxkhfRcIH6Lu3Wdepv5D1kVRc8Hx74/LfQ==} 10355 resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==}
5180 engines: {node: '>=0.10.0'} 10356 engines: {node: '>=8'}
10357
10358 /terser-webpack-plugin@5.3.9(webpack@5.88.2):
10359 resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==}
10360 engines: {node: '>= 10.13.0'}
10361 peerDependencies:
10362 '@swc/core': '*'
10363 esbuild: '*'
10364 uglify-js: '*'
10365 webpack: ^5.1.0
10366 peerDependenciesMeta:
10367 '@swc/core':
10368 optional: true
10369 esbuild:
10370 optional: true
10371 uglify-js:
10372 optional: true
5181 dependencies: 10373 dependencies:
5182 debug: 2.6.9 10374 '@jridgewell/trace-mapping': 0.3.19
5183 extend-shallow: 2.0.1 10375 jest-worker: 27.5.1
5184 log-utils: 0.2.1 10376 schema-utils: 3.3.0
5185 transitivePeerDependencies: 10377 serialize-javascript: 6.0.1
5186 - supports-color 10378 terser: 5.20.0
5187 dev: false 10379 webpack: 5.88.2(webpack-cli@5.1.4)
10380 dev: true
5188 10381
5189 /text-hex/1.0.0: 10382 /terser@5.20.0:
5190 resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} 10383 resolution: {integrity: sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==}
5191 dev: false 10384 engines: {node: '>=10'}
10385 hasBin: true
10386 dependencies:
10387 '@jridgewell/source-map': 0.3.5
10388 acorn: 8.10.0
10389 commander: 2.20.3
10390 source-map-support: 0.5.21
10391 dev: true
5192 10392
5193 /text-table/0.2.0: 10393 /text-table@0.2.0:
5194 resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 10394 resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
5195 dev: true 10395 dev: true
5196 10396
5197 /through/2.3.8: 10397 /thunky@1.1.0:
5198 resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} 10398 resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==}
5199 dev: true 10399 dev: true
5200 10400
5201 /tildify/2.0.0: 10401 /tildify@2.0.0:
5202 resolution: {integrity: sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==} 10402 resolution: {integrity: sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==}
5203 engines: {node: '>=8'} 10403 engines: {node: '>=8'}
5204 dev: false 10404 dev: false
5205 10405
5206 /time-stamp/1.1.0: 10406 /time-span@4.0.0:
5207 resolution: {integrity: sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==} 10407 resolution: {integrity: sha512-MyqZCTGLDZ77u4k+jqg4UlrzPTPZ49NDlaekU6uuFaJLzPIN1woaRXCbGeqOfxwc3Y37ZROGAJ614Rdv7Olt+g==}
5208 engines: {node: '>=0.10.0'} 10408 engines: {node: '>=10'}
5209 dev: false 10409 dependencies:
10410 convert-hrtime: 3.0.0
10411 dev: true
5210 10412
5211 /timed-out/4.0.1: 10413 /titleize@3.0.0:
5212 resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==} 10414 resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==}
5213 engines: {node: '>=0.10.0'} 10415 engines: {node: '>=12'}
5214 dev: false 10416 dev: true
10417
10418 /tmp-cache@1.1.0:
10419 resolution: {integrity: sha512-j040fkL/x+XAZQ9K3bKGEPwgYhOZNBQLa3NXEADUiuno9C+3N2JJA4bVPDREixp604G3/vTXWA3DIPpA9lu1RQ==}
10420 engines: {node: '>=6'}
5215 10421
5216 /tmp/0.0.33: 10422 /tmp@0.2.1:
5217 resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} 10423 resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==}
5218 engines: {node: '>=0.6.0'} 10424 engines: {node: '>=8.17.0'}
5219 dependencies: 10425 dependencies:
5220 os-tmpdir: 1.0.2 10426 rimraf: 3.0.2
10427 dev: true
5221 10428
5222 /to-buffer/1.1.1: 10429 /to-buffer@1.1.1:
5223 resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==} 10430 resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==}
5224 dev: false 10431 dev: false
5225 10432
5226 /to-object-path/0.3.0: 10433 /to-fast-properties@2.0.0:
10434 resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
10435 engines: {node: '>=4'}
10436 dev: true
10437
10438 /to-object-path@0.3.0:
5227 resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} 10439 resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==}
5228 engines: {node: '>=0.10.0'} 10440 engines: {node: '>=0.10.0'}
5229 dependencies: 10441 dependencies:
5230 kind-of: 3.2.2 10442 kind-of: 3.2.2
5231 dev: false 10443 dev: true
5232 10444
5233 /to-regex-range/2.1.1: 10445 /to-regex-range@2.1.1:
5234 resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} 10446 resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==}
5235 engines: {node: '>=0.10.0'} 10447 engines: {node: '>=0.10.0'}
5236 dependencies: 10448 dependencies:
5237 is-number: 3.0.0 10449 is-number: 3.0.0
5238 repeat-string: 1.6.1 10450 repeat-string: 1.6.1
5239 dev: false 10451 dev: true
10452
10453 /to-regex-range@5.0.1:
10454 resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
10455 engines: {node: '>=8.0'}
10456 dependencies:
10457 is-number: 7.0.0
5240 10458
5241 /to-regex/3.0.2: 10459 /to-regex@3.0.2:
5242 resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} 10460 resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==}
5243 engines: {node: '>=0.10.0'} 10461 engines: {node: '>=0.10.0'}
5244 dependencies: 10462 dependencies:
@@ -5246,106 +10464,184 @@ packages:
5246 extend-shallow: 3.0.2 10464 extend-shallow: 3.0.2
5247 regex-not: 1.0.2 10465 regex-not: 1.0.2
5248 safe-regex: 1.1.0 10466 safe-regex: 1.1.0
5249 dev: false 10467 dev: true
5250
5251 /toggle-array/1.0.1:
5252 resolution: {integrity: sha512-TZXgboKpD5Iu0Goi8hRXuJpE06Pbo+bies4I4jnTBhlRRgyen9c37nMylnquK/ZPKXXOeh1mJ14p9QdKp+9v7A==}
5253 engines: {node: '>=0.10.0'}
5254 dependencies:
5255 isobject: 3.0.1
5256 dev: false
5257 10468
5258 /toidentifier/1.0.1: 10469 /toidentifier@1.0.1:
5259 resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 10470 resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
5260 engines: {node: '>=0.6'} 10471 engines: {node: '>=0.6'}
5261 dev: false
5262 10472
5263 /tough-cookie/2.5.0: 10473 /token-types@4.2.1:
5264 resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} 10474 resolution: {integrity: sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==}
5265 engines: {node: '>=0.8'} 10475 engines: {node: '>=10'}
5266 dependencies: 10476 dependencies:
5267 psl: 1.9.0 10477 '@tokenizer/token': 0.3.0
5268 punycode: 2.1.1 10478 ieee754: 1.2.1
5269 dev: false
5270 10479
5271 /tr46/0.0.3: 10480 /tr46@0.0.3:
5272 resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 10481 resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
5273
5274 /triple-beam/1.3.0:
5275 resolution: {integrity: sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==}
5276 dev: false 10482 dev: false
5277 10483
5278 /truncate-utf8-bytes/1.0.2: 10484 /traverse@0.6.7:
10485 resolution: {integrity: sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==}
10486 dev: true
10487
10488 /truncate-utf8-bytes@1.0.2:
5279 resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} 10489 resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==}
5280 dependencies: 10490 dependencies:
5281 utf8-byte-length: 1.0.4 10491 utf8-byte-length: 1.0.4
5282 dev: false 10492 dev: false
5283 10493
5284 /tsconfig-paths/3.14.1: 10494 /truncatise@0.0.8:
5285 resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} 10495 resolution: {integrity: sha512-cXzueh9pzBCsLzhToB4X4gZCb3KYkrsAcBAX97JnazE74HOl3cpBJYEV7nabHeG/6/WXCU5Yujlde/WPBUwnsg==}
10496
10497 /ts-api-utils@1.0.3(typescript@5.1.6):
10498 resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==}
10499 engines: {node: '>=16.13.0'}
10500 peerDependencies:
10501 typescript: '>=4.2.0'
10502 dependencies:
10503 typescript: 5.1.6
10504 dev: true
10505
10506 /ts-morph@16.0.0:
10507 resolution: {integrity: sha512-jGNF0GVpFj0orFw55LTsQxVYEUOCWBAbR5Ls7fTYE5pQsbW18ssTb/6UXx/GYAEjS+DQTp8VoTw0vqYMiaaQuw==}
10508 dependencies:
10509 '@ts-morph/common': 0.17.0
10510 code-block-writer: 11.0.3
10511 dev: false
10512
10513 /tsconfig-paths@3.14.2:
10514 resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==}
5286 dependencies: 10515 dependencies:
5287 '@types/json5': 0.0.29 10516 '@types/json5': 0.0.29
5288 json5: 1.0.1 10517 json5: 1.0.2
5289 minimist: 1.2.7 10518 minimist: 1.2.8
5290 strip-bom: 3.0.0 10519 strip-bom: 3.0.0
5291 dev: true 10520 dev: true
5292 10521
5293 /tslib/1.14.1: 10522 /tslib@1.14.1:
5294 resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 10523 resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
10524 dev: true
10525
10526 /tslib@2.6.2:
10527 resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
5295 10528
5296 /tsscmp/1.0.6: 10529 /tsscmp@1.0.6:
5297 resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} 10530 resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==}
5298 engines: {node: '>=0.6.x'} 10531 engines: {node: '>=0.6.x'}
5299 dev: false 10532 dev: false
5300 10533
5301 /tunnel-agent/0.6.0: 10534 /tsse@2.1.0:
5302 resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} 10535 resolution: {integrity: sha512-rYyp1CO0VcKCIoAlMKAaLEb/1v5arucsRWSc+kkz9k2/GQN7rVMUH5Dmc7l3ZuiJGZ7jwEDO9Z0Qv6LkAqCdDA==}
10536 engines: {node: '>=4'}
5303 dependencies: 10537 dependencies:
5304 safe-buffer: 5.2.1 10538 safe-buffer: 5.2.1
5305 dev: false 10539 dev: false
5306 10540
5307 /tweetnacl/0.14.5: 10541 /tsutils@3.21.0(typescript@5.1.6):
5308 resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} 10542 resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
5309 dev: false 10543 engines: {node: '>= 6'}
10544 peerDependencies:
10545 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'
10546 dependencies:
10547 tslib: 1.14.1
10548 typescript: 5.1.6
10549 dev: true
5310 10550
5311 /type-check/0.4.0: 10551 /type-check@0.4.0:
5312 resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 10552 resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
5313 engines: {node: '>= 0.8.0'} 10553 engines: {node: '>= 0.8.0'}
5314 dependencies: 10554 dependencies:
5315 prelude-ls: 1.2.1 10555 prelude-ls: 1.2.1
5316 dev: true 10556 dev: true
5317 10557
5318 /type-fest/0.20.2: 10558 /type-detect@4.0.8:
10559 resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
10560 engines: {node: '>=4'}
10561 dev: true
10562
10563 /type-fest@0.20.2:
5319 resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 10564 resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
5320 engines: {node: '>=10'} 10565 engines: {node: '>=10'}
5321 dev: true 10566 dev: true
5322 10567
5323 /type-fest/0.21.3: 10568 /type-fest@0.21.3:
5324 resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} 10569 resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
5325 engines: {node: '>=10'} 10570 engines: {node: '>=10'}
10571
10572 /type-fest@0.6.0:
10573 resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
10574 engines: {node: '>=8'}
10575 dev: true
10576
10577 /type-fest@0.8.1:
10578 resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
10579 engines: {node: '>=8'}
5326 dev: true 10580 dev: true
5327 10581
5328 /type-is/1.6.18: 10582 /type-fest@3.13.1:
10583 resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==}
10584 engines: {node: '>=14.16'}
10585 dev: true
10586
10587 /type-is@1.6.18:
5329 resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} 10588 resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
5330 engines: {node: '>= 0.6'} 10589 engines: {node: '>= 0.6'}
5331 dependencies: 10590 dependencies:
5332 media-typer: 0.3.0 10591 media-typer: 0.3.0
5333 mime-types: 2.1.35 10592 mime-types: 2.1.35
5334 dev: false
5335 10593
5336 /type-of-is/3.5.1: 10594 /typed-array-buffer@1.0.0:
5337 resolution: {integrity: sha512-SOnx8xygcAh8lvDU2exnK2bomASfNjzB3Qz71s2tw9QnX8fkAo7aC+D0H7FV0HjRKj94CKV2Hi71kVkkO6nOxg==} 10595 resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==}
5338 engines: {node: '>=0.10.5'} 10596 engines: {node: '>= 0.4'}
5339 dev: false 10597 dependencies:
10598 call-bind: 1.0.2
10599 get-intrinsic: 1.2.1
10600 is-typed-array: 1.1.12
10601 dev: true
10602
10603 /typed-array-byte-length@1.0.0:
10604 resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==}
10605 engines: {node: '>= 0.4'}
10606 dependencies:
10607 call-bind: 1.0.2
10608 for-each: 0.3.3
10609 has-proto: 1.0.1
10610 is-typed-array: 1.1.12
10611 dev: true
10612
10613 /typed-array-byte-offset@1.0.0:
10614 resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==}
10615 engines: {node: '>= 0.4'}
10616 dependencies:
10617 available-typed-arrays: 1.0.5
10618 call-bind: 1.0.2
10619 for-each: 0.3.3
10620 has-proto: 1.0.1
10621 is-typed-array: 1.1.12
10622 dev: true
10623
10624 /typed-array-length@1.0.4:
10625 resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
10626 dependencies:
10627 call-bind: 1.0.2
10628 for-each: 0.3.3
10629 is-typed-array: 1.1.12
10630 dev: true
5340 10631
5341 /uid-safe/2.1.5: 10632 /typescript@5.1.6:
10633 resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==}
10634 engines: {node: '>=14.17'}
10635 hasBin: true
10636 dev: true
10637
10638 /uid-safe@2.1.5:
5342 resolution: {integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==} 10639 resolution: {integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==}
5343 engines: {node: '>= 0.8'} 10640 engines: {node: '>= 0.8'}
5344 dependencies: 10641 dependencies:
5345 random-bytes: 1.0.0 10642 random-bytes: 1.0.0
5346 dev: false
5347 10643
5348 /unbox-primitive/1.0.2: 10644 /unbox-primitive@1.0.2:
5349 resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 10645 resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
5350 dependencies: 10646 dependencies:
5351 call-bind: 1.0.2 10647 call-bind: 1.0.2
@@ -5354,12 +10650,30 @@ packages:
5354 which-boxed-primitive: 1.0.2 10650 which-boxed-primitive: 1.0.2
5355 dev: true 10651 dev: true
5356 10652
5357 /unc-path-regex/0.1.2: 10653 /unicode-canonical-property-names-ecmascript@2.0.0:
5358 resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} 10654 resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==}
5359 engines: {node: '>=0.10.0'} 10655 engines: {node: '>=4'}
5360 dev: false 10656 dev: true
10657
10658 /unicode-match-property-ecmascript@2.0.0:
10659 resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==}
10660 engines: {node: '>=4'}
10661 dependencies:
10662 unicode-canonical-property-names-ecmascript: 2.0.0
10663 unicode-property-aliases-ecmascript: 2.1.0
10664 dev: true
10665
10666 /unicode-match-property-value-ecmascript@2.1.0:
10667 resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==}
10668 engines: {node: '>=4'}
10669 dev: true
10670
10671 /unicode-property-aliases-ecmascript@2.1.0:
10672 resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==}
10673 engines: {node: '>=4'}
10674 dev: true
5361 10675
5362 /union-value/1.0.1: 10676 /union-value@1.0.1:
5363 resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} 10677 resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==}
5364 engines: {node: '>=0.10.0'} 10678 engines: {node: '>=0.10.0'}
5365 dependencies: 10679 dependencies:
@@ -5367,134 +10681,369 @@ packages:
5367 get-value: 2.0.6 10681 get-value: 2.0.6
5368 is-extendable: 0.1.1 10682 is-extendable: 0.1.1
5369 set-value: 2.0.1 10683 set-value: 2.0.1
10684 dev: true
10685
10686 /unique-filename@1.1.1:
10687 resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==}
10688 requiresBuild: true
10689 dependencies:
10690 unique-slug: 2.0.2
5370 dev: false 10691 dev: false
10692 optional: true
5371 10693
5372 /universalify/0.1.2: 10694 /unique-slug@2.0.2:
10695 resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==}
10696 requiresBuild: true
10697 dependencies:
10698 imurmurhash: 0.1.4
10699 dev: false
10700 optional: true
10701
10702 /universalify@0.1.2:
5373 resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 10703 resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
5374 engines: {node: '>= 4.0.0'} 10704 engines: {node: '>= 4.0.0'}
5375 dev: false 10705 dev: true
5376 10706
5377 /universalify/2.0.0: 10707 /universalify@2.0.0:
5378 resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} 10708 resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
5379 engines: {node: '>= 10.0.0'} 10709 engines: {node: '>= 10.0.0'}
5380 dev: false
5381 10710
5382 /unpipe/1.0.0: 10711 /unpipe@1.0.0:
5383 resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 10712 resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
5384 engines: {node: '>= 0.8'} 10713 engines: {node: '>= 0.8'}
5385 dev: false
5386 10714
5387 /unset-value/1.0.0: 10715 /unset-value@1.0.0:
5388 resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} 10716 resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==}
5389 engines: {node: '>=0.10.0'} 10717 engines: {node: '>=0.10.0'}
5390 dependencies: 10718 dependencies:
5391 has-value: 0.3.1 10719 has-value: 0.3.1
5392 isobject: 3.0.1 10720 isobject: 3.0.1
5393 dev: false 10721 dev: true
5394 10722
5395 /upcast/2.1.2: 10723 /untildify@4.0.0:
5396 resolution: {integrity: sha512-c+ueM175OVWv9vr1SYA3rI1ao0bxq6Y7l6u5Sac25Hi0yWz9Lz341zt9/sVOa5+7lYcvHMb0xxaacFy/2lVF2w==} 10724 resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==}
5397 engines: {node: '>4'} 10725 engines: {node: '>=8'}
10726 dev: true
10727
10728 /update-browserslist-db@1.0.13(browserslist@4.22.1):
10729 resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
10730 hasBin: true
10731 peerDependencies:
10732 browserslist: '>= 4.21.0'
5398 dependencies: 10733 dependencies:
5399 cross-env: 5.2.1 10734 browserslist: 4.22.1
5400 dev: false 10735 escalade: 3.1.1
10736 picocolors: 1.0.0
10737 dev: true
10738
10739 /upper-case-first@2.0.2:
10740 resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==}
10741 dependencies:
10742 tslib: 2.6.2
5401 10743
5402 /uri-js/4.4.1: 10744 /upper-case@2.0.2:
10745 resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==}
10746 dependencies:
10747 tslib: 2.6.2
10748
10749 /uri-js@4.4.1:
5403 resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 10750 resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
5404 dependencies: 10751 dependencies:
5405 punycode: 2.1.1 10752 punycode: 2.3.0
10753 dev: true
5406 10754
5407 /urix/0.1.0: 10755 /urix@0.1.0:
5408 resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} 10756 resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==}
5409 deprecated: Please see https://github.com/lydell/urix#deprecated 10757 deprecated: Please see https://github.com/lydell/urix#deprecated
5410 dev: false 10758 dev: true
5411 10759
5412 /url-parse-lax/3.0.0: 10760 /url@0.10.3:
5413 resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} 10761 resolution: {integrity: sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==}
5414 engines: {node: '>=4'}
5415 dependencies: 10762 dependencies:
5416 prepend-http: 2.0.0 10763 punycode: 1.3.2
5417 dev: false 10764 querystring: 0.2.0
5418
5419 /url-to-options/1.0.1:
5420 resolution: {integrity: sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==}
5421 engines: {node: '>= 4'}
5422 dev: false 10765 dev: false
5423 10766
5424 /use/3.1.1: 10767 /use@3.1.1:
5425 resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} 10768 resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==}
5426 engines: {node: '>=0.10.0'} 10769 engines: {node: '>=0.10.0'}
10770 dev: true
10771
10772 /utf8-byte-length@1.0.4:
10773 resolution: {integrity: sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==}
5427 dev: false 10774 dev: false
5428 10775
5429 /useragent/2.3.0: 10776 /util-deprecate@1.0.2:
5430 resolution: {integrity: sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==} 10777 resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
10778
10779 /util@0.12.5:
10780 resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==}
5431 dependencies: 10781 dependencies:
5432 lru-cache: 4.1.5 10782 inherits: 2.0.4
5433 request: 2.88.2 10783 is-arguments: 1.1.1
5434 semver: 5.5.1 10784 is-generator-function: 1.0.10
5435 tmp: 0.0.33 10785 is-typed-array: 1.1.12
5436 yamlparser: 0.0.2 10786 which-typed-array: 1.1.11
5437 dev: false 10787 dev: false
5438 10788
5439 /utf8-byte-length/1.0.4: 10789 /utila@0.4.0:
5440 resolution: {integrity: sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==} 10790 resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==}
5441 dev: false 10791 dev: true
5442 10792
5443 /util-deprecate/1.0.2: 10793 /utils-merge@1.0.1:
5444 resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 10794 resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
10795 engines: {node: '>= 0.4.0'}
10796 dev: true
10797
10798 /uuid-random@1.3.2:
10799 resolution: {integrity: sha512-UOzej0Le/UgkbWEO8flm+0y+G+ljUon1QWTEZOq1rnMAsxo2+SckbiZdKzAHHlVh6gJqI1TjC/xwgR50MuCrBQ==}
5445 dev: false 10800 dev: false
5446 10801
5447 /uuid/3.4.0: 10802 /uuid@8.0.0:
5448 resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} 10803 resolution: {integrity: sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==}
5449 deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
5450 hasBin: true 10804 hasBin: true
5451 dev: false 10805 dev: false
5452 10806
5453 /uuid/8.3.2: 10807 /uuid@8.3.2:
5454 resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} 10808 resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
5455 hasBin: true 10809 hasBin: true
10810 dev: true
10811
10812 /uuid@9.0.0:
10813 resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==}
10814 hasBin: true
5456 dev: false 10815 dev: false
5457 10816
5458 /v8-compile-cache/2.3.0: 10817 /valid-url@1.0.9:
5459 resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} 10818 resolution: {integrity: sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==}
5460 dev: true 10819 dev: true
5461 10820
5462 /v8flags/3.2.0: 10821 /validate-npm-package-license@3.0.4:
5463 resolution: {integrity: sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==} 10822 resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
5464 engines: {node: '>= 0.10'}
5465 dependencies: 10823 dependencies:
5466 homedir-polyfill: 1.0.3 10824 spdx-correct: 3.2.0
5467 dev: false 10825 spdx-expression-parse: 3.0.1
10826 dev: true
10827
10828 /validate-npm-package-name@3.0.0:
10829 resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==}
10830 dependencies:
10831 builtins: 1.0.3
10832 dev: true
10833
10834 /validator@13.11.0:
10835 resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==}
10836 engines: {node: '>= 0.10'}
5468 10837
5469 /vary/1.1.2: 10838 /vary@1.1.2:
5470 resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 10839 resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
5471 engines: {node: '>= 0.8'} 10840 engines: {node: '>= 0.8'}
5472 dev: false
5473 10841
5474 /verror/1.10.0: 10842 /watchpack@2.4.0:
5475 resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} 10843 resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==}
5476 engines: {'0': node >=0.6.0} 10844 engines: {node: '>=10.13.0'}
5477 dependencies: 10845 dependencies:
5478 assert-plus: 1.0.0 10846 glob-to-regexp: 0.4.1
5479 core-util-is: 1.0.2 10847 graceful-fs: 4.2.11
5480 extsprintf: 1.3.0 10848 dev: true
5481 dev: false
5482 10849
5483 /warning-symbol/0.1.0: 10850 /wbuf@1.7.3:
5484 resolution: {integrity: sha512-1S0lwbHo3kNUKA4VomBAhqn4DPjQkIKSdbOin5K7EFUQNwyIKx+wZMGXKI53RUjla8V2B8ouQduUlgtx8LoSMw==} 10851 resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==}
5485 engines: {node: '>=0.10.0'} 10852 dependencies:
5486 dev: false 10853 minimalistic-assert: 1.0.1
10854 dev: true
5487 10855
5488 /webidl-conversions/3.0.1: 10856 /wcwidth@1.0.1:
10857 resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
10858 dependencies:
10859 defaults: 1.0.4
10860 dev: true
10861
10862 /webidl-conversions@3.0.1:
5489 resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 10863 resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
10864 dev: false
10865
10866 /webpack-cli@5.1.4(webpack@5.88.2):
10867 resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==}
10868 engines: {node: '>=14.15.0'}
10869 hasBin: true
10870 peerDependencies:
10871 '@webpack-cli/generators': '*'
10872 webpack: 5.x.x
10873 webpack-bundle-analyzer: '*'
10874 webpack-dev-server: '*'
10875 peerDependenciesMeta:
10876 '@webpack-cli/generators':
10877 optional: true
10878 webpack-bundle-analyzer:
10879 optional: true
10880 webpack-dev-server:
10881 optional: true
10882 dependencies:
10883 '@discoveryjs/json-ext': 0.5.7
10884 '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.88.2)
10885 '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.88.2)
10886 '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.88.2)
10887 colorette: 2.0.20
10888 commander: 10.0.1
10889 cross-spawn: 7.0.3
10890 envinfo: 7.10.0
10891 fastest-levenshtein: 1.0.16
10892 import-local: 3.1.0
10893 interpret: 3.1.1
10894 rechoir: 0.8.0
10895 webpack: 5.88.2(webpack-cli@5.1.4)
10896 webpack-merge: 5.9.0
10897 dev: true
10898
10899 /webpack-dev-middleware@5.3.3(webpack@5.88.2):
10900 resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==}
10901 engines: {node: '>= 12.13.0'}
10902 peerDependencies:
10903 webpack: ^4.0.0 || ^5.0.0
10904 dependencies:
10905 colorette: 2.0.20
10906 memfs: 3.5.3
10907 mime-types: 2.1.35
10908 range-parser: 1.2.1
10909 schema-utils: 4.2.0
10910 webpack: 5.88.2(webpack-cli@5.1.4)
10911 dev: true
10912
10913 /webpack-dev-server@4.15.1(webpack-cli@5.1.4)(webpack@5.88.2):
10914 resolution: {integrity: sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==}
10915 engines: {node: '>= 12.13.0'}
10916 hasBin: true
10917 peerDependencies:
10918 webpack: ^4.37.0 || ^5.0.0
10919 webpack-cli: '*'
10920 peerDependenciesMeta:
10921 webpack:
10922 optional: true
10923 webpack-cli:
10924 optional: true
10925 dependencies:
10926 '@types/bonjour': 3.5.11
10927 '@types/connect-history-api-fallback': 1.5.1
10928 '@types/express': 4.17.18
10929 '@types/serve-index': 1.9.2
10930 '@types/serve-static': 1.15.3
10931 '@types/sockjs': 0.3.34
10932 '@types/ws': 8.5.6
10933 ansi-html-community: 0.0.8
10934 bonjour-service: 1.1.1
10935 chokidar: 3.5.3
10936 colorette: 2.0.20
10937 compression: 1.7.4
10938 connect-history-api-fallback: 2.0.0
10939 default-gateway: 6.0.3
10940 express: 4.18.2
10941 graceful-fs: 4.2.11
10942 html-entities: 2.4.0
10943 http-proxy-middleware: 2.0.6(@types/express@4.17.18)
10944 ipaddr.js: 2.1.0
10945 launch-editor: 2.6.0
10946 open: 8.4.2
10947 p-retry: 4.6.2
10948 rimraf: 3.0.2
10949 schema-utils: 4.2.0
10950 selfsigned: 2.1.1
10951 serve-index: 1.9.1
10952 sockjs: 0.3.24
10953 spdy: 4.0.2
10954 webpack: 5.88.2(webpack-cli@5.1.4)
10955 webpack-cli: 5.1.4(webpack@5.88.2)
10956 webpack-dev-middleware: 5.3.3(webpack@5.88.2)
10957 ws: 8.14.2
10958 transitivePeerDependencies:
10959 - bufferutil
10960 - debug
10961 - supports-color
10962 - utf-8-validate
10963 dev: true
10964
10965 /webpack-merge@4.2.2:
10966 resolution: {integrity: sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==}
10967 dependencies:
10968 lodash: 4.17.21
10969 dev: true
10970
10971 /webpack-merge@5.9.0:
10972 resolution: {integrity: sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==}
10973 engines: {node: '>=10.0.0'}
10974 dependencies:
10975 clone-deep: 4.0.1
10976 wildcard: 2.0.1
10977 dev: true
10978
10979 /webpack-sources@3.2.3:
10980 resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
10981 engines: {node: '>=10.13.0'}
10982 dev: true
10983
10984 /webpack@5.88.2(webpack-cli@5.1.4):
10985 resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==}
10986 engines: {node: '>=10.13.0'}
10987 hasBin: true
10988 peerDependencies:
10989 webpack-cli: '*'
10990 peerDependenciesMeta:
10991 webpack-cli:
10992 optional: true
10993 dependencies:
10994 '@types/eslint-scope': 3.7.5
10995 '@types/estree': 1.0.2
10996 '@webassemblyjs/ast': 1.11.6
10997 '@webassemblyjs/wasm-edit': 1.11.6
10998 '@webassemblyjs/wasm-parser': 1.11.6
10999 acorn: 8.10.0
11000 acorn-import-assertions: 1.9.0(acorn@8.10.0)
11001 browserslist: 4.22.1
11002 chrome-trace-event: 1.0.3
11003 enhanced-resolve: 5.15.0
11004 es-module-lexer: 1.3.1
11005 eslint-scope: 5.1.1
11006 events: 3.3.0
11007 glob-to-regexp: 0.4.1
11008 graceful-fs: 4.2.11
11009 json-parse-even-better-errors: 2.3.1
11010 loader-runner: 4.3.0
11011 mime-types: 2.1.35
11012 neo-async: 2.6.2
11013 schema-utils: 3.3.0
11014 tapable: 2.2.1
11015 terser-webpack-plugin: 5.3.9(webpack@5.88.2)
11016 watchpack: 2.4.0
11017 webpack-cli: 5.1.4(webpack@5.88.2)
11018 webpack-sources: 3.2.3
11019 transitivePeerDependencies:
11020 - '@swc/core'
11021 - esbuild
11022 - uglify-js
11023 dev: true
11024
11025 /websocket-driver@0.7.4:
11026 resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==}
11027 engines: {node: '>=0.8.0'}
11028 dependencies:
11029 http-parser-js: 0.5.8
11030 safe-buffer: 5.2.1
11031 websocket-extensions: 0.1.4
11032 dev: true
5490 11033
5491 /whatwg-url/5.0.0: 11034 /websocket-extensions@0.1.4:
11035 resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==}
11036 engines: {node: '>=0.8.0'}
11037 dev: true
11038
11039 /whatwg-url@5.0.0:
5492 resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 11040 resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
5493 dependencies: 11041 dependencies:
5494 tr46: 0.0.3 11042 tr46: 0.0.3
5495 webidl-conversions: 3.0.1 11043 webidl-conversions: 3.0.1
11044 dev: false
5496 11045
5497 /which-boxed-primitive/1.0.2: 11046 /which-boxed-primitive@1.0.2:
5498 resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 11047 resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
5499 dependencies: 11048 dependencies:
5500 is-bigint: 1.0.4 11049 is-bigint: 1.0.4
@@ -5504,143 +11053,139 @@ packages:
5504 is-symbol: 1.0.4 11053 is-symbol: 1.0.4
5505 dev: true 11054 dev: true
5506 11055
5507 /which-module/2.0.0: 11056 /which-typed-array@1.1.11:
5508 resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} 11057 resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==}
5509 dev: true 11058 engines: {node: '>= 0.4'}
5510
5511 /which/1.3.1:
5512 resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
5513 hasBin: true
5514 dependencies: 11059 dependencies:
5515 isexe: 2.0.0 11060 available-typed-arrays: 1.0.5
5516 dev: false 11061 call-bind: 1.0.2
11062 for-each: 0.3.3
11063 gopd: 1.0.1
11064 has-tostringtag: 1.0.0
5517 11065
5518 /which/2.0.2: 11066 /which@2.0.2:
5519 resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 11067 resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
5520 engines: {node: '>= 8'} 11068 engines: {node: '>= 8'}
5521 hasBin: true 11069 hasBin: true
5522 dependencies: 11070 dependencies:
5523 isexe: 2.0.0 11071 isexe: 2.0.0
5524 dev: true
5525 11072
5526 /wide-align/1.1.5: 11073 /wide-align@1.1.5:
5527 resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} 11074 resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
5528 dependencies: 11075 dependencies:
5529 string-width: 1.0.2 11076 string-width: 4.2.3
5530 dev: false
5531
5532 /window-size/1.1.1:
5533 resolution: {integrity: sha512-5D/9vujkmVQ7pSmc0SCBmHXbkv6eaHwXEx65MywhmUMsI8sGqJ972APq1lotfcwMKPFLuCFfL8xGHLIp7jaBmA==}
5534 engines: {node: '>= 0.10.0'}
5535 hasBin: true
5536 dependencies:
5537 define-property: 1.0.0
5538 is-number: 3.0.0
5539 dev: false
5540
5541 /winston-transport/4.5.0:
5542 resolution: {integrity: sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==}
5543 engines: {node: '>= 6.4.0'}
5544 dependencies:
5545 logform: 2.4.2
5546 readable-stream: 3.6.0
5547 triple-beam: 1.3.0
5548 dev: false 11077 dev: false
5549 11078
5550 /winston/3.8.2: 11079 /wildcard@2.0.1:
5551 resolution: {integrity: sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew==} 11080 resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==}
5552 engines: {node: '>= 12.0.0'} 11081 dev: true
5553 dependencies:
5554 '@colors/colors': 1.5.0
5555 '@dabh/diagnostics': 2.0.3
5556 async: 3.2.4
5557 is-stream: 2.0.1
5558 logform: 2.4.2
5559 one-time: 1.0.0
5560 readable-stream: 3.6.0
5561 safe-stable-stringify: 2.4.1
5562 stack-trace: 0.0.10
5563 triple-beam: 1.3.0
5564 winston-transport: 4.5.0
5565 dev: false
5566 11082
5567 /word-wrap/1.2.3: 11083 /wordwrap@1.0.0:
5568 resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 11084 resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
5569 engines: {node: '>=0.10.0'}
5570 dev: true 11085 dev: true
5571 11086
5572 /wrap-ansi/6.2.0: 11087 /wrap-ansi@6.2.0:
5573 resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} 11088 resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
5574 engines: {node: '>=8'} 11089 engines: {node: '>=8'}
5575 dependencies: 11090 dependencies:
5576 ansi-styles: 4.3.0 11091 ansi-styles: 4.3.0
5577 string-width: 4.2.3 11092 string-width: 4.2.3
5578 strip-ansi: 6.0.1 11093 strip-ansi: 6.0.1
5579 dev: true
5580 11094
5581 /wrappy/1.0.2: 11095 /wrappy@1.0.2:
5582 resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 11096 resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
5583 11097
5584 /xtend/4.0.2: 11098 /ws@8.14.2:
11099 resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==}
11100 engines: {node: '>=10.0.0'}
11101 peerDependencies:
11102 bufferutil: ^4.0.1
11103 utf-8-validate: '>=5.0.2'
11104 peerDependenciesMeta:
11105 bufferutil:
11106 optional: true
11107 utf-8-validate:
11108 optional: true
11109 dev: true
11110
11111 /xml2js@0.5.0:
11112 resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==}
11113 engines: {node: '>=4.0.0'}
11114 dependencies:
11115 sax: 1.2.1
11116 xmlbuilder: 11.0.1
11117 dev: false
11118
11119 /xmlbuilder@11.0.1:
11120 resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==}
11121 engines: {node: '>=4.0'}
11122 dev: false
11123
11124 /xtend@4.0.2:
5585 resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 11125 resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
5586 engines: {node: '>=0.4'} 11126 engines: {node: '>=0.4'}
5587 dev: false 11127 dev: false
5588 11128
5589 /y18n/4.0.3: 11129 /yallist@2.1.2:
5590 resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
5591 dev: true
5592
5593 /yallist/2.1.2:
5594 resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} 11130 resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==}
5595 dev: false 11131 dev: true
5596 11132
5597 /yallist/3.1.1: 11133 /yallist@3.1.1:
5598 resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 11134 resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
5599 dev: false 11135 dev: true
5600 11136
5601 /yallist/4.0.0: 11137 /yallist@4.0.0:
5602 resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 11138 resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
5603 11139
5604 /yamlparser/0.0.2: 11140 /yaml@2.3.2:
5605 resolution: {integrity: sha512-Cou9FCGblEENtn1/8La5wkDM/ISMh2bzu5Wh7dYzCzA0o9jD4YGyLkUJxe84oPBGoB92f+Oy4ZjVhA8S0C2wlQ==} 11141 resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==}
5606 dev: false 11142 engines: {node: '>= 14'}
11143 dev: true
5607 11144
5608 /yargs-parser/18.1.3: 11145 /yargs-parser@21.1.1:
5609 resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} 11146 resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
5610 engines: {node: '>=6'} 11147 engines: {node: '>=12'}
5611 dependencies:
5612 camelcase: 5.3.1
5613 decamelize: 1.2.0
5614 dev: true 11148 dev: true
5615 11149
5616 /yargs/15.4.1: 11150 /yocto-queue@0.1.0:
5617 resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} 11151 resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
5618 engines: {node: '>=8'} 11152 engines: {node: '>=10'}
5619 dependencies:
5620 cliui: 6.0.0
5621 decamelize: 1.2.0
5622 find-up: 4.1.0
5623 get-caller-file: 2.0.5
5624 require-directory: 2.1.1
5625 require-main-filename: 2.0.0
5626 set-blocking: 2.0.0
5627 string-width: 4.2.3
5628 which-module: 2.0.0
5629 y18n: 4.0.3
5630 yargs-parser: 18.1.3
5631 dev: true 11153 dev: true
5632 11154
5633 /youch-terminal/1.1.1: 11155 /youch-terminal@2.2.2:
5634 resolution: {integrity: sha512-LRJCIDkMH4AA6KtiX1JH3nBO8xCJx8le/CHI2hheBGHd7hcpP62owgUW5R9ObrxW0RLQT/VqPRO4mR92STkvAw==} 11156 resolution: {integrity: sha512-JfVAsD0r88+vWVz+Im6bMk+c7gErDp1lq6Z1Na5LAyPZTwhB3VgO6HUQsm83I217mRFSuwVwEpnvwkK/TDTNhQ==}
5635 dependencies: 11157 dependencies:
5636 kleur: 4.1.5 11158 kleur: 4.1.5
5637 dev: false 11159 string-width: 4.2.3
11160 wordwrap: 1.0.0
11161 dev: true
5638 11162
5639 /youch/2.2.2: 11163 /youch@3.2.3:
5640 resolution: {integrity: sha512-/FaCeG3GkuJwaMR34GHVg0l8jCbafZLHiFowSjqLlqhC6OMyf2tPJBu8UirF7/NI9X/R5ai4QfEKUCOxMAGxZQ==} 11164 resolution: {integrity: sha512-ZBcWz/uzZaQVdCvfV4uk616Bbpf2ee+F/AvuKDR5EwX/Y4v06xWdtMluqTD7+KlZdM93lLm9gMZYo0sKBS0pgw==}
5641 dependencies: 11165 dependencies:
5642 '@types/stack-trace': 0.0.29 11166 cookie: 0.5.0
5643 cookie: 0.4.2
5644 mustache: 4.2.0 11167 mustache: 4.2.0
5645 stack-trace: 0.0.10 11168 stacktracey: 2.1.8
11169 dev: true
11170
11171 /z-schema@5.0.5:
11172 resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==}
11173 engines: {node: '>=8.0.0'}
11174 hasBin: true
11175 dependencies:
11176 lodash.get: 4.4.2
11177 lodash.isequal: 4.5.0
11178 validator: 13.11.0
11179 optionalDependencies:
11180 commander: 9.5.0
11181 dev: true
11182
11183 github.com/SpecialAro/adonis5-jwt/34941c10adcf89583a40767552b994ea499b92e3:
11184 resolution: {tarball: https://codeload.github.com/SpecialAro/adonis5-jwt/tar.gz/34941c10adcf89583a40767552b994ea499b92e3}
11185 name: adonis5-jwt
11186 version: 1.1.7
11187 dependencies:
11188 jose: 4.14.6
11189 ts-morph: 16.0.0
11190 uuid: 9.0.0
5646 dev: false 11191 dev: false
diff --git a/providers/AppProvider.ts b/providers/AppProvider.ts
new file mode 100644
index 0000000..8d64412
--- /dev/null
+++ b/providers/AppProvider.ts
@@ -0,0 +1,21 @@
1import { ApplicationContract } from '@ioc:Adonis/Core/Application';
2
3export default class AppProvider {
4 constructor(protected app: ApplicationContract) {}
5
6 public register() {
7 // Register your own bindings
8 }
9
10 public async boot() {
11 // IoC container is ready
12 }
13
14 public async ready() {
15 // App is ready
16 }
17
18 public async shutdown() {
19 // Cleanup, since app is going down
20 }
21}
diff --git a/providers/LegacyHashDriver.ts b/providers/LegacyHashDriver.ts
new file mode 100644
index 0000000..22f9de1
--- /dev/null
+++ b/providers/LegacyHashDriver.ts
@@ -0,0 +1,19 @@
1import bcrypt from 'bcrypt';
2import { HashDriverContract } from '@ioc:Adonis/Core/Hash';
3/**
4 * Implementation of custom bcrypt driver
5 */
6export class LegacyHashDriver implements HashDriverContract {
7 /**
8 * Hash value
9 */
10 public async make(value: string) {
11 return bcrypt.hash(value, 10);
12 }
13 /**
14 * Verify value
15 */
16 public async verify(hashedValue: string, plainValue: string) {
17 return bcrypt.compare(plainValue, hashedValue);
18 }
19}
diff --git a/providers/LegacyHasherProvider.ts b/providers/LegacyHasherProvider.ts
new file mode 100644
index 0000000..05b2d27
--- /dev/null
+++ b/providers/LegacyHasherProvider.ts
@@ -0,0 +1,14 @@
1import { ApplicationContract } from '@ioc:Adonis/Core/Application';
2import { LegacyHashDriver } from './LegacyHashDriver';
3
4export default class LegacyHasherProvider {
5 constructor(protected app: ApplicationContract) {}
6
7 public async boot() {
8 const Hash = this.app.container.use('Adonis/Core/Hash');
9
10 Hash.extend('legacy', () => {
11 return new LegacyHashDriver();
12 });
13 }
14}
diff --git a/public/js/new.js b/public/js/new.js
index beaa36d..62c2e4b 100644
--- a/public/js/new.js
+++ b/public/js/new.js
@@ -1,20 +1,20 @@
1/* eslint-env browser */ 1/* eslint-env browser */
2const elDrop = document.getElementById('dropzone'); 2const elDrop = document.querySelector('#dropzone');
3const submitBtn = document.getElementById('submitbutton'); 3const submitBtn = document.querySelector('#submitbutton');
4const fileInput = document.getElementById('files'); 4const fileInput = document.querySelector('#files');
5 5
6elDrop.addEventListener('dragover', (event) => { 6elDrop.addEventListener('dragover', event => {
7 event.preventDefault(); 7 event.preventDefault();
8}); 8});
9 9
10elDrop.addEventListener('drop', async (event) => { 10elDrop.addEventListener('drop', async event => {
11 event.preventDefault(); 11 event.preventDefault();
12 12
13 submitBtn.disabled = true; 13 submitBtn.disabled = true;
14 14
15 fileInput.files = event.dataTransfer.files; 15 fileInput.files = event.dataTransfer.files;
16 16
17 elDrop.innerText = `✓ ${fileInput.files.length} files selected`; 17 elDrop.textContent = `✓ ${fileInput.files.length} files selected`;
18 elDrop.style.height = 'inherit'; 18 elDrop.style.height = 'inherit';
19 19
20 submitBtn.disabled = false; 20 submitBtn.disabled = false;
diff --git a/public/js/transfer.js b/public/js/transfer.js
index c04a6d3..b4ba14c 100644
--- a/public/js/transfer.js
+++ b/public/js/transfer.js
@@ -1,14 +1,15 @@
1/* eslint-env browser */ 1/* eslint-env browser */
2const submitBtn = document.getElementById('submit'); 2const submitBtn = document.querySelector('#submit');
3const fileInput = document.getElementById('file'); 3const fileInput = document.querySelector('#file');
4const fileOutput = document.getElementById('fileoutput'); 4const fileOutput = document.querySelector('#fileoutput');
5 5
6fileInput.addEventListener('change', () => { 6fileInput.addEventListener('change', () => {
7 const reader = new FileReader(); 7 const reader = new FileReader();
8 reader.onload = function () { 8 reader.addEventListener('load', () => {
9 const text = reader.result; 9 const text = reader.result;
10 fileOutput.value = text; 10 fileOutput.value = text;
11 submitBtn.disabled = false; 11 submitBtn.disabled = false;
12 }; 12 });
13 // eslint-disable-next-line unicorn/prefer-blob-reading-methods
13 reader.readAsText(fileInput.files[0]); 14 reader.readAsText(fileInput.files[0]);
14}); 15});
diff --git a/resources/js/app.js b/resources/js/app.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/resources/js/app.js
diff --git a/resources/views/dashboard/account.edge b/resources/views/dashboard/account.edge
index b805ac5..3a1f53c 100644
--- a/resources/views/dashboard/account.edge
+++ b/resources/views/dashboard/account.edge
@@ -1,4 +1,4 @@
1@layout('layouts.v2') 1@layout('layouts/v2')
2 2
3@section('content') 3@section('content')
4<div class="w-screen bg-purple-200 flex items-center justify-center"> 4<div class="w-screen bg-purple-200 flex items-center justify-center">
@@ -6,19 +6,19 @@
6 <h1 class="text-gray-700 text-center text-2xl pb-5"> 6 <h1 class="text-gray-700 text-center text-2xl pb-5">
7 Your Ferdium account 7 Your Ferdium account
8 </h1> 8 </h1>
9 @if(flashMessage('error')) 9 @if(flashMessages.has('error'))
10 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4"> 10 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4">
11 {{ flashMessage('error') }} 11 {{ flashMessages.get('error') }}
12 </div> 12 </div>
13 @endif 13 @endif
14 @if(old('message')) 14 @if(flashMessages.has('message'))
15 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4"> 15 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4">
16 {{ old('message') }} 16 {{ flashMessages.get('message') }}
17 </div> 17 </div>
18 @endif 18 @endif
19 @if(flashMessage('notification')) 19 @if(flashMessages.has('notification'))
20 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4"> 20 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4">
21 {{ flashMessage('notification.message') }} 21 {{ flashMessages.get('notification.message') }}
22 </div> 22 </div>
23 @endif 23 @endif
24 @if(success === true) 24 @if(success === true)
@@ -34,7 +34,7 @@
34 <div> 34 <div>
35 <input 35 <input
36 class="shadow appearance-none rounded w-full py-2 px-3 text-gray-700 mb-3 leading-tight focus:outline-none focus:shadow-outline" 36 class="shadow appearance-none rounded w-full py-2 px-3 text-gray-700 mb-3 leading-tight focus:outline-none focus:shadow-outline"
37 type="text" value="{{ old('name', username) }}" placeholder="Name" name="username" required> 37 type="text" value="{{ flashMessages.get('username', username) }}" placeholder="Name" name="username" required>
38 </div> 38 </div>
39 </div> 39 </div>
40 <div class="mb-6"> 40 <div class="mb-6">
@@ -42,7 +42,7 @@
42 <div> 42 <div>
43 <input 43 <input
44 class="shadow appearance-none rounded w-full py-2 px-3 text-gray-700 mb-3 leading-tight focus:outline-none focus:shadow-outline" 44 class="shadow appearance-none rounded w-full py-2 px-3 text-gray-700 mb-3 leading-tight focus:outline-none focus:shadow-outline"
45 type="text" value="{{ old('lastname', lastname) }}" placeholder="Last Name" name="lastname" required> 45 type="text" value="{{ flashMessages.get('lastname', lastname) }}" placeholder="Last Name" name="lastname" required>
46 </div> 46 </div>
47 </div> 47 </div>
48 <div class="mb-6"> 48 <div class="mb-6">
@@ -50,7 +50,7 @@
50 <div> 50 <div>
51 <input 51 <input
52 class="shadow appearance-none rounded w-full py-2 px-3 text-gray-700 mb-3 leading-tight focus:outline-none focus:shadow-outline" 52 class="shadow appearance-none rounded w-full py-2 px-3 text-gray-700 mb-3 leading-tight focus:outline-none focus:shadow-outline"
53 type="email" value="{{ old('email', email) }}" placeholder="E-Mail" name="email" required> 53 type="email" value="{{ flashMessages.get('email', email) }}" placeholder="E-Mail" name="email" required>
54 </div> 54 </div>
55 </div> 55 </div>
56 <div class="mb-6"> 56 <div class="mb-6">
@@ -67,16 +67,16 @@
67 </form> 67 </form>
68 <div class="text-center"> 68 <div class="text-center">
69 <a class="w-full font-bold text-sm text-gray-500 hover:text-gray-800 mb-3" 69 <a class="w-full font-bold text-sm text-gray-500 hover:text-gray-800 mb-3"
70 href="/user/data">My account data</a> 70 href="/user/data">My account data</a>
71 <br /> 71 <br />
72 <a class="w-full font-bold text-sm text-gray-500 hover:text-gray-800 mb-3" 72 <a class="w-full font-bold text-sm text-gray-500 hover:text-gray-800 mb-3"
73 href="/user/transfer">Import/Export account data</a> 73 href="/user/transfer">Import/Export account data</a>
74 <br /> 74 <br />
75 <a class="w-full font-bold text-sm text-red-500 hover:text-red-800 mb-3" 75 <a class="w-full font-bold text-sm text-red-500 hover:text-red-800 mb-3"
76 href="/user/delete">Delete my account</a> 76 href="/user/delete">Delete my account</a>
77 <br /> 77 <br />
78 <a class="w-full font-bold text-sm text-gray-500 hover:text-gray-800 mb-3" 78 <a class="w-full font-bold text-sm text-gray-500 hover:text-gray-800 mb-3"
79 href="/user/logout">Logout</a> 79 href="/user/logout">Logout</a>
80 </div> 80 </div>
81 </div> 81 </div>
82</div> 82</div>
diff --git a/resources/views/dashboard/data.edge b/resources/views/dashboard/data.edge
index cf48c1c..ac1ee40 100644
--- a/resources/views/dashboard/data.edge
+++ b/resources/views/dashboard/data.edge
@@ -1,179 +1,201 @@
1@layout('layouts.v2') 1@layout('layouts/v2')
2 2
3@section('content') 3@section('content')
4<style> 4<style>
5 table { 5 table {
6 border: 1px solid #919191; 6 border: 1px solid #919191;
7 border-collapse: collapse; 7 border-collapse: collapse;
8 table-layout: fixed; 8 table-layout: fixed;
9 width: 100%; 9 width: 100%;
10 } 10 }
11 table thead { text-align: center; }
12 table tbody { text-align: right; }
13 table tr { border-bottom: 1px solid #919191; }
14 table tbody tr:nth-child(even) { background: var(--tertiary-color); }
15 table th { background: var(--secondary-color); font-weight: bold; }
16 table th, table td { padding: 1rem; }
17 table th:not(last-of-type), table td:not(last-of-type) { border-right: 1px solid #919191; }
18 11
12 table thead {
13 text-align: center;
14 }
15
16 table tbody {
17 text-align: right;
18 }
19
20 table tr {
21 border-bottom: 1px solid #919191;
22 }
23
24 table tbody tr:nth-child(even) {
25 background: var(--tertiary-color);
26 }
27
28 table th {
29 background: var(--secondary-color);
30 font-weight: bold;
31 }
32
33 table th,
34 table td {
35 padding: 1rem;
36 }
37
38 table th:not(last-of-type),
39 table td:not(last-of-type) {
40 border-right: 1px solid #919191;
41 }
19</style> 42</style>
20 43
21<div class="bg-purple-200 flex items-center justify-center"> 44<div class="bg-purple-200 flex items-center justify-center">
22 <div class="w-full bg-white shadow-md rounded px-8 pt-6 mt-5 pb-8 mb-4"> 45 <div class="w-full bg-white shadow-md rounded px-8 pt-6 mt-5 pb-8 mb-4">
23 <h1 class="text-gray-700 text-center text-2xl pb-5">Your Account Data</h1> 46 <h1 class="text-gray-700 text-center text-2xl pb-5">Your Account Data</h1>
24 47
25
26 <table class="w-full rounded-lg overflow-hidden sm:shadow-lg my-5"> 48 <table class="w-full rounded-lg overflow-hidden sm:shadow-lg my-5">
27 <tr> 49 <tr>
28 <th> 50 <th>
29 Name 51 Name
30 </th> 52 </th>
31 <th> 53 <th>
32 Value 54 Value
33 </th> 55 </th>
34 </tr> 56 </tr>
35 <tr> 57 <tr>
36 <td> 58 <td>
37 E-Mail 59 E-Mail
38 </td> 60 </td>
39 <td> 61 <td>
40 {{ mail }} 62 {{ mail }}
41 </td> 63 </td>
42 </tr> 64 </tr>
43 <tr> 65 <tr>
44 <td> 66 <td>
45 Username 67 Username
46 </td> 68 </td>
47 <td> 69 <td>
48 {{ username }} 70 {{ username }}
49 </td> 71 </td>
50 </tr> 72 </tr>
51 <tr> 73 <tr>
52 <td> 74 <td>
53 Last Name 75 Last Name
54 </td> 76 </td>
55 <td> 77 <td>
56 {{ lastname }} 78 {{ lastname }}
57 </td> 79 </td>
58 </tr> 80 </tr>
59 <tr> 81 <tr>
60 <td> 82 <td>
61 Created account on 83 Created account on
62 </td> 84 </td>
63 <td> 85 <td>
64 {{ created }} 86 {{ created }}
65 </td> 87 </td>
66 </tr> 88 </tr>
67 <tr> 89 <tr>
68 <td> 90 <td>
69 Last account update on 91 Last account update on
70 </td> 92 </td>
71 <td> 93 <td>
72 {{ updated }} 94 {{ updated }}
73 </td> 95 </td>
74 </tr> 96 </tr>
75 </table> 97 </table>
76 98
77 <h1 class="text-gray-700 text-center text-2xl pb-5">Your Services</h1> 99 <h1 class="text-gray-700 text-center text-2xl pb-5">Your Services</h1>
78 <table class="w-full rounded-lg overflow-hidden sm:shadow-lg my-5"> 100 <table class="w-full rounded-lg overflow-hidden sm:shadow-lg my-5">
79 <tr> 101 <tr>
80 <th> 102 <th>
81 Service ID 103 Service ID
82 </th> 104 </th>
83 <th> 105 <th>
84 Name 106 Name
85 </th> 107 </th>
86 <th> 108 <th>
87 Recipe ID 109 Recipe ID
88 </th> 110 </th>
89 <th> 111 <th>
90 Settings 112 Settings
91 </th> 113 </th>
92 <th> 114 <th>
93 Created 115 Created
94 </th> 116 </th>
95 <th> 117 <th>
96 Last updated 118 Last updated
97 </th> 119 </th>
98 </tr> 120 </tr>
99 121
100 @each(service in services) 122 @each(service in services)
101 <tr> 123 <tr>
102 <td> 124 <td>
103 {{ service.serviceId }} 125 {{ service.serviceId }}
104 </td> 126 </td>
105 <td> 127 <td>
106 {{ service.name }} 128 {{ service.name }}
107 </td> 129 </td>
108 <td> 130 <td>
109 {{ service.recipeId }} 131 {{ service.recipeId }}
110 </td> 132 </td>
111 <td> 133 <td>
112 {{ stringify(service.settings) }} 134 {{ stringify(service.settings) }}
113 </td> 135 </td>
114 <td> 136 <td>
115 {{ service.created_at }} 137 {{ service.createdAt.toFormat('yyyy-MM-dd HH:mm:ss') }}
116 </td> 138 </td>
117 <td> 139 <td>
118 {{ service.updated_at }} 140 {{ service.updatedAt.toFormat('yyyy-MM-dd HH:mm:ss') }}
119 </td> 141 </td>
120 </tr> 142 </tr>
121 @endeach 143 @endeach
122 </table> 144 </table>
123 145
124 <h1 class="text-gray-700 text-center text-2xl pb-5">Your Workspaces</h1> 146 <h1 class="text-gray-700 text-center text-2xl pb-5">Your Workspaces</h1>
125 <table> 147 <table>
126 <tr> 148 <tr>
127 <th> 149 <th>
128 Service ID 150 Workspace ID
129 </th> 151 </th>
130 <th> 152 <th>
131 Name 153 Name
132 </th> 154 </th>
133 <th> 155 <th>
134 Order 156 Order
135 </th> 157 </th>
136 <th> 158 <th>
137 Services 159 Services
138 </th> 160 </th>
139 <th> 161 <th>
140 Data 162 Data
141 </th> 163 </th>
142 <th> 164 <th>
143 Created 165 Created
144 </th> 166 </th>
145 <th> 167 <th>
146 Last updated 168 Last updated
147 </th> 169 </th>
148 </tr> 170 </tr>
149 171
150 @each(workspace in workspaces) 172 @each(workspace in workspaces)
151 <tr> 173 <tr>
152 <td> 174 <td>
153 {{ workspace.workspaceId }} 175 {{ workspace.workspaceId }}
154 </td> 176 </td>
155 <td> 177 <td>
156 {{ workspace.name }} 178 {{ workspace.name }}
157 </td> 179 </td>
158 <td> 180 <td>
159 {{ workspace.order }} 181 {{ workspace.order }}
160 </td> 182 </td>
161 <td> 183 <td>
162 {{ stringify(workspace.services) }} 184 {{ stringify(workspace.services) }}
163 </td> 185 </td>
164 <td> 186 <td>
165 {{ stringify(workspace.data) }} 187 {{ stringify(workspace.data) }}
166 </td> 188 </td>
167 <td> 189 <td>
168 {{ workspace.created_at }} 190 {{ workspace.createdAt.toFormat('yyyy-MM-dd HH:mm:ss') }}
169 </td> 191 </td>
170 <td> 192 <td>
171 {{ workspace.updated_at }} 193 {{ workspace.updatedAt.toFormat('yyyy-MM-dd HH:mm:ss') }}
172 </td> 194 </td>
173 </tr> 195 </tr>
174 @endeach 196 @endeach
175 </table> 197 </table>
176 198
177 <div class="text-center"> 199 <div class="text-center">
178 <a class="w-full font-bold text-sm text-gray-500 hover:text-gray-800 mb-3" href="/user/account">Back to My 200 <a class="w-full font-bold text-sm text-gray-500 hover:text-gray-800 mb-3" href="/user/account">Back to My
179 Account</a> 201 Account</a>
@@ -182,4 +204,4 @@
182 </div> 204 </div>
183</div> 205</div>
184</div> 206</div>
185@endsection \ No newline at end of file 207@endsection
diff --git a/resources/views/dashboard/delete.edge b/resources/views/dashboard/delete.edge
index d058a73..ea4a431 100644
--- a/resources/views/dashboard/delete.edge
+++ b/resources/views/dashboard/delete.edge
@@ -1,17 +1,17 @@
1@layout('layouts.v2') 1@layout('layouts/v2')
2 2
3@section('content') 3@section('content')
4<div class="w-screen bg-purple-200 flex items-center justify-center"> 4<div class="w-screen bg-purple-200 flex items-center justify-center">
5 <div class="w-full max-w-lg bg-white shadow-md rounded px-8 pt-6 pb-8 mb-4"> 5 <div class="w-full max-w-lg bg-white shadow-md rounded px-8 pt-6 pb-8 mb-4">
6 <h1 class="text-gray-700 text-center text-2xl pb-5">Delete your account</h1> 6 <h1 class="text-gray-700 text-center text-2xl pb-5">Delete your account</h1>
7 @if(flashMessage('error')) 7 @if(flashMessages.has('error'))
8 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4"> 8 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4">
9 {{ flashMessage('error') }} 9 {{ flashMessages.get('error') }}
10 </div> 10 </div>
11 @endif 11 @endif
12 @if(old('message')) 12 @if(flashMessages.has('message'))
13 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4"> 13 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4">
14 {{ old('message') }} 14 {{ flashMessages.get('message') }}
15 </div> 15 </div>
16 @endif 16 @endif
17 17
diff --git a/resources/views/dashboard/forgotPassword.edge b/resources/views/dashboard/forgotPassword.edge
index cd5d8c0..b41e1cc 100644
--- a/resources/views/dashboard/forgotPassword.edge
+++ b/resources/views/dashboard/forgotPassword.edge
@@ -1,4 +1,4 @@
1@layout('layouts.v2') 1@layout('layouts/v2')
2 2
3@section('content') 3@section('content')
4<div class="w-screen bg-purple-200 flex items-center justify-center"> 4<div class="w-screen bg-purple-200 flex items-center justify-center">
@@ -8,14 +8,14 @@
8 Forgot Password? 8 Forgot Password?
9 </h1> 9 </h1>
10 10
11 @if(flashMessage('error')) 11 @if(flashMessages.has('error'))
12 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4"> 12 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4">
13 {{ flashMessage('error') }} 13 {{ flashMessages.get('error') }}
14 </div> 14 </div>
15 @endif 15 @endif
16 @if(old('message')) 16 @if(flashMessages.has('message'))
17 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4"> 17 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4">
18 {{ old('message') }} 18 {{ flashMessages.get('message') }}
19 </div> 19 </div>
20 @endif 20 @endif
21 21
@@ -30,7 +30,7 @@
30 name="mail" 30 name="mail"
31 type="text" 31 type="text"
32 placeholder="E-Mail" 32 placeholder="E-Mail"
33 value="{{ old('mail', '') }}" 33 value="{{ flashMessages.get('mail', '') }}"
34 required> 34 required>
35 </div> 35 </div>
36 36
diff --git a/resources/views/dashboard/login.edge b/resources/views/dashboard/login.edge
index 23995ae..360ad98 100644
--- a/resources/views/dashboard/login.edge
+++ b/resources/views/dashboard/login.edge
@@ -1,4 +1,4 @@
1@layout('layouts.v2') 1@layout('layouts/v2')
2 2
3@section('content') 3@section('content')
4<div class="w-screen bg-purple-200 flex items-center justify-center"> 4<div class="w-screen bg-purple-200 flex items-center justify-center">
@@ -8,14 +8,14 @@
8 Login 8 Login
9 </h1> 9 </h1>
10 10
11 @if(flashMessage('error')) 11 @if(flashMessages.has('error'))
12 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4"> 12 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4">
13 {{ flashMessage('error') }} 13 {{ flashMessages.get('error') }}
14 </div> 14 </div>
15 @endif 15 @endif
16 @if(old('message')) 16 @if(flashMessages.has('message'))
17 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4"> 17 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4">
18 {{ old('message') }} 18 {{ flashMessages.get('message') }}
19 </div> 19 </div>
20 @endif 20 @endif
21 21
@@ -30,7 +30,7 @@
30 name="mail" 30 name="mail"
31 type="text" 31 type="text"
32 placeholder="E-Mail" 32 placeholder="E-Mail"
33 value="{{ old('mail', '') }}" 33 value="{{ flashMessages.get('mail', '') }}"
34 required> 34 required>
35 </div> 35 </div>
36 <div class="mb-6"> 36 <div class="mb-6">
@@ -60,7 +60,7 @@
60 </a> 60 </a>
61 </div> 61 </div>
62 <div class="text-center"> 62 <div class="text-center">
63 <a class="w-full font-bold text-sm text-blue-500 hover:text-blue-800" href="../import"> 63 <a class="w-full font-bold text-sm text-blue-500 hover:text-blue-800" href="/import">
64 Import your Franz/Ferdi account 64 Import your Franz/Ferdi account
65 </a> 65 </a>
66 </div> 66 </div>
diff --git a/resources/views/dashboard/resetPassword.edge b/resources/views/dashboard/resetPassword.edge
index 4b39169..33b08c3 100644
--- a/resources/views/dashboard/resetPassword.edge
+++ b/resources/views/dashboard/resetPassword.edge
@@ -1,4 +1,4 @@
1@layout('layouts.v2') 1@layout('layouts/v2')
2 2
3@section('content') 3@section('content')
4<div class="w-screen bg-purple-200 flex items-center justify-center"> 4<div class="w-screen bg-purple-200 flex items-center justify-center">
@@ -8,14 +8,14 @@
8 Reset Your Password 8 Reset Your Password
9 </h1> 9 </h1>
10 10
11 @if(flashMessage('error')) 11 @if(flashMessages.has('error'))
12 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4"> 12 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4">
13 {{ flashMessage('error') }} 13 {{ flashMessages.get('error') }}
14 </div> 14 </div>
15 @endif 15 @endif
16 @if(old('message')) 16 @if(flashMessages.has('message'))
17 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4"> 17 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4">
18 {{ old('message') }} 18 {{ flashMessages.get('message') }}
19 </div> 19 </div>
20 @endif 20 @endif
21 21
@@ -30,7 +30,7 @@
30 name="password" 30 name="password"
31 type="password" 31 type="password"
32 placeholder="New Password" 32 placeholder="New Password"
33 value="{{ old('password', '') }}" 33 value="{{ flashMessages.get('password', '') }}"
34 required> 34 required>
35 </div> 35 </div>
36 <div class="mb-4"> 36 <div class="mb-4">
@@ -43,7 +43,7 @@
43 name="password_confirmation" 43 name="password_confirmation"
44 type="password" 44 type="password"
45 placeholder="Confirm Password" 45 placeholder="Confirm Password"
46 value="{{ old('password_confirmation', '') }}" 46 value="{{ flashMessages.get('password_confirmation', '') }}"
47 required> 47 required>
48 </div> 48 </div>
49 49
diff --git a/resources/views/dashboard/transfer.edge b/resources/views/dashboard/transfer.edge
index bdae1f4..759edbf 100644
--- a/resources/views/dashboard/transfer.edge
+++ b/resources/views/dashboard/transfer.edge
@@ -1,22 +1,22 @@
1@layout('layouts.v2') 1@layout('layouts/v2')
2 2
3@section('content') 3@section('content')
4<div class="w-screen bg-purple-200 flex items-center justify-center"> 4<div class="w-screen bg-purple-200 flex items-center justify-center">
5 <div class="w-full max-w-lg bg-white shadow-md rounded px-8 pt-6 pb-8 mb-4"> 5 <div class="w-full max-w-lg bg-white shadow-md rounded px-8 pt-6 pb-8 mb-4">
6 <h1 class="text-gray-700 text-center text-2xl pb-5">Import/Export data from another Ferdium server</h1> 6 <h1 class="text-gray-700 text-center text-2xl pb-5">Import/Export data from another Ferdium server</h1>
7 @if(flashMessage('error')) 7 @if(flashMessages.has('error'))
8 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4"> 8 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4">
9 {{ flashMessage('error') }} 9 {{ flashMessages.get('error') }}
10 </div> 10 </div>
11 @endif 11 @endif
12 @if(old('message')) 12 @if(flashMessages.has('message'))
13 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4"> 13 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4">
14 {{ old('message') }} 14 {{ flashMessages.get('message') }}
15 </div> 15 </div>
16 @endif 16 @endif
17 @if(flashMessage('notification')) 17 @if(flashMessages.has('notification'))
18 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4"> 18 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4">
19 {{ flashMessage('notification.message') }} 19 {{ flashMessages.get('notification.message') }}
20 </div> 20 </div>
21 @endif 21 @endif
22 @if(success === true) 22 @if(success === true)
diff --git a/resources/views/emails/reset_password.edge b/resources/views/emails/reset_password.edge
new file mode 100644
index 0000000..e2d2c1c
--- /dev/null
+++ b/resources/views/emails/reset_password.edge
@@ -0,0 +1,8 @@
1Hello {{ username }},
2we received a request to reset your Ferdium account password.
3Use the link below to reset your password. If you didn't requested that your password be reset, please ignore this
4message.
5
6{{ appUrl }}/user/reset?token={{ encodeURIComponent(token) }}
7
8This message was sent automatically. Please do not reply.
diff --git a/resources/views/layouts/main.edge b/resources/views/layouts/main.edge
index c611bc5..a53b6c5 100644
--- a/resources/views/layouts/main.edge
+++ b/resources/views/layouts/main.edge
@@ -6,10 +6,10 @@
6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0">
7 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 7 <meta http-equiv="X-UA-Compatible" content="ie=edge">
8 <title>ferdium-server</title> 8 <title>ferdium-server</title>
9 <link rel="shortcut icon" type="image/jpg" href="img/favicon.ico" /> 9 <link rel="shortcut icon" type="image/jpg" href="/img/favicon.ico" />
10 10
11 {{ style('css/vanilla') }} 11 <link rel="stylesheet" type="text/css" href="/css/vanilla.css">
12 {{ style('css/main') }} 12 <link rel="stylesheet" type="text/css" href="/css/main.css">
13</head> 13</head>
14 14
15<body> 15<body>
diff --git a/resources/views/layouts/v2.edge b/resources/views/layouts/v2.edge
index 38af29f..ac20cab 100644
--- a/resources/views/layouts/v2.edge
+++ b/resources/views/layouts/v2.edge
@@ -8,8 +8,8 @@
8 <title>Server</title> 8 <title>Server</title>
9 <link rel="shortcut icon" type="image/jpg" href="/img/favicon.ico" /> 9 <link rel="shortcut icon" type="image/jpg" href="/img/favicon.ico" />
10 10
11 {{ style('css/tailwind') }} 11 <link rel="stylesheet" type="text/css" href="/css/tailwind.css">
12 {{ style('css/main') }} 12 <link rel="stylesheet" type="text/css" href="/css/main.css">
13</head> 13</head>
14 14
15<body> 15<body>
diff --git a/resources/views/others/import.edge b/resources/views/others/import.edge
index 7fb58de..ca7cc6d 100644
--- a/resources/views/others/import.edge
+++ b/resources/views/others/import.edge
@@ -1,4 +1,4 @@
1@layout('layouts.v2') 1@layout('layouts/v2')
2 2
3@section('content') 3@section('content')
4<div class="w-screen bg-purple-200 flex items-center justify-center"> 4<div class="w-screen bg-purple-200 flex items-center justify-center">
@@ -11,14 +11,14 @@
11 Please login using your Franz/Ferdi account. We will create a new Ferdium account with the same credentials. 11 Please login using your Franz/Ferdi account. We will create a new Ferdium account with the same credentials.
12 </p> 12 </p>
13 13
14 @if(flashMessage('error')) 14 @if(flashMessages.has('error'))
15 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4"> 15 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4">
16 {{ flashMessage('error') }} 16 {{ flashMessages.get('error') }}
17 </div> 17 </div>
18 @endif 18 @endif
19 @if(old('message')) 19 @if(flashMessages.has('message'))
20 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4"> 20 <div class="bg-orange-100 border-l-4 border-orange-500 text-orange-700 p-4">
21 {{ old('message') }} 21 {{ flashMessages.get('message') }}
22 </div> 22 </div>
23 @endif 23 @endif
24 24
@@ -32,7 +32,7 @@
32 name="email" 32 name="email"
33 type="text" 33 type="text"
34 placeholder="E-Mail" 34 placeholder="E-Mail"
35 value="{{ old('email', '') }}" 35 value="{{ flashMessages.get('email', '') }}"
36 required> 36 required>
37 </div> 37 </div>
38 <div class="mb-6"> 38 <div class="mb-6">
diff --git a/resources/views/others/index.edge b/resources/views/others/index.edge
index 5cc5726..1f595b6 100644
--- a/resources/views/others/index.edge
+++ b/resources/views/others/index.edge
@@ -1,4 +1,4 @@
1@layout('layouts.v2') 1@layout('layouts/v2')
2 2
3@section('content') 3@section('content')
4 <!--Main--> 4 <!--Main-->
@@ -39,7 +39,7 @@
39 39
40 <!--Right Col--> 40 <!--Right Col-->
41 <div class="w-full xl:w-3/5 py-6 overflow-y-hidden"> 41 <div class="w-full xl:w-3/5 py-6 overflow-y-hidden">
42 <img class="w-5/6 mx-auto lg:mr-0 slide-in-bottom" src="{{ assetsUrl('img/hero.png') }}"> 42 <img class="w-5/6 mx-auto lg:mr-0 slide-in-bottom" src="/img/hero.png">
43 </div> 43 </div>
44 44
45 </div> 45 </div>
@@ -53,6 +53,5 @@
53 53
54 // Show on page 54 // Show on page
55 document.getElementById('server').innerText = server; 55 document.getElementById('server').innerText = server;
56
57 </script> 56 </script>
58@endsection 57@endsection
diff --git a/resources/views/others/message.edge b/resources/views/others/message.edge
index 59be2ed..08200da 100644
--- a/resources/views/others/message.edge
+++ b/resources/views/others/message.edge
@@ -1,4 +1,4 @@
1@layout('layouts.v2') 1@layout('layouts/v2')
2 2
3@section('content') 3@section('content')
4<div class="w-screen bg-purple-200 flex items-center justify-center"> 4<div class="w-screen bg-purple-200 flex items-center justify-center">
diff --git a/resources/views/others/new.edge b/resources/views/others/new.edge
index ed97a34..66587c2 100644
--- a/resources/views/others/new.edge
+++ b/resources/views/others/new.edge
@@ -1,4 +1,4 @@
1@layout('layouts.main') 1@layout('layouts/main')
2 2
3@section('content') 3@section('content')
4<h1>Create a new recipe</h1> 4<h1>Create a new recipe</h1>
@@ -33,5 +33,5 @@
33 <button type="submit" id="submitbutton">Create recipe</button> 33 <button type="submit" id="submitbutton">Create recipe</button>
34</form> 34</form>
35 35
36<script src="js/new.js"></script> 36<script src="/js/new.js"></script>
37@endsection 37@endsection
diff --git a/scripts/adonisjs-4-to-5.sh b/scripts/adonisjs-4-to-5.sh
new file mode 100644
index 0000000..ccb5c9f
--- /dev/null
+++ b/scripts/adonisjs-4-to-5.sh
@@ -0,0 +1,50 @@
1#!/bin/bash
2
3# THIS SCRIPT IS USED TO MIGRATE FROM ADONISJS V4 TO ADONISJS V5
4# IT SHOULD BE RUN BEFORE RUNNING THE SERVER
5
6# Check if DB_DATABASE is undefined or empty, and set a default value if necessary
7if [ -z "$DB_DATABASE" ]; then
8 DB_DATABASE="ferdium"
9fi
10
11# Check if DATA_DIR is undefined or empty, and set a default value if necessary
12if [ -z "$DATA_DIR" ]; then
13 DATA_DIR="/data"
14fi
15
16# Define the path to your SQLite database file
17db_file="$DATA_DIR/$DB_DATABASE.sqlite"
18
19# Check if the database file exists
20if [ ! -f "$db_file" ]; then
21 echo "Database file '$db_file' not found. An empty database will be created."
22 exit 0
23fi
24
25# Check if the "adonis_schema_versions" table exists and if the version is less than 2
26version=$(sqlite3 "$db_file" "SELECT version FROM adonis_schema_versions LIMIT 1;" 2>/dev/null)
27if [ -z "$version" ] || [ "$version" -lt 2 ]; then
28 # Table not found or version less than 2, proceed
29 echo "-- Starting database migration from AdonisJS v4 to v5 --"
30
31 # Check if the "adonis_schema" table exists
32 schema_exists=$(sqlite3 "$db_file" "SELECT name FROM sqlite_master WHERE type='table' AND name='adonis_schema';" 2>/dev/null)
33 if [ -n "$schema_exists" ]; then
34 # "adonis_schema" table exists, proceed
35
36 # Iterate through rows in the "name" column of "adonis_schema" and append "database/migrations" to each value
37 sqlite3 -batch "$db_file" "SELECT name FROM adonis_schema;" 2>/dev/null | while read -r old_value; do
38 new_value="database/migrations/$old_value"
39 echo "Updating value from '$old_value' to '$new_value'"
40
41 # Update the value in the database
42 sqlite3 "$db_file" "UPDATE adonis_schema SET name='$new_value' WHERE name='$old_value';" 2>/dev/null
43 done
44 else
45 echo "ERROR: Table 'adonis_schema' not found."
46 exit 1
47 fi
48# else
49 # echo "Version is greater than or equal to 2. Exiting script."
50fi
diff --git a/server.js b/server.js
deleted file mode 100644
index 921df97..0000000
--- a/server.js
+++ /dev/null
@@ -1,28 +0,0 @@
1const Sentry = require('@sentry/node');
2
3Sentry.init({ dsn: 'https://34e9a42c1de24048b7bfc980211dd7c8@sentry.io/1838449' });
4
5/*
6|--------------------------------------------------------------------------
7| Http server
8|--------------------------------------------------------------------------
9|
10| This file bootstraps Adonisjs to start the HTTP server. You are free to
11| customize the process of booting the http server.
12|
13| """ Loading ace commands """
14| At times you may want to load ace commands when starting the HTTP server.
15| Same can be done by chaining `loadCommands()` method after
16|
17| """ Preloading files """
18| Also you can preload files by calling `preLoad('path/to/file')` method.
19| Make sure to pass a relative path from the project root.
20*/
21
22const { Ignitor } = require('@adonisjs/ignitor');
23const fold = require('@adonisjs/fold');
24
25new Ignitor(fold)
26 .appRoot(__dirname)
27 .fireHttpServer()
28 .catch(console.error); // eslint-disable-line no-console
diff --git a/server.ts b/server.ts
new file mode 100644
index 0000000..f334636
--- /dev/null
+++ b/server.ts
@@ -0,0 +1,19 @@
1/*
2|--------------------------------------------------------------------------
3| AdonisJs Server
4|--------------------------------------------------------------------------
5|
6| The contents in this file is meant to bootstrap the AdonisJs application
7| and start the HTTP server to accept incoming connections. You must avoid
8| making this file dirty and instead make use of `lifecycle hooks` provided
9| by AdonisJs service providers for custom code.
10|
11*/
12
13import 'reflect-metadata';
14import sourceMapSupport from 'source-map-support';
15import { Ignitor } from '@adonisjs/core/build/standalone';
16
17sourceMapSupport.install({ handleUncaughtExceptions: false });
18
19new Ignitor(__dirname).httpServer().start();
diff --git a/start/app.js b/start/app.js
deleted file mode 100644
index f1fb23a..0000000
--- a/start/app.js
+++ /dev/null
@@ -1,65 +0,0 @@
1/*
2|--------------------------------------------------------------------------
3| Providers
4|--------------------------------------------------------------------------
5|
6| Providers are building blocks for your Adonis app. Anytime you install
7| a new Adonis specific package, chances are you will register the
8| provider here.
9|
10*/
11const providers = [
12 '@adonisjs/framework/providers/AppProvider',
13 '@adonisjs/auth/providers/AuthProvider',
14 '@adonisjs/bodyparser/providers/BodyParserProvider',
15 '@adonisjs/cors/providers/CorsProvider',
16 '@adonisjs/lucid/providers/LucidProvider',
17 '@adonisjs/drive/providers/DriveProvider',
18 '@adonisjs/validator/providers/ValidatorProvider',
19 '@adonisjs/framework/providers/ViewProvider',
20 '@adonisjs/session/providers/SessionProvider',
21 '@adonisjs/shield/providers/ShieldProvider',
22 '@adonisjs/persona/providers/PersonaProvider',
23 '@adonisjs/mail/providers/MailProvider',
24];
25
26/*
27|--------------------------------------------------------------------------
28| Ace Providers
29|--------------------------------------------------------------------------
30|
31| Ace providers are required only when running ace commands. For example
32| Providers for migrations, tests etc.
33|
34*/
35const aceProviders = [
36 '@adonisjs/lucid/providers/MigrationsProvider',
37];
38
39/*
40|--------------------------------------------------------------------------
41| Aliases
42|--------------------------------------------------------------------------
43|
44| Aliases are short unique names for IoC container bindings. You are free
45| to create your own aliases.
46|
47| For example:
48| { Route: 'Adonis/Src/Route' }
49|
50*/
51const aliases = {};
52
53/*
54|--------------------------------------------------------------------------
55| Commands
56|--------------------------------------------------------------------------
57|
58| Here you store ace commands for your package
59|
60*/
61const commands = [];
62
63module.exports = {
64 providers, aceProviders, aliases, commands,
65};
diff --git a/start/events.js b/start/events.js
deleted file mode 100644
index a99afd5..0000000
--- a/start/events.js
+++ /dev/null
@@ -1,25 +0,0 @@
1const Event = use('Event');
2const Mail = use('Mail');
3const Env = use('Env');
4
5Event.on('forgot::password', async ({ user, token }) => {
6 const body = `
7Hello ${user.username},
8we received a request to reset your Ferdium account password.
9Use the link below to reset your password. If you didn't requested that your password be reset, please ignore this message.
10
11${Env.get('APP_URL')}/user/reset?token=${encodeURIComponent(token)}
12
13This message was sent automatically. Please do not reply.
14`;
15 console.log('Sending message', body);
16 try {
17 await Mail.raw(body, (message) => {
18 message.subject('[Ferdium] Reset your password');
19 message.from(Env.get('MAIL_SENDER'));
20 message.to(user.email);
21 });
22 } catch (e) {
23 console.log(`Couldn't send mail: ${e}`);
24 }
25});
diff --git a/start/events.ts b/start/events.ts
new file mode 100644
index 0000000..11e63e5
--- /dev/null
+++ b/start/events.ts
@@ -0,0 +1,33 @@
1import Config from '@ioc:Adonis/Core/Config';
2import Event from '@ioc:Adonis/Core/Event';
3import Mail from '@ioc:Adonis/Addons/Mail';
4
5/*
6|--------------------------------------------------------------------------
7| Preloaded File
8|--------------------------------------------------------------------------
9|
10| Any code written inside this file will be executed during the application
11| boot.
12|
13*/
14Event.on('forgot::password', async ({ user, token }) => {
15 try {
16 // eslint-disable-next-line no-console
17 console.log('Sending message');
18 await Mail.send(message => {
19 message
20 .subject('[Ferdium] Forgot Password')
21 .to(user.email)
22 .from(Config.get('dasshboard.mailFrom'))
23 .textView('emails.forgot-password', {
24 appUrl: Config.get('app.url'),
25 username: user.username,
26 token,
27 });
28 });
29 } catch (error) {
30 // eslint-disable-next-line no-console
31 console.log(`Couldn't send mail: ${error}`);
32 }
33});
diff --git a/start/kernel.js b/start/kernel.js
deleted file mode 100644
index 12c2162..0000000
--- a/start/kernel.js
+++ /dev/null
@@ -1,62 +0,0 @@
1/** @type {import('@adonisjs/framework/src/Server')} */
2const Server = use('Server');
3
4/*
5|--------------------------------------------------------------------------
6| Global Middleware
7|--------------------------------------------------------------------------
8|
9| Global middleware are executed on each http request only when the routes
10| match.
11|
12*/
13const globalMiddleware = [
14 'Adonis/Middleware/BodyParser',
15 'App/Middleware/ConvertEmptyStringsToNull',
16 'Adonis/Middleware/AuthInit',
17 'Adonis/Middleware/Session',
18];
19
20/*
21|--------------------------------------------------------------------------
22| Named Middleware
23|--------------------------------------------------------------------------
24|
25| Named middleware is key/value object to conditionally add middleware on
26| specific routes or group of routes.
27|
28| // define
29| {
30| auth: 'Adonis/Middleware/Auth'
31| }
32|
33| // use
34| Route.get().middleware('auth')
35|
36*/
37const namedMiddleware = {
38 auth: 'Adonis/Middleware/Auth',
39 guest: 'Adonis/Middleware/AllowGuestOnly',
40 shield: 'Adonis/Middleware/Shield',
41};
42
43/*
44|--------------------------------------------------------------------------
45| Server Middleware
46|--------------------------------------------------------------------------
47|
48| Server level middleware are executed even when route for a given URL is
49| not registered. Features like `static assets` and `cors` needs better
50| control over request lifecycle.
51|
52*/
53const serverMiddleware = [
54 'Adonis/Middleware/Static',
55 'Adonis/Middleware/Cors',
56 'App/Middleware/HandleDoubleSlash',
57];
58
59Server
60 .registerGlobal(globalMiddleware)
61 .registerNamed(namedMiddleware)
62 .use(serverMiddleware);
diff --git a/start/kernel.ts b/start/kernel.ts
new file mode 100644
index 0000000..1c5c92b
--- /dev/null
+++ b/start/kernel.ts
@@ -0,0 +1,49 @@
1/*
2|--------------------------------------------------------------------------
3| Application middleware
4|--------------------------------------------------------------------------
5|
6| This file is used to define middleware for HTTP requests. You can register
7| middleware as a `closure` or an IoC container binding. The bindings are
8| preferred, since they keep this file clean.
9|
10*/
11
12import Server from '@ioc:Adonis/Core/Server';
13
14/*
15|--------------------------------------------------------------------------
16| Global middleware
17|--------------------------------------------------------------------------
18|
19| An array of global middleware, that will be executed in the order they
20| are defined for every HTTP requests.
21|
22*/
23Server.middleware.register([
24 () => import('@ioc:Adonis/Core/BodyParser'),
25 () => import('@ioc:Adonis/Addons/Shield'),
26]);
27
28/*
29|--------------------------------------------------------------------------
30| Named middleware
31|--------------------------------------------------------------------------
32|
33| Named middleware are defined as key-value pair. The value is the namespace
34| or middleware function and key is the alias. Later you can use these
35| alias on individual routes. For example:
36|
37| { auth: () => import('App/Middleware/Auth') }
38|
39| and then use it as follows
40|
41| Route.get('dashboard', 'UserController.dashboard').middleware('auth')
42|
43*/
44Server.middleware.registerNamed({
45 auth: () => import('App/Middleware/Auth'),
46 dashboard: () => import('App/Middleware/Dashboard'),
47 guest: () => import('App/Middleware/AllowGuestOnly'),
48 shield: () => import('@ioc:Adonis/Addons/Shield'),
49});
diff --git a/start/routes.js b/start/routes.js
deleted file mode 100644
index 0f3785f..0000000
--- a/start/routes.js
+++ /dev/null
@@ -1,128 +0,0 @@
1/*
2|--------------------------------------------------------------------------
3| Routes
4|--------------------------------------------------------------------------
5|
6*/
7
8/** @type {typeof import('@adonisjs/framework/src/Route/Manager')} */
9const Route = use('Route');
10const Env = use('Env');
11
12// Health: Returning if all systems function correctly
13Route.get('health', ({
14 response,
15}) => response.send({
16 api: 'success',
17 db: 'success',
18}));
19
20// API is grouped under '/v1/' route
21Route.group(() => {
22 // User authentification
23 Route.post('auth/signup', 'UserController.signup').middleware('guest');
24 Route.post('auth/login', 'UserController.login').middleware('guest');
25
26 // User info
27 Route.get('me', 'UserController.me').middleware('auth');
28 Route.put('me', 'UserController.updateMe').middleware('auth');
29
30 // Service info
31 Route.post('service', 'ServiceController.create').middleware('auth');
32 Route.put('service/reorder', 'ServiceController.reorder').middleware('auth');
33 Route.put('service/:id', 'ServiceController.edit').middleware('auth');
34 Route.delete('service/:id', 'ServiceController.delete').middleware('auth');
35 Route.get('me/services', 'ServiceController.list').middleware('auth');
36 Route.get('recipe', 'ServiceController.list').middleware('auth');
37 Route.get('icon/:id', 'ServiceController.icon');
38
39 // Recipe store
40 Route.get('recipes', 'RecipeController.list');
41 Route.get('recipes/search', 'RecipeController.search');
42 Route.get('recipes/popular', 'RecipeController.popularRecipes');
43 Route.get('recipes/download/:recipe', 'RecipeController.download');
44 Route.post('recipes/update', 'RecipeController.update');
45
46 // Workspaces
47 Route.put('workspace/:id', 'WorkspaceController.edit').middleware('auth');
48 Route.delete('workspace/:id', 'WorkspaceController.delete').middleware('auth');
49 Route.post('workspace', 'WorkspaceController.create').middleware('auth');
50 Route.get('workspace', 'WorkspaceController.list').middleware('auth');
51
52 // Static responses
53 Route.get('features/:mode?', 'StaticController.features');
54 Route.get('services', 'StaticController.emptyArray');
55 Route.get('news', 'StaticController.emptyArray');
56 Route.get('announcements/:version', 'StaticController.announcement');
57}).prefix('v1');
58
59// User dashboard
60if (Env.get('IS_DASHBOARD_ENABLED') !== 'false') {
61 Route.group(() => {
62 // Auth
63 Route.get('login', ({ view }) => view.render('dashboard.login')).middleware('guest');
64 Route.post('login', 'DashboardController.login').middleware('guest').as('login');
65
66 // Reset password
67 Route.get('forgot', ({ view }) => view.render('dashboard.forgotPassword')).middleware('guest');
68 Route.post('forgot', 'DashboardController.forgotPassword').middleware('guest');
69
70 Route.get('reset', ({ view, request }) => {
71 const { token } = request.get();
72 if (token) {
73 return view.render('dashboard.resetPassword', { token });
74 }
75 return view.render('others.message', {
76 heading: 'Invalid token',
77 text: 'Please make sure you are using a valid and recent link to reset your password.',
78 });
79 }).middleware('guest');
80 Route.post('reset', 'DashboardController.resetPassword').middleware('guest');
81
82 // Dashboard
83 Route.get('account', 'DashboardController.account').middleware('auth:session');
84 Route.post('account', 'DashboardController.edit').middleware('auth:session');
85
86 Route.get('data', 'DashboardController.data').middleware('auth:session');
87
88 Route.get('export', 'DashboardController.export').middleware('auth:session');
89 Route.post('transfer', 'DashboardController.import').middleware('auth:session');
90 Route.get('transfer', ({ view }) => view.render('dashboard.transfer')).middleware('auth:session');
91
92 Route.get('delete', ({ view }) => view.render('dashboard.delete')).middleware('auth:session');
93 Route.post('delete', 'DashboardController.delete').middleware('auth:session');
94
95 Route.get('logout', 'DashboardController.logout').middleware('auth:session');
96
97 Route.get('*', ({ response }) => response.redirect('/user/account'));
98 }).prefix('user').middleware('shield');
99} else {
100 Route.group(() => {
101 Route.get('*', ({
102 response,
103 }) => response.send('The user dashboard is disabled on this server\n\nIf you are the server owner, please set IS_DASHBOARD_ENABLED to true to enable the dashboard.'));
104 }).prefix('user');
105}
106
107// Recipe creation
108Route.post('new', 'RecipeController.create');
109Route.get('new', ({ response, view }) => {
110 if (Env.get('IS_CREATION_ENABLED') == 'false') { // eslint-disable-line eqeqeq
111 return response.send('This server doesn\'t allow the creation of new recipes.\n\nIf you are the server owner, please set IS_CREATION_ENABLED to true to enable recipe creation.');
112 }
113 return view.render('others.new');
114});
115
116// Franz/Ferdi account import
117Route.post('import', 'UserController.import');
118Route.get('import', ({ view }) => view.render('others.import'));
119
120// Legal documents
121Route.get('terms', ({ response }) => response.redirect('/terms.html'));
122Route.get('privacy', ({ response }) => response.redirect('/privacy.html'));
123
124// Index
125Route.get('/', ({ view }) => view.render('others.index'));
126
127// 404 handler
128Route.get('/*', ({ response }) => response.redirect('/'));
diff --git a/start/routes.ts b/start/routes.ts
new file mode 100644
index 0000000..75cef72
--- /dev/null
+++ b/start/routes.ts
@@ -0,0 +1,22 @@
1/*
2|--------------------------------------------------------------------------
3| Routes
4|--------------------------------------------------------------------------
5|
6| This file is dedicated for defining HTTP routes. A single file is enough
7| for majority of projects, however you can define routes in different
8| files and just make sure to import them inside this file. For example
9|
10| Define routes in following two files
11| ├── start/routes/cart.ts
12| ├── start/routes/customer.ts
13|
14| and then import them inside `start/routes.ts` as follows
15|
16| import './routes/cart'
17| import './routes/customer'
18|
19*/
20
21import './routes/api';
22import './routes/web';
diff --git a/start/routes/api.ts b/start/routes/api.ts
new file mode 100644
index 0000000..78282f0
--- /dev/null
+++ b/start/routes/api.ts
@@ -0,0 +1,51 @@
1// As this is currently a rebuild of the initial API we it is grouped in /v2/
2
3import Route from '@ioc:Adonis/Core/Route';
4
5Route.group(() => {
6 // User authentification
7 Route.post('auth/signup', 'UserController.signup').middleware('guest');
8 Route.post('auth/login', 'UserController.login').middleware('guest');
9
10 // User info
11 Route.get('me', 'UserController.me').middleware('auth:jwt');
12 Route.put('me', 'UserController.updateMe').middleware('auth:jwt');
13 Route.get('me/newtoken', 'UserController.newToken').middleware('auth:jwt');
14
15 // // Service info
16 Route.post('service', 'ServiceController.create').middleware('auth:jwt');
17 Route.put('service/reorder', 'ServiceController.reorder').middleware(
18 'auth:jwt',
19 );
20 Route.put('service/:id', 'ServiceController.edit').middleware('auth:jwt');
21 Route.delete('service/:id', 'ServiceController.delete').middleware(
22 'auth:jwt',
23 );
24 Route.get('me/services', 'ServiceController.list').middleware('auth:jwt');
25 Route.get('recipe', 'ServiceController.list').middleware('auth:jwt');
26 Route.get('icon/:id', 'ServiceController.icon');
27
28 // Recipe store
29 Route.get('recipes', 'RecipeController.list');
30 Route.get('recipes/search', 'RecipeController.search');
31 Route.get('recipes/popular', 'RecipeController.popularRecipes');
32 Route.get('recipes/download/:recipe', 'RecipeController.download');
33 Route.post('recipes/update', 'RecipeController.update');
34
35 // // Workspaces
36 Route.put('workspace/:id', 'WorkspaceController.edit').middleware('auth:jwt');
37 Route.delete('workspace/:id', 'WorkspaceController.delete').middleware(
38 'auth:jwt',
39 );
40 Route.post('workspace', 'WorkspaceController.create').middleware('auth:jwt');
41 Route.get('workspace', 'WorkspaceController.list').middleware('auth:jwt');
42
43 // Static responses
44 Route.get('features/:mode?', 'Api/Static/FeaturesController.show');
45 Route.get('services', 'Api/Static/EmptyController.show');
46 Route.get('news', 'Api/Static/EmptyController.show');
47 Route.get(
48 'announcements/:version',
49 'Api/Static/AnnouncementsController.show',
50 );
51}).prefix('/v1');
diff --git a/start/routes/web.ts b/start/routes/web.ts
new file mode 100644
index 0000000..308abec
--- /dev/null
+++ b/start/routes/web.ts
@@ -0,0 +1,54 @@
1import Route from '@ioc:Adonis/Core/Route';
2
3// Health check
4Route.get('health', 'HealthController.index');
5
6// Legal documents
7Route.get('terms', ({ response }) => response.redirect('/terms.html'));
8Route.get('privacy', ({ response }) => response.redirect('/privacy.html'));
9
10// Index
11Route.get('/', ({ view }) => view.render('others/index'));
12
13Route.group(() => {
14 Route.group(() => {
15 // Guest troutes
16 Route.group(() => {
17 Route.get('login', 'Dashboard/LoginController.show');
18 Route.post('login', 'Dashboard/LoginController.login').as('login');
19
20 // Reset password
21 Route.get('forgot', 'Dashboard/ForgotPasswordController.show');
22 Route.post('forgot', 'Dashboard/ForgotPasswordController.forgotPassword');
23
24 Route.get('reset', 'Dashboard/ResetPasswordController.show');
25 Route.post('reset', 'Dashboard/ResetPasswordController.resetPassword');
26 }).middleware(['dashboard', 'guest']);
27
28 // Authenticated routes
29 Route.group(() => {
30 Route.get('account', 'Dashboard/AccountController.show');
31 Route.post('account', 'Dashboard/AccountController.store');
32
33 Route.get('data', 'Dashboard/DataController.show');
34 Route.get('export', 'Dashboard/ExportController.show');
35
36 Route.get('transfer', 'Dashboard/TransferController.show');
37 Route.post('transfer', 'Dashboard/TransferController.import');
38
39 Route.get('delete', 'Dashboard/DeleteController.show');
40 Route.post('delete', 'Dashboard/DeleteController.delete');
41
42 Route.get('logout', 'Dashboard/LogOutController.logout');
43
44 Route.get('*', ({ response }) => response.redirect('/user/account'));
45 }).middleware(['dashboard', 'auth:web']);
46 }).prefix('user');
47
48 // Franz/Ferdi account import
49 Route.get('import', ({ view }) => view.render('others/import'));
50 Route.post('import', 'UserController.import');
51
52 // 404 handler
53 Route.get('/*', ({ response }) => response.redirect('/'));
54}).middleware(['dashboard']);
diff --git a/test.ts b/test.ts
new file mode 100644
index 0000000..65f1348
--- /dev/null
+++ b/test.ts
@@ -0,0 +1,49 @@
1/*
2|--------------------------------------------------------------------------
3| Tests
4|--------------------------------------------------------------------------
5|
6| The contents in this file boots the AdonisJS application and configures
7| the Japa tests runner.
8|
9| For the most part you will never edit this file. The configuration
10| for the tests can be controlled via ".adonisrc.json" and
11| "tests/bootstrap.ts" files.
12|
13*/
14
15import 'reflect-metadata';
16import sourceMapSupport from 'source-map-support';
17import { Ignitor } from '@adonisjs/core/build/standalone';
18import {
19 configure,
20 processCliArgs,
21 run,
22 RunnerHooksHandler,
23} from '@japa/runner';
24
25process.env.NODE_ENV = 'test';
26
27sourceMapSupport.install({ handleUncaughtExceptions: false });
28
29const kernel = new Ignitor(__dirname).kernel('test');
30
31kernel
32 .boot()
33 .then(() => import('./tests/bootstrap'))
34 .then(({ runnerHooks, ...config }) => {
35 const app: RunnerHooksHandler[] = [() => kernel.start()];
36
37 configure({
38 ...kernel.application.rcFile.tests,
39 ...processCliArgs(process.argv.slice(2)),
40 ...config,
41
42 importer: filePath => import(filePath),
43 setup: [...app, ...runnerHooks.setup],
44 teardown: runnerHooks.teardown,
45 cwd: kernel.application.appRoot,
46 });
47
48 run();
49 });
diff --git a/tests/bootstrap.ts b/tests/bootstrap.ts
new file mode 100644
index 0000000..efd1d1f
--- /dev/null
+++ b/tests/bootstrap.ts
@@ -0,0 +1,83 @@
1/**
2 * File source: https://bit.ly/3ukaHTz
3 *
4 * Feel free to let us know via PR, if you find something broken in this contract
5 * file.
6 */
7
8import type { Config } from '@japa/runner';
9import TestUtils from '@ioc:Adonis/Core/TestUtils';
10import {
11 assert,
12 runFailedTests,
13 specReporter,
14 apiClient,
15} from '@japa/preset-adonis';
16import { fakeCsrfField } from './utils';
17
18/*
19|--------------------------------------------------------------------------
20| Japa Plugins
21|--------------------------------------------------------------------------
22|
23| Japa plugins allows you to add additional features to Japa. By default
24| we register the assertion plugin.
25|
26| Feel free to remove existing plugins or add more.
27|
28*/
29export const plugins: Config['plugins'] = [
30 assert(),
31 runFailedTests(),
32 apiClient(),
33];
34
35/*
36|--------------------------------------------------------------------------
37| Japa Reporters
38|--------------------------------------------------------------------------
39|
40| Japa reporters displays/saves the progress of tests as they are executed.
41| By default, we register the spec reporter to show a detailed report
42| of tests on the terminal.
43|
44*/
45export const reporters: Config['reporters'] = [specReporter()];
46
47/*
48|--------------------------------------------------------------------------
49| Runner hooks
50|--------------------------------------------------------------------------
51|
52| Runner hooks are executed after booting the AdonisJS app and
53| before the test files are imported.
54|
55| You can perform actions like starting the HTTP server or running migrations
56| within the runner hooks
57|
58*/
59export const runnerHooks: Required<Pick<Config, 'setup' | 'teardown'>> = {
60 setup: [
61 () => TestUtils.ace().loadCommands(),
62 () => TestUtils.db().migrate(),
63 () => fakeCsrfField(),
64 ],
65 teardown: [],
66};
67
68/*
69|--------------------------------------------------------------------------
70| Configure individual suites
71|--------------------------------------------------------------------------
72|
73| The configureSuite method gets called for every test suite registered
74| within ".adonisrc.json" file.
75|
76| You can use this method to configure suites. For example: Only start
77| the HTTP server when it is a functional suite.
78*/
79export const configureSuite: Config['configureSuite'] = suite => {
80 if (suite.name === 'functional') {
81 suite.setup(() => TestUtils.httpServer().start());
82 }
83};
diff --git a/tests/config.ts b/tests/config.ts
new file mode 100644
index 0000000..8cd3511
--- /dev/null
+++ b/tests/config.ts
@@ -0,0 +1 @@
export const apiVersion = 'v1';
diff --git a/tests/functional/api/register.spec.ts b/tests/functional/api/register.spec.ts
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/functional/api/register.spec.ts
diff --git a/tests/functional/api/static/announcements.spec.ts b/tests/functional/api/static/announcements.spec.ts
new file mode 100644
index 0000000..ac933fe
--- /dev/null
+++ b/tests/functional/api/static/announcements.spec.ts
@@ -0,0 +1,55 @@
1import { test } from '@japa/runner';
2import { apiVersion } from '../../../config';
3
4test.group('API / Static / News', () => {
5 test('returns a 404 response when the requested versions does not exist', async ({
6 client,
7 }) => {
8 const response = await client.get(`/${apiVersion}/announcements/illegal`);
9
10 response.assertStatus(404);
11 response.assertTextIncludes('No announcement found.');
12 });
13
14 test('returns a 200 response with default version file when specifying version as input', async ({
15 client,
16 }) => {
17 const response = await client.get(`/${apiVersion}/announcements/version`);
18
19 response.assertStatus(200);
20 response.assertBody({
21 main: {
22 headline: 'Example Announcement',
23 subHeadline: 'Configure your announcement here',
24 image: {
25 light: 'https://api.ferdium.org/assets/feature/light.png',
26 dark: 'https://api.ferdium.org/assets/feature/dark.png',
27 },
28 text: 'Long description here',
29 cta: {
30 label: 'Click here to do something',
31 href: '/settings/app',
32 analytics: {
33 category: 'announcements-main',
34 action: 'event',
35 label: 'This does not get used',
36 },
37 },
38 },
39 spotlight: {
40 title: 'Spotlight:',
41 subject: 'Show another feature',
42 text: 'Show another feature in the spotlight',
43 cta: {
44 label: 'Click here to do something',
45 href: '/settings/team',
46 analytics: {
47 category: 'announcements-spotlight',
48 action: 'event',
49 label: 'This does not get used',
50 },
51 },
52 },
53 });
54 });
55});
diff --git a/tests/functional/api/static/features.spec.ts b/tests/functional/api/static/features.spec.ts
new file mode 100644
index 0000000..1050fcf
--- /dev/null
+++ b/tests/functional/api/static/features.spec.ts
@@ -0,0 +1,29 @@
1import { test } from '@japa/runner';
2import { apiVersion } from '../../../config';
3
4const defaultResponse = {
5 isServiceProxyEnabled: true,
6 isWorkspaceEnabled: true,
7 isAnnouncementsEnabled: true,
8 isSettingsWSEnabled: false,
9 isMagicBarEnabled: true,
10 isTodosEnabled: true,
11};
12
13test.group('API / Static / Features', () => {
14 test('returns a 200 response with empty array', async ({ client }) => {
15 const response = await client.get(`/${apiVersion}/features`);
16
17 response.assertStatus(200);
18 response.assertBody(defaultResponse);
19 });
20
21 test('returns a 200 response with expected object when calling with :mode', async ({
22 client,
23 }) => {
24 const response = await client.get(`/${apiVersion}/features/random`);
25
26 response.assertStatus(200);
27 response.assertBody(defaultResponse);
28 });
29});
diff --git a/tests/functional/api/static/news.spec.ts b/tests/functional/api/static/news.spec.ts
new file mode 100644
index 0000000..8f3818f
--- /dev/null
+++ b/tests/functional/api/static/news.spec.ts
@@ -0,0 +1,11 @@
1import { test } from '@japa/runner';
2import { apiVersion } from '../../../config';
3
4test.group('API / Static / News', () => {
5 test('returns a 200 response with empty array', async ({ client }) => {
6 const response = await client.get(`/${apiVersion}/news`);
7
8 response.assertStatus(200);
9 response.assertBody([]);
10 });
11});
diff --git a/tests/functional/api/static/services.spec.ts b/tests/functional/api/static/services.spec.ts
new file mode 100644
index 0000000..55eef37
--- /dev/null
+++ b/tests/functional/api/static/services.spec.ts
@@ -0,0 +1,11 @@
1import { test } from '@japa/runner';
2import { apiVersion } from '../../../config';
3
4test.group('API / Static / Services', () => {
5 test('returns a 200 response with empty array', async ({ client }) => {
6 const response = await client.get(`/${apiVersion}/services`);
7
8 response.assertStatus(200);
9 response.assertBody([]);
10 });
11});
diff --git a/tests/functional/dashboard/account.spec.ts b/tests/functional/dashboard/account.spec.ts
new file mode 100644
index 0000000..bee9d6a
--- /dev/null
+++ b/tests/functional/dashboard/account.spec.ts
@@ -0,0 +1,124 @@
1import { test } from '@japa/runner';
2import User from 'App/Models/User';
3import UserFactory from 'Database/factories/UserFactory';
4
5test.group('Dashboard / Account page', () => {
6 test('redirects to /user/login when accessing /user/account as guest', async ({
7 client,
8 }) => {
9 const response = await client.get('/user/account');
10
11 response.assertRedirectsTo('/user/login'); // Check if it redirects to the expected URL
12 });
13
14 test('returns a 200 opening the account route while logged in', async ({
15 client,
16 }) => {
17 const user = await UserFactory.create();
18 const response = await client.get('/user/account').loginAs(user);
19
20 response.assertStatus(200);
21 response.assertTextIncludes('Your Ferdium account');
22
23 response.assertTextIncludes(user.email);
24 response.assertTextIncludes(user.username);
25 response.assertTextIncludes(user.lastname);
26 });
27
28 test('returns a validation error for all fields when missing', async ({
29 client,
30 }) => {
31 const user = await UserFactory.create();
32 const response = await client.post('/user/account').loginAs(user);
33
34 response.assertTextIncludes(
35 'value="required validation failed,required validation failed" placeholder="E-Mail"',
36 );
37 response.assertTextIncludes(
38 'value="required validation failed,required validation failed" placeholder="Name"',
39 );
40 response.assertTextIncludes(
41 'value="required validation failed,required validation failed" placeholder="Last Name"',
42 );
43 });
44
45 test('returns a validation error for username when there is another user with same username', async ({
46 client,
47 }) => {
48 const user = await UserFactory.create();
49 const existingUser = await UserFactory.create();
50
51 const response = await client.post('/user/account').loginAs(user).form({
52 username: existingUser.username,
53 email: user.email,
54 lastname: user.lastname,
55 });
56
57 response.assertTextIncludes(
58 'value="unique validation failure" placeholder="Name"',
59 );
60 });
61
62 test('returns a validation error for email when there is another user with same email', async ({
63 client,
64 }) => {
65 const user = await UserFactory.create();
66 const existingUser = await UserFactory.create();
67
68 const response = await client.post('/user/account').loginAs(user).form({
69 username: user.username,
70 email: existingUser.email,
71 lastname: user.lastname,
72 });
73
74 response.assertTextIncludes(
75 'value="unique validation failure" placeholder="E-Mail"',
76 );
77 });
78
79 test('updates user data and ensures the data is persisted', async ({
80 client,
81 assert,
82 }) => {
83 const user = await UserFactory.create();
84 const response = await client.post('/user/account').loginAs(user).form({
85 username: 'edited-username',
86 email: 'edited-email',
87 lastname: 'edited-lastname',
88 });
89
90 response.assertStatus(200);
91
92 // Ensure updated data is displayed on account page
93 response.assertTextIncludes('edited-username');
94 response.assertTextIncludes('edited-email');
95 response.assertTextIncludes('edited-lastname');
96
97 // Ensure updated data is persisted in database
98 const updatedUser = await User.findBy('id', user.id);
99 assert.equal(updatedUser?.username, 'edited-username');
100 assert.equal(updatedUser?.email, 'edited-email');
101 assert.equal(updatedUser?.lastname, 'edited-lastname');
102 });
103
104 test('updates user password and ensures the user can still login', async ({
105 client,
106 }) => {
107 const user = await UserFactory.create();
108 const response = await client.post('/user/account').loginAs(user).form({
109 username: user.username,
110 email: user.email,
111 lastname: user.lastname,
112 password: 'modified-password-account-page',
113 });
114
115 response.assertStatus(200);
116
117 const loginResponse = await client.post('/user/login').fields({
118 mail: user.email,
119 password: 'modified-password-account-page',
120 });
121
122 loginResponse.assertRedirectsTo('/user/account');
123 });
124});
diff --git a/tests/functional/dashboard/data.spec.ts b/tests/functional/dashboard/data.spec.ts
new file mode 100644
index 0000000..1a0e7ad
--- /dev/null
+++ b/tests/functional/dashboard/data.spec.ts
@@ -0,0 +1,31 @@
1import { test } from '@japa/runner';
2import UserFactory from 'Database/factories/UserFactory';
3
4test.group('Dashboard / Data page', () => {
5 test('redirects to /user/login when accessing /user/data as guest', async ({
6 client,
7 }) => {
8 const response = await client.get('/user/data');
9
10 response.assertRedirectsTo('/user/login'); // Check if it redirects to the expected URL
11 });
12
13 test('ensure the correct data is shown on the page', async ({ client }) => {
14 const user = await UserFactory.create();
15 const response = await client.get('/user/data').loginAs(user);
16
17 response.assertStatus(200);
18 response.assertTextIncludes(user.email);
19 response.assertTextIncludes(user.username);
20 response.assertTextIncludes(user.lastname);
21 response.assertTextIncludes(
22 user.created_at.toFormat('yyyy-MM-dd HH:mm:ss'),
23 );
24 response.assertTextIncludes(
25 user.updated_at.toFormat('yyyy-MM-dd HH:mm:ss'),
26 );
27 });
28
29 // TODO: Add test to include services.
30 // TODO: Add test to include workspaces.
31});
diff --git a/tests/functional/dashboard/delete.spec.ts b/tests/functional/dashboard/delete.spec.ts
new file mode 100644
index 0000000..ae3f0e6
--- /dev/null
+++ b/tests/functional/dashboard/delete.spec.ts
@@ -0,0 +1,37 @@
1import { test } from '@japa/runner';
2import User from 'App/Models/User';
3import UserFactory from 'Database/factories/UserFactory';
4
5test.group('Dashboard / Delete account page', () => {
6 test('redirects to /user/login when accessing /user/delete as guest', async ({
7 client,
8 }) => {
9 const response = await client.get('/user/delete');
10
11 response.assertRedirectsTo('/user/login'); // Check if it redirects to the expected URL
12 });
13
14 test('returns a 200 opening the delete route while logged in', async ({
15 client,
16 }) => {
17 const user = await UserFactory.create();
18 const response = await client.get('/user/delete').loginAs(user);
19
20 response.assertStatus(200);
21 response.assertTextIncludes('Delete your account');
22 });
23
24 test('returns a 200 opening the delete route while logged in', async ({
25 client,
26 assert,
27 }) => {
28 const user = await UserFactory.create();
29 const response = await client.post('/user/delete').loginAs(user);
30
31 response.assertRedirectsTo('/user/login');
32 // This asserts the session is deleted as well
33 response.assertSessionMissing('auth_web');
34
35 assert.isNull(await User.find(user.id));
36 });
37});
diff --git a/tests/functional/dashboard/disabled-dashboard.spec.ts b/tests/functional/dashboard/disabled-dashboard.spec.ts
new file mode 100644
index 0000000..cc9052c
--- /dev/null
+++ b/tests/functional/dashboard/disabled-dashboard.spec.ts
@@ -0,0 +1,71 @@
1import { test } from '@japa/runner';
2import Config from '@ioc:Adonis/Core/Config';
3
4const disabledDashboardMessage =
5 'The user dashboard is disabled on this server\n\nIf you are the server owner, please set IS_DASHBOARD_ENABLED to true to enable the dashboard.';
6
7test.group('Dashboard / Disabled dashboard', group => {
8 group.setup(() => {
9 Config.set('dashboard.enabled', false);
10 });
11
12 group.teardown(() => {
13 Config.set('dashboard.enabled', true);
14 });
15
16 test('Login page returns disabled dashboard message', async ({ client }) => {
17 const response = await client.get('/user/login');
18
19 response.assertTextIncludes(disabledDashboardMessage);
20 });
21
22 test('Forgot password page returns disabled dashboard message', async ({
23 client,
24 }) => {
25 const response = await client.get('/user/forgot');
26
27 response.assertTextIncludes(disabledDashboardMessage);
28 });
29
30 test('Reset password page returns disabled dashboard message', async ({
31 client,
32 }) => {
33 const response = await client.get('/user/reset');
34
35 response.assertTextIncludes(disabledDashboardMessage);
36 });
37
38 test('Account page returns disabled dashboard message', async ({
39 client,
40 }) => {
41 const response = await client.get('/user/account');
42
43 response.assertTextIncludes(disabledDashboardMessage);
44 });
45
46 test('Data page returns disabled dashboard message', async ({ client }) => {
47 const response = await client.get('/user/data');
48
49 response.assertTextIncludes(disabledDashboardMessage);
50 });
51
52 test('Export page returns disabled dashboard message', async ({ client }) => {
53 const response = await client.get('/user/export');
54
55 response.assertTextIncludes(disabledDashboardMessage);
56 });
57
58 test('Transfer page returns disabled dashboard message', async ({
59 client,
60 }) => {
61 const response = await client.get('/user/transfer');
62
63 response.assertTextIncludes(disabledDashboardMessage);
64 });
65
66 test('Logout page returns disabled dashboard message', async ({ client }) => {
67 const response = await client.get('/user/logout');
68
69 response.assertTextIncludes(disabledDashboardMessage);
70 });
71});
diff --git a/tests/functional/dashboard/export.spec.ts b/tests/functional/dashboard/export.spec.ts
new file mode 100644
index 0000000..4250622
--- /dev/null
+++ b/tests/functional/dashboard/export.spec.ts
@@ -0,0 +1,61 @@
1import { test } from '@japa/runner';
2import UserFactory from 'Database/factories/UserFactory';
3
4test.group('Dashboard / Export page', () => {
5 test('redirects to /user/login when accessing /user/transfer as guest', async ({
6 client,
7 }) => {
8 const response = await client.get('/user/transfer');
9
10 response.assertRedirectsTo('/user/login'); // Check if it redirects to the expected URL
11 });
12
13 test('returns a correct export with user data', async ({
14 assert,
15 client,
16 }) => {
17 const user = await UserFactory.create();
18 const response = await client.get('/user/export').loginAs(user);
19
20 response.assertStatus(200);
21 const exportData = JSON.parse(response.text());
22
23 assert.equal(exportData.username, user.username);
24 assert.equal(exportData.lastname, user.lastname);
25 assert.equal(exportData.mail, user.email);
26 });
27
28 // TODO: We can improve this test by hard checking the export data
29 test('returns a correct export with service data', async ({
30 assert,
31 client,
32 }) => {
33 const user = await UserFactory.with('services', 5).create();
34 const response = await client.get('/user/export').loginAs(user);
35
36 response.assertStatus(200);
37 const exportData = JSON.parse(response.text());
38
39 assert.equal(exportData.username, user.username);
40 assert.equal(exportData.lastname, user.lastname);
41 assert.equal(exportData.mail, user.email);
42 assert.equal(exportData.services.length, user.services.length);
43 });
44
45 // TODO: We can improve this test by hard checking the export data
46 test('returns a correct export with workspace data', async ({
47 assert,
48 client,
49 }) => {
50 const user = await UserFactory.with('workspaces', 5).create();
51 const response = await client.get('/user/export').loginAs(user);
52
53 response.assertStatus(200);
54 const exportData = JSON.parse(response.text());
55
56 assert.equal(exportData.username, user.username);
57 assert.equal(exportData.lastname, user.lastname);
58 assert.equal(exportData.mail, user.email);
59 assert.equal(exportData.workspaces.length, user.workspaces.length);
60 });
61});
diff --git a/tests/functional/dashboard/forgot-password.spec.ts b/tests/functional/dashboard/forgot-password.spec.ts
new file mode 100644
index 0000000..9dcec5a
--- /dev/null
+++ b/tests/functional/dashboard/forgot-password.spec.ts
@@ -0,0 +1,70 @@
1import { test } from '@japa/runner';
2import Event from '@ioc:Adonis/Core/Event';
3import UserFactory from 'Database/factories/UserFactory';
4
5test.group('Dashboard / Forgot password page', () => {
6 test('returns a 200 opening the forgot password route', async ({
7 client,
8 }) => {
9 const response = await client.get('/user/forgot');
10
11 response.assertStatus(200);
12 response.assertTextIncludes('Forgot Password?');
13 });
14
15 test('returns `Please enter a valid email address` when providing invalid email', async ({
16 client,
17 }) => {
18 const response = await client.post('/user/forgot').fields({
19 mail: 'invalid',
20 });
21
22 response.assertStatus(200);
23 response.assertTextIncludes('Please enter a valid email address');
24 });
25
26 test('returns `email send when exists` without forgot:password event', async ({
27 client,
28 assert,
29 }) => {
30 const emitter = Event.fake();
31
32 const response = await client.post('/user/forgot').fields({
33 mail: 'test@ferdium.org',
34 });
35
36 response.assertStatus(200);
37 response.assertTextIncludes(
38 'If your provided E-Mail address is linked to an account, we have just sent an E-Mail to that address.',
39 );
40
41 assert.isFalse(emitter.exists('forgot:password'));
42 });
43
44 test('returns `email send when exists` and trigger forgot:password event', async ({
45 client,
46 assert,
47 }) => {
48 const emitter = Event.fake();
49 const user = await UserFactory.merge({
50 email: 'test+forgot_password@ferdium.org',
51 }).create();
52
53 const response = await client.post('/user/forgot').fields({
54 mail: 'test+forgot_password@ferdium.org',
55 });
56
57 response.assertStatus(200);
58 response.assertTextIncludes(
59 'If your provided E-Mail address is linked to an account, we have just sent an E-Mail to that address.',
60 );
61
62 assert.isTrue(
63 emitter.exists(
64 event =>
65 event.name === 'forgot:password' &&
66 event.data.user.email === user.email,
67 ),
68 );
69 });
70});
diff --git a/tests/functional/dashboard/import-stubs/invalid.json b/tests/functional/dashboard/import-stubs/invalid.json
new file mode 100644
index 0000000..86d11fa
--- /dev/null
+++ b/tests/functional/dashboard/import-stubs/invalid.json
@@ -0,0 +1 @@
Lorum ipsum
diff --git a/tests/functional/dashboard/import-stubs/random-file.txt b/tests/functional/dashboard/import-stubs/random-file.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/functional/dashboard/import-stubs/random-file.txt
diff --git a/tests/functional/dashboard/import-stubs/services-only.ferdi-data b/tests/functional/dashboard/import-stubs/services-only.ferdi-data
new file mode 100644
index 0000000..d95f3ef
--- /dev/null
+++ b/tests/functional/dashboard/import-stubs/services-only.ferdi-data
@@ -0,0 +1,38 @@
1{
2 "username": "John",
3 "lastname": "Doe",
4 "mail": "john.doe@ferdium.org",
5 "services": [
6 {
7 "id": 5641,
8 "userId": "1234",
9 "serviceId": "d6901fff-ec44-4251-93de-d7103ed9c44b",
10 "name": "random-service-1",
11 "recipeId": "random-service-1",
12 "settings": "{}",
13 "created_at": "2022-06-21 08:29:13",
14 "updated_at": "2022-07-19 15:47:16"
15 },
16 {
17 "id": 2134,
18 "userId": "1234",
19 "serviceId": "d6901fff-ec44-4251-93de-d7103ed9c44b",
20 "name": "random-service-1",
21 "recipeId": "random-service-1",
22 "settings": "{}",
23 "created_at": "2022-06-21 08:29:13",
24 "updated_at": "2022-07-19 15:47:16"
25 },
26 {
27 "id": 5343,
28 "userId": "1234",
29 "serviceId": "d6901fff-ec44-4251-93de-d7103ed9c44b",
30 "name": "random-service-1",
31 "recipeId": "random-service-1",
32 "settings": "{}",
33 "created_at": "2022-06-21 08:29:13",
34 "updated_at": "2022-07-19 15:47:16"
35 }
36 ],
37 "workspaces": []
38}
diff --git a/tests/functional/dashboard/import-stubs/services-only.ferdium-data b/tests/functional/dashboard/import-stubs/services-only.ferdium-data
new file mode 100644
index 0000000..d95f3ef
--- /dev/null
+++ b/tests/functional/dashboard/import-stubs/services-only.ferdium-data
@@ -0,0 +1,38 @@
1{
2 "username": "John",
3 "lastname": "Doe",
4 "mail": "john.doe@ferdium.org",
5 "services": [
6 {
7 "id": 5641,
8 "userId": "1234",
9 "serviceId": "d6901fff-ec44-4251-93de-d7103ed9c44b",
10 "name": "random-service-1",
11 "recipeId": "random-service-1",
12 "settings": "{}",
13 "created_at": "2022-06-21 08:29:13",
14 "updated_at": "2022-07-19 15:47:16"
15 },
16 {
17 "id": 2134,
18 "userId": "1234",
19 "serviceId": "d6901fff-ec44-4251-93de-d7103ed9c44b",
20 "name": "random-service-1",
21 "recipeId": "random-service-1",
22 "settings": "{}",
23 "created_at": "2022-06-21 08:29:13",
24 "updated_at": "2022-07-19 15:47:16"
25 },
26 {
27 "id": 5343,
28 "userId": "1234",
29 "serviceId": "d6901fff-ec44-4251-93de-d7103ed9c44b",
30 "name": "random-service-1",
31 "recipeId": "random-service-1",
32 "settings": "{}",
33 "created_at": "2022-06-21 08:29:13",
34 "updated_at": "2022-07-19 15:47:16"
35 }
36 ],
37 "workspaces": []
38}
diff --git a/tests/functional/dashboard/import-stubs/services-only.json b/tests/functional/dashboard/import-stubs/services-only.json
new file mode 100644
index 0000000..d95f3ef
--- /dev/null
+++ b/tests/functional/dashboard/import-stubs/services-only.json
@@ -0,0 +1,38 @@
1{
2 "username": "John",
3 "lastname": "Doe",
4 "mail": "john.doe@ferdium.org",
5 "services": [
6 {
7 "id": 5641,
8 "userId": "1234",
9 "serviceId": "d6901fff-ec44-4251-93de-d7103ed9c44b",
10 "name": "random-service-1",
11 "recipeId": "random-service-1",
12 "settings": "{}",
13 "created_at": "2022-06-21 08:29:13",
14 "updated_at": "2022-07-19 15:47:16"
15 },
16 {
17 "id": 2134,
18 "userId": "1234",
19 "serviceId": "d6901fff-ec44-4251-93de-d7103ed9c44b",
20 "name": "random-service-1",
21 "recipeId": "random-service-1",
22 "settings": "{}",
23 "created_at": "2022-06-21 08:29:13",
24 "updated_at": "2022-07-19 15:47:16"
25 },
26 {
27 "id": 5343,
28 "userId": "1234",
29 "serviceId": "d6901fff-ec44-4251-93de-d7103ed9c44b",
30 "name": "random-service-1",
31 "recipeId": "random-service-1",
32 "settings": "{}",
33 "created_at": "2022-06-21 08:29:13",
34 "updated_at": "2022-07-19 15:47:16"
35 }
36 ],
37 "workspaces": []
38}
diff --git a/tests/functional/dashboard/import-stubs/services-workspaces.ferdi-data b/tests/functional/dashboard/import-stubs/services-workspaces.ferdi-data
new file mode 100644
index 0000000..750e6ca
--- /dev/null
+++ b/tests/functional/dashboard/import-stubs/services-workspaces.ferdi-data
@@ -0,0 +1,61 @@
1{
2 "username": "John",
3 "lastname": "Doe",
4 "mail": "john.doe@ferdium.org",
5 "services": [
6 {
7 "id": 5641,
8 "userId": "1234",
9 "serviceId": "d6901fff-ec44-4251-93de-d7103ed9c44b",
10 "name": "random-service-1",
11 "recipeId": "random-service-1",
12 "settings": "{}",
13 "created_at": "2022-06-21 08:29:13",
14 "updated_at": "2022-07-19 15:47:16"
15 },
16 {
17 "id": 2134,
18 "userId": "1234",
19 "serviceId": "79769de5-a998-4af1-b7d0-89956a15b0ed",
20 "name": "random-service-2",
21 "recipeId": "random-service-2",
22 "settings": "{}",
23 "created_at": "2022-06-21 08:29:13",
24 "updated_at": "2022-07-19 15:47:16"
25 },
26 {
27 "id": 5343,
28 "userId": "1234",
29 "serviceId": "0ac973f8-40dc-4760-b2c2-55e1d2943747",
30 "name": "random-service-3",
31 "recipeId": "random-service-3",
32 "settings": "{}",
33 "created_at": "2022-06-21 08:29:13",
34 "updated_at": "2022-07-19 15:47:16"
35 }
36 ],
37 "workspaces": [
38 {
39 "name": "workspace1",
40 "order": 0,
41 "services": [],
42 "data": "{\"name\":\"workspace1\"}"
43 },
44 {
45 "name": "workspace2",
46 "order": 0,
47 "services": ["d6901fff-ec44-4251-93de-d7103ed9c44b", "79769de5-a998-4af1-b7d0-89956a15b0ed"],
48 "data": "{\"name\":\"workspace2\"}"
49 },
50 {
51 "name": "workspace3",
52 "order": 0,
53 "services": [
54 "d6901fff-ec44-4251-93de-d7103ed9c44b",
55 "79769de5-a998-4af1-b7d0-89956a15b0ed",
56 "0ac973f8-40dc-4760-b2c2-55e1d2943747"
57 ],
58 "data": "{\"name\":\"workspace3\"}"
59 }
60 ]
61}
diff --git a/tests/functional/dashboard/import-stubs/services-workspaces.ferdium-data b/tests/functional/dashboard/import-stubs/services-workspaces.ferdium-data
new file mode 100644
index 0000000..e999c0d
--- /dev/null
+++ b/tests/functional/dashboard/import-stubs/services-workspaces.ferdium-data
@@ -0,0 +1,61 @@
1{
2 "username": "John",
3 "lastname": "Doe",
4 "mail": "john.doe@ferdium.org",
5 "services": [
6 {
7 "id": 5641,
8 "userId": "1234",
9 "serviceId": "d6901fff-ec44-4251-93de-d7103ed9c44b",
10 "name": "random-service-1",
11 "recipeId": "random-service-1",
12 "settings": "{}",
13 "created_at": "2022-06-21 08:29:13",
14 "updated_at": "2022-07-19 15:47:16"
15 },
16 {
17 "id": 2134,
18 "userId": "1234",
19 "serviceId": "79769de5-a998-4af1-b7d0-89956a15b0ed",
20 "name": "random-service-2",
21 "recipeId": "random-service-2",
22 "settings": "{}",
23 "created_at": "2022-06-21 08:29:13",
24 "updated_at": "2022-07-19 15:47:16"
25 },
26 {
27 "id": 5343,
28 "userId": "1234",
29 "serviceId": "0ac973f8-40dc-4760-b2c2-55e1d2943747",
30 "name": "random-service-3",
31 "recipeId": "random-service-2",
32 "settings": "{}",
33 "created_at": "2022-06-21 08:29:13",
34 "updated_at": "2022-07-19 15:47:16"
35 }
36 ],
37 "workspaces": [
38 {
39 "name": "workspace1",
40 "order": 0,
41 "services": [],
42 "data": "{\"name\":\"workspace1\"}"
43 },
44 {
45 "name": "workspace2",
46 "order": 0,
47 "services": ["d6901fff-ec44-4251-93de-d7103ed9c44b", "79769de5-a998-4af1-b7d0-89956a15b0ed"],
48 "data": "{\"name\":\"workspace2\"}"
49 },
50 {
51 "name": "workspace3",
52 "order": 0,
53 "services": [
54 "d6901fff-ec44-4251-93de-d7103ed9c44b",
55 "79769de5-a998-4af1-b7d0-89956a15b0ed",
56 "0ac973f8-40dc-4760-b2c2-55e1d2943747"
57 ],
58 "data": "{\"name\":\"workspace3\"}"
59 }
60 ]
61}
diff --git a/tests/functional/dashboard/import-stubs/services-workspaces.json b/tests/functional/dashboard/import-stubs/services-workspaces.json
new file mode 100644
index 0000000..54c6889
--- /dev/null
+++ b/tests/functional/dashboard/import-stubs/services-workspaces.json
@@ -0,0 +1,64 @@
1{
2 "username": "John",
3 "lastname": "Doe",
4 "mail": "john.doe@ferdium.org",
5 "services": [
6 {
7 "id": 5641,
8 "userId": "1234",
9 "serviceId": "d6901fff-ec44-4251-93de-d7103ed9c44b",
10 "name": "random-service-1",
11 "recipeId": "random-service-1",
12 "settings": "{}",
13 "created_at": "2022-06-21 08:29:13",
14 "updated_at": "2022-07-19 15:47:16"
15 },
16 {
17 "id": 2134,
18 "userId": "1234",
19 "serviceId": "79769de5-a998-4af1-b7d0-89956a15b0ed",
20 "name": "random-service-2",
21 "recipeId": "random-service-2",
22 "settings": "{}",
23 "created_at": "2022-06-21 08:29:13",
24 "updated_at": "2022-07-19 15:47:16"
25 },
26 {
27 "id": 5343,
28 "userId": "1234",
29 "serviceId": "0ac973f8-40dc-4760-b2c2-55e1d2943747",
30 "name": "random-service-3",
31 "recipeId": "random-service-3",
32 "settings": "{}",
33 "created_at": "2022-06-21 08:29:13",
34 "updated_at": "2022-07-19 15:47:16"
35 }
36 ],
37 "workspaces": [
38 {
39 "name": "workspace1",
40 "order": 0,
41 "services": [],
42 "data": "{\"name\":\"workspace1\"}"
43 },
44 {
45 "name": "workspace2",
46 "order": 0,
47 "services": [
48 "d6901fff-ec44-4251-93de-d7103ed9c44b",
49 "79769de5-a998-4af1-b7d0-89956a15b0ed"
50 ],
51 "data": "{\"name\":\"workspace2\"}"
52 },
53 {
54 "name": "workspace3",
55 "order": 0,
56 "services": [
57 "d6901fff-ec44-4251-93de-d7103ed9c44b",
58 "79769de5-a998-4af1-b7d0-89956a15b0ed",
59 "0ac973f8-40dc-4760-b2c2-55e1d2943747"
60 ],
61 "data": "{\"name\":\"workspace3\"}"
62 }
63 ]
64}
diff --git a/tests/functional/dashboard/import-stubs/valid-no-data.json b/tests/functional/dashboard/import-stubs/valid-no-data.json
new file mode 100644
index 0000000..8d4816f
--- /dev/null
+++ b/tests/functional/dashboard/import-stubs/valid-no-data.json
@@ -0,0 +1,3 @@
1{
2 "test": "value"
3}
diff --git a/tests/functional/dashboard/import-stubs/workspaces-only.ferdi-data b/tests/functional/dashboard/import-stubs/workspaces-only.ferdi-data
new file mode 100644
index 0000000..13ea9c6
--- /dev/null
+++ b/tests/functional/dashboard/import-stubs/workspaces-only.ferdi-data
@@ -0,0 +1,26 @@
1{
2 "username": "John",
3 "lastname": "Doe",
4 "mail": "john.doe@ferdium.org",
5 "services": [],
6 "workspaces": [
7 {
8 "name": "workspace1",
9 "order": 0,
10 "services": [],
11 "data": "{\"name\":\"workspace1\"}"
12 },
13 {
14 "name": "workspace2",
15 "order": 0,
16 "services": [],
17 "data": "{\"name\":\"workspace2\"}"
18 },
19 {
20 "name": "workspace3",
21 "order": 0,
22 "services": [],
23 "data": "{\"name\":\"workspace3\"}"
24 }
25 ]
26}
diff --git a/tests/functional/dashboard/import-stubs/workspaces-only.ferdium-data b/tests/functional/dashboard/import-stubs/workspaces-only.ferdium-data
new file mode 100644
index 0000000..13ea9c6
--- /dev/null
+++ b/tests/functional/dashboard/import-stubs/workspaces-only.ferdium-data
@@ -0,0 +1,26 @@
1{
2 "username": "John",
3 "lastname": "Doe",
4 "mail": "john.doe@ferdium.org",
5 "services": [],
6 "workspaces": [
7 {
8 "name": "workspace1",
9 "order": 0,
10 "services": [],
11 "data": "{\"name\":\"workspace1\"}"
12 },
13 {
14 "name": "workspace2",
15 "order": 0,
16 "services": [],
17 "data": "{\"name\":\"workspace2\"}"
18 },
19 {
20 "name": "workspace3",
21 "order": 0,
22 "services": [],
23 "data": "{\"name\":\"workspace3\"}"
24 }
25 ]
26}
diff --git a/tests/functional/dashboard/import-stubs/workspaces-only.json b/tests/functional/dashboard/import-stubs/workspaces-only.json
new file mode 100644
index 0000000..13ea9c6
--- /dev/null
+++ b/tests/functional/dashboard/import-stubs/workspaces-only.json
@@ -0,0 +1,26 @@
1{
2 "username": "John",
3 "lastname": "Doe",
4 "mail": "john.doe@ferdium.org",
5 "services": [],
6 "workspaces": [
7 {
8 "name": "workspace1",
9 "order": 0,
10 "services": [],
11 "data": "{\"name\":\"workspace1\"}"
12 },
13 {
14 "name": "workspace2",
15 "order": 0,
16 "services": [],
17 "data": "{\"name\":\"workspace2\"}"
18 },
19 {
20 "name": "workspace3",
21 "order": 0,
22 "services": [],
23 "data": "{\"name\":\"workspace3\"}"
24 }
25 ]
26}
diff --git a/tests/functional/dashboard/login.spec.ts b/tests/functional/dashboard/login.spec.ts
new file mode 100644
index 0000000..adae66a
--- /dev/null
+++ b/tests/functional/dashboard/login.spec.ts
@@ -0,0 +1,65 @@
1import { test } from '@japa/runner';
2import UserFactory from 'Database/factories/UserFactory';
3
4test.group('Dashboard / Login page', () => {
5 test('returns a 200 opening the login route', async ({ client }) => {
6 const response = await client.get('/user/login');
7
8 response.assertStatus(200);
9 });
10
11 test('returns `invalid mail or password` when validation fails', async ({
12 client,
13 }) => {
14 const response = await client.post('/user/login').fields({
15 mail: 'invalid',
16 password: 'invalid',
17 });
18
19 response.assertRedirectsTo('/user/login');
20 response.assertTextIncludes('Invalid mail or password');
21 });
22
23 test('returns `invalid mail or password` when account is not found', async ({
24 client,
25 }) => {
26 const response = await client.post('/user/login').fields({
27 mail: 'test+notexistingpassword@ferdium.org',
28 password: 'notexistingpassword',
29 });
30
31 response.assertRedirectsTo('/user/login');
32 response.assertTextIncludes('Invalid mail or password');
33 });
34
35 test('returns `invalid mail or password` when password is not valid', async ({
36 client,
37 }) => {
38 await UserFactory.merge({
39 email: 'test@ferdium.org',
40 }).create();
41
42 const response = await client.post('/user/login').fields({
43 mail: 'test+invalid_password@ferdium.org',
44 password: 'invalid_password',
45 });
46
47 response.assertRedirectsTo('/user/login');
48 response.assertTextIncludes('Invalid mail or password');
49 });
50
51 test('redirects to account page when user is able to login', async ({
52 client,
53 }) => {
54 await UserFactory.merge({
55 email: 'test+password@ferdium.org',
56 }).create();
57
58 const response = await client.post('/user/login').fields({
59 mail: 'test+password@ferdium.org',
60 password: 'password',
61 });
62
63 response.assertRedirectsTo('/user/account');
64 });
65});
diff --git a/tests/functional/dashboard/logout.spec.ts b/tests/functional/dashboard/logout.spec.ts
new file mode 100644
index 0000000..a45ee72
--- /dev/null
+++ b/tests/functional/dashboard/logout.spec.ts
@@ -0,0 +1,21 @@
1import { test } from '@japa/runner';
2import UserFactory from 'Database/factories/UserFactory';
3
4test.group('Dashboard / Log out page', () => {
5 test('redirects to /user/login when accessing /user/logout as guest', async ({
6 client,
7 }) => {
8 const response = await client.get('/user/logout');
9
10 response.assertRedirectsTo('/user/login'); // Check if it redirects to the expected URL
11 });
12
13 test('logs the user out when opening the page', async ({ client }) => {
14 const user = await UserFactory.create();
15 const response = await client.get('/user/logout').loginAs(user);
16
17 response.assertRedirectsTo('/user/login');
18 // This asserts the session is deleted as well
19 response.assertSessionMissing('auth_web');
20 });
21});
diff --git a/tests/functional/dashboard/reset-password.spec.ts b/tests/functional/dashboard/reset-password.spec.ts
new file mode 100644
index 0000000..e488482
--- /dev/null
+++ b/tests/functional/dashboard/reset-password.spec.ts
@@ -0,0 +1,122 @@
1import { test } from '@japa/runner';
2import Token from 'App/Models/Token';
3import UserFactory from 'Database/factories/UserFactory';
4import TokenFactory from 'Database/factories/TokenFactory';
5
6test.group('Dashboard / Reset password page', () => {
7 test('returns a `Invalid token` message when opening without a token', async ({
8 client,
9 }) => {
10 const response = await client.get('/user/reset');
11
12 response.assertStatus(200);
13 response.assertTextIncludes('Invalid token');
14 });
15
16 test('displays the form when a token is provided', async ({ client }) => {
17 const response = await client.get(
18 '/user/reset?token=randomtokenbutitworks',
19 );
20
21 response.assertStatus(200);
22 response.assertTextIncludes('Reset Your Password');
23 });
24
25 test('returns `passwords do not match` message when passwords do not match', async ({
26 client,
27 }) => {
28 const response = await client.post('/user/reset').fields({
29 token: 'randomnotworkingtoken',
30 password: 'password',
31 password_confirmation: 'not_matching',
32 });
33
34 response.assertTextIncludes('Passwords do not match');
35 });
36
37 test('returns `Cannot reset your password` when token does not exist', async ({
38 client,
39 }) => {
40 const response = await client.post('/user/reset').fields({
41 token: 'randomnotworkingtoken',
42 password: 'password',
43 password_confirmation: 'password',
44 });
45
46 response.assertTextIncludes('Cannot reset your password');
47 });
48
49 test('returns `Cannot reset your password` when token is older than 24 hours', async ({
50 client,
51 }) => {
52 const token = await TokenFactory.merge({
53 // eslint-disable-next-line unicorn/no-await-expression-member
54 user_id: (await UserFactory.create()).id,
55 })
56 .apply('old_token')
57 .create();
58
59 const response = await client.post('/user/reset').fields({
60 token: token.token,
61 password: 'password',
62 password_confirmation: 'password',
63 });
64
65 response.assertTextIncludes('Cannot reset your password');
66 });
67
68 test('returns `Cannot reset your password` when token is revoked', async ({
69 client,
70 }) => {
71 const token = await TokenFactory.merge({
72 // eslint-disable-next-line unicorn/no-await-expression-member
73 user_id: (await UserFactory.create()).id,
74 })
75 .apply('revoked')
76 .create();
77
78 const response = await client.post('/user/reset').fields({
79 token: token.token,
80 password: 'password',
81 password_confirmation: 'password',
82 });
83
84 response.assertTextIncludes('Cannot reset your password');
85 });
86
87 test('correctly resets password and deletes token and able to login with new password', async ({
88 client,
89 assert,
90 }) => {
91 const userEmail = 'working-reset-password-login@ferdium.org';
92 const token = await TokenFactory.merge({
93 user_id:
94 (
95 await UserFactory.merge({
96 email: userEmail,
97 }).create()
98 // prettier-ignore
99 // eslint-disable-next-line unicorn/no-await-expression-member
100 ).id,
101 }).create();
102
103 const response = await client.post('/user/reset').fields({
104 token: token.token,
105 password: 'new_password',
106 password_confirmation: 'new_password',
107 });
108
109 // Assert response is as expected
110 response.assertTextIncludes('Successfully reset your password');
111
112 // Token should be deleted from database
113 assert.isNull(await Token.query().where('token', token.token).first());
114
115 const loginResponse = await client.post('/user/login').fields({
116 mail: userEmail,
117 password: 'new_password',
118 });
119
120 loginResponse.assertRedirectsTo('/user/account');
121 });
122});
diff --git a/tests/functional/dashboard/transfer.spec.ts b/tests/functional/dashboard/transfer.spec.ts
new file mode 100644
index 0000000..0f8ee31
--- /dev/null
+++ b/tests/functional/dashboard/transfer.spec.ts
@@ -0,0 +1,222 @@
1import { test } from '@japa/runner';
2import UserFactory from 'Database/factories/UserFactory';
3
4test.group('Dashboard / Transfer page', () => {
5 test('redirects to /user/login when accessing /user/transfer as guest', async ({
6 client,
7 }) => {
8 const response = await client.get('/user/transfer');
9
10 response.assertRedirectsTo('/user/login'); // Check if it redirects to the expected URL
11 });
12
13 test('returns a 200 opening the transfer route while being logged in', async ({
14 client,
15 }) => {
16 const user = await UserFactory.create();
17 const response = await client.get('/user/transfer').loginAs(user);
18
19 response.assertStatus(200);
20 });
21
22 // TODO: Fix the following tests
23
24 // test('returns a validation error when not uploading a file', async ({
25 // client,
26 // }) => {
27 // const user = await UserFactory.create();
28 // const response = await client.put('/user/transfer').loginAs(user);
29
30 // response.assertTextIncludes('File missing');
31 // });
32
33 // test('returns a validation error when trying to use anything but json', async ({
34 // client,
35 // }) => {
36 // const user = await UserFactory.create();
37 // const response = await client
38 // .put('/user/transfer')
39 // .loginAs(user)
40 // .file('file', 'tests/functional/dashboard/import-stubs/random-file.txt', {
41 // filename: 'random-file.txt',
42 // });
43
44 // response.assertTextIncludes('File missing');
45 // });
46
47 // test('returns a validation error when trying to use anything valid json', async ({
48 // client,
49 // }) => {
50 // const user = await UserFactory.create();
51 // const response = await client
52 // .put('/user/transfer')
53 // .loginAs(user)
54 // .file('file', 'tests/functional/dashboard/import-stubs/invalid.json', {
55 // filename: 'invalid.json',
56 // });
57
58 // response.assertTextIncludes('Invalid Ferdium account file');
59 // });
60
61 // test('returns a validation error when trying to use a json file with no ferdium structure', async ({
62 // client,
63 // }) => {
64 // const user = await UserFactory.create();
65 // const response = await client
66 // .put('/user/transfer')
67 // .loginAs(user)
68 // .file(
69 // 'file',
70 // 'tests/functional/dashboard/import-stubs/valid-no-data.json',
71 // {
72 // filename: 'valid-no-data.json',
73 // },
74 // );
75
76 // response.assertTextIncludes('Invalid Ferdium account file (2)');
77 // });
78
79 // test('correctly transfers data from json/ferdi-data and ferdium-data file with only workspaces', async ({
80 // client,
81 // assert,
82 // }) => {
83 // // Repeat for all 3 file extension
84 // const files = [
85 // 'workspaces-only.json',
86 // 'workspaces-only.ferdi-data',
87 // 'workspaces-only.ferdium-data',
88 // ];
89
90 // for (const file of files) {
91 // // eslint-disable-next-line no-await-in-loop
92 // const user = await UserFactory.create();
93 // // eslint-disable-next-line no-await-in-loop
94 // const response = await client
95 // .put('/user/transfer')
96 // .loginAs(user)
97 // .file('file', `tests/functional/dashboard/import-stubs/${file}`, {
98 // filename: file,
99 // });
100
101 // response.assertTextIncludes(
102 // 'Your account has been imported, you can now login as usual!',
103 // );
104 // // eslint-disable-next-line no-await-in-loop
105 // await user.refresh();
106
107 // // eslint-disable-next-line no-await-in-loop
108 // const workspacesForUser = await user.related('workspaces').query();
109 // assert.equal(workspacesForUser.length, 3);
110 // }
111 // });
112
113 // test('correctly transfers data from json/ferdi-data and ferdium-data file with only services', async ({
114 // client,
115 // assert,
116 // }) => {
117 // // Repeat for all 3 file extension
118 // const files = [
119 // 'services-only.json',
120 // 'services-only.ferdi-data',
121 // 'services-only.ferdium-data',
122 // ];
123
124 // for (const file of files) {
125 // // eslint-disable-next-line no-await-in-loop
126 // const user = await UserFactory.create();
127 // // eslint-disable-next-line no-await-in-loop
128 // const response = await client
129 // .put('/user/transfer')
130 // .loginAs(user)
131 // .file('file', `tests/functional/dashboard/import-stubs/${file}`, {
132 // filename: file,
133 // });
134
135 // response.assertTextIncludes(
136 // 'Your account has been imported, you can now login as usual!',
137 // );
138 // // eslint-disable-next-line no-await-in-loop
139 // await user.refresh();
140
141 // // eslint-disable-next-line no-await-in-loop
142 // const servicesForUser = await user.related('services').query();
143 // assert.equal(servicesForUser.length, 3);
144 // }
145 // });
146
147 // test('correctly transfers data from json/ferdi-data and ferdium-data file with workspaces and services', async ({
148 // client,
149 // assert,
150 // }) => {
151 // // Repeat for all 3 file extension
152 // const files = [
153 // 'services-workspaces.json',
154 // 'services-workspaces.ferdi-data',
155 // 'services-workspaces.ferdium-data',
156 // ];
157
158 // for (const file of files) {
159 // // eslint-disable-next-line no-await-in-loop
160 // const user = await UserFactory.create();
161 // // eslint-disable-next-line no-await-in-loop
162 // const response = await client
163 // .put('/user/transfer')
164 // .loginAs(user)
165 // .file('file', `tests/functional/dashboard/import-stubs/${file}`, {
166 // filename: file,
167 // });
168
169 // response.assertTextIncludes(
170 // 'Your account has been imported, you can now login as usual!',
171 // );
172 // // eslint-disable-next-line no-await-in-loop
173 // await user.refresh();
174
175 // // eslint-disable-next-line no-await-in-loop
176 // const servicesForUser = await user.related('services').query();
177 // // eslint-disable-next-line no-await-in-loop
178 // const workspacesForUser = await user.related('workspaces').query();
179 // assert.equal(servicesForUser.length, 3);
180 // assert.equal(workspacesForUser.length, 3);
181
182 // const firstServiceUuid = servicesForUser.find(
183 // s => s.name === 'random-service-1',
184 // )?.serviceId;
185 // const secondServiceUuid = servicesForUser.find(
186 // s => s.name === 'random-service-2',
187 // )?.serviceId;
188 // const thirdServiceUUid = servicesForUser.find(
189 // s => s.name === 'random-service-3',
190 // )?.serviceId;
191
192 // // Assert the first workspace to not have any services
193 // const firstWorkspace = workspacesForUser.find(
194 // w => w.name === 'workspace1',
195 // );
196 // if (firstWorkspace?.services) {
197 // assert.empty(JSON.parse(firstWorkspace.services));
198 // }
199
200 // const secondWorkspace = workspacesForUser.find(
201 // w => w.name === 'workspace2',
202 // );
203 // if (secondWorkspace?.services) {
204 // assert.deepEqual(JSON.parse(secondWorkspace.services), [
205 // firstServiceUuid,
206 // secondServiceUuid,
207 // ]);
208 // }
209
210 // const thirdWorkspace = workspacesForUser.find(
211 // w => w.name === 'workspace3',
212 // );
213 // if (thirdWorkspace?.services) {
214 // assert.deepEqual(JSON.parse(thirdWorkspace.services), [
215 // firstServiceUuid,
216 // secondServiceUuid,
217 // thirdServiceUUid,
218 // ]);
219 // }
220 // }
221 // });
222});
diff --git a/tests/functional/health.spec.ts b/tests/functional/health.spec.ts
new file mode 100644
index 0000000..2f7e074
--- /dev/null
+++ b/tests/functional/health.spec.ts
@@ -0,0 +1,13 @@
1import { test } from '@japa/runner';
2
3test.group('health page', () => {
4 test('returns a 200 response', async ({ client }) => {
5 const response = await client.get('/health');
6
7 response.assertStatus(200);
8 response.assertBodyContains({
9 api: 'success',
10 db: 'success',
11 });
12 });
13});
diff --git a/tests/functional/static-pages/home.spec.ts b/tests/functional/static-pages/home.spec.ts
new file mode 100644
index 0000000..5054e05
--- /dev/null
+++ b/tests/functional/static-pages/home.spec.ts
@@ -0,0 +1,10 @@
1import { test } from '@japa/runner';
2
3test.group('home page', () => {
4 test('returns a 200 response', async ({ client }) => {
5 const response = await client.get('/');
6
7 response.assertStatus(200);
8 response.assertTextIncludes('Go to account dashboard');
9 });
10});
diff --git a/tests/functional/static-pages/privacy.spec.ts b/tests/functional/static-pages/privacy.spec.ts
new file mode 100644
index 0000000..f1d5bec
--- /dev/null
+++ b/tests/functional/static-pages/privacy.spec.ts
@@ -0,0 +1,10 @@
1import { test } from '@japa/runner';
2
3test.group('privacy page', () => {
4 test('returns a 200 response', async ({ client }) => {
5 const response = await client.get('/privacy');
6
7 response.assertStatus(200);
8 response.assertTextIncludes('PRIVACY POLICY');
9 });
10});
diff --git a/tests/functional/static-pages/terms.spec.ts b/tests/functional/static-pages/terms.spec.ts
new file mode 100644
index 0000000..de990e4
--- /dev/null
+++ b/tests/functional/static-pages/terms.spec.ts
@@ -0,0 +1,10 @@
1import { test } from '@japa/runner';
2
3test.group('terms page', () => {
4 test('returns a 200 response', async ({ client }) => {
5 const response = await client.get('/terms');
6
7 response.assertStatus(200);
8 response.assertTextIncludes('Terms of Service');
9 });
10});
diff --git a/tests/utils.ts b/tests/utils.ts
new file mode 100644
index 0000000..14460b9
--- /dev/null
+++ b/tests/utils.ts
@@ -0,0 +1,6 @@
1import View from '@ioc:Adonis/Core/View';
2
3export function fakeCsrfField(): void {
4 // Create fake csrField function in the view
5 View.global('csrfField', () => '');
6}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..aee7acd
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,37 @@
1{
2 "extends": "./node_modules/adonis-preset-ts/tsconfig.json",
3 "include": ["**/*"],
4 "exclude": ["node_modules", "build", "recipes"],
5 "compilerOptions": {
6 "outDir": "build",
7 "rootDir": "./",
8 "strict": true,
9 "incremental": true,
10 "paths": {
11 "App/*": ["./app/*"],
12 "Config/*": ["./config/*"],
13 "Contracts/*": ["./contracts/*"],
14 "Database/*": ["./database/*"]
15 },
16 "types": [
17 "@adonisjs/core",
18 "@adonisjs/repl",
19 "@japa/preset-adonis/build/adonis-typings",
20 "@adonisjs/view",
21 "@adonisjs/lucid",
22 "@adonisjs/auth",
23 "@adonisjs/shield",
24 "@adonisjs/session",
25 "@adonisjs/mail",
26 "fs-extra",
27 "adonis5-jwt"
28 ],
29 "sourceMap": true,
30 "noFallthroughCasesInSwitch": true,
31 "resolveJsonModule": true,
32 "forceConsistentCasingInFileNames": true,
33 "useUnknownInCatchVariables": false,
34 "noImplicitReturns": true,
35 "strictPropertyInitialization": false
36 }
37}
diff --git a/webpack.config.js b/webpack.config.js
new file mode 100644
index 0000000..9743941
--- /dev/null
+++ b/webpack.config.js
@@ -0,0 +1,213 @@
1const { join } = require('node:path');
2const Encore = require('@symfony/webpack-encore');
3
4/*
5|--------------------------------------------------------------------------
6| Encore runtime environment
7|--------------------------------------------------------------------------
8*/
9if (!Encore.isRuntimeEnvironmentConfigured()) {
10 Encore.configureRuntimeEnvironment(process.env.NODE_ENV || 'dev');
11}
12
13/*
14|--------------------------------------------------------------------------
15| Output path
16|--------------------------------------------------------------------------
17|
18| The output path for writing the compiled files. It should always
19| be inside the public directory, so that AdonisJS can serve it.
20|
21*/
22Encore.setOutputPath('./public/assets');
23
24/*
25|--------------------------------------------------------------------------
26| Public URI
27|--------------------------------------------------------------------------
28|
29| The public URI to access the static files. It should always be
30| relative from the "public" directory.
31|
32*/
33Encore.setPublicPath('/assets');
34
35/*
36|--------------------------------------------------------------------------
37| Entrypoints
38|--------------------------------------------------------------------------
39|
40| Entrypoints are script files that boots your frontend application. Ideally
41| a single entrypoint is used by majority of applications. However, feel
42| free to add more (if required).
43|
44| Also, make sure to read the docs on "Assets bundler" to learn more about
45| entrypoints.
46|
47*/
48Encore.addEntry('app', './resources/js/app.js');
49
50/*
51|--------------------------------------------------------------------------
52| Copy assets
53|--------------------------------------------------------------------------
54|
55| Since the edge templates are not part of the Webpack compile lifecycle, any
56| images referenced by it will not be processed by Webpack automatically. Hence
57| we must copy them manually.
58|
59*/
60// Encore.copyFiles({
61// from: './resources/images',
62// to: 'images/[path][name].[hash:8].[ext]',
63// })
64
65/*
66|--------------------------------------------------------------------------
67| Split shared code
68|--------------------------------------------------------------------------
69|
70| Instead of bundling duplicate code in all the bundles, generate a separate
71| bundle for the shared code.
72|
73| https://symfony.com/doc/current/frontend/encore/split-chunks.html
74| https://webpack.js.org/plugins/split-chunks-plugin/
75|
76*/
77// Encore.splitEntryChunks()
78
79/*
80|--------------------------------------------------------------------------
81| Isolated entrypoints
82|--------------------------------------------------------------------------
83|
84| Treat each entry point and its dependencies as its own isolated module.
85|
86*/
87Encore.disableSingleRuntimeChunk();
88
89/*
90|--------------------------------------------------------------------------
91| Cleanup output folder
92|--------------------------------------------------------------------------
93|
94| It is always nice to cleanup the build output before creating a build. It
95| will ensure that all unused files from the previous build are removed.
96|
97*/
98Encore.cleanupOutputBeforeBuild();
99/*
100|--------------------------------------------------------------------------
101| Source maps
102|--------------------------------------------------------------------------
103|
104| Enable source maps in production
105|
106*/
107Encore.enableSourceMaps(!Encore.isProduction());
108
109/*
110|--------------------------------------------------------------------------
111| Assets versioning
112|--------------------------------------------------------------------------
113|
114| Enable assets versioning to leverage lifetime browser and CDN cache
115|
116*/
117Encore.enableVersioning(Encore.isProduction());
118
119/*
120|--------------------------------------------------------------------------
121| Configure dev server
122|--------------------------------------------------------------------------
123|
124| Here we configure the dev server to enable live reloading for edge templates.
125| Remember edge templates are not processed by Webpack and hence we need
126| to watch them explicitly and livereload the browser.
127|
128*/
129Encore.configureDevServerOptions(options => {
130 /**
131 * Normalize "options.static" property to an array
132 */
133 if (!options.static) {
134 options.static = [];
135 } else if (!Array.isArray(options.static)) {
136 options.static = [options.static];
137 }
138
139 /**
140 * Enable live reload and add views directory
141 */
142 options.liveReload = true;
143 options.static.push({
144 directory: join(__dirname, './resources/views'),
145 watch: true,
146 });
147});
148
149/*
150|--------------------------------------------------------------------------
151| CSS precompilers support
152|--------------------------------------------------------------------------
153|
154| Uncomment one of the following lines of code to enable support for your
155| favorite CSS precompiler
156|
157*/
158// Encore.enableSassLoader()
159// Encore.enableLessLoader()
160// Encore.enableStylusLoader()
161
162/*
163|--------------------------------------------------------------------------
164| CSS loaders
165|--------------------------------------------------------------------------
166|
167| Uncomment one of the following line of code to enable support for
168| PostCSS or CSS.
169|
170*/
171// Encore.enablePostCssLoader()
172// Encore.configureCssLoader(() => {})
173
174/*
175|--------------------------------------------------------------------------
176| Enable Vue loader
177|--------------------------------------------------------------------------
178|
179| Uncomment the following lines of code to enable support for vue. Also make
180| sure to install the required dependencies.
181|
182*/
183// Encore.enableVueLoader(() => {}, {
184// version: 3,
185// runtimeCompilerBuild: false,
186// useJsx: false
187// })
188
189/*
190|--------------------------------------------------------------------------
191| Configure logging
192|--------------------------------------------------------------------------
193|
194| To keep the terminal clean from unnecessary info statements , we only
195| log warnings and errors. If you want all the logs, you can change
196| the level to "info".
197|
198*/
199const config = Encore.getWebpackConfig();
200config.infrastructureLogging = {
201 level: 'warn',
202};
203config.stats = 'errors-warnings';
204
205/*
206|--------------------------------------------------------------------------
207| Export config
208|--------------------------------------------------------------------------
209|
210| Export config for webpack to do its job
211|
212*/
213module.exports = config;