aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar MCMXC <16797721+mcmxcdev@users.noreply.github.com>2024-02-10 18:19:14 -0700
committerLibravatar Vijay A <vraravam@users.noreply.github.com>2024-02-13 06:59:44 +0530
commit7584d2d7a7110aef0331ebfa178b2295842c59fa (patch)
tree900cd71237e6231b57936fcce77ff229cd459041
parentupgrade recipes submodule (diff)
downloadferdium-server-7584d2d7a7110aef0331ebfa178b2295842c59fa.tar.gz
ferdium-server-7584d2d7a7110aef0331ebfa178b2295842c59fa.tar.zst
ferdium-server-7584d2d7a7110aef0331ebfa178b2295842c59fa.zip
refactor: project maintenance
- work in progress
-rw-r--r--.eslintignore35
-rw-r--r--.eslintrc.cjs (renamed from .eslintrc.js)27
-rw-r--r--.prettierrc.cjs (renamed from .prettierrc.js)2
-rw-r--r--README.md100
-rw-r--r--ace16
-rw-r--r--ace-manifest.json616
-rw-r--r--ace.js24
-rw-r--r--adonisrc.ts83
-rw-r--r--app/Controllers/Http/Api/Static/AnnouncementsController.ts20
-rw-r--r--app/Controllers/Http/Api/Static/EmptyController.ts6
-rw-r--r--app/Controllers/Http/Api/Static/FeaturesController.ts6
-rw-r--r--app/Controllers/Http/Dashboard/AccountController.ts40
-rw-r--r--app/Controllers/Http/Dashboard/DataController.ts12
-rw-r--r--app/Controllers/Http/Dashboard/DeleteController.ts14
-rw-r--r--app/Controllers/Http/Dashboard/ExportController.ts29
-rw-r--r--app/Controllers/Http/Dashboard/ForgotPasswordController.ts22
-rw-r--r--app/Controllers/Http/Dashboard/LogOutController.ts8
-rw-r--r--app/Controllers/Http/Dashboard/LoginController.ts58
-rw-r--r--app/Controllers/Http/Dashboard/ResetPasswordController.ts51
-rw-r--r--app/Controllers/Http/Dashboard/TransferController.ts77
-rw-r--r--app/Controllers/Http/DashboardController.ts2
-rw-r--r--app/Controllers/Http/HealthController.ts2
-rw-r--r--app/Controllers/Http/HomeController.ts4
-rw-r--r--app/Controllers/Http/RecipeController.ts179
-rw-r--r--app/Controllers/Http/ServiceController.ts204
-rw-r--r--app/Controllers/Http/StaticsController.ts2
-rw-r--r--app/Controllers/Http/UserController.ts239
-rw-r--r--app/Controllers/Http/WorkspaceController.ts98
-rw-r--r--app/Exceptions/Handler.ts8
-rw-r--r--app/Middleware/AllowGuestOnly.ts33
-rw-r--r--app/Middleware/Auth.ts61
-rw-r--r--app/Middleware/Dashboard.ts15
-rw-r--r--app/Middleware/SilentAuth.ts11
-rw-r--r--app/Models/Recipe.ts16
-rw-r--r--app/Models/Service.ts25
-rw-r--r--app/Models/Token.ts27
-rw-r--r--app/Models/User.ts85
-rw-r--r--app/Models/Workspace.ts27
-rw-r--r--bin/console.ts47
-rw-r--r--bin/server.ts45
-rw-r--r--bin/test.ts60
-rw-r--r--commands/index.ts21
-rw-r--r--config/app.ts43
-rw-r--r--config/auth.ts18
-rw-r--r--config/bodyparser.ts9
-rw-r--r--config/cors.ts15
-rw-r--r--config/dashboard.ts6
-rw-r--r--config/database.ts54
-rw-r--r--config/drive.ts12
-rw-r--r--config/hash.ts30
-rw-r--r--config/mail.ts64
-rw-r--r--config/session.ts14
-rw-r--r--config/shield.ts363
-rw-r--r--config/static.ts8
-rw-r--r--contracts/env.ts23
-rw-r--r--contracts/hash.ts26
-rw-r--r--contracts/mail.ts13
-rw-r--r--database/factories/ServiceFactory.ts6
-rw-r--r--database/factories/TokenFactory.ts15
-rw-r--r--database/factories/UserFactory.ts17
-rw-r--r--database/factories/WorkspaceFactory.ts6
-rw-r--r--database/migrations/1503250034279_user.ts22
-rw-r--r--database/migrations/1503250034280_token.ts22
-rw-r--r--database/migrations/1566385379883_service_schema.ts24
-rw-r--r--database/migrations/1566554231482_recipe_schema.ts20
-rw-r--r--database/migrations/1566554359294_workspace_schema.ts26
-rw-r--r--database/migrations/1612629845398_users_update_schema.ts14
-rw-r--r--database/migrations/1658076326250_correct_token_relations.ts16
-rw-r--r--database/migrations/1696110557648_jwt_tokens.ts34
-rw-r--r--helpers/PasswordHash.ts19
-rw-r--r--package.json81
-rw-r--r--pnpm-lock.yaml8461
-rw-r--r--providers/AppProvider.ts4
-rw-r--r--providers/LegacyHashDriver.ts9
-rw-r--r--providers/LegacyHasherProvider.ts12
-rw-r--r--public/js/new.js32
-rw-r--r--public/js/transfer.js20
-rw-r--r--server.ts19
-rw-r--r--start/env.ts (renamed from env.ts)7
-rw-r--r--start/events.ts20
-rw-r--r--start/kernel.ts10
-rw-r--r--start/routes.ts4
-rw-r--r--start/routes/api.ts82
-rw-r--r--start/routes/web.ts104
-rw-r--r--test.ts49
-rw-r--r--tests/bootstrap.ts29
-rw-r--r--tests/config.ts2
-rw-r--r--tests/functional/api/static/announcements.spec.ts26
-rw-r--r--tests/functional/api/static/features.spec.ts24
-rw-r--r--tests/functional/api/static/news.spec.ts14
-rw-r--r--tests/functional/api/static/services.spec.ts14
-rw-r--r--tests/functional/dashboard/account.spec.ts129
-rw-r--r--tests/functional/dashboard/data.spec.ts38
-rw-r--r--tests/functional/dashboard/delete.spec.ts49
-rw-r--r--tests/functional/dashboard/disabled-dashboard.spec.ts82
-rw-r--r--tests/functional/dashboard/export.spec.ts91
-rw-r--r--tests/functional/dashboard/forgot-password.spec.ts66
-rw-r--r--tests/functional/dashboard/import-stubs/services-workspaces.json5
-rw-r--r--tests/functional/dashboard/login.spec.ts62
-rw-r--r--tests/functional/dashboard/logout.spec.ts26
-rw-r--r--tests/functional/dashboard/reset-password.spec.ts84
-rw-r--r--tests/functional/dashboard/transfer.spec.ts200
-rw-r--r--tests/functional/health.spec.ts12
-rw-r--r--tests/functional/static-pages/home.spec.ts12
-rw-r--r--tests/functional/static-pages/privacy.spec.ts12
-rw-r--r--tests/functional/static-pages/terms.spec.ts12
-rw-r--r--tests/utils.ts4
-rw-r--r--tsconfig.json34
-rw-r--r--types/auth.ts (renamed from contracts/auth.ts)34
-rw-r--r--types/drive.ts (renamed from contracts/drive.ts)4
-rw-r--r--types/events.ts (renamed from contracts/events.ts)4
-rw-r--r--types/tests.ts (renamed from contracts/tests.ts)2
-rw-r--r--vite.config.ts19
-rw-r--r--webpack.config.js213
114 files changed, 3789 insertions, 9824 deletions
diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index 606431b..0000000
--- a/.eslintignore
+++ /dev/null
@@ -1,35 +0,0 @@
1# Logs
2logs
3*.log
4
5# Runtime data
6pids
7*.pid
8*.seed
9
10# Coverage directory used by tools like istanbul
11coverage
12.eslintcache
13
14# Dependency directory
15# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
16node_modules
17
18# OSX
19.DS_Store
20
21.idea
22.pnpm-debug.log*
23*.css.d.ts
24*.sass.d.ts
25*.scss.d.ts
26
27/build/
28/out/
29/recipes/
30
31# package files
32pnpm-lock.yaml
33
34# Json
35tests/functional/dashboard/import-stubs/invalid.json
diff --git a/.eslintrc.js b/.eslintrc.cjs
index 2660c04..2be48ef 100644
--- a/.eslintrc.js
+++ b/.eslintrc.cjs
@@ -2,20 +2,13 @@
2module.exports = { 2module.exports = {
3 root: true, 3 root: true,
4 parserOptions: { 4 parserOptions: {
5 ecmaVersion: 2018, 5 ecmaVersion: 'latest',
6 sourceType: 'module', 6 sourceType: 'module',
7 project: './tsconfig.json', 7 project: './tsconfig.json',
8 }, 8 },
9 ignorePatterns: ['node_modules', 'build', 'recipes', '.eslintrc.js'], 9 ignorePatterns: ['node_modules', 'build', 'recipes', '.eslintrc.js'],
10 extends: [ 10 extends: ['@adonisjs/eslint-config/app', 'plugin:unicorn/recommended', 'prettier'],
11 'plugin:adonis/typescriptApp', 11 plugins: ['@adonisjs/eslint-plugin'],
12 'plugin:unicorn/recommended',
13 'prettier',
14 ],
15 plugins: [],
16 globals: {
17 use: true,
18 },
19 env: { 12 env: {
20 es6: true, 13 es6: true,
21 node: true, 14 node: true,
@@ -25,7 +18,7 @@ module.exports = {
25 { 18 {
26 files: ['**/*.ts'], 19 files: ['**/*.ts'],
27 extends: [ 20 extends: [
28 'plugin:adonis/typescriptApp', 21 '@adonisjs/eslint-config/app',
29 'plugin:@typescript-eslint/eslint-recommended', 22 'plugin:@typescript-eslint/eslint-recommended',
30 'plugin:@typescript-eslint/strict', 23 'plugin:@typescript-eslint/strict',
31 // TODO: Opt-in to a stricter ruleset in the future 24 // TODO: Opt-in to a stricter ruleset in the future
@@ -47,6 +40,16 @@ module.exports = {
47 '@typescript-eslint/no-extraneous-class': 0, 40 '@typescript-eslint/no-extraneous-class': 0,
48 '@typescript-eslint/ban-ts-comment': 0, 41 '@typescript-eslint/ban-ts-comment': 0,
49 '@typescript-eslint/prefer-ts-expect-error': 0, 42 '@typescript-eslint/prefer-ts-expect-error': 0,
43 '@typescript-eslint/explicit-member-accessibility': 0,
44 '@typescript-eslint/no-shadow': 0,
45 '@typescript-eslint/prefer-nullish-coalescing': 0,
46
47 // @adonisjs/eslint-plugin
48 '@adonisjs/prefer-lazy-controller-import': 2,
49 '@adonisjs/prefer-lazy-listener-import': 2,
50
51 // eslint-plugin-unicorn
52 'unicorn/filename-case': 0,
50 }, 53 },
51 }, 54 },
52 ], 55 ],
@@ -83,4 +86,4 @@ module.exports = {
83 'unicorn/no-empty-file': 0, 86 'unicorn/no-empty-file': 0,
84 'unicorn/prefer-top-level-await': 0, 87 'unicorn/prefer-top-level-await': 0,
85 }, 88 },
86}; 89}
diff --git a/.prettierrc.js b/.prettierrc.cjs
index f2feee8..f8073e9 100644
--- a/.prettierrc.js
+++ b/.prettierrc.cjs
@@ -2,4 +2,4 @@
2module.exports = { 2module.exports = {
3 singleQuote: true, 3 singleQuote: true,
4 arrowParens: 'avoid', 4 arrowParens: 'avoid',
5}; 5}
diff --git a/README.md b/README.md
index dc5b648..09669fb 100644
--- a/README.md
+++ b/README.md
@@ -3,10 +3,13 @@
3</p> 3</p>
4 4
5# Server 5# Server
6 [![Docker Build and Publish](https://github.com/ferdium/ferdium-server/actions/workflows/docker.yml/badge.svg)](https://github.com/ferdium/ferdium-server/actions/workflows/docker.yml) 6
7[![Docker Build and Publish](https://github.com/ferdium/ferdium-server/actions/workflows/docker.yml/badge.svg)](https://github.com/ferdium/ferdium-server/actions/workflows/docker.yml)
7 8
8<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --> 9<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
10
9<a href='#contributors-'><img src='https://img.shields.io/badge/contributors-17-default.svg?logo=github' alt='Contributors'/></a> 11<a href='#contributors-'><img src='https://img.shields.io/badge/contributors-17-default.svg?logo=github' alt='Contributors'/></a>
12
10<!-- ALL-CONTRIBUTORS-BADGE:END --> 13<!-- ALL-CONTRIBUTORS-BADGE:END -->
11 14
12> 👨🏾‍🍳 Server for [Ferdium](https://ferdium.org) that you can re-use to run your own 15> 👨🏾‍🍳 Server for [Ferdium](https://ferdium.org) that you can re-use to run your own
@@ -23,6 +26,7 @@ A custom server allows you to manage the data of all registered users yourself a
23</details> 26</details>
24 27
25## Features 28## Features
29
26- [x] User registration and login 30- [x] User registration and login
27- [x] Service creation, download, listing and removing 31- [x] Service creation, download, listing and removing
28- [x] Workspace support 32- [x] Workspace support
@@ -45,47 +49,49 @@ After setting up the docker container we recommend you set up an NGINX reverse p
45 49
461. Pull the Docker image 501. Pull the Docker image
47 51
48 ```sh 52 ```sh
49 docker pull ferdium/ferdium-server:latest 53 docker pull ferdium/ferdium-server:latest
50 ``` 54 ```
512. Create a *new* Docker container with your desired configuration **Existing users please seee the warning above.** 55
52 562. Create a _new_ Docker container with your desired configuration **Existing users please seee the warning above.**
53 ```sh 57
54 docker create \ 58 ```sh
55 --name=ferdium-server \ 59 docker create \
56 -e NODE_ENV=development \ 60 --name=ferdium-server \
57 -e APP_URL=<ferdium-server-url> \ 61 -e NODE_ENV=development \
58 -e DB_CONNECTION=<database> \ 62 -e APP_URL=<ferdium-server-url> \
59 -e DB_HOST=<yourdbhost> \ 63 -e DB_CONNECTION=<database> \
60 -e DB_PORT=<yourdbport> \ 64 -e DB_HOST=<yourdbhost> \
61 -e DB_USER=<yourdbuser> \ 65 -e DB_PORT=<yourdbport> \
62 -e DB_PASSWORD=<yourdbpass> \ 66 -e DB_USER=<yourdbuser> \
63 -e DB_DATABASE=<yourdbdatabase> \ 67 -e DB_PASSWORD=<yourdbpass> \
64 -e DB_SSL=false \ 68 -e DB_DATABASE=<yourdbdatabase> \
65 -e MAIL_CONNECTION=smtp \ 69 -e DB_SSL=false \
66 -e SMTP_HOST=<smtpmailserver> \ 70 -e MAIL_CONNECTION=smtp \
67 -e SMTP_PORT=<smtpport> \ 71 -e SMTP_HOST=<smtpmailserver> \
68 -e MAIL_SSL=true/false \ 72 -e SMTP_PORT=<smtpport> \
69 -e MAIL_USERNAME=<yourmailusername> \ 73 -e MAIL_SSL=true/false \
70 -e MAIL_PASSWORD=<yourmailpassword> \ 74 -e MAIL_USERNAME=<yourmailusername> \
71 -e MAIL_SENDER=<sendemailaddress> \ 75 -e MAIL_PASSWORD=<yourmailpassword> \
72 -e IS_CREATION_ENABLED=true \ 76 -e MAIL_SENDER=<sendemailaddress> \
73 -e IS_DASHBOARD_ENABLED=true \ 77 -e IS_CREATION_ENABLED=true \
74 -e IS_REGISTRATION_ENABLED=true \ 78 -e IS_DASHBOARD_ENABLED=true \
75 -e CONNECT_WITH_FRANZ=true \ 79 -e IS_REGISTRATION_ENABLED=true \
76 -e DATA_DIR=data \ 80 -e CONNECT_WITH_FRANZ=true \
77 -p <port>:3333 \ 81 -e DATA_DIR=data \
78 -v <path to data>:/data \ 82 -p <port>:3333 \
79 -v <path to recipes>:/app/recipes \ 83 -v <path to data>:/data \
80 --restart unless-stopped \ 84 -v <path to recipes>:/app/recipes \
81 ferdium/ferdium-server:latest 85 --restart unless-stopped \
82 ``` 86 ferdium/ferdium-server:latest
83 87 ```
84 Alternatively, you can also use docker-compose v2 schema. An example can be found [in the docker folder](./docker/docker-compose.yml). 88
89 Alternatively, you can also use docker-compose v2 schema. An example can be found [in the docker folder](./docker/docker-compose.yml).
85 90
863. Optionally, you can [set up Nginx as a reverse proxy](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-16-04#set-up-nginx-as-a-reverse-proxy-server). 913. Optionally, you can [set up Nginx as a reverse proxy](https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-16-04#set-up-nginx-as-a-reverse-proxy-server).
87 92
88For more information on configuring the Docker image, please read [the Ferdium docker documentation](./docker/README.md). 93For more information on configuring the Docker image, please read [the Ferdium docker documentation](./docker/README.md).
94
89</details> 95</details>
90<details> 96<details>
91<summary>Manual setup</summary> 97<summary>Manual setup</summary>
@@ -97,26 +103,29 @@ For more information on configuring the Docker image, please read [the Ferdium d
975. Run `npm install` to install local dependencies 1035. Run `npm install` to install local dependencies
986. Run the database migrations with 1046. Run the database migrations with
99 105
100 ```js 106 ```js
101 node ace migration:run 107 node ace migration:run
102 ``` 108 ```
103 109
1047. Start the server with 1107. Start the server with
105 111
106 ```js 112 ```js
107 npm start 113 npm start
108 ``` 114 ```
115
109</details> 116</details>
110<details> 117<details>
111<summary>Configuration</summary> 118<summary>Configuration</summary>
112 119
113Ferdium-server's configuration is saved inside an `.env` file. Besides AdonisJS's settings, Ferdium-server has the following custom settings: 120Ferdium-server's configuration is saved inside an `.env` file. Besides AdonisJS's settings, Ferdium-server has the following custom settings:
121
114- `IS_CREATION_ENABLED` (`true` or `false`, default: `true`): Whether to enable the [creation of custom recipes](#creating-and-using-custom-recipes) 122- `IS_CREATION_ENABLED` (`true` or `false`, default: `true`): Whether to enable the [creation of custom recipes](#creating-and-using-custom-recipes)
115- `IS_REGISTRATION_ENABLED` (`true` or `false`, default: `true`): Whether to enable the creation of new user accounts 123- `IS_REGISTRATION_ENABLED` (`true` or `false`, default: `true`): Whether to enable the creation of new user accounts
116- `IS_DASHBOARD_ENABLED` (`true` or `false`, default: `true`): Whether to enable the user dashboard 124- `IS_DASHBOARD_ENABLED` (`true` or `false`, default: `true`): Whether to enable the user dashboard
117- `CONNECT_WITH_FRANZ` (`true` or `false`, default: `true`): Whether to enable connections to the Franz server. By enabling this option, Ferdium-server can: 125- `CONNECT_WITH_FRANZ` (`true` or `false`, default: `true`): Whether to enable connections to the Franz server. By enabling this option, Ferdium-server can:
118 - Show the full Franz recipe library instead of only custom recipes 126 - Show the full Franz recipe library instead of only custom recipes
119 - Import Franz accounts 127 - Import Franz accounts
128
120</details> 129</details>
121<details> 130<details>
122<summary>Importing your Franz/Ferdi account</summary> 131<summary>Importing your Franz/Ferdi account</summary>
@@ -124,11 +133,13 @@ Ferdium-server's configuration is saved inside an `.env` file. Besides AdonisJS'
124Ferdium-server allows you to import your full Franz/Ferdi account, including all its settings. 133Ferdium-server allows you to import your full Franz/Ferdi account, including all its settings.
125 134
126To import your Franz/Ferdi account, open `http://[YOUR FERDIUM-SERVER]/import` in your browser and login using your Franz/Ferdi account details. Ferdium-server will create a new user with the same credentials and copy your Franz/Ferdi settings, services and workspaces. 135To import your Franz/Ferdi account, open `http://[YOUR FERDIUM-SERVER]/import` in your browser and login using your Franz/Ferdi account details. Ferdium-server will create a new user with the same credentials and copy your Franz/Ferdi settings, services and workspaces.
136
127</details> 137</details>
128<details> 138<details>
129<summary>Transferring user data</summary> 139<summary>Transferring user data</summary>
130 140
131Please refer to <https://github.com/getferdi/ferdi/wiki/Transferring-data-between-servers> 141Please refer to <https://github.com/getferdi/ferdi/wiki/Transferring-data-between-servers>
142
132</details> 143</details>
133<details> 144<details>
134<summary>Creating and using custom recipes</summary> 145<summary>Creating and using custom recipes</summary>
@@ -149,6 +160,7 @@ To add your recipe to Ferdium-server, open `http://[YOUR FERDIUM-SERVER]/new` in
149<summary>Listing custom recipes</summary> 160<summary>Listing custom recipes</summary>
150 161
151Inside Ferdium, searching for `ferdium:custom` will list all of your custom recipes. 162Inside Ferdium, searching for `ferdium:custom` will list all of your custom recipes.
163
152</details> 164</details>
153 165
154## Contributing 166## Contributing
diff --git a/ace b/ace
deleted file mode 100644
index c175031..0000000
--- a/ace
+++ /dev/null
@@ -1,16 +0,0 @@
1/*
2|--------------------------------------------------------------------------
3| Ace Commands
4|--------------------------------------------------------------------------
5|
6| This file is the entry point for running ace commands.
7|
8*/
9
10require('reflect-metadata')
11require('source-map-support').install({ handleUncaughtExceptions: false })
12
13const { Ignitor } = require('@adonisjs/core/build/standalone')
14new Ignitor(__dirname)
15 .ace()
16 .handle(process.argv.slice(2))
diff --git a/ace-manifest.json b/ace-manifest.json
deleted file mode 100644
index d7befd2..0000000
--- a/ace-manifest.json
+++ /dev/null
@@ -1,616 +0,0 @@
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/ace.js b/ace.js
new file mode 100644
index 0000000..a313518
--- /dev/null
+++ b/ace.js
@@ -0,0 +1,24 @@
1/*
2/*
3|--------------------------------------------------------------------------
4| JavaScript entrypoint for running ace commands
5|--------------------------------------------------------------------------
6|
7| Since, we cannot run TypeScript source code using "node" binary, we need
8| a JavaScript entrypoint to run ace commands.
9|
10| This file registers the "ts-node/esm" hook with the Node.js module system
11| and then imports the "bin/console.ts" file.
12|
13*/
14
15/**
16 * Register hook to process TypeScript files using ts-node
17 */
18import { register } from 'node:module'
19register('ts-node/esm', import.meta.url)
20
21/**
22 * Import ace console entrypoint
23 */
24await import('./bin/console.js')
diff --git a/adonisrc.ts b/adonisrc.ts
new file mode 100644
index 0000000..02f47b0
--- /dev/null
+++ b/adonisrc.ts
@@ -0,0 +1,83 @@
1import { defineConfig } from '@adonisjs/core/app'
2
3export default defineConfig({
4 /*
5 |--------------------------------------------------------------------------
6 | Commands
7 |--------------------------------------------------------------------------
8 |
9 | List of ace commands to register from packages. The application commands
10 | will be scanned automatically from the "./commands" directory.
11 |
12 */
13 commands: [
14 () => import('@adonisjs/core/commands'),
15 () => import('@adonisjs/lucid/commands'),
16 () => import('@adonisjs/mail/commands'),
17 () => import('adonis5-jwt/build/commands'),
18 ],
19 /*
20 |--------------------------------------------------------------------------
21 | Preloads
22 |--------------------------------------------------------------------------
23 |
24 | List of modules to import before starting the application.
25 |
26 */
27 preloads: [
28 () => import('./start/routes.js'),
29 () => import('./start/kernel.js'),
30 () => import('./start/events.js'),
31 ],
32 /*
33 |--------------------------------------------------------------------------
34 | Service providers
35 |--------------------------------------------------------------------------
36 |
37 | List of service providers to import and register when booting the
38 | application
39 |
40 */
41 providers: [
42 () => import('./providers/AppProvider.js'),
43 () => import('@adonisjs/core/providers/app_provider'),
44 () => import('@adonisjs/core/providers/hash_provider'),
45 { file: () => import('@adonisjs/core/providers/repl_provider'), environment: ['repl', 'test'] },
46 () => import('@adonisjs/core/providers/edge_provider'),
47 () => import('@adonisjs/lucid/database_provider'),
48 () => import('@adonisjs/auth/auth_provider'),
49 () => import('@adonisjs/shield/shield_provider'),
50 () => import('@adonisjs/session/session_provider'),
51 () => import('@adonisjs/mail/mail_provider'),
52 () => import('adonis5-jwt'),
53 () => import('./providers/LegacyHasherProvider.js'),
54 ],
55 metaFiles: [
56 {
57 pattern: 'resources/views/**/*.edge',
58 reloadServer: false,
59 },
60 {
61 pattern: 'public/**',
62 reloadServer: false,
63 },
64 ],
65 /*
66 |--------------------------------------------------------------------------
67 | Tests
68 |--------------------------------------------------------------------------
69 |
70 | List of test suites to organize tests by their type. Feel free to remove
71 | and add additional suites.
72 |
73 */
74 tests: {
75 suites: [
76 {
77 name: 'functional',
78 files: ['tests/functional/**/*.spec(.ts|.js)'],
79 timeout: 60_000,
80 },
81 ],
82 },
83})
diff --git a/app/Controllers/Http/Api/Static/AnnouncementsController.ts b/app/Controllers/Http/Api/Static/AnnouncementsController.ts
index c20707b..4ae9d0e 100644
--- a/app/Controllers/Http/Api/Static/AnnouncementsController.ts
+++ b/app/Controllers/Http/Api/Static/AnnouncementsController.ts
@@ -1,20 +1,16 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; 1import type { HttpContext } from '@adonisjs/core/http'
2import Application from '@ioc:Adonis/Core/Application'; 2import { app } from '@adonisjs/core/services/app'
3import path from 'node:path'; 3import path from 'node:path'
4import fs from 'fs-extra'; 4import fs from 'fs-extra'
5 5
6export default class AnnouncementsController { 6export default class AnnouncementsController {
7 public async show({ response, params }: HttpContextContract) { 7 public async show({ response, params }: HttpContext) {
8 const announcement = path.join( 8 const announcement = path.join(app.resourcesPath(), 'announcements', `${params.version}.json`)
9 Application.resourcesPath(),
10 'announcements',
11 `${params.version}.json`,
12 );
13 9
14 if (await fs.pathExists(announcement)) { 10 if (await fs.pathExists(announcement)) {
15 return response.download(announcement); 11 return response.download(announcement)
16 } 12 }
17 13
18 return response.status(404).send('No announcement found.'); 14 return response.status(404).send('No announcement found.')
19 } 15 }
20} 16}
diff --git a/app/Controllers/Http/Api/Static/EmptyController.ts b/app/Controllers/Http/Api/Static/EmptyController.ts
index a07790e..ff05b1c 100644
--- a/app/Controllers/Http/Api/Static/EmptyController.ts
+++ b/app/Controllers/Http/Api/Static/EmptyController.ts
@@ -1,7 +1,7 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; 1import type { HttpContext } from '@adonisjs/core/http'
2 2
3export default class EmptyController { 3export default class EmptyController {
4 public async show({ response }: HttpContextContract) { 4 public async show({ response }: HttpContext) {
5 return response.send([]); 5 return response.send([])
6 } 6 }
7} 7}
diff --git a/app/Controllers/Http/Api/Static/FeaturesController.ts b/app/Controllers/Http/Api/Static/FeaturesController.ts
index d471b11..9e14c10 100644
--- a/app/Controllers/Http/Api/Static/FeaturesController.ts
+++ b/app/Controllers/Http/Api/Static/FeaturesController.ts
@@ -1,7 +1,7 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; 1import type { HttpContext } from '@adonisjs/core/http'
2 2
3export default class FeaturesController { 3export default class FeaturesController {
4 public async show({ response }: HttpContextContract) { 4 public async show({ response }: HttpContext) {
5 return response.send({ 5 return response.send({
6 isServiceProxyEnabled: true, 6 isServiceProxyEnabled: true,
7 isWorkspaceEnabled: true, 7 isWorkspaceEnabled: true,
@@ -9,6 +9,6 @@ export default class FeaturesController {
9 isSettingsWSEnabled: false, 9 isSettingsWSEnabled: false,
10 isMagicBarEnabled: true, 10 isMagicBarEnabled: true,
11 isTodosEnabled: true, 11 isTodosEnabled: true,
12 }); 12 })
13 } 13 }
14} 14}
diff --git a/app/Controllers/Http/Dashboard/AccountController.ts b/app/Controllers/Http/Dashboard/AccountController.ts
index 3c4e919..5870f19 100644
--- a/app/Controllers/Http/Dashboard/AccountController.ts
+++ b/app/Controllers/Http/Dashboard/AccountController.ts
@@ -1,29 +1,23 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; 1import type { HttpContext } from '@adonisjs/core/http'
2import { schema, rules, validator } from '@ioc:Adonis/Core/Validator'; 2import { schema, rules, validator } from '@adonisjs/validator'
3import crypto from 'node:crypto'; 3import crypto from 'node:crypto'
4 4
5export default class AccountController { 5export default class AccountController {
6 /** 6 /**
7 * Shows the user account page 7 * Shows the user account page
8 */ 8 */
9 public async show({ auth, view }: HttpContextContract) { 9 public async show({ auth, view }: HttpContext) {
10 return view.render('dashboard/account', { 10 return view.render('dashboard/account', {
11 username: auth.user?.username, 11 username: auth.user?.username,
12 email: auth.user?.email, 12 email: auth.user?.email,
13 lastname: auth.user?.lastname, 13 lastname: auth.user?.lastname,
14 }); 14 })
15 } 15 }
16 16
17 /** 17 /**
18 * Stores user account data 18 * Stores user account data
19 */ 19 */
20 public async store({ 20 public async store({ auth, request, response, session, view }: HttpContext) {
21 auth,
22 request,
23 response,
24 session,
25 view,
26 }: HttpContextContract) {
27 try { 21 try {
28 await validator.validate({ 22 await validator.validate({
29 schema: schema.create({ 23 schema: schema.create({
@@ -48,26 +42,26 @@ export default class AccountController {
48 lastname: schema.string([rules.required()]), 42 lastname: schema.string([rules.required()]),
49 }), 43 }),
50 data: request.only(['username', 'email', 'lastname']), 44 data: request.only(['username', 'email', 'lastname']),
51 }); 45 })
52 } catch (error) { 46 } catch (error) {
53 session.flash(error.messages); 47 session.flash(error.messages)
54 return response.redirect('/user/account'); 48 return response.redirect('/user/account')
55 } 49 }
56 50
57 // Update user account 51 // Update user account
58 const { user } = auth; 52 const { user } = auth
59 if (user) { 53 if (user) {
60 user.username = request.input('username'); 54 user.username = request.input('username')
61 user.lastname = request.input('lastname'); 55 user.lastname = request.input('lastname')
62 user.email = request.input('email'); 56 user.email = request.input('email')
63 if (request.input('password')) { 57 if (request.input('password')) {
64 const hashedPassword = crypto 58 const hashedPassword = crypto
65 .createHash('sha256') 59 .createHash('sha256')
66 .update(request.input('password')) 60 .update(request.input('password'))
67 .digest('base64'); 61 .digest('base64')
68 user.password = hashedPassword; 62 user.password = hashedPassword
69 } 63 }
70 await user.save(); 64 await user.save()
71 } 65 }
72 66
73 return view.render('dashboard/account', { 67 return view.render('dashboard/account', {
@@ -75,6 +69,6 @@ export default class AccountController {
75 lastname: user?.lastname, 69 lastname: user?.lastname,
76 email: user?.email, 70 email: user?.email,
77 success: user !== undefined, 71 success: user !== undefined,
78 }); 72 })
79 } 73 }
80} 74}
diff --git a/app/Controllers/Http/Dashboard/DataController.ts b/app/Controllers/Http/Dashboard/DataController.ts
index f77702f..8a77329 100644
--- a/app/Controllers/Http/Dashboard/DataController.ts
+++ b/app/Controllers/Http/Dashboard/DataController.ts
@@ -1,14 +1,14 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; 1import type { HttpContext } from '@adonisjs/core/http'
2 2
3export default class DataController { 3export default class DataController {
4 /** 4 /**
5 * Display the data page 5 * Display the data page
6 */ 6 */
7 public async show({ view, auth }: HttpContextContract) { 7 public async show({ view, auth }: HttpContext) {
8 const { user } = auth; 8 const { user } = auth
9 9
10 const services = await user?.related('services').query(); 10 const services = await user?.related('services').query()
11 const workspaces = await user?.related('workspaces').query(); 11 const workspaces = await user?.related('workspaces').query()
12 12
13 return view.render('dashboard/data', { 13 return view.render('dashboard/data', {
14 username: user?.username, 14 username: user?.username,
@@ -19,6 +19,6 @@ export default class DataController {
19 stringify: JSON.stringify, 19 stringify: JSON.stringify,
20 services, 20 services,
21 workspaces, 21 workspaces,
22 }); 22 })
23 } 23 }
24} 24}
diff --git a/app/Controllers/Http/Dashboard/DeleteController.ts b/app/Controllers/Http/Dashboard/DeleteController.ts
index ef8188c..bd824b0 100644
--- a/app/Controllers/Http/Dashboard/DeleteController.ts
+++ b/app/Controllers/Http/Dashboard/DeleteController.ts
@@ -1,20 +1,20 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; 1import type { HttpContext } from '@adonisjs/core/http'
2 2
3export default class DeleteController { 3export default class DeleteController {
4 /** 4 /**
5 * Display the delete page 5 * Display the delete page
6 */ 6 */
7 public async show({ view }: HttpContextContract) { 7 public async show({ view }: HttpContext) {
8 return view.render('dashboard/delete'); 8 return view.render('dashboard/delete')
9 } 9 }
10 10
11 /** 11 /**
12 * Delete user and session 12 * Delete user and session
13 */ 13 */
14 public async delete({ auth, response }: HttpContextContract) { 14 public async delete({ auth, response }: HttpContext) {
15 auth.user?.delete(); 15 auth.user?.delete()
16 auth.use('web').logout(); 16 auth.use('web').logout()
17 17
18 return response.redirect('/user/login'); 18 return response.redirect('/user/login')
19 } 19 }
20} 20}
diff --git a/app/Controllers/Http/Dashboard/ExportController.ts b/app/Controllers/Http/Dashboard/ExportController.ts
index 7155eab..5b6df70 100644
--- a/app/Controllers/Http/Dashboard/ExportController.ts
+++ b/app/Controllers/Http/Dashboard/ExportController.ts
@@ -1,33 +1,30 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; 1import type { HttpContext } from '@adonisjs/core/http'
2 2
3// eslint-disable-next-line @typescript-eslint/no-explicit-any 3// eslint-disable-next-line @typescript-eslint/no-explicit-any
4function deepParseToJSON(obj: any): Record<string, unknown> { 4function deepParseToJSON(obj: any): Record<string, unknown> {
5 if (typeof obj !== 'object' || obj === null) { 5 if (typeof obj !== 'object' || obj === null) {
6 try { 6 try {
7 // Try to parse the object as JSON 7 // Try to parse the object as JSON
8 return JSON.parse(obj) as Record<string, unknown>; 8 return JSON.parse(obj) as Record<string, unknown>
9 } catch { 9 } catch {
10 // If parsing fails, return the original value 10 // If parsing fails, return the original value
11 return obj; 11 return obj
12 } 12 }
13 } 13 }
14 14
15 // If obj is an object, recursively parse its keys 15 // If obj is an object, recursively parse its keys
16 if (Array.isArray(obj)) { 16 if (Array.isArray(obj)) {
17 // If obj is an array, recursively parse each element 17 // If obj is an array, recursively parse each element
18 return obj.map(item => deepParseToJSON(item)) as unknown as Record< 18 return obj.map((item) => deepParseToJSON(item)) as unknown as Record<string, unknown>
19 string,
20 unknown
21 >;
22 } else { 19 } else {
23 // If obj is an object, recursively parse its keys 20 // If obj is an object, recursively parse its keys
24 const parsedObj: Record<string, unknown> = {}; 21 const parsedObj: Record<string, unknown> = {}
25 for (const key in obj) { 22 for (const key in obj) {
26 if (obj.hasOwnProperty(key)) { 23 if (obj.hasOwnProperty(key)) {
27 parsedObj[key] = deepParseToJSON(obj[key]); 24 parsedObj[key] = deepParseToJSON(obj[key])
28 } 25 }
29 } 26 }
30 return parsedObj; 27 return parsedObj
31 } 28 }
32} 29}
33 30
@@ -35,10 +32,10 @@ export default class ExportController {
35 /** 32 /**
36 * Display the export page 33 * Display the export page
37 */ 34 */
38 public async show({ auth, response }: HttpContextContract) { 35 public async show({ auth, response }: HttpContext) {
39 const user = auth.user!; 36 const user = auth.user!
40 const services = await user.related('services').query(); 37 const services = await user.related('services').query()
41 const workspaces = await user.related('workspaces').query(); 38 const workspaces = await user.related('workspaces').query()
42 39
43 const exportData = { 40 const exportData = {
44 username: user.username, 41 username: user.username,
@@ -46,11 +43,11 @@ export default class ExportController {
46 mail: user.email, 43 mail: user.email,
47 services: deepParseToJSON(JSON.parse(JSON.stringify(services))), 44 services: deepParseToJSON(JSON.parse(JSON.stringify(services))),
48 workspaces: deepParseToJSON(JSON.parse(JSON.stringify(workspaces))), 45 workspaces: deepParseToJSON(JSON.parse(JSON.stringify(workspaces))),
49 }; 46 }
50 47
51 return response 48 return response
52 .header('Content-Type', 'application/force-download') 49 .header('Content-Type', 'application/force-download')
53 .header('Content-disposition', 'attachment; filename=export.ferdium-data') 50 .header('Content-disposition', 'attachment; filename=export.ferdium-data')
54 .send(exportData); 51 .send(exportData)
55 } 52 }
56} 53}
diff --git a/app/Controllers/Http/Dashboard/ForgotPasswordController.ts b/app/Controllers/Http/Dashboard/ForgotPasswordController.ts
index da05bbd..f7b1d0e 100644
--- a/app/Controllers/Http/Dashboard/ForgotPasswordController.ts
+++ b/app/Controllers/Http/Dashboard/ForgotPasswordController.ts
@@ -1,41 +1,41 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; 1import type { HttpContext } from '@adonisjs/core/http'
2import { schema, rules, validator } from '@ioc:Adonis/Core/Validator'; 2import { schema, rules, validator } from '@adonisjs/validator'
3import User from 'App/Models/User'; 3import User from '#app/Models/User'
4 4
5export default class ForgotPasswordController { 5export default class ForgotPasswordController {
6 /** 6 /**
7 * Display the forgot password form 7 * Display the forgot password form
8 */ 8 */
9 public async show({ view }: HttpContextContract) { 9 public async show({ view }: HttpContext) {
10 return view.render('dashboard/forgotPassword'); 10 return view.render('dashboard/forgotPassword')
11 } 11 }
12 12
13 /** 13 /**
14 * Send forget password email to user 14 * Send forget password email to user
15 */ 15 */
16 public async forgotPassword({ view, request }: HttpContextContract) { 16 public async forgotPassword({ view, request }: HttpContext) {
17 try { 17 try {
18 await validator.validate({ 18 await validator.validate({
19 schema: schema.create({ 19 schema: schema.create({
20 mail: schema.string([rules.email(), rules.required()]), 20 mail: schema.string([rules.email(), rules.required()]),
21 }), 21 }),
22 data: request.only(['mail']), 22 data: request.only(['mail']),
23 }); 23 })
24 } catch { 24 } catch {
25 return view.render('others/message', { 25 return view.render('others/message', {
26 heading: 'Cannot reset your password', 26 heading: 'Cannot reset your password',
27 text: 'Please enter a valid email address', 27 text: 'Please enter a valid email address',
28 }); 28 })
29 } 29 }
30 30
31 try { 31 try {
32 const user = await User.findByOrFail('email', request.input('mail')); 32 const user = await User.findByOrFail('email', request.input('mail'))
33 await user.forgotPassword(); 33 await user.forgotPassword()
34 } catch {} 34 } catch {}
35 35
36 return view.render('others/message', { 36 return view.render('others/message', {
37 heading: 'Reset password', 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.', 38 text: 'If your provided E-Mail address is linked to an account, we have just sent an E-Mail to that address.',
39 }); 39 })
40 } 40 }
41} 41}
diff --git a/app/Controllers/Http/Dashboard/LogOutController.ts b/app/Controllers/Http/Dashboard/LogOutController.ts
index 41cbd31..5d250c4 100644
--- a/app/Controllers/Http/Dashboard/LogOutController.ts
+++ b/app/Controllers/Http/Dashboard/LogOutController.ts
@@ -1,12 +1,12 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; 1import type { HttpContext } from '@adonisjs/core/http'
2 2
3export default class LogOutController { 3export default class LogOutController {
4 /** 4 /**
5 * Login a user 5 * Login a user
6 */ 6 */
7 public async logout({ auth, response }: HttpContextContract) { 7 public async logout({ auth, response }: HttpContext) {
8 auth.logout(); 8 auth.logout()
9 9
10 return response.redirect('/user/login'); 10 return response.redirect('/user/login')
11 } 11 }
12} 12}
diff --git a/app/Controllers/Http/Dashboard/LoginController.ts b/app/Controllers/Http/Dashboard/LoginController.ts
index ffb9eeb..5a54448 100644
--- a/app/Controllers/Http/Dashboard/LoginController.ts
+++ b/app/Controllers/Http/Dashboard/LoginController.ts
@@ -1,26 +1,21 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; 1import type { HttpContext } from '@adonisjs/core/http'
2import { schema, rules, validator } from '@ioc:Adonis/Core/Validator'; 2import { schema, rules, validator } from '@adonisjs/validator'
3import User from 'App/Models/User'; 3import User from '#app/Models/User'
4import crypto from 'node:crypto'; 4import crypto from 'node:crypto'
5import { handleVerifyAndReHash } from '../../../../helpers/PasswordHash'; 5import { handleVerifyAndReHash } from '../../../../helpers/PasswordHash.js'
6 6
7export default class LoginController { 7export default class LoginController {
8 /** 8 /**
9 * Display the login form 9 * Display the login form
10 */ 10 */
11 public async show({ view }: HttpContextContract) { 11 public async show({ view }: HttpContext) {
12 return view.render('dashboard/login'); 12 return view.render('dashboard/login')
13 } 13 }
14 14
15 /** 15 /**
16 * Login a user 16 * Login a user
17 */ 17 */
18 public async login({ 18 public async login({ request, response, auth, session }: HttpContext) {
19 request,
20 response,
21 auth,
22 session,
23 }: HttpContextContract) {
24 try { 19 try {
25 await validator.validate({ 20 await validator.validate({
26 schema: schema.create({ 21 schema: schema.create({
@@ -28,54 +23,51 @@ export default class LoginController {
28 password: schema.string([rules.required()]), 23 password: schema.string([rules.required()]),
29 }), 24 }),
30 data: request.only(['mail', 'password']), 25 data: request.only(['mail', 'password']),
31 }); 26 })
32 } catch { 27 } catch {
33 session.flash({ 28 session.flash({
34 type: 'danger', 29 type: 'danger',
35 message: 'Invalid mail or password', 30 message: 'Invalid mail or password',
36 }); 31 })
37 session.flashExcept(['password']); 32 session.flashExcept(['password'])
38 33
39 return response.redirect('/user/login'); 34 return response.redirect('/user/login')
40 } 35 }
41 36
42 try { 37 try {
43 const { mail, password } = request.all(); 38 const { mail, password } = request.all()
44 39
45 // Check if user with email exists 40 // Check if user with email exists
46 const user = await User.query().where('email', mail).first(); 41 const user = await User.query().where('email', mail).first()
47 if (!user?.email) { 42 if (!user?.email) {
48 throw new Error('User credentials not valid (Invalid email)'); 43 throw new Error('User credentials not valid (Invalid email)')
49 } 44 }
50 45
51 const hashedPassword = crypto 46 const hashedPassword = crypto.createHash('sha256').update(password).digest('base64')
52 .createHash('sha256')
53 .update(password)
54 .digest('base64');
55 47
56 // Verify password 48 // Verify password
57 let isMatchedPassword = false; 49 let isMatchedPassword = false
58 try { 50 try {
59 isMatchedPassword = await handleVerifyAndReHash(user, hashedPassword); 51 isMatchedPassword = await handleVerifyAndReHash(user, hashedPassword)
60 } catch (error) { 52 } catch (error) {
61 return response.internalServerError({ message: error.message }); 53 return response.internalServerError({ message: error.message })
62 } 54 }
63 55
64 if (!isMatchedPassword) { 56 if (!isMatchedPassword) {
65 throw new Error('User credentials not valid (Invalid password)'); 57 throw new Error('User credentials not valid (Invalid password)')
66 } 58 }
67 59
68 await auth.use('web').login(user); 60 await auth.use('web').login(user)
69 61
70 return response.redirect('/user/account'); 62 return response.redirect('/user/account')
71 } catch { 63 } catch {
72 session.flash({ 64 session.flash({
73 type: 'danger', 65 type: 'danger',
74 message: 'Invalid mail or password', 66 message: 'Invalid mail or password',
75 }); 67 })
76 session.flashExcept(['password']); 68 session.flashExcept(['password'])
77 69
78 return response.redirect('/user/login'); 70 return response.redirect('/user/login')
79 } 71 }
80 } 72 }
81} 73}
diff --git a/app/Controllers/Http/Dashboard/ResetPasswordController.ts b/app/Controllers/Http/Dashboard/ResetPasswordController.ts
index 0b9053f..b62b5d2 100644
--- a/app/Controllers/Http/Dashboard/ResetPasswordController.ts
+++ b/app/Controllers/Http/Dashboard/ResetPasswordController.ts
@@ -1,35 +1,30 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; 1import type { HttpContext } from '@adonisjs/core/http'
2import { schema, rules, validator } from '@ioc:Adonis/Core/Validator'; 2import { schema, rules, validator } from '@adonisjs/validator'
3import Token from 'App/Models/Token'; 3import Token from '#app/Models/Token'
4import moment from 'moment'; 4import moment from 'moment'
5import crypto from 'node:crypto'; 5import crypto from 'node:crypto'
6 6
7export default class ResetPasswordController { 7export default class ResetPasswordController {
8 /** 8 /**
9 * Display the reset password form 9 * Display the reset password form
10 */ 10 */
11 public async show({ view, request }: HttpContextContract) { 11 public async show({ view, request }: HttpContext) {
12 const { token } = request.qs(); 12 const { token } = request.qs()
13 13
14 if (token) { 14 if (token) {
15 return view.render('dashboard/resetPassword', { token }); 15 return view.render('dashboard/resetPassword', { token })
16 } 16 }
17 17
18 return view.render('others/message', { 18 return view.render('others/message', {
19 heading: 'Invalid token', 19 heading: 'Invalid token',
20 text: 'Please make sure you are using a valid and recent link to reset your password.', 20 text: 'Please make sure you are using a valid and recent link to reset your password.',
21 }); 21 })
22 } 22 }
23 23
24 /** 24 /**
25 * Resets user password 25 * Resets user password
26 */ 26 */
27 public async resetPassword({ 27 public async resetPassword({ response, request, session, view }: HttpContext) {
28 response,
29 request,
30 session,
31 view,
32 }: HttpContextContract) {
33 try { 28 try {
34 await validator.validate({ 29 await validator.validate({
35 schema: schema.create({ 30 schema: schema.create({
@@ -37,14 +32,14 @@ export default class ResetPasswordController {
37 token: schema.string([rules.required()]), 32 token: schema.string([rules.required()]),
38 }), 33 }),
39 data: request.only(['password', 'password_confirmation', 'token']), 34 data: request.only(['password', 'password_confirmation', 'token']),
40 }); 35 })
41 } catch { 36 } catch {
42 session.flash({ 37 session.flash({
43 type: 'danger', 38 type: 'danger',
44 message: 'Passwords do not match', 39 message: 'Passwords do not match',
45 }); 40 })
46 41
47 return response.redirect(`/user/reset?token=${request.input('token')}`); 42 return response.redirect(`/user/reset?token=${request.input('token')}`)
48 } 43 }
49 44
50 const tokenRow = await Token.query() 45 const tokenRow = await Token.query()
@@ -52,34 +47,30 @@ export default class ResetPasswordController {
52 .where('token', request.input('token')) 47 .where('token', request.input('token'))
53 .where('type', 'forgot_password') 48 .where('type', 'forgot_password')
54 .where('is_revoked', false) 49 .where('is_revoked', false)
55 .where( 50 .where('updated_at', '>=', moment().subtract(24, 'hours').format('YYYY-MM-DD HH:mm:ss'))
56 'updated_at', 51 .first()
57 '>=',
58 moment().subtract(24, 'hours').format('YYYY-MM-DD HH:mm:ss'),
59 )
60 .first();
61 52
62 if (!tokenRow) { 53 if (!tokenRow) {
63 return view.render('others/message', { 54 return view.render('others/message', {
64 heading: 'Cannot reset your password', 55 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.', 56 text: 'Please make sure you are using a valid and recent link to reset your password and that your passwords entered match.',
66 }); 57 })
67 } 58 }
68 59
69 // Update user password 60 // Update user password
70 const hashedPassword = crypto 61 const hashedPassword = crypto
71 .createHash('sha256') 62 .createHash('sha256')
72 .update(request.input('password')) 63 .update(request.input('password'))
73 .digest('base64'); 64 .digest('base64')
74 tokenRow.user.password = hashedPassword; 65 tokenRow.user.password = hashedPassword
75 await tokenRow.user.save(); 66 await tokenRow.user.save()
76 67
77 // Delete token to prevent it from being used again 68 // Delete token to prevent it from being used again
78 await tokenRow.delete(); 69 await tokenRow.delete()
79 70
80 return view.render('others/message', { 71 return view.render('others/message', {
81 heading: 'Reset password', 72 heading: 'Reset password',
82 text: 'Successfully reset your password. You can now login to your account using your new password.', 73 text: 'Successfully reset your password. You can now login to your account using your new password.',
83 }); 74 })
84 } 75 }
85} 76}
diff --git a/app/Controllers/Http/Dashboard/TransferController.ts b/app/Controllers/Http/Dashboard/TransferController.ts
index b113e50..0296973 100644
--- a/app/Controllers/Http/Dashboard/TransferController.ts
+++ b/app/Controllers/Http/Dashboard/TransferController.ts
@@ -1,8 +1,8 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; 1import type { HttpContext } from '@adonisjs/core/http'
2import { schema, validator } from '@ioc:Adonis/Core/Validator'; 2import { schema, validator } from '@adonisjs/validator'
3import Service from 'App/Models/Service'; 3import Service from '#app/Models/Service'
4import Workspace from 'App/Models/Workspace'; 4import Workspace from '#app/Models/Workspace'
5import { v4 as uuidv4 } from 'uuid'; 5import { v4 as uuidv4 } from 'uuid'
6 6
7const importSchema = schema.create({ 7const importSchema = schema.create({
8 username: schema.string(), 8 username: schema.string(),
@@ -10,58 +10,52 @@ const importSchema = schema.create({
10 mail: schema.string(), 10 mail: schema.string(),
11 services: schema.array().anyMembers(), 11 services: schema.array().anyMembers(),
12 workspaces: schema.array().anyMembers(), 12 workspaces: schema.array().anyMembers(),
13}); 13})
14 14
15export default class TransferController { 15export default class TransferController {
16 /** 16 /**
17 * Display the transfer page 17 * Display the transfer page
18 */ 18 */
19 public async show({ view }: HttpContextContract) { 19 public async show({ view }: HttpContext) {
20 return view.render('dashboard/transfer'); 20 return view.render('dashboard/transfer')
21 } 21 }
22 22
23 public async import({ 23 public async import({ auth, request, response, session, view }: HttpContext) {
24 auth, 24 let file
25 request,
26 response,
27 session,
28 view,
29 }: HttpContextContract) {
30 let file;
31 try { 25 try {
32 file = await validator.validate({ 26 file = await validator.validate({
33 schema: importSchema, 27 schema: importSchema,
34 data: JSON.parse(request.body().file), 28 data: JSON.parse(request.body().file),
35 }); 29 })
36 } catch { 30 } catch {
37 session.flash({ 31 session.flash({
38 message: 'Invalid Ferdium account file', 32 message: 'Invalid Ferdium account file',
39 }); 33 })
40 34
41 return response.redirect('/user/transfer'); 35 return response.redirect('/user/transfer')
42 } 36 }
43 37
44 if (!file?.services || !file.workspaces) { 38 if (!file?.services || !file.workspaces) {
45 session.flash({ 39 session.flash({
46 type: 'danger', 40 type: 'danger',
47 message: 'Invalid Ferdium account file (2)', 41 message: 'Invalid Ferdium account file (2)',
48 }); 42 })
49 return response.redirect('/user/transfer'); 43 return response.redirect('/user/transfer')
50 } 44 }
51 45
52 const serviceIdTranslation = {}; 46 const serviceIdTranslation = {}
53 47
54 // Import services 48 // Import services
55 try { 49 try {
56 for (const service of file.services) { 50 for (const service of file.services) {
57 // Get new, unused uuid 51 // Get new, unused uuid
58 let serviceId; 52 let serviceId
59 do { 53 do {
60 serviceId = uuidv4(); 54 serviceId = uuidv4()
61 } while ( 55 } while (
62 // eslint-disable-next-line no-await-in-loop, unicorn/no-await-expression-member 56 // eslint-disable-next-line no-await-in-loop, unicorn/no-await-expression-member
63 (await Service.query().where('serviceId', serviceId)).length > 0 57 (await Service.query().where('serviceId', serviceId)).length > 0
64 ); 58 )
65 59
66 // eslint-disable-next-line no-await-in-loop 60 // eslint-disable-next-line no-await-in-loop
67 await Service.create({ 61 await Service.create({
@@ -73,38 +67,37 @@ export default class TransferController {
73 typeof service.settings === 'string' 67 typeof service.settings === 'string'
74 ? service.settings 68 ? service.settings
75 : JSON.stringify(service.settings), 69 : JSON.stringify(service.settings),
76 }); 70 })
77 71
78 // @ts-expect-error Element implicitly has an 'any' type because expression of type 'any' can't be used to index type '{}' 72 // @ts-expect-error Element implicitly has an 'any' type because expression of type 'any' can't be used to index type '{}'
79 serviceIdTranslation[service.service_id || service.serviceId] = 73 serviceIdTranslation[service.service_id || service.serviceId] = serviceId
80 serviceId;
81 } 74 }
82 } catch (error) { 75 } catch (error) {
83 // eslint-disable-next-line no-console 76 // eslint-disable-next-line no-console
84 console.log(error); 77 console.log(error)
85 const errorMessage = `Could not import your services into our system.\nError: ${error}`; 78 const errorMessage = `Could not import your services into our system.\nError: ${error}`
86 return view.render('others/message', { 79 return view.render('others/message', {
87 heading: 'Error while importing', 80 heading: 'Error while importing',
88 text: errorMessage, 81 text: errorMessage,
89 }); 82 })
90 } 83 }
91 84
92 // Import workspaces 85 // Import workspaces
93 try { 86 try {
94 for (const workspace of file.workspaces) { 87 for (const workspace of file.workspaces) {
95 let workspaceId; 88 let workspaceId
96 89
97 do { 90 do {
98 workspaceId = uuidv4(); 91 workspaceId = uuidv4()
99 } while ( 92 } while (
100 // eslint-disable-next-line no-await-in-loop, unicorn/no-await-expression-member 93 // eslint-disable-next-line no-await-in-loop, unicorn/no-await-expression-member
101 (await Workspace.query().where('workspaceId', workspaceId)).length > 0 94 (await Workspace.query().where('workspaceId', workspaceId)).length > 0
102 ); 95 )
103 96
104 const services = workspace.services.map( 97 const services = workspace.services.map(
105 // @ts-expect-error Parameter 'service' implicitly has an 'any' type. 98 // @ts-expect-error Parameter 'service' implicitly has an 'any' type.
106 service => serviceIdTranslation[service], 99 (service) => serviceIdTranslation[service]
107 ); 100 )
108 101
109 // eslint-disable-next-line no-await-in-loop 102 // eslint-disable-next-line no-await-in-loop
110 await Workspace.create({ 103 await Workspace.create({
@@ -114,22 +107,20 @@ export default class TransferController {
114 order: workspace.order, 107 order: workspace.order,
115 services: JSON.stringify(services), 108 services: JSON.stringify(services),
116 data: 109 data:
117 typeof workspace.data === 'string' 110 typeof workspace.data === 'string' ? workspace.data : JSON.stringify(workspace.data),
118 ? workspace.data 111 })
119 : JSON.stringify(workspace.data),
120 });
121 } 112 }
122 } catch (error) { 113 } catch (error) {
123 const errorMessage = `Could not import your workspaces into our system.\nError: ${error}`; 114 const errorMessage = `Could not import your workspaces into our system.\nError: ${error}`
124 return view.render('others/message', { 115 return view.render('others/message', {
125 heading: 'Error while importing', 116 heading: 'Error while importing',
126 text: errorMessage, 117 text: errorMessage,
127 }); 118 })
128 } 119 }
129 120
130 return view.render('others/message', { 121 return view.render('others/message', {
131 heading: 'Successfully imported', 122 heading: 'Successfully imported',
132 text: 'Your account has been imported, you can now login as usual!', 123 text: 'Your account has been imported, you can now login as usual!',
133 }); 124 })
134 } 125 }
135} 126}
diff --git a/app/Controllers/Http/DashboardController.ts b/app/Controllers/Http/DashboardController.ts
index a6f5b44..2a9fb13 100644
--- a/app/Controllers/Http/DashboardController.ts
+++ b/app/Controllers/Http/DashboardController.ts
@@ -1,4 +1,4 @@
1// import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' 1// import type { HttpContext } from '@adonisjs/core/http';
2 2
3export default class DashboardController {} 3export default class DashboardController {}
4 4
diff --git a/app/Controllers/Http/HealthController.ts b/app/Controllers/Http/HealthController.ts
index bf185d8..59094e2 100644
--- a/app/Controllers/Http/HealthController.ts
+++ b/app/Controllers/Http/HealthController.ts
@@ -5,6 +5,6 @@ export default class HealthController {
5 return { 5 return {
6 api: 'success', 6 api: 'success',
7 db: 'success', 7 db: 'success',
8 }; 8 }
9 } 9 }
10} 10}
diff --git a/app/Controllers/Http/HomeController.ts b/app/Controllers/Http/HomeController.ts
index dbe9fbd..669d970 100644
--- a/app/Controllers/Http/HomeController.ts
+++ b/app/Controllers/Http/HomeController.ts
@@ -1,9 +1,9 @@
1// import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' 1// import type { HttpContext } from '@adonisjs/core/http'
2 2
3export default class HomeController { 3export default class HomeController {
4 public async index() { 4 public async index() {
5 // TODO: Actually do something instead of alwayas returning success. 5 // TODO: Actually do something instead of alwayas returning success.
6 6
7 return { hello: 'world' }; 7 return { hello: 'world' }
8 } 8 }
9} 9}
diff --git a/app/Controllers/Http/RecipeController.ts b/app/Controllers/Http/RecipeController.ts
index 5186a11..e43bcf8 100644
--- a/app/Controllers/Http/RecipeController.ts
+++ b/app/Controllers/Http/RecipeController.ts
@@ -1,13 +1,13 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; 1import type { HttpContext } from '@adonisjs/core/http'
2import fs from 'fs-extra'; 2import fs from 'fs-extra'
3import Application from '@ioc:Adonis/Core/Application'; 3import { app } from '@adonisjs/core/services/app'
4import path from 'node:path'; 4import path from 'node:path'
5import Recipe from 'App/Models/Recipe'; 5import Recipe from '#app/Models/Recipe'
6import { isCreationEnabled } from 'Config/app'; 6import { isCreationEnabled } from '#config/app'
7import { validator, schema, rules } from '@ioc:Adonis/Core/Validator'; 7import { validator, schema, rules } from '@adonisjs/validator'
8import targz from 'targz'; 8import targz from 'targz'
9import semver from 'semver'; 9import semver from 'semver'
10import Drive from '@ioc:Adonis/Core/Drive'; 10import Drive from '@ioc:Adonis/Core/Drive'
11 11
12// TODO: This file needs to be refactored and cleaned up to include types 12// TODO: This file needs to be refactored and cleaned up to include types
13 13
@@ -18,17 +18,17 @@ const createSchema = schema.create({
18 // author: 'required|accepted', 18 // author: 'required|accepted',
19 author: schema.string(), 19 author: schema.string(),
20 svg: schema.string([rules.url()]), 20 svg: schema.string([rules.url()]),
21}); 21})
22 22
23const searchSchema = schema.create({ 23const searchSchema = schema.create({
24 needle: schema.string(), 24 needle: schema.string(),
25}); 25})
26 26
27const downloadSchema = schema.create({ 27const downloadSchema = schema.create({
28 // TODO: Check if this is correct 28 // TODO: Check if this is correct
29 // recipe: 'required|accepted', 29 // recipe: 'required|accepted',
30 recipe: schema.string(), 30 recipe: schema.string(),
31}); 31})
32 32
33const compress = (src: string, dest: string) => 33const compress = (src: string, dest: string) =>
34 new Promise((resolve, reject) => { 34 new Promise((resolve, reject) => {
@@ -37,87 +37,76 @@ const compress = (src: string, dest: string) =>
37 src, 37 src,
38 dest, 38 dest,
39 }, 39 },
40 err => { 40 (err) => {
41 if (err) { 41 if (err) {
42 reject(err); 42 reject(err)
43 } else { 43 } else {
44 resolve(dest); 44 resolve(dest)
45 } 45 }
46 }, 46 }
47 ); 47 )
48 }); 48 })
49 49
50export default class RecipesController { 50export default class RecipesController {
51 // List official and custom recipes 51 // List official and custom recipes
52 public async list({ response }: HttpContextContract) { 52 public async list({ response }: HttpContext) {
53 const officialRecipes = fs.readJsonSync( 53 const officialRecipes = fs.readJsonSync(path.join(app.appRoot, 'recipes', 'all.json'))
54 path.join(Application.appRoot, 'recipes', 'all.json'), 54 const customRecipesArray = await Recipe.all()
55 ); 55 const customRecipes = customRecipesArray.map((recipe) => ({
56 const customRecipesArray = await Recipe.all();
57 const customRecipes = customRecipesArray.map(recipe => ({
58 id: recipe.recipeId, 56 id: recipe.recipeId,
59 name: recipe.name, 57 name: recipe.name,
60 ...(typeof recipe.data === 'string' 58 ...(typeof recipe.data === 'string' ? JSON.parse(recipe.data) : recipe.data),
61 ? JSON.parse(recipe.data) 59 }))
62 : recipe.data),
63 }));
64 60
65 const recipes = [...officialRecipes, ...customRecipes]; 61 const recipes = [...officialRecipes, ...customRecipes]
66 62
67 return response.send(recipes); 63 return response.send(recipes)
68 } 64 }
69 65
70 // TODO: Test this endpoint 66 // TODO: Test this endpoint
71 // Create a new recipe using the new.html page 67 // Create a new recipe using the new.html page
72 public async create({ request, response }: HttpContextContract) { 68 public async create({ request, response }: HttpContext) {
73 // Check if recipe creation is enabled 69 // Check if recipe creation is enabled
74 if (isCreationEnabled === 'false') { 70 if (isCreationEnabled === 'false') {
75 return response.send( 71 return response.send("This server doesn't allow the creation of new recipes.")
76 'This server doesn\'t allow the creation of new recipes.',
77 );
78 } 72 }
79 73
80 // Validate user input 74 // Validate user input
81 let data; 75 let data
82 try { 76 try {
83 data = await request.validate({ schema: createSchema }); 77 data = await request.validate({ schema: createSchema })
84 } catch (error) { 78 } catch (error) {
85 return response.status(401).send({ 79 return response.status(401).send({
86 message: 'Invalid POST arguments', 80 message: 'Invalid POST arguments',
87 messages: error.messages, 81 messages: error.messages,
88 status: 401, 82 status: 401,
89 }); 83 })
90 } 84 }
91 85
92 if (!data.id) { 86 if (!data.id) {
93 return response.send('Please provide an ID'); 87 return response.send('Please provide an ID')
94 } 88 }
95 89
96 // Check for invalid characters 90 // Check for invalid characters
97 if (/\.+/.test(data.id) || /\/+/.test(data.id)) { 91 if (/\.+/.test(data.id) || /\/+/.test(data.id)) {
98 return response.send( 92 return response.send('Invalid recipe name. Your recipe name may not contain "." or "/"')
99 'Invalid recipe name. Your recipe name may not contain "." or "/"',
100 );
101 } 93 }
102 94
103 // Clear temporary recipe folder 95 // Clear temporary recipe folder
104 await fs.emptyDir(Application.tmpPath('recipe')); 96 await fs.emptyDir(app.tmpPath('recipe'))
105 97
106 // Move uploaded files to temporary path 98 // Move uploaded files to temporary path
107 const files = request.file('files'); 99 const files = request.file('files')
108 if (!files) { 100 if (!files) {
109 return response.abort('Error processsing files.'); 101 return response.abort('Error processsing files.')
110 } 102 }
111 await files.move(Application.tmpPath('recipe')); 103 await files.move(app.tmpPath('recipe'))
112 104
113 // Compress files to .tar.gz file 105 // Compress files to .tar.gz file
114 const source = Application.tmpPath('recipe'); 106 const source = app.tmpPath('recipe')
115 const destination = path.join( 107 const destination = path.join(app.appRoot, `/recipes/archives/${data.id}.tar.gz`)
116 Application.appRoot,
117 `/recipes/archives/${data.id}.tar.gz`,
118 );
119 108
120 compress(source, destination); 109 compress(source, destination)
121 110
122 // Create recipe in db 111 // Create recipe in db
123 await Recipe.create({ 112 await Recipe.create({
@@ -132,123 +121,111 @@ export default class RecipesController {
132 svg: data.svg, 121 svg: data.svg,
133 }, 122 },
134 }), 123 }),
135 }); 124 })
136 125
137 return response.send('Created new recipe'); 126 return response.send('Created new recipe')
138 } 127 }
139 128
140 // Search official and custom recipes 129 // Search official and custom recipes
141 public async search({ request, response }: HttpContextContract) { 130 public async search({ request, response }: HttpContext) {
142 // Validate user input 131 // Validate user input
143 let data; 132 let data
144 try { 133 try {
145 data = await request.validate({ schema: searchSchema }); 134 data = await request.validate({ schema: searchSchema })
146 } catch (error) { 135 } catch (error) {
147 return response.status(401).send({ 136 return response.status(401).send({
148 message: 'Please provide a needle', 137 message: 'Please provide a needle',
149 messages: error.messages, 138 messages: error.messages,
150 status: 401, 139 status: 401,
151 }); 140 })
152 } 141 }
153 142
154 const { needle } = data; 143 const { needle } = data
155 144
156 // Get results 145 // Get results
157 let results; 146 let results
158 147
159 if (needle === 'ferdium:custom') { 148 if (needle === 'ferdium:custom') {
160 const dbResults = await Recipe.all(); 149 const dbResults = await Recipe.all()
161 results = dbResults.map(recipe => ({ 150 results = dbResults.map((recipe) => ({
162 id: recipe.recipeId, 151 id: recipe.recipeId,
163 name: recipe.name, 152 name: recipe.name,
164 ...(typeof recipe.data === 'string' 153 ...(typeof recipe.data === 'string' ? JSON.parse(recipe.data) : recipe.data),
165 ? JSON.parse(recipe.data) 154 }))
166 : recipe.data),
167 }));
168 } else { 155 } else {
169 const localResultsArray = await Recipe.query().where( 156 const localResultsArray = await Recipe.query().where('name', 'LIKE', `%${needle}%`)
170 'name', 157 results = localResultsArray.map((recipe) => ({
171 'LIKE',
172 `%${needle}%`,
173 );
174 results = localResultsArray.map(recipe => ({
175 id: recipe.recipeId, 158 id: recipe.recipeId,
176 name: recipe.name, 159 name: recipe.name,
177 ...(typeof recipe.data === 'string' 160 ...(typeof recipe.data === 'string' ? JSON.parse(recipe.data) : recipe.data),
178 ? JSON.parse(recipe.data) 161 }))
179 : recipe.data),
180 }));
181 } 162 }
182 163
183 return response.send(results); 164 return response.send(results)
184 } 165 }
185 166
186 public popularRecipes({ response }: HttpContextContract) { 167 public popularRecipes({ response }: HttpContext) {
187 return response.send( 168 return response.send(
188 fs 169 fs
189 .readJsonSync(path.join(Application.appRoot, 'recipes', 'all.json')) 170 .readJsonSync(path.join(app.appRoot, 'recipes', 'all.json'))
190 // eslint-disable-next-line @typescript-eslint/no-explicit-any 171 // eslint-disable-next-line @typescript-eslint/no-explicit-any
191 .filter((recipe: any) => recipe.featured), 172 .filter((recipe: any) => recipe.featured)
192 ); 173 )
193 } 174 }
194 175
195 // TODO: test this endpoint 176 // TODO: test this endpoint
196 public update({ request, response }: HttpContextContract) { 177 public update({ request, response }: HttpContext) {
197 const updates = []; 178 const updates = []
198 const recipes = request.all(); 179 const recipes = request.all()
199 const allJson = fs.readJsonSync( 180 const allJson = fs.readJsonSync(path.join(app.appRoot, 'recipes', 'all.json'))
200 path.join(Application.appRoot, 'recipes', 'all.json'),
201 );
202 181
203 for (const recipe of Object.keys(recipes)) { 182 for (const recipe of Object.keys(recipes)) {
204 const version = recipes[recipe]; 183 const version = recipes[recipe]
205 184
206 // Find recipe in local recipe repository 185 // Find recipe in local recipe repository
207 // eslint-disable-next-line @typescript-eslint/no-explicit-any 186 // eslint-disable-next-line @typescript-eslint/no-explicit-any
208 const localRecipe = allJson.find((r: any) => r.id === recipe); 187 const localRecipe = allJson.find((r: any) => r.id === recipe)
209 if (localRecipe && semver.lt(version, localRecipe.version)) { 188 if (localRecipe && semver.lt(version, localRecipe.version)) {
210 updates.push(recipe); 189 updates.push(recipe)
211 } 190 }
212 } 191 }
213 192
214 return response.send(updates); 193 return response.send(updates)
215 } 194 }
216 195
217 // TODO: test this endpoint 196 // TODO: test this endpoint
218 // Download a recipe 197 // Download a recipe
219 public async download({ response, params }: HttpContextContract) { 198 public async download({ response, params }: HttpContext) {
220 // Validate user input 199 // Validate user input
221 let data; 200 let data
222 try { 201 try {
223 data = await validator.validate({ 202 data = await validator.validate({
224 data: params, 203 data: params,
225 schema: downloadSchema, 204 schema: downloadSchema,
226 }); 205 })
227 } catch (error) { 206 } catch (error) {
228 return response.status(401).send({ 207 return response.status(401).send({
229 message: 'Please provide a recipe ID', 208 message: 'Please provide a recipe ID',
230 messages: error.messages, 209 messages: error.messages,
231 status: 401, 210 status: 401,
232 }); 211 })
233 } 212 }
234 213
235 const service = data.recipe; 214 const service = data.recipe
236 215
237 // Check for invalid characters 216 // Check for invalid characters
238 if (/\.+/.test(service) || /\/+/.test(service)) { 217 if (/\.+/.test(service) || /\/+/.test(service)) {
239 return response.send('Invalid recipe name'); 218 return response.send('Invalid recipe name')
240 } 219 }
241 220
242 // Check if recipe exists in recipes folder 221 // Check if recipe exists in recipes folder
243 if (await Drive.exists(`${service}.tar.gz`)) { 222 if (await Drive.exists(`${service}.tar.gz`)) {
244 return response 223 return response.type('.tar.gz').send(await Drive.get(`${service}.tar.gz`))
245 .type('.tar.gz')
246 .send(await Drive.get(`${service}.tar.gz`));
247 } 224 }
248 225
249 return response.status(400).send({ 226 return response.status(400).send({
250 message: 'Recipe not found', 227 message: 'Recipe not found',
251 code: 'recipe-not-found', 228 code: 'recipe-not-found',
252 }); 229 })
253 } 230 }
254} 231}
diff --git a/app/Controllers/Http/ServiceController.ts b/app/Controllers/Http/ServiceController.ts
index 76e72e4..9988244 100644
--- a/app/Controllers/Http/ServiceController.ts
+++ b/app/Controllers/Http/ServiceController.ts
@@ -1,49 +1,49 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; 1import type { HttpContext } from '@adonisjs/core/http'
2import { schema } from '@ioc:Adonis/Core/Validator'; 2import { schema } from '@adonisjs/validator'
3import Service from 'App/Models/Service'; 3import Service from '#app/Models/Service'
4import { url } from 'Config/app'; 4import { url } from '#config/app'
5import { v4 as uuid } from 'uuid'; 5import { v4 as uuid } from 'uuid'
6import * as fs from 'fs-extra'; 6import * as fs from 'fs-extra'
7import path from 'node:path'; 7import path from 'node:path'
8import Application from '@ioc:Adonis/Core/Application'; 8import { app } from '@adonisjs/core/services/app'
9import sanitize from 'sanitize-filename'; 9import sanitize from 'sanitize-filename'
10 10
11const createSchema = schema.create({ 11const createSchema = schema.create({
12 name: schema.string(), 12 name: schema.string(),
13 recipeId: schema.string(), 13 recipeId: schema.string(),
14}); 14})
15 15
16export default class ServiceController { 16export default class ServiceController {
17 // Create a new service for user 17 // Create a new service for user
18 public async create({ request, response, auth }: HttpContextContract) { 18 public async create({ request, response, auth }: HttpContext) {
19 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'. 19 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
20 const user = auth.user ?? request.user; 20 const user = auth.user ?? request.user
21 21
22 if (!user) { 22 if (!user) {
23 return response.unauthorized('Missing or invalid api token'); 23 return response.unauthorized('Missing or invalid api token')
24 } 24 }
25 25
26 // Validate user input 26 // Validate user input
27 const data = request.all(); 27 const data = request.all()
28 28
29 try { 29 try {
30 await request.validate({ schema: createSchema }); 30 await request.validate({ schema: createSchema })
31 } catch (error) { 31 } catch (error) {
32 return response.status(401).send({ 32 return response.status(401).send({
33 message: 'Invalid POST arguments', 33 message: 'Invalid POST arguments',
34 messages: error.messages, 34 messages: error.messages,
35 status: 401, 35 status: 401,
36 }); 36 })
37 } 37 }
38 38
39 // Get new, unused uuid 39 // Get new, unused uuid
40 let serviceId; 40 let serviceId
41 do { 41 do {
42 serviceId = uuid(); 42 serviceId = uuid()
43 } while ( 43 } while (
44 // eslint-disable-next-line no-await-in-loop, unicorn/no-await-expression-member 44 // eslint-disable-next-line no-await-in-loop, unicorn/no-await-expression-member
45 (await Service.query().where('serviceId', serviceId)).length > 0 45 (await Service.query().where('serviceId', serviceId)).length > 0
46 ); 46 )
47 47
48 await Service.create({ 48 await Service.create({
49 userId: user.id, 49 userId: user.id,
@@ -51,7 +51,7 @@ export default class ServiceController {
51 name: data.name, 51 name: data.name,
52 recipeId: data.recipeId, 52 recipeId: data.recipeId,
53 settings: JSON.stringify(data), 53 settings: JSON.stringify(data),
54 }); 54 })
55 55
56 return response.send({ 56 return response.send({
57 data: { 57 data: {
@@ -72,28 +72,26 @@ export default class ServiceController {
72 ...data, 72 ...data,
73 }, 73 },
74 status: ['created'], 74 status: ['created'],
75 }); 75 })
76 } 76 }
77 77
78 // List all services a user has created 78 // List all services a user has created
79 public async list({ request, response, auth }: HttpContextContract) { 79 public async list({ request, response, auth }: HttpContext) {
80 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'. 80 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
81 const user = auth.user ?? request.user; 81 const user = auth.user ?? request.user
82 82
83 if (!user) { 83 if (!user) {
84 return response.unauthorized('Missing or invalid api token'); 84 return response.unauthorized('Missing or invalid api token')
85 } 85 }
86 86
87 const { id } = user; 87 const { id } = user
88 const services = await user.related('services').query(); 88 const services = await user.related('services').query()
89 89
90 // Convert to array with all data Franz wants 90 // Convert to array with all data Franz wants
91 // eslint-disable-next-line @typescript-eslint/no-explicit-any 91 // eslint-disable-next-line @typescript-eslint/no-explicit-any
92 const servicesArray = services.map((service: any) => { 92 const servicesArray = services.map((service: any) => {
93 const settings = 93 const settings =
94 typeof service.settings === 'string' 94 typeof service.settings === 'string' ? JSON.parse(service.settings) : service.settings
95 ? JSON.parse(service.settings)
96 : service.settings;
97 95
98 return { 96 return {
99 customRecipe: false, 97 customRecipe: false,
@@ -110,99 +108,87 @@ export default class ServiceController {
110 iconUrl: settings.iconId 108 iconUrl: settings.iconId
111 ? `${url}/v1/icon/${settings.iconId}` 109 ? `${url}/v1/icon/${settings.iconId}`
112 : // eslint-disable-next-line unicorn/no-null 110 : // eslint-disable-next-line unicorn/no-null
113 null, 111 null,
114 id: service.serviceId, 112 id: service.serviceId,
115 name: service.name, 113 name: service.name,
116 recipeId: service.recipeId, 114 recipeId: service.recipeId,
117 userId: id, 115 userId: id,
118 }; 116 }
119 }); 117 })
120 118
121 return response.send(servicesArray); 119 return response.send(servicesArray)
122 } 120 }
123 121
124 public async delete({ 122 public async delete({ request, params, auth, response }: HttpContext) {
125 request,
126 params,
127 auth,
128 response,
129 }: HttpContextContract) {
130 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'. 123 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
131 const user = auth.user ?? request.user; 124 const user = auth.user ?? request.user
132 125
133 if (!user) { 126 if (!user) {
134 return response.unauthorized('Missing or invalid api token'); 127 return response.unauthorized('Missing or invalid api token')
135 } 128 }
136 129
137 // Update data in database 130 // Update data in database
138 await Service.query() 131 await Service.query().where('serviceId', params.id).where('userId', user.id).delete()
139 .where('serviceId', params.id)
140 .where('userId', user.id)
141 .delete();
142 132
143 return response.send({ 133 return response.send({
144 message: 'Sucessfully deleted service', 134 message: 'Sucessfully deleted service',
145 status: 200, 135 status: 200,
146 }); 136 })
147 } 137 }
148 138
149 // TODO: Test if icon upload works 139 // TODO: Test if icon upload works
150 public async edit({ request, response, auth, params }: HttpContextContract) { 140 public async edit({ request, response, auth, params }: HttpContext) {
151 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'. 141 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
152 const user = auth.user ?? request.user; 142 const user = auth.user ?? request.user
153 143
154 if (!user) { 144 if (!user) {
155 return response.unauthorized('Missing or invalid api token'); 145 return response.unauthorized('Missing or invalid api token')
156 } 146 }
157 147
158 const { id } = params; 148 const { id } = params
159 const service = await Service.query() 149 const service = await Service.query()
160 .where('serviceId', id) 150 .where('serviceId', id)
161 .where('userId', user.id) 151 .where('userId', user.id)
162 .firstOrFail(); 152 .firstOrFail()
163 153
164 if (request.file('icon')) { 154 if (request.file('icon')) {
165 // Upload custom service icon 155 // Upload custom service icon
166 const icon = request.file('icon', { 156 const icon = request.file('icon', {
167 extnames: ['png', 'jpg', 'jpeg', 'svg'], 157 extnames: ['png', 'jpg', 'jpeg', 'svg'],
168 size: '2mb', 158 size: '2mb',
169 }); 159 })
170 160
171 if (icon === null) { 161 if (icon === null) {
172 return response.badRequest('Icon not uploaded.'); 162 return response.badRequest('Icon not uploaded.')
173 } 163 }
174 164
175 const settings = 165 const settings =
176 typeof service.settings === 'string' 166 typeof service.settings === 'string' ? JSON.parse(service.settings) : service.settings
177 ? JSON.parse(service.settings)
178 : service.settings;
179 167
180 let iconId; 168 let iconId
181 do { 169 do {
182 iconId = uuid() + uuid(); 170 iconId = uuid() + uuid()
183 } while ( 171 } while (
184 // eslint-disable-next-line no-await-in-loop 172 // eslint-disable-next-line no-await-in-loop
185 await fs.exists(path.join(Application.tmpPath('uploads'), iconId)) 173 await fs.exists(path.join(app.tmpPath('uploads'), iconId))
186 ); 174 )
187 iconId = `${iconId}.${icon.extname}`; 175 iconId = `${iconId}.${icon.extname}`
188 176
189 await icon.move(Application.tmpPath('uploads'), { 177 await icon.move(app.tmpPath('uploads'), {
190 name: iconId, 178 name: iconId,
191 overwrite: true, 179 overwrite: true,
192 }); 180 })
193 181
194 if (icon.state !== 'moved') { 182 if (icon.state !== 'moved') {
195 return response.status(500).send(icon.errors); 183 return response.status(500).send(icon.errors)
196 } 184 }
197 185
198 const newSettings = { 186 const newSettings = {
199 ...settings, 187 ...settings,
200 188
201 iconId, 189 iconId,
202 customIconVersion: settings?.customIconVersion 190 customIconVersion: settings?.customIconVersion ? settings.customIconVersion + 1 : 1,
203 ? settings.customIconVersion + 1 191 }
204 : 1,
205 };
206 192
207 // Update data in database 193 // Update data in database
208 await Service.query() 194 await Service.query()
@@ -211,7 +197,7 @@ export default class ServiceController {
211 .update({ 197 .update({
212 name: service.name, 198 name: service.name,
213 settings: JSON.stringify(newSettings), 199 settings: JSON.stringify(newSettings),
214 }); 200 })
215 201
216 return response.send({ 202 return response.send({
217 data: { 203 data: {
@@ -222,28 +208,24 @@ export default class ServiceController {
222 userId: user.id, 208 userId: user.id,
223 }, 209 },
224 status: ['updated'], 210 status: ['updated'],
225 }); 211 })
226 } 212 }
227 // Update service info 213 // Update service info
228 const data = request.all(); 214 const data = request.all()
229 215
230 const settings = { 216 const settings = {
231 ...(typeof service.settings === 'string' 217 ...(typeof service.settings === 'string' ? JSON.parse(service.settings) : service.settings),
232 ? JSON.parse(service.settings)
233 : service.settings),
234 ...data, 218 ...data,
235 }; 219 }
236 220
237 if (settings.customIcon === 'delete') { 221 if (settings.customIcon === 'delete') {
238 fs.remove( 222 fs.remove(path.join(app.tmpPath('uploads'), settings.iconId)).catch((error) => {
239 path.join(Application.tmpPath('uploads'), settings.iconId), 223 console.error(error)
240 ).catch(error => { 224 })
241 console.error(error); 225
242 }); 226 settings.iconId = undefined
243 227 settings.customIconVersion = undefined
244 settings.iconId = undefined; 228 settings.customIcon = ''
245 settings.customIconVersion = undefined;
246 settings.customIcon = '';
247 } 229 }
248 230
249 // Update data in database 231 // Update data in database
@@ -253,13 +235,13 @@ export default class ServiceController {
253 .update({ 235 .update({
254 name: data.name, 236 name: data.name,
255 settings: JSON.stringify(settings), 237 settings: JSON.stringify(settings),
256 }); 238 })
257 239
258 // Get updated row 240 // Get updated row
259 const serviceUpdated = await Service.query() 241 const serviceUpdated = await Service.query()
260 .where('serviceId', id) 242 .where('serviceId', id)
261 .where('userId', user.id) 243 .where('userId', user.id)
262 .firstOrFail(); 244 .firstOrFail()
263 245
264 return response.send({ 246 return response.send({
265 data: { 247 data: {
@@ -270,19 +252,19 @@ export default class ServiceController {
270 userId: user.id, 252 userId: user.id,
271 }, 253 },
272 status: ['updated'], 254 status: ['updated'],
273 }); 255 })
274 } 256 }
275 257
276 // TODO: Test if this works 258 // TODO: Test if this works
277 public async reorder({ request, response, auth }: HttpContextContract) { 259 public async reorder({ request, response, auth }: HttpContext) {
278 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'. 260 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
279 const user = auth.user ?? request.user; 261 const user = auth.user ?? request.user
280 262
281 if (!user) { 263 if (!user) {
282 return response.unauthorized('Missing or invalid api token'); 264 return response.unauthorized('Missing or invalid api token')
283 } 265 }
284 266
285 const data = request.all(); 267 const data = request.all()
286 268
287 for (const service of Object.keys(data)) { 269 for (const service of Object.keys(data)) {
288 // Get current settings from db 270 // Get current settings from db
@@ -290,14 +272,14 @@ export default class ServiceController {
290 .where('serviceId', service) 272 .where('serviceId', service)
291 .where('userId', user.id) 273 .where('userId', user.id)
292 274
293 .firstOrFail(); 275 .firstOrFail()
294 276
295 const settings = { 277 const settings = {
296 ...(typeof serviceData.settings === 'string' 278 ...(typeof serviceData.settings === 'string'
297 ? JSON.parse(serviceData.settings) 279 ? JSON.parse(serviceData.settings)
298 : serviceData.settings), 280 : serviceData.settings),
299 order: data[service], 281 order: data[service],
300 }; 282 }
301 283
302 // Update data in database 284 // Update data in database
303 await Service.query() // eslint-disable-line no-await-in-loop 285 await Service.query() // eslint-disable-line no-await-in-loop
@@ -305,18 +287,16 @@ export default class ServiceController {
305 .where('userId', user.id) 287 .where('userId', user.id)
306 .update({ 288 .update({
307 settings: JSON.stringify(settings), 289 settings: JSON.stringify(settings),
308 }); 290 })
309 } 291 }
310 292
311 // Get new services 293 // Get new services
312 const services = await user.related('services').query(); 294 const services = await user.related('services').query()
313 // Convert to array with all data Franz wants 295 // Convert to array with all data Franz wants
314 // eslint-disable-next-line @typescript-eslint/no-explicit-any 296 // eslint-disable-next-line @typescript-eslint/no-explicit-any
315 const servicesArray = services.map((service: any) => { 297 const servicesArray = services.map((service: any) => {
316 const settings = 298 const settings =
317 typeof service.settings === 'string' 299 typeof service.settings === 'string' ? JSON.parse(service.settings) : service.settings
318 ? JSON.parse(service.settings)
319 : service.settings;
320 300
321 return { 301 return {
322 customRecipe: false, 302 customRecipe: false,
@@ -333,39 +313,39 @@ export default class ServiceController {
333 iconUrl: settings.iconId 313 iconUrl: settings.iconId
334 ? `${url}/v1/icon/${settings.iconId}` 314 ? `${url}/v1/icon/${settings.iconId}`
335 : // eslint-disable-next-line unicorn/no-null 315 : // eslint-disable-next-line unicorn/no-null
336 null, 316 null,
337 id: service.serviceId, 317 id: service.serviceId,
338 name: service.name, 318 name: service.name,
339 recipeId: service.recipeId, 319 recipeId: service.recipeId,
340 userId: user.id, 320 userId: user.id,
341 }; 321 }
342 }); 322 })
343 323
344 return response.send(servicesArray); 324 return response.send(servicesArray)
345 } 325 }
346 326
347 // TODO: Test if this works 327 // TODO: Test if this works
348 public async icon({ params, response }: HttpContextContract) { 328 public async icon({ params, response }: HttpContext) {
349 let { id } = params; 329 let { id } = params
350 330
351 id = sanitize(id); 331 id = sanitize(id)
352 if (id === '') { 332 if (id === '') {
353 return response.status(404).send({ 333 return response.status(404).send({
354 status: 'Icon doesn\'t exist', 334 status: "Icon doesn't exist",
355 }); 335 })
356 } 336 }
357 337
358 const iconPath = path.join(Application.tmpPath('uploads'), id); 338 const iconPath = path.join(app.tmpPath('uploads'), id)
359 339
360 try { 340 try {
361 await fs.access(iconPath); 341 await fs.access(iconPath)
362 } catch { 342 } catch {
363 // File not available. 343 // File not available.
364 return response.status(404).send({ 344 return response.status(404).send({
365 status: 'Icon doesn\'t exist', 345 status: "Icon doesn't exist",
366 }); 346 })
367 } 347 }
368 348
369 return response.download(iconPath); 349 return response.download(iconPath)
370 } 350 }
371} 351}
diff --git a/app/Controllers/Http/StaticsController.ts b/app/Controllers/Http/StaticsController.ts
index e221177..a94a9ba 100644
--- a/app/Controllers/Http/StaticsController.ts
+++ b/app/Controllers/Http/StaticsController.ts
@@ -1,3 +1,3 @@
1// import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' 1// import type { HttpContext } from '@adonisjs/core/http'
2 2
3export default class StaticsController {} 3export default class StaticsController {}
diff --git a/app/Controllers/Http/UserController.ts b/app/Controllers/Http/UserController.ts
index ef7cfdd..088f7b1 100644
--- a/app/Controllers/Http/UserController.ts
+++ b/app/Controllers/Http/UserController.ts
@@ -1,134 +1,125 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; 1import type { HttpContext } from '@adonisjs/core/http'
2import { schema, rules } from '@ioc:Adonis/Core/Validator'; 2import { schema, rules } from '@adonisjs/validator'
3import User from 'App/Models/User'; 3import User from '#app/Models/User'
4import { connectWithFranz, isRegistrationEnabled } from '../../../config/app'; 4import { connectWithFranz, isRegistrationEnabled } from '../../../config/app.js'
5import crypto from 'node:crypto'; 5import crypto from 'node:crypto'
6import { v4 as uuid } from 'uuid'; 6import { v4 as uuid } from 'uuid'
7import Workspace from 'App/Models/Workspace'; 7import Workspace from '#app/Models/Workspace'
8import Service from 'App/Models/Service'; 8import Service from '#app/Models/Service'
9import fetch from 'node-fetch';
10 9
11// TODO: This file needs to be refactored and cleaned up to include types 10// TODO: This file needs to be refactored and cleaned up to include types
12import { handleVerifyAndReHash } from '../../../helpers/PasswordHash'; 11import { handleVerifyAndReHash } from '../../../helpers/PasswordHash.js'
13 12
14const newPostSchema = schema.create({ 13const newPostSchema = schema.create({
15 firstname: schema.string(), 14 firstname: schema.string(),
16 lastname: schema.string(), 15 lastname: schema.string(),
17 email: schema.string([ 16 email: schema.string([rules.email(), rules.unique({ table: 'users', column: 'email' })]),
18 rules.email(),
19 rules.unique({ table: 'users', column: 'email' }),
20 ]),
21 password: schema.string([rules.minLength(8)]), 17 password: schema.string([rules.minLength(8)]),
22}); 18})
23 19
24const franzImportSchema = schema.create({ 20const franzImportSchema = schema.create({
25 email: schema.string([ 21 email: schema.string([rules.email(), rules.unique({ table: 'users', column: 'email' })]),
26 rules.email(),
27 rules.unique({ table: 'users', column: 'email' }),
28 ]),
29 password: schema.string([rules.minLength(8)]), 22 password: schema.string([rules.minLength(8)]),
30}); 23})
31 24
32// // TODO: This whole controller needs to be changed such that it can support importing from both Franz and Ferdi 25// // 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 26// eslint-disable-next-line @typescript-eslint/no-explicit-any
34const franzRequest = (route: any, method: any, auth: any) => 27const franzRequest = (route: any, method: any, auth: any) =>
35 new Promise((resolve, reject) => { 28 new Promise((resolve, reject) => {
36 const base = 'https://api.franzinfra.com/v1/'; 29 const base = 'https://api.franzinfra.com/v1/'
37 const user = 30 const user =
38 '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'; 31 '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'
39 32
40 try { 33 try {
41 fetch(base + route, { 34 fetch(base + route, {
42 method, 35 method,
43 headers: { 36 headers: {
44 Authorization: `Bearer ${auth}`, 37 'Authorization': `Bearer ${auth}`,
45 'User-Agent': user, 38 'User-Agent': user,
46 }, 39 },
47 }) 40 })
48 .then(data => data.json()) 41 .then((data) => data.json())
49 .then(json => resolve(json)); 42 .then((json) => resolve(json))
50 } catch { 43 } catch {
51 reject(); 44 reject()
52 } 45 }
53 }); 46 })
54 47
55export default class UsersController { 48export default class UsersController {
56 // Register a new user 49 // Register a new user
57 public async signup({ request, response, auth }: HttpContextContract) { 50 public async signup({ request, response, auth }: HttpContext) {
58 if (isRegistrationEnabled === 'false') { 51 if (isRegistrationEnabled === 'false') {
59 return response.status(401).send({ 52 return response.status(401).send({
60 message: 'Registration is disabled on this server', 53 message: 'Registration is disabled on this server',
61 status: 401, 54 status: 401,
62 }); 55 })
63 } 56 }
64 57
65 // Validate user input 58 // Validate user input
66 let data; 59 let data
67 try { 60 try {
68 data = await request.validate({ schema: newPostSchema }); 61 data = await request.validate({ schema: newPostSchema })
69 } catch (error) { 62 } catch (error) {
70 return response.status(401).send({ 63 return response.status(401).send({
71 message: 'Invalid POST arguments', 64 message: 'Invalid POST arguments',
72 messages: error.messages, 65 messages: error.messages,
73 status: 401, 66 status: 401,
74 }); 67 })
75 } 68 }
76 69
77 // Create user in DB 70 // Create user in DB
78 let user; 71 let user
79 try { 72 try {
80 user = await User.create({ 73 user = await User.create({
81 email: data.email, 74 email: data.email,
82 password: data.password, 75 password: data.password,
83 username: data.firstname, 76 username: data.firstname,
84 lastname: data.lastname, 77 lastname: data.lastname,
85 }); 78 })
86 } catch { 79 } catch {
87 return response.status(401).send({ 80 return response.status(401).send({
88 message: 'E-Mail address already in use', 81 message: 'E-Mail address already in use',
89 status: 401, 82 status: 401,
90 }); 83 })
91 } 84 }
92 85
93 // Generate new auth token 86 // Generate new auth token
94 const token = await auth.use('jwt').login(user, { payload: {} }); 87 const token = await auth.use('jwt').login(user, { payload: {} })
95 88
96 return response.send({ 89 return response.send({
97 message: 'Successfully created account', 90 message: 'Successfully created account',
98 token: token.accessToken, 91 token: token.accessToken,
99 }); 92 })
100 } 93 }
101 94
102 // Login using an existing user 95 // Login using an existing user
103 public async login({ request, response, auth }: HttpContextContract) { 96 public async login({ request, response, auth }: HttpContext) {
104 if (!request.header('Authorization')) { 97 if (!request.header('Authorization')) {
105 return response.status(401).send({ 98 return response.status(401).send({
106 message: 'Please provide authorization', 99 message: 'Please provide authorization',
107 status: 401, 100 status: 401,
108 }); 101 })
109 } 102 }
110 103
111 // Get auth data from auth token 104 // Get auth data from auth token
112 const authHeader = atob( 105 const authHeader = atob(request.header('Authorization')!.replace('Basic ', '')).split(':')
113 request.header('Authorization')!.replace('Basic ', ''),
114 ).split(':');
115 106
116 // Check if user with email exists 107 // Check if user with email exists
117 const user = await User.query().where('email', authHeader[0]).first(); 108 const user = await User.query().where('email', authHeader[0]).first()
118 if (!user?.email) { 109 if (!user?.email) {
119 return response.status(401).send({ 110 return response.status(401).send({
120 message: 'User credentials not valid', 111 message: 'User credentials not valid',
121 code: 'invalid-credentials', 112 code: 'invalid-credentials',
122 status: 401, 113 status: 401,
123 }); 114 })
124 } 115 }
125 116
126 // Verify password 117 // Verify password
127 let isMatchedPassword = false; 118 let isMatchedPassword = false
128 try { 119 try {
129 isMatchedPassword = await handleVerifyAndReHash(user, authHeader[1]); 120 isMatchedPassword = await handleVerifyAndReHash(user, authHeader[1])
130 } catch (error) { 121 } catch (error) {
131 return response.internalServerError({ message: error.message }); 122 return response.internalServerError({ message: error.message })
132 } 123 }
133 124
134 if (!isMatchedPassword) { 125 if (!isMatchedPassword) {
@@ -136,31 +127,28 @@ export default class UsersController {
136 message: 'User credentials not valid', 127 message: 'User credentials not valid',
137 code: 'invalid-credentials', 128 code: 'invalid-credentials',
138 status: 401, 129 status: 401,
139 }); 130 })
140 } 131 }
141 132
142 // Generate token 133 // Generate token
143 const token = await auth.use('jwt').login(user, { payload: {} }); 134 const token = await auth.use('jwt').login(user, { payload: {} })
144 135
145 return response.send({ 136 return response.send({
146 message: 'Successfully logged in', 137 message: 'Successfully logged in',
147 token: token.accessToken, 138 token: token.accessToken,
148 }); 139 })
149 } 140 }
150 141
151 // Return information about the current user 142 // Return information about the current user
152 public async me({ request, response, auth }: HttpContextContract) { 143 public async me({ request, response, auth }: HttpContext) {
153 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'. 144 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
154 const user = auth.user ?? request.user; 145 const user = auth.user ?? request.user
155 146
156 if (!user) { 147 if (!user) {
157 return response.send('Missing or invalid api token'); 148 return response.send('Missing or invalid api token')
158 } 149 }
159 150
160 const settings = 151 const settings = typeof user.settings === 'string' ? JSON.parse(user.settings) : user.settings
161 typeof user.settings === 'string'
162 ? JSON.parse(user.settings)
163 : user.settings;
164 152
165 return response.send({ 153 return response.send({
166 accountType: 'individual', 154 accountType: 'individual',
@@ -176,29 +164,29 @@ export default class UsersController {
176 lastname: user.lastname, 164 lastname: user.lastname,
177 locale: 'en-US', 165 locale: 'en-US',
178 ...settings, 166 ...settings,
179 }); 167 })
180 } 168 }
181 169
182 public async updateMe({ request, response, auth }: HttpContextContract) { 170 public async updateMe({ request, response, auth }: HttpContext) {
183 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'. 171 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
184 const user = auth.user ?? request.user; 172 const user = auth.user ?? request.user
185 173
186 if (!user) { 174 if (!user) {
187 return response.send('Missing or invalid api token'); 175 return response.send('Missing or invalid api token')
188 } 176 }
189 177
190 let settings = user.settings || {}; 178 let settings = user.settings || {}
191 if (typeof settings === 'string') { 179 if (typeof settings === 'string') {
192 settings = JSON.parse(settings); 180 settings = JSON.parse(settings)
193 } 181 }
194 182
195 const newSettings = { 183 const newSettings = {
196 ...settings, 184 ...settings,
197 ...request.all(), 185 ...request.all(),
198 }; 186 }
199 187
200 user.settings = JSON.stringify(newSettings); 188 user.settings = JSON.stringify(newSettings)
201 await user.save(); 189 await user.save()
202 190
203 return response.send({ 191 return response.send({
204 data: { 192 data: {
@@ -217,140 +205,137 @@ export default class UsersController {
217 ...newSettings, 205 ...newSettings,
218 }, 206 },
219 status: ['data-updated'], 207 status: ['data-updated'],
220 }); 208 })
221 } 209 }
222 210
223 public async newToken({ request, response, auth }: HttpContextContract) { 211 public async newToken({ request, response, auth }: HttpContext) {
224 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'. 212 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
225 const user = auth.user ?? request.user; 213 const user = auth.user ?? request.user
226 214
227 if (!user) { 215 if (!user) {
228 return response.send('Missing or invalid api token'); 216 return response.send('Missing or invalid api token')
229 } 217 }
230 218
231 const token = await auth.use('jwt').generate(user, { payload: {} }); 219 const token = await auth.use('jwt').generate(user, { payload: {} })
232 220
233 return response.send({ 221 return response.send({
234 token: token.accessToken, 222 token: token.accessToken,
235 }); 223 })
236 } 224 }
237 225
238 public async import({ request, response, view }: HttpContextContract) { 226 public async import({ request, response, view }: HttpContext) {
239 if (isRegistrationEnabled === 'false') { 227 if (isRegistrationEnabled === 'false') {
240 return response.status(401).send({ 228 return response.status(401).send({
241 message: 'Registration is disabled on this server', 229 message: 'Registration is disabled on this server',
242 status: 401, 230 status: 401,
243 }); 231 })
244 } 232 }
245 233
246 if (connectWithFranz === 'false') { 234 if (connectWithFranz === 'false') {
247 return response.send( 235 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.', 236 '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 ); 237 )
250 } 238 }
251 239
252 // Validate user input 240 // Validate user input
253 let data; 241 let data
254 try { 242 try {
255 data = await request.validate({ schema: franzImportSchema }); 243 data = await request.validate({ schema: franzImportSchema })
256 } catch (error) { 244 } catch (error) {
257 return view.render('others.message', { 245 return view.render('others.message', {
258 heading: 'Error while importing', 246 heading: 'Error while importing',
259 text: error.messages, 247 text: error.messages,
260 }); 248 })
261 } 249 }
262 250
263 const { email, password } = data; 251 const { email, password } = data
264 252
265 const hashedPassword = crypto 253 const hashedPassword = crypto.createHash('sha256').update(password).digest('base64')
266 .createHash('sha256')
267 .update(password)
268 .digest('base64');
269 254
270 const base = 'https://api.franzinfra.com/v1/'; 255 const base = 'https://api.franzinfra.com/v1/'
271 const userAgent = 256 const userAgent =
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'; 257 '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'
273 258
274 // Try to get an authentication token 259 // Try to get an authentication token
275 let token; 260 let token
276 try { 261 try {
277 const basicToken = btoa(`${email}:${hashedPassword}`); 262 const basicToken = btoa(`${email}:${hashedPassword}`)
278 const loginBody = { 263 const loginBody = {
279 isZendeskLogin: false, 264 isZendeskLogin: false,
280 }; 265 }
281 266
282 const rawResponse = await fetch(`${base}auth/login`, { 267 const rawResponse = await fetch(`${base}auth/login`, {
283 method: 'POST', 268 method: 'POST',
284 body: JSON.stringify(loginBody), 269 body: JSON.stringify(loginBody),
285 headers: { 270 headers: {
286 Authorization: `Basic ${basicToken}`, 271 'Authorization': `Basic ${basicToken}`,
287 'User-Agent': userAgent, 272 'User-Agent': userAgent,
288 'Content-Type': 'application/json', 273 'Content-Type': 'application/json',
289 accept: '*/*', 274 'accept': '*/*',
290 'x-franz-source': 'Web', 275 'x-franz-source': 'Web',
291 }, 276 },
292 }); 277 })
293 const content = await rawResponse.json(); 278 const content = await rawResponse.json()
294 279
295 if (!content.message || content.message !== 'Successfully logged in') { 280 if (!content.message || content.message !== 'Successfully logged in') {
296 const errorMessage = 281 const errorMessage =
297 'Could not login into Franz with your supplied credentials. Please check and try again'; 282 'Could not login into Franz with your supplied credentials. Please check and try again'
298 return response.status(401).send(errorMessage); 283 return response.status(401).send(errorMessage)
299 } 284 }
300 285
301 token = content.token; 286 token = content.token
302 } catch (error) { 287 } catch (error) {
303 return response.status(401).send({ 288 return response.status(401).send({
304 message: 'Cannot login to Franz', 289 message: 'Cannot login to Franz',
305 error: error, 290 error: error,
306 }); 291 })
307 } 292 }
308 293
309 // Get user information 294 // Get user information
310 // eslint-disable-next-line @typescript-eslint/no-explicit-any 295 // eslint-disable-next-line @typescript-eslint/no-explicit-any
311 let userInf: any = false; 296 let userInf: any = false
312 try { 297 try {
313 userInf = await franzRequest('me', 'GET', token); 298 userInf = await franzRequest('me', 'GET', token)
314 } catch (error) { 299 } catch (error) {
315 const errorMessage = `Could not get your user info from Franz. Please check your credentials or try again later.\nError: ${error}`; 300 const errorMessage = `Could not get your user info from Franz. Please check your credentials or try again later.\nError: ${error}`
316 return response.status(401).send(errorMessage); 301 return response.status(401).send(errorMessage)
317 } 302 }
318 if (!userInf) { 303 if (!userInf) {
319 const errorMessage = 304 const errorMessage =
320 'Could not get your user info from Franz. Please check your credentials or try again later'; 305 'Could not get your user info from Franz. Please check your credentials or try again later'
321 return response.status(401).send(errorMessage); 306 return response.status(401).send(errorMessage)
322 } 307 }
323 308
324 // Create user in DB 309 // Create user in DB
325 let user; 310 let user
326 try { 311 try {
327 user = await User.create({ 312 user = await User.create({
328 email: userInf.email, 313 email: userInf.email,
329 password: hashedPassword, 314 password: hashedPassword,
330 username: userInf.firstname, 315 username: userInf.firstname,
331 lastname: userInf.lastname, 316 lastname: userInf.lastname,
332 }); 317 })
333 } catch (error) { 318 } catch (error) {
334 const errorMessage = `Could not create your user in our system.\nError: ${error}`; 319 const errorMessage = `Could not create your user in our system.\nError: ${error}`
335 return response.status(401).send(errorMessage); 320 return response.status(401).send(errorMessage)
336 } 321 }
337 322
338 const serviceIdTranslation = {}; 323 const serviceIdTranslation = {}
339 324
340 // Import services 325 // Import services
341 try { 326 try {
342 const services = await franzRequest('me/services', 'GET', token); 327 const services = await franzRequest('me/services', 'GET', token)
343 328
344 // @ts-expect-error 329 // @ts-expect-error
345 for (const service of services) { 330 for (const service of services) {
346 // Get new, unused uuid 331 // Get new, unused uuid
347 let serviceId; 332 let serviceId
348 do { 333 do {
349 serviceId = uuid(); 334 serviceId = uuid()
350 } while ( 335 } while (
351 // eslint-disable-next-line no-await-in-loop, unicorn/no-await-expression-member 336 // eslint-disable-next-line no-await-in-loop, unicorn/no-await-expression-member
352 (await Service.query().where('serviceId', serviceId)).length > 0 337 (await Service.query().where('serviceId', serviceId)).length > 0
353 ); 338 )
354 339
355 // eslint-disable-next-line no-await-in-loop 340 // eslint-disable-next-line no-await-in-loop
356 await Service.create({ 341 await Service.create({
@@ -359,34 +344,34 @@ export default class UsersController {
359 name: service.name, 344 name: service.name,
360 recipeId: service.recipeId, 345 recipeId: service.recipeId,
361 settings: JSON.stringify(service), 346 settings: JSON.stringify(service),
362 }); 347 })
363 348
364 // @ts-expect-error 349 // @ts-expect-error
365 serviceIdTranslation[service.id] = serviceId; 350 serviceIdTranslation[service.id] = serviceId
366 } 351 }
367 } catch (error) { 352 } catch (error) {
368 const errorMessage = `Could not import your services into our system.\nError: ${error}`; 353 const errorMessage = `Could not import your services into our system.\nError: ${error}`
369 return response.status(401).send(errorMessage); 354 return response.status(401).send(errorMessage)
370 } 355 }
371 356
372 // Import workspaces 357 // Import workspaces
373 try { 358 try {
374 const workspaces = await franzRequest('workspace', 'GET', token); 359 const workspaces = await franzRequest('workspace', 'GET', token)
375 360
376 // @ts-expect-error 361 // @ts-expect-error
377 for (const workspace of workspaces) { 362 for (const workspace of workspaces) {
378 let workspaceId; 363 let workspaceId
379 do { 364 do {
380 workspaceId = uuid(); 365 workspaceId = uuid()
381 } while ( 366 } while (
382 // eslint-disable-next-line unicorn/no-await-expression-member, no-await-in-loop 367 // eslint-disable-next-line unicorn/no-await-expression-member, no-await-in-loop
383 (await Workspace.query().where('workspaceId', workspaceId)).length > 0 368 (await Workspace.query().where('workspaceId', workspaceId)).length > 0
384 ); 369 )
385 370
386 const services = workspace.services.map( 371 const services = workspace.services.map(
387 // @ts-expect-error 372 // @ts-expect-error
388 service => serviceIdTranslation[service], 373 (service) => serviceIdTranslation[service]
389 ); 374 )
390 375
391 // eslint-disable-next-line no-await-in-loop 376 // eslint-disable-next-line no-await-in-loop
392 await Workspace.create({ 377 await Workspace.create({
@@ -396,15 +381,15 @@ export default class UsersController {
396 order: workspace.order, 381 order: workspace.order,
397 services: JSON.stringify(services), 382 services: JSON.stringify(services),
398 data: JSON.stringify({}), 383 data: JSON.stringify({}),
399 }); 384 })
400 } 385 }
401 } catch (error) { 386 } catch (error) {
402 const errorMessage = `Could not import your workspaces into our system.\nError: ${error}`; 387 const errorMessage = `Could not import your workspaces into our system.\nError: ${error}`
403 return response.status(401).send(errorMessage); 388 return response.status(401).send(errorMessage)
404 } 389 }
405 390
406 return response.send( 391 return response.send(
407 'Your account has been imported. You can now use your Franz/Ferdi account in Ferdium.', 392 'Your account has been imported. You can now use your Franz/Ferdi account in Ferdium.'
408 ); 393 )
409 } 394 }
410} 395}
diff --git a/app/Controllers/Http/WorkspaceController.ts b/app/Controllers/Http/WorkspaceController.ts
index 70af343..a2bc54e 100644
--- a/app/Controllers/Http/WorkspaceController.ts
+++ b/app/Controllers/Http/WorkspaceController.ts
@@ -1,53 +1,53 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; 1import type { HttpContext } from '@adonisjs/core/http'
2import { validator, schema } from '@ioc:Adonis/Core/Validator'; 2import { validator, schema } from '@adonisjs/validator'
3import Workspace from 'App/Models/Workspace'; 3import Workspace from '#app/Models/Workspace'
4import { v4 as uuid } from 'uuid'; 4import { v4 as uuid } from 'uuid'
5 5
6const createSchema = schema.create({ 6const createSchema = schema.create({
7 name: schema.string(), 7 name: schema.string(),
8}); 8})
9 9
10const editSchema = schema.create({ 10const editSchema = schema.create({
11 name: schema.string(), 11 name: schema.string(),
12}); 12})
13 13
14const deleteSchema = schema.create({ 14const deleteSchema = schema.create({
15 id: schema.string(), 15 id: schema.string(),
16}); 16})
17 17
18export default class WorkspaceController { 18export default class WorkspaceController {
19 // Create a new workspace for user 19 // Create a new workspace for user
20 public async create({ request, response, auth }: HttpContextContract) { 20 public async create({ request, response, auth }: HttpContext) {
21 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'. 21 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
22 const user = auth.user ?? request.user; 22 const user = auth.user ?? request.user
23 23
24 if (!user) { 24 if (!user) {
25 return response.unauthorized('Missing or invalid api token'); 25 return response.unauthorized('Missing or invalid api token')
26 } 26 }
27 27
28 // Validate user input 28 // Validate user input
29 let data; 29 let data
30 try { 30 try {
31 data = await request.validate({ schema: createSchema }); 31 data = await request.validate({ schema: createSchema })
32 } catch (error) { 32 } catch (error) {
33 return response.status(401).send({ 33 return response.status(401).send({
34 message: 'Invalid POST arguments', 34 message: 'Invalid POST arguments',
35 messages: error.messages, 35 messages: error.messages,
36 status: 401, 36 status: 401,
37 }); 37 })
38 } 38 }
39 39
40 // Get new, unused uuid 40 // Get new, unused uuid
41 let workspaceId; 41 let workspaceId
42 do { 42 do {
43 workspaceId = uuid(); 43 workspaceId = uuid()
44 } while ( 44 } while (
45 // eslint-disable-next-line unicorn/no-await-expression-member, no-await-in-loop 45 // eslint-disable-next-line unicorn/no-await-expression-member, no-await-in-loop
46 (await Workspace.query().where('workspaceId', workspaceId)).length > 0 46 (await Workspace.query().where('workspaceId', workspaceId)).length > 0
47 ); 47 )
48 48
49 // eslint-disable-next-line unicorn/no-await-expression-member 49 // eslint-disable-next-line unicorn/no-await-expression-member
50 const order = (await user.related('workspaces').query()).length; 50 const order = (await user.related('workspaces').query()).length
51 51
52 await Workspace.create({ 52 await Workspace.create({
53 userId: user.id, 53 userId: user.id,
@@ -56,7 +56,7 @@ export default class WorkspaceController {
56 order, 56 order,
57 services: JSON.stringify([]), 57 services: JSON.stringify([]),
58 data: JSON.stringify(data), 58 data: JSON.stringify(data),
59 }); 59 })
60 60
61 return response.send({ 61 return response.send({
62 userId: user.id, 62 userId: user.id,
@@ -64,30 +64,30 @@ export default class WorkspaceController {
64 id: workspaceId, 64 id: workspaceId,
65 order, 65 order,
66 workspaces: [], 66 workspaces: [],
67 }); 67 })
68 } 68 }
69 69
70 public async edit({ request, response, auth, params }: HttpContextContract) { 70 public async edit({ request, response, auth, params }: HttpContext) {
71 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'. 71 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
72 const user = auth.user ?? request.user; 72 const user = auth.user ?? request.user
73 73
74 if (!user) { 74 if (!user) {
75 return response.unauthorized('Missing or invalid api token'); 75 return response.unauthorized('Missing or invalid api token')
76 } 76 }
77 77
78 // Validate user input 78 // Validate user input
79 try { 79 try {
80 await request.validate({ schema: editSchema }); 80 await request.validate({ schema: editSchema })
81 } catch (error) { 81 } catch (error) {
82 return response.status(401).send({ 82 return response.status(401).send({
83 message: 'Invalid POST arguments', 83 message: 'Invalid POST arguments',
84 messages: error.messages, 84 messages: error.messages,
85 status: 401, 85 status: 401,
86 }); 86 })
87 } 87 }
88 88
89 const data = request.all(); 89 const data = request.all()
90 const { id } = params; 90 const { id } = params
91 91
92 // Update data in database 92 // Update data in database
93 await Workspace.query() 93 await Workspace.query()
@@ -96,13 +96,13 @@ export default class WorkspaceController {
96 .update({ 96 .update({
97 name: data.name, 97 name: data.name,
98 services: JSON.stringify(data.services), 98 services: JSON.stringify(data.services),
99 }); 99 })
100 100
101 // Get updated row 101 // Get updated row
102 const workspace = await Workspace.query() 102 const workspace = await Workspace.query()
103 .where('workspaceId', id) 103 .where('workspaceId', id)
104 .where('userId', user.id) 104 .where('userId', user.id)
105 .firstOrFail(); 105 .firstOrFail()
106 106
107 return response.send({ 107 return response.send({
108 id: workspace.workspaceId, 108 id: workspace.workspaceId,
@@ -110,62 +110,54 @@ export default class WorkspaceController {
110 order: workspace.order, 110 order: workspace.order,
111 services: data.services, 111 services: data.services,
112 userId: user.id, 112 userId: user.id,
113 }); 113 })
114 } 114 }
115 115
116 public async delete({ 116 public async delete({ request, response, auth, params }: HttpContext) {
117 request,
118 response,
119 auth,
120 params,
121 }: HttpContextContract) {
122 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'. 117 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
123 const user = auth.user ?? request.user; 118 const user = auth.user ?? request.user
124 119
125 if (!user) { 120 if (!user) {
126 return response.unauthorized('Missing or invalid api token'); 121 return response.unauthorized('Missing or invalid api token')
127 } 122 }
128 123
129 // Validate user input 124 // Validate user input
130 let data; 125 let data
131 try { 126 try {
132 data = await validator.validate({ 127 data = await validator.validate({
133 data: params, 128 data: params,
134 schema: deleteSchema, 129 schema: deleteSchema,
135 }); 130 })
136 } catch (error) { 131 } catch (error) {
137 return response.status(401).send({ 132 return response.status(401).send({
138 message: 'Invalid arguments', 133 message: 'Invalid arguments',
139 messages: error.messages, 134 messages: error.messages,
140 status: 401, 135 status: 401,
141 }); 136 })
142 } 137 }
143 138
144 const { id } = data; 139 const { id } = data
145 140
146 // Update data in database 141 // Update data in database
147 await Workspace.query() 142 await Workspace.query().where('workspaceId', id).where('userId', user.id).delete()
148 .where('workspaceId', id)
149 .where('userId', user.id)
150 .delete();
151 143
152 return response.send({ 144 return response.send({
153 message: 'Successfully deleted workspace', 145 message: 'Successfully deleted workspace',
154 }); 146 })
155 } 147 }
156 148
157 // List all workspaces a user has created 149 // List all workspaces a user has created
158 public async list({ request, response, auth }: HttpContextContract) { 150 public async list({ request, response, auth }: HttpContext) {
159 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'. 151 // @ts-expect-error Property 'user' does not exist on type 'HttpContextContract'.
160 const user = auth.user ?? request.user; 152 const user = auth.user ?? request.user
161 153
162 if (!user) { 154 if (!user) {
163 return response.unauthorized('Missing or invalid api token'); 155 return response.unauthorized('Missing or invalid api token')
164 } 156 }
165 157
166 const workspaces = await user.related('workspaces').query(); 158 const workspaces = await user.related('workspaces').query()
167 // Convert to array with all data Franz wants 159 // Convert to array with all data Franz wants
168 let workspacesArray: object[] = []; 160 let workspacesArray: object[] = []
169 if (workspaces) { 161 if (workspaces) {
170 // eslint-disable-next-line @typescript-eslint/no-explicit-any 162 // eslint-disable-next-line @typescript-eslint/no-explicit-any
171 workspacesArray = workspaces.map((workspace: any) => ({ 163 workspacesArray = workspaces.map((workspace: any) => ({
@@ -177,9 +169,9 @@ export default class WorkspaceController {
177 ? JSON.parse(workspace.services) 169 ? JSON.parse(workspace.services)
178 : workspace.services, 170 : workspace.services,
179 userId: user.id, 171 userId: user.id,
180 })); 172 }))
181 } 173 }
182 174
183 return response.send(workspacesArray); 175 return response.send(workspacesArray)
184 } 176 }
185} 177}
diff --git a/app/Exceptions/Handler.ts b/app/Exceptions/Handler.ts
index 35c77d0..b13126d 100644
--- a/app/Exceptions/Handler.ts
+++ b/app/Exceptions/Handler.ts
@@ -13,11 +13,11 @@
13| 13|
14*/ 14*/
15 15
16import Logger from '@ioc:Adonis/Core/Logger'; 16import logger from '@adonisjs/core/services/logger'
17import HttpExceptionHandler from '@ioc:Adonis/Core/HttpExceptionHandler'; 17import { ExceptionHandler as AdonisExceptionHandler } from '@adonisjs/core/http'
18 18
19export default class ExceptionHandler extends HttpExceptionHandler { 19export default class ExceptionHandler extends AdonisExceptionHandler {
20 constructor() { 20 constructor() {
21 super(Logger); 21 super(logger)
22 } 22 }
23} 23}
diff --git a/app/Middleware/AllowGuestOnly.ts b/app/Middleware/AllowGuestOnly.ts
index ee43571..5ef5c34 100644
--- a/app/Middleware/AllowGuestOnly.ts
+++ b/app/Middleware/AllowGuestOnly.ts
@@ -1,6 +1,6 @@
1import { GuardsList } from '@ioc:Adonis/Addons/Auth'; 1import { GuardsList } from '@ioc:Adonis/Addons/Auth'
2import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; 2import { HttpContext } from '@adonisjs/core/http'
3import { AuthenticationException } from '@adonisjs/auth/build/standalone'; 3import { AuthenticationException } from '@adonisjs/auth/build/standalone'
4 4
5/** 5/**
6 * This is actually a reverted a reverted auth middleware available in ./Auth.ts 6 * This is actually a reverted a reverted auth middleware available in ./Auth.ts
@@ -10,27 +10,24 @@ export default class GuestMiddleware {
10 /** 10 /**
11 * The URL to redirect to when request is authorized 11 * The URL to redirect to when request is authorized
12 */ 12 */
13 protected redirectTo = '/dashboard'; 13 protected redirectTo = '/dashboard'
14 14
15 protected async authenticate( 15 protected async authenticate(auth: HttpContext['auth'], guards: (keyof GuardsList)[]) {
16 auth: HttpContextContract['auth'], 16 let guardLastAttempted: string | undefined
17 guards: (keyof GuardsList)[],
18 ) {
19 let guardLastAttempted: string | undefined;
20 17
21 for (const guard of guards) { 18 for (const guard of guards) {
22 guardLastAttempted = guard; 19 guardLastAttempted = guard
23 20
24 // eslint-disable-next-line no-await-in-loop 21 // eslint-disable-next-line no-await-in-loop
25 if (await auth.use(guard).check()) { 22 if (await auth.use(guard).check()) {
26 auth.defaultGuard = guard; 23 auth.defaultGuard = guard
27 24
28 throw new AuthenticationException( 25 throw new AuthenticationException(
29 'Unauthorized access', 26 'Unauthorized access',
30 'E_UNAUTHORIZED_ACCESS', 27 'E_UNAUTHORIZED_ACCESS',
31 guardLastAttempted, 28 guardLastAttempted,
32 this.redirectTo, 29 this.redirectTo
33 ); 30 )
34 } 31 }
35 } 32 }
36 } 33 }
@@ -39,18 +36,18 @@ export default class GuestMiddleware {
39 * Handle request 36 * Handle request
40 */ 37 */
41 public async handle( 38 public async handle(
42 { auth }: HttpContextContract, 39 { auth }: HttpContext,
43 next: () => Promise<void>, 40 next: () => Promise<void>,
44 customGuards: (keyof GuardsList)[], 41 customGuards: (keyof GuardsList)[]
45 ) { 42 ) {
46 /** 43 /**
47 * Uses the user defined guards or the default guard mentioned in 44 * Uses the user defined guards or the default guard mentioned in
48 * the config file 45 * the config file
49 */ 46 */
50 const guards = customGuards.length > 0 ? customGuards : [auth.name]; 47 const guards = customGuards.length > 0 ? customGuards : [auth.name]
51 48
52 await this.authenticate(auth, guards); 49 await this.authenticate(auth, guards)
53 50
54 await next(); 51 await next()
55 } 52 }
56} 53}
diff --git a/app/Middleware/Auth.ts b/app/Middleware/Auth.ts
index d0b212c..29620bb 100644
--- a/app/Middleware/Auth.ts
+++ b/app/Middleware/Auth.ts
@@ -1,9 +1,9 @@
1import { GuardsList } from '@ioc:Adonis/Addons/Auth'; 1import { GuardsList } from '@ioc:Adonis/Addons/Auth'
2import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; 2import { HttpContext } from '@adonisjs/core/http'
3import { AuthenticationException } from '@adonisjs/auth/build/standalone'; 3import { AuthenticationException } from '@adonisjs/auth/build/standalone'
4import * as jose from 'jose'; 4import * as jose from 'jose'
5import { appKey } from 'Config/app'; 5import { appKey } from '#config/app'
6import User from 'App/Models/User'; 6import User from '#app/Models/User'
7 7
8/** 8/**
9 * Auth middleware is meant to restrict un-authenticated access to a given route 9 * Auth middleware is meant to restrict un-authenticated access to a given route
@@ -16,7 +16,7 @@ export default class AuthMiddleware {
16 /** 16 /**
17 * The URL to redirect to when request is Unauthorized 17 * The URL to redirect to when request is Unauthorized
18 */ 18 */
19 protected redirectTo = '/user/login'; 19 protected redirectTo = '/user/login'
20 20
21 /** 21 /**
22 * Authenticates the current HTTP request against a custom set of defined 22 * Authenticates the current HTTP request against a custom set of defined
@@ -27,9 +27,9 @@ export default class AuthMiddleware {
27 * during the current request. 27 * during the current request.
28 */ 28 */
29 protected async authenticate( 29 protected async authenticate(
30 auth: HttpContextContract['auth'], 30 auth: HttpContext['auth'],
31 guards: (keyof GuardsList)[], 31 guards: (keyof GuardsList)[],
32 request: HttpContextContract['request'], 32 request: HttpContext['request']
33 ) { 33 ) {
34 /** 34 /**
35 * Hold reference to the guard last attempted within the for loop. We pass 35 * Hold reference to the guard last attempted within the for loop. We pass
@@ -37,15 +37,15 @@ export default class AuthMiddleware {
37 * it can decide the correct response behavior based upon the guard 37 * it can decide the correct response behavior based upon the guard
38 * driver 38 * driver
39 */ 39 */
40 let guardLastAttempted: string | undefined; 40 let guardLastAttempted: string | undefined
41 41
42 for (const guard of guards) { 42 for (const guard of guards) {
43 guardLastAttempted = guard; 43 guardLastAttempted = guard
44 44
45 let isLoggedIn = false; 45 let isLoggedIn = false
46 try { 46 try {
47 // eslint-disable-next-line no-await-in-loop 47 // eslint-disable-next-line no-await-in-loop
48 isLoggedIn = await auth.use(guard).check(); 48 isLoggedIn = await auth.use(guard).check()
49 } catch { 49 } catch {
50 // Silent fail to allow the rest of the code to handle the error 50 // Silent fail to allow the rest of the code to handle the error
51 } 51 }
@@ -56,25 +56,22 @@ export default class AuthMiddleware {
56 * the rest of the request, since the user authenticated 56 * the rest of the request, since the user authenticated
57 * succeeded here 57 * succeeded here
58 */ 58 */
59 auth.defaultGuard = guard; 59 auth.defaultGuard = guard
60 return; 60 return
61 } 61 }
62 } 62 }
63 63
64 // Manually try authenticating using the JWT (verfiy signature required) 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) 65 // Legacy support for JWTs so that the client still works (older than 2.0.0)
66 const authToken = request.headers().authorization?.split(' ')[1]; 66 const authToken = request.headers().authorization?.split(' ')[1]
67 if (authToken) { 67 if (authToken) {
68 try { 68 try {
69 const jwt = await jose.jwtVerify( 69 const jwt = await jose.jwtVerify(authToken, new TextEncoder().encode(appKey))
70 authToken, 70 const { uid } = jwt.payload
71 new TextEncoder().encode(appKey),
72 );
73 const { uid } = jwt.payload;
74 71
75 // @ts-expect-error 72 // @ts-expect-error
76 request.user = await User.findOrFail(uid); 73 request.user = await User.findOrFail(uid)
77 return; 74 return
78 } catch { 75 } catch {
79 // Silent fail to allow the rest of the code to handle the error 76 // Silent fail to allow the rest of the code to handle the error
80 } 77 }
@@ -87,32 +84,32 @@ export default class AuthMiddleware {
87 'Unauthorized access', 84 'Unauthorized access',
88 'E_UNAUTHORIZED_ACCESS', 85 'E_UNAUTHORIZED_ACCESS',
89 guardLastAttempted, 86 guardLastAttempted,
90 this.redirectTo, 87 this.redirectTo
91 ); 88 )
92 } 89 }
93 90
94 /** 91 /**
95 * Handle request 92 * Handle request
96 */ 93 */
97 public async handle( 94 public async handle(
98 { request, auth, response }: HttpContextContract, 95 { request, auth, response }: HttpContext,
99 next: () => Promise<void>, 96 next: () => Promise<void>,
100 customGuards: (keyof GuardsList)[], 97 customGuards: (keyof GuardsList)[]
101 ) { 98 ) {
102 /** 99 /**
103 * Uses the user defined guards or the default guard mentioned in 100 * Uses the user defined guards or the default guard mentioned in
104 * the config file 101 * the config file
105 */ 102 */
106 const guards = customGuards.length > 0 ? customGuards : [auth.name]; 103 const guards = customGuards.length > 0 ? customGuards : [auth.name]
107 try { 104 try {
108 await this.authenticate(auth, guards, request); 105 await this.authenticate(auth, guards, request)
109 } catch (error) { 106 } catch (error) {
110 // If the user is not authenticated and it is a web endpoint, redirect to the login page 107 // If the user is not authenticated and it is a web endpoint, redirect to the login page
111 if (guards.includes('web')) { 108 if (guards.includes('web')) {
112 return response.redirect(error.redirectTo); 109 return response.redirect(error.redirectTo)
113 } 110 }
114 throw error; 111 throw error
115 } 112 }
116 await next(); 113 await next()
117 } 114 }
118} 115}
diff --git a/app/Middleware/Dashboard.ts b/app/Middleware/Dashboard.ts
index 62deea0..f29794c 100644
--- a/app/Middleware/Dashboard.ts
+++ b/app/Middleware/Dashboard.ts
@@ -1,17 +1,14 @@
1import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; 1import type { HttpContext } from '@adonisjs/core/http'
2import Config from '@ioc:Adonis/Core/Config'; 2import { Config } from '@adonisjs/core/config'
3 3
4export default class Dashboard { 4export default class Dashboard {
5 public async handle( 5 public async handle({ response }: HttpContext, next: () => Promise<void>) {
6 { response }: HttpContextContract,
7 next: () => Promise<void>,
8 ) {
9 if (Config.get('dashboard.enabled') === false) { 6 if (Config.get('dashboard.enabled') === false) {
10 response.send( 7 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.', 8 '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 ); 9 )
13 } else { 10 } else {
14 await next(); 11 await next()
15 } 12 }
16 } 13 }
17} 14}
diff --git a/app/Middleware/SilentAuth.ts b/app/Middleware/SilentAuth.ts
index ee73ec4..a7271d5 100644
--- a/app/Middleware/SilentAuth.ts
+++ b/app/Middleware/SilentAuth.ts
@@ -1,4 +1,4 @@
1import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; 1import { HttpContext } from '@adonisjs/core/http'
2 2
3/** 3/**
4 * Silent auth middleware can be used as a global middleware to silent check 4 * Silent auth middleware can be used as a global middleware to silent check
@@ -10,15 +10,12 @@ export default class SilentAuthMiddleware {
10 /** 10 /**
11 * Handle request 11 * Handle request
12 */ 12 */
13 public async handle( 13 public async handle({ auth }: HttpContext, next: () => Promise<void>) {
14 { auth }: HttpContextContract,
15 next: () => Promise<void>,
16 ) {
17 /** 14 /**
18 * Check if user is logged-in or not. If yes, then `ctx.auth.user` will be 15 * 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. 16 * set to the instance of the currently logged in user.
20 */ 17 */
21 await auth.check(); 18 await auth.check()
22 await next(); 19 await next()
23 } 20 }
24} 21}
diff --git a/app/Models/Recipe.ts b/app/Models/Recipe.ts
index fce5f3d..bca6e76 100644
--- a/app/Models/Recipe.ts
+++ b/app/Models/Recipe.ts
@@ -1,23 +1,23 @@
1import { DateTime } from 'luxon'; 1import { DateTime } from 'luxon'
2import { BaseModel, column } from '@ioc:Adonis/Lucid/Orm'; 2import { BaseModel, column } from '@adonisjs/lucid/orm'
3 3
4export default class Recipe extends BaseModel { 4export default class Recipe extends BaseModel {
5 @column({ isPrimary: true }) 5 @column({ isPrimary: true })
6 public id: number; 6 public id: number
7 7
8 @column() 8 @column()
9 public name: string; 9 public name: string
10 10
11 @column() 11 @column()
12 public recipeId: string; 12 public recipeId: string
13 13
14 // TODO: Type the data object. 14 // TODO: Type the data object.
15 @column() 15 @column()
16 public data: object; 16 public data: object
17 17
18 @column.dateTime({ autoCreate: true }) 18 @column.dateTime({ autoCreate: true })
19 public createdAt: DateTime; 19 public createdAt: DateTime
20 20
21 @column.dateTime({ autoCreate: true, autoUpdate: true }) 21 @column.dateTime({ autoCreate: true, autoUpdate: true })
22 public updatedAt: DateTime; 22 public updatedAt: DateTime
23} 23}
diff --git a/app/Models/Service.ts b/app/Models/Service.ts
index af1a8e1..0cd2afb 100644
--- a/app/Models/Service.ts
+++ b/app/Models/Service.ts
@@ -1,40 +1,41 @@
1import { DateTime } from 'luxon'; 1import { DateTime } from 'luxon'
2import { BaseModel, column, HasOne, hasOne } from '@ioc:Adonis/Lucid/Orm'; 2import { BaseModel, column, hasOne } from '@adonisjs/lucid/orm'
3import User from './User'; 3import User from './User.js'
4import type { HasOne } from '@adonisjs/lucid/types/relations'
4 5
5export default class Service extends BaseModel { 6export default class Service extends BaseModel {
6 @column({ isPrimary: true }) 7 @column({ isPrimary: true })
7 public id: number; 8 public id: number
8 9
9 @hasOne(() => User, { 10 @hasOne(() => User, {
10 foreignKey: 'userId', 11 foreignKey: 'userId',
11 }) 12 })
12 public user: HasOne<typeof User>; 13 public user: HasOne<typeof User>
13 14
14 @column({ 15 @column({
15 columnName: 'userId', 16 columnName: 'userId',
16 }) 17 })
17 public userId: number; 18 public userId: number
18 19
19 @column({ 20 @column({
20 columnName: 'serviceId', 21 columnName: 'serviceId',
21 }) 22 })
22 public serviceId: string; 23 public serviceId: string
23 24
24 @column() 25 @column()
25 public name: string; 26 public name: string
26 27
27 @column({ 28 @column({
28 columnName: 'recipeId', 29 columnName: 'recipeId',
29 }) 30 })
30 public recipeId: string; 31 public recipeId: string
31 32
32 @column() 33 @column()
33 public settings: string; 34 public settings: string
34 35
35 @column.dateTime({ autoCreate: true }) 36 @column.dateTime({ autoCreate: true })
36 public createdAt: DateTime; 37 public createdAt: DateTime
37 38
38 @column.dateTime({ autoCreate: true, autoUpdate: true }) 39 @column.dateTime({ autoCreate: true, autoUpdate: true })
39 public updatedAt: DateTime; 40 public updatedAt: DateTime
40} 41}
diff --git a/app/Models/Token.ts b/app/Models/Token.ts
index 4f85ebc..a8c29dd 100644
--- a/app/Models/Token.ts
+++ b/app/Models/Token.ts
@@ -1,38 +1,39 @@
1import { DateTime } from 'luxon'; 1import { DateTime } from 'luxon'
2import { BaseModel, column, HasOne, hasOne } from '@ioc:Adonis/Lucid/Orm'; 2import { BaseModel, column, hasOne } from '@adonisjs/lucid/orm'
3import User from './User'; 3import User from './User.js'
4import { HasOne } from '@adonisjs/lucid/types/relations'
4 5
5export default class Token extends BaseModel { 6export default class Token extends BaseModel {
6 @column({ isPrimary: true }) 7 @column({ isPrimary: true })
7 public id: number; 8 public id: number
8 9
9 @hasOne(() => User, { 10 @hasOne(() => User, {
10 localKey: 'user_id', 11 localKey: 'user_id',
11 foreignKey: 'id', 12 foreignKey: 'id',
12 }) 13 })
13 public user: HasOne<typeof User>; 14 public user: HasOne<typeof User>
14 15
15 @column() 16 @column()
16 public user_id: number; 17 public user_id: number
17 18
18 @column() 19 @column()
19 public token: string; 20 public token: string
20 21
21 @column() 22 @column()
22 public type: string; 23 public type: string
23 24
24 @column() 25 @column()
25 public is_revoked: boolean; 26 public is_revoked: boolean
26 27
27 @column() 28 @column()
28 public name: string; 29 public name: string
29 30
30 @column.dateTime() 31 @column.dateTime()
31 public expires_at: DateTime; 32 public expires_at: DateTime
32 33
33 @column.dateTime({ autoCreate: true }) 34 @column.dateTime({ autoCreate: true })
34 public created_at: DateTime; 35 public created_at: DateTime
35 36
36 @column.dateTime({ autoCreate: true, autoUpdate: true }) 37 @column.dateTime({ autoCreate: true, autoUpdate: true })
37 public updated_at: DateTime; 38 public updated_at: DateTime
38} 39}
diff --git a/app/Models/User.ts b/app/Models/User.ts
index 0b8e688..cc2c553 100644
--- a/app/Models/User.ts
+++ b/app/Models/User.ts
@@ -1,75 +1,70 @@
1import { DateTime } from 'luxon'; 1import { DateTime } from 'luxon'
2import { 2import { BaseModel, beforeSave, column, hasMany } from '@adonisjs/lucid/orm'
3 BaseModel, 3import hash from '@adonisjs/core/services/hash'
4 beforeSave, 4import emitter from '@adonisjs/core/services/emitter'
5 column, 5import moment from 'moment'
6 HasMany, 6import Encryption from '@ioc:Adonis/Core/Encryption'
7 hasMany, 7import randtoken from 'rand-token'
8} from '@ioc:Adonis/Lucid/Orm'; 8import Token from './Token.js'
9import Hash from '@ioc:Adonis/Core/Hash'; 9import Workspace from './Workspace.js'
10import Event from '@ioc:Adonis/Core/Event'; 10import Service from './Service.js'
11import moment from 'moment'; 11import mail from '@adonisjs/mail/services/main'
12import Encryption from '@ioc:Adonis/Core/Encryption'; 12import { url } from '#config/app'
13import randtoken from 'rand-token'; 13import { mailFrom } from '#config/dashboard'
14import Token from './Token'; 14import { HasMany } from '@adonisjs/lucid/types/relations'
15import Workspace from './Workspace';
16import Service from './Service';
17import Mail from '@ioc:Adonis/Addons/Mail';
18import { url } from 'Config/app';
19import { mailFrom } from 'Config/dashboard';
20 15
21export default class User extends BaseModel { 16export default class User extends BaseModel {
22 @column({ isPrimary: true }) 17 @column({ isPrimary: true })
23 public id: number; 18 public id: number
24 19
25 @column() 20 @column()
26 public email: string; 21 public email: string
27 22
28 @column() 23 @column()
29 public username: string; 24 public username: string
30 25
31 @column() 26 @column()
32 public password: string; 27 public password: string
33 28
34 @column() 29 @column()
35 public lastname: string; 30 public lastname: string
36 31
37 // TODO: Type the settings object. 32 // TODO: Type the settings object.
38 @column() 33 @column()
39 public settings: object; 34 public settings: object
40 35
41 @column.dateTime({ autoCreate: true }) 36 @column.dateTime({ autoCreate: true })
42 public created_at: DateTime; 37 public created_at: DateTime
43 38
44 @column.dateTime({ autoCreate: true, autoUpdate: true }) 39 @column.dateTime({ autoCreate: true, autoUpdate: true })
45 public updated_at: DateTime; 40 public updated_at: DateTime
46 41
47 @beforeSave() 42 @beforeSave()
48 public static async hashPassword(user: User) { 43 public static async hashPassword(user: User) {
49 if (user.$dirty.password) { 44 if (user.$dirty.password) {
50 user.password = await Hash.make(user.password); 45 user.password = await hash.make(user.password)
51 } 46 }
52 } 47 }
53 48
54 @hasMany(() => Token, { 49 @hasMany(() => Token, {
55 foreignKey: 'user_id', 50 foreignKey: 'user_id',
56 }) 51 })
57 public tokens: HasMany<typeof Token>; 52 public tokens: HasMany<typeof Token>
58 53
59 @hasMany(() => Service, { 54 @hasMany(() => Service, {
60 foreignKey: 'userId', 55 foreignKey: 'userId',
61 }) 56 })
62 public services: HasMany<typeof Service>; 57 public services: HasMany<typeof Service>
63 58
64 @hasMany(() => Workspace, { 59 @hasMany(() => Workspace, {
65 foreignKey: 'userId', 60 foreignKey: 'userId',
66 }) 61 })
67 public workspaces: HasMany<typeof Workspace>; 62 public workspaces: HasMany<typeof Workspace>
68 63
69 public async forgotPassword(): Promise<void> { 64 public async forgotPassword(): Promise<void> {
70 const token = await this.generateToken(this, 'forgot_password'); 65 const token = await this.generateToken(this, 'forgot_password')
71 66
72 await Mail.send(message => { 67 await mail.send((message) => {
73 message 68 message
74 .from(mailFrom) 69 .from(mailFrom)
75 .to(this.email) 70 .to(this.email)
@@ -78,13 +73,13 @@ export default class User extends BaseModel {
78 username: this.username, 73 username: this.username,
79 appUrl: url, 74 appUrl: url,
80 token: token, 75 token: token,
81 }); 76 })
82 }); 77 })
83 78
84 await Event.emit('forgot:password', { 79 await emitter.emit('forgot:password', {
85 user: this, 80 user: this,
86 token, 81 token,
87 }); 82 })
88 } 83 }
89 84
90 private async generateToken(user: User, type: string): Promise<string> { 85 private async generateToken(user: User, type: string): Promise<string> {
@@ -93,21 +88,17 @@ export default class User extends BaseModel {
93 .query() 88 .query()
94 .where('type', type) 89 .where('type', type)
95 .where('is_revoked', false) 90 .where('is_revoked', false)
96 .where( 91 .where('updated_at', '>=', moment().subtract(24, 'hours').format('YYYY-MM-DD HH:mm:ss'))
97 'updated_at',
98 '>=',
99 moment().subtract(24, 'hours').format('YYYY-MM-DD HH:mm:ss'),
100 );
101 92
102 const row = await query.first(); 93 const row = await query.first()
103 if (row) { 94 if (row) {
104 return row.token; 95 return row.token
105 } 96 }
106 97
107 const token = Encryption.encrypt(randtoken.generate(16)); 98 const token = Encryption.encrypt(randtoken.generate(16))
108 99
109 await user.related('tokens').create({ type, token }); 100 await user.related('tokens').create({ type, token })
110 101
111 return token; 102 return token
112 } 103 }
113} 104}
diff --git a/app/Models/Workspace.ts b/app/Models/Workspace.ts
index 8648e02..c960ae4 100644
--- a/app/Models/Workspace.ts
+++ b/app/Models/Workspace.ts
@@ -1,41 +1,42 @@
1import { DateTime } from 'luxon'; 1import { DateTime } from 'luxon'
2import { BaseModel, column, HasOne, hasOne } from '@ioc:Adonis/Lucid/Orm'; 2import { BaseModel, column, hasOne } from '@adonisjs/lucid/orm'
3import User from './User'; 3import User from './User.js'
4import { HasOne } from '@adonisjs/lucid/types/relations'
4 5
5export default class Workspace extends BaseModel { 6export default class Workspace extends BaseModel {
6 @column({ isPrimary: true }) 7 @column({ isPrimary: true })
7 public id: number; 8 public id: number
8 9
9 @column({ 10 @column({
10 columnName: 'workspaceId', 11 columnName: 'workspaceId',
11 }) 12 })
12 public workspaceId: string; 13 public workspaceId: string
13 14
14 @hasOne(() => User, { 15 @hasOne(() => User, {
15 foreignKey: 'userId', 16 foreignKey: 'userId',
16 }) 17 })
17 public user: HasOne<typeof User>; 18 public user: HasOne<typeof User>
18 19
19 @column({ 20 @column({
20 columnName: 'userId', 21 columnName: 'userId',
21 }) 22 })
22 public userId: number; 23 public userId: number
23 24
24 @column() 25 @column()
25 public name: string; 26 public name: string
26 27
27 @column() 28 @column()
28 public order: number; 29 public order: number
29 30
30 @column() 31 @column()
31 public services: string; 32 public services: string
32 33
33 @column() 34 @column()
34 public data: string; 35 public data: string
35 36
36 @column.dateTime({ autoCreate: true }) 37 @column.dateTime({ autoCreate: true })
37 public createdAt: DateTime; 38 public createdAt: DateTime
38 39
39 @column.dateTime({ autoCreate: true, autoUpdate: true }) 40 @column.dateTime({ autoCreate: true, autoUpdate: true })
40 public updatedAt: DateTime; 41 public updatedAt: DateTime
41} 42}
diff --git a/bin/console.ts b/bin/console.ts
new file mode 100644
index 0000000..4b102ee
--- /dev/null
+++ b/bin/console.ts
@@ -0,0 +1,47 @@
1/*
2|--------------------------------------------------------------------------
3| Ace entry point
4|--------------------------------------------------------------------------
5|
6| The "console.ts" file is the entrypoint for booting the AdonisJS
7| command-line framework and executing commands.
8|
9| Commands do not boot the application, unless the currently running command
10| has "options.startApp" flag set to true.
11|
12*/
13
14import 'reflect-metadata'
15import { Ignitor, prettyPrintError } from '@adonisjs/core'
16
17/**
18 * URL to the application root. AdonisJS need it to resolve
19 * paths to file and directories for scaffolding commands
20 */
21const APP_ROOT = new URL('../', import.meta.url)
22
23/**
24 * The importer is used to import files in context of the
25 * application.
26 */
27const IMPORTER = (filePath: string) => {
28 if (filePath.startsWith('./') || filePath.startsWith('../')) {
29 return import(new URL(filePath, APP_ROOT).href)
30 }
31 return import(filePath)
32}
33
34new Ignitor(APP_ROOT, { importer: IMPORTER })
35 .tap((app) => {
36 app.booting(async () => {
37 await import('#start/env')
38 })
39 app.listen('SIGTERM', () => app.terminate())
40 app.listenIf(app.managedByPm2, 'SIGINT', () => app.terminate())
41 })
42 .ace()
43 .handle(process.argv.splice(2))
44 .catch((error) => {
45 process.exitCode = 1
46 prettyPrintError(error)
47 })
diff --git a/bin/server.ts b/bin/server.ts
new file mode 100644
index 0000000..fe0fefb
--- /dev/null
+++ b/bin/server.ts
@@ -0,0 +1,45 @@
1/*
2|--------------------------------------------------------------------------
3| HTTP server entrypoint
4|--------------------------------------------------------------------------
5|
6| The "server.ts" file is the entrypoint for starting the AdonisJS HTTP
7| server. Either you can run this file directly or use the "serve"
8| command to run this file and monitor file changes
9|
10*/
11
12import 'reflect-metadata'
13import { Ignitor, prettyPrintError } from '@adonisjs/core'
14
15/**
16 * URL to the application root. AdonisJS need it to resolve
17 * paths to file and directories for scaffolding commands
18 */
19const APP_ROOT = new URL('../', import.meta.url)
20
21/**
22 * The importer is used to import files in context of the
23 * application.
24 */
25const IMPORTER = (filePath: string) => {
26 if (filePath.startsWith('./') || filePath.startsWith('../')) {
27 return import(new URL(filePath, APP_ROOT).href)
28 }
29 return import(filePath)
30}
31
32new Ignitor(APP_ROOT, { importer: IMPORTER })
33 .tap((app) => {
34 app.booting(async () => {
35 await import('#start/env')
36 })
37 app.listen('SIGTERM', () => app.terminate())
38 app.listenIf(app.managedByPm2, 'SIGINT', () => app.terminate())
39 })
40 .httpServer()
41 .start()
42 .catch((error) => {
43 process.exitCode = 1
44 prettyPrintError(error)
45 })
diff --git a/bin/test.ts b/bin/test.ts
new file mode 100644
index 0000000..fe7e950
--- /dev/null
+++ b/bin/test.ts
@@ -0,0 +1,60 @@
1/*
2|--------------------------------------------------------------------------
3| Test runner entrypoint
4|--------------------------------------------------------------------------
5|
6| The "test.ts" file is the entrypoint for running tests using Japa.
7|
8| Either you can run this file directly or use the "test"
9| command to run this file and monitor file changes.
10|
11*/
12
13process.env.NODE_ENV = 'test'
14
15import 'reflect-metadata'
16import { Ignitor, prettyPrintError } from '@adonisjs/core'
17import { configure, processCLIArgs, run } from '@japa/runner'
18
19/**
20 * URL to the application root. AdonisJS need it to resolve
21 * paths to file and directories for scaffolding commands
22 */
23const APP_ROOT = new URL('../', import.meta.url)
24
25/**
26 * The importer is used to import files in context of the
27 * application.
28 */
29const IMPORTER = (filePath: string) => {
30 if (filePath.startsWith('./') || filePath.startsWith('../')) {
31 return import(new URL(filePath, APP_ROOT).href)
32 }
33 return import(filePath)
34}
35
36new Ignitor(APP_ROOT, { importer: IMPORTER })
37 .tap((app) => {
38 app.booting(async () => {
39 await import('#start/env')
40 })
41 app.listen('SIGTERM', () => app.terminate())
42 app.listenIf(app.managedByPm2, 'SIGINT', () => app.terminate())
43 })
44 .testRunner()
45 .configure(async (app) => {
46 const { runnerHooks, ...config } = await import('../tests/bootstrap.js')
47
48 processCLIArgs(process.argv.splice(2))
49 configure({
50 ...app.rcFile.tests,
51 ...config,
52 setup: runnerHooks.setup,
53 teardown: [...runnerHooks.teardown, () => app.terminate()],
54 })
55 })
56 .run(() => run())
57 .catch((error) => {
58 process.exitCode = 1
59 prettyPrintError(error)
60 })
diff --git a/commands/index.ts b/commands/index.ts
deleted file mode 100644
index d2ad5fb..0000000
--- a/commands/index.ts
+++ /dev/null
@@ -1,21 +0,0 @@
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.ts b/config/app.ts
index fb3c0be..135f20f 100644
--- a/config/app.ts
+++ b/config/app.ts
@@ -5,12 +5,12 @@
5 * file. 5 * file.
6 */ 6 */
7 7
8import proxyAddr from 'proxy-addr'; 8import proxyAddr from 'proxy-addr'
9import Env from '@ioc:Adonis/Core/Env'; 9import env from '#start/env'
10import { ServerConfig } from '@ioc:Adonis/Core/Server'; 10import { ProfilerConfig } from '@ioc:Adonis/Core/Profiler'
11import { LoggerConfig } from '@ioc:Adonis/Core/Logger'; 11import { LoggerConfig } from '@adonisjs/core/types/logger'
12import { ProfilerConfig } from '@ioc:Adonis/Core/Profiler'; 12import { ValidatorConfig } from '@adonisjs/validator/types'
13import { ValidatorConfig } from '@ioc:Adonis/Core/Validator'; 13import { defineConfig } from '@adonisjs/core/http'
14 14
15/* 15/*
16|-------------------------------------------------------------------------- 16|--------------------------------------------------------------------------
@@ -25,18 +25,17 @@ import { ValidatorConfig } from '@ioc:Adonis/Core/Validator';
25| be decrypted. 25| be decrypted.
26| 26|
27*/ 27*/
28export const appKey: string = Env.get('APP_KEY'); 28export const appKey: string = env.get('APP_KEY')
29 29
30export const url: string = Env.get('APP_URL'); 30export const url: string = env.get('APP_URL')
31 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) 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'); 33export const isRegistrationEnabled: string = env.get('IS_REGISTRATION_ENABLED')
34export const connectWithFranz: string = Env.get('CONNECT_WITH_FRANZ'); 34export const connectWithFranz: string = env.get('CONNECT_WITH_FRANZ')
35export const isCreationEnabled: string = Env.get('IS_CREATION_ENABLED'); 35export const isCreationEnabled: string = env.get('IS_CREATION_ENABLED')
36export const jwtUsePEM: boolean = 36export const jwtUsePEM: boolean =
37 Env.get('JWT_USE_PEM', false) || 37 env.get('JWT_USE_PEM', false) ||
38 (Env.get('JWT_PUBLIC_KEY', '') !== '' && 38 (env.get('JWT_PUBLIC_KEY', '') !== '' && env.get('JWT_PRIVATE_KEY', '') !== '')
39 Env.get('JWT_PRIVATE_KEY', '') !== '');
40/* 39/*
41|-------------------------------------------------------------------------- 40|--------------------------------------------------------------------------
42| Http server configuration 41| Http server configuration
@@ -46,7 +45,7 @@ export const jwtUsePEM: boolean =
46| the config properties to make keep server secure. 45| the config properties to make keep server secure.
47| 46|
48*/ 47*/
49export const http: ServerConfig = { 48export const http = defineConfig({
50 /* 49 /*
51 |-------------------------------------------------------------------------- 50 |--------------------------------------------------------------------------
52 | Allow method spoofing 51 | Allow method spoofing
@@ -137,7 +136,7 @@ export const http: ServerConfig = {
137 | 136 |
138 */ 137 */
139 forceContentNegotiationTo: 'application/json', 138 forceContentNegotiationTo: 'application/json',
140}; 139})
141 140
142/* 141/*
143|-------------------------------------------------------------------------- 142|--------------------------------------------------------------------------
@@ -157,7 +156,7 @@ export const logger: LoggerConfig = {
157 | reading the `name` property from the `package.json` file. 156 | reading the `name` property from the `package.json` file.
158 | 157 |
159 */ 158 */
160 name: Env.get('APP_NAME', 'Ferdium-server'), 159 name: env.get('APP_NAME', 'Ferdium-server'),
161 160
162 /* 161 /*
163 |-------------------------------------------------------------------------- 162 |--------------------------------------------------------------------------
@@ -179,7 +178,7 @@ export const logger: LoggerConfig = {
179 | at deployment level and not code level. 178 | at deployment level and not code level.
180 | 179 |
181 */ 180 */
182 level: Env.get('LOG_LEVEL', 'info'), 181 level: env.get('LOG_LEVEL', 'info'),
183 182
184 /* 183 /*
185 |-------------------------------------------------------------------------- 184 |--------------------------------------------------------------------------
@@ -190,8 +189,8 @@ export const logger: LoggerConfig = {
190 | can have huge impact on performance. 189 | can have huge impact on performance.
191 | 190 |
192 */ 191 */
193 prettyPrint: Env.get('NODE_ENV') === 'development', 192 prettyPrint: env.get('NODE_ENV') === 'development',
194}; 193}
195 194
196/* 195/*
197|-------------------------------------------------------------------------- 196|--------------------------------------------------------------------------
@@ -230,7 +229,7 @@ export const profiler: ProfilerConfig = {
230 | 229 |
231 */ 230 */
232 whitelist: [], 231 whitelist: [],
233}; 232}
234 233
235/* 234/*
236|-------------------------------------------------------------------------- 235|--------------------------------------------------------------------------
@@ -241,4 +240,4 @@ export const profiler: ProfilerConfig = {
241| to the default config https://git.io/JT0WE 240| to the default config https://git.io/JT0WE
242| 241|
243*/ 242*/
244export const validator: ValidatorConfig = {}; 243export const validator: ValidatorConfig = {}
diff --git a/config/auth.ts b/config/auth.ts
index 28a9b8c..f43bbdb 100644
--- a/config/auth.ts
+++ b/config/auth.ts
@@ -5,9 +5,9 @@
5 * file. 5 * file.
6 */ 6 */
7 7
8import { AuthConfig } from '@ioc:Adonis/Addons/Auth'; 8import { AuthConfig } from '@ioc:Adonis/Addons/Auth'
9import Env from '@ioc:Adonis/Core/Env'; 9import env from '#start/env'
10import { appKey, jwtUsePEM } from './app'; 10import { appKey, jwtUsePEM } from './app.js'
11 11
12/* 12/*
13|-------------------------------------------------------------------------- 13|--------------------------------------------------------------------------
@@ -233,12 +233,8 @@ const authConfig: AuthConfig = {
233 driver: 'jwt', 233 driver: 'jwt',
234 secret: jwtUsePEM ? undefined : appKey, 234 secret: jwtUsePEM ? undefined : appKey,
235 algorithmJwt: jwtUsePEM ? undefined : 'HS256', 235 algorithmJwt: jwtUsePEM ? undefined : 'HS256',
236 publicKey: jwtUsePEM 236 publicKey: jwtUsePEM ? env.get('JWT_PUBLIC_KEY', '').replaceAll('\\n', '\n') : undefined,
237 ? Env.get('JWT_PUBLIC_KEY', '').replaceAll('\\n', '\n') 237 privateKey: jwtUsePEM ? env.get('JWT_PRIVATE_KEY', '').replaceAll('\\n', '\n') : undefined,
238 : undefined,
239 privateKey: jwtUsePEM
240 ? Env.get('JWT_PRIVATE_KEY', '').replaceAll('\\n', '\n')
241 : undefined,
242 persistJwt: true, 238 persistJwt: true,
243 // TODO: We should improve the following implementation as this is a security concern. 239 // 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) 240 // The following ts-expect-error is to set exp to undefined (JWT with no expiration)
@@ -258,6 +254,6 @@ const authConfig: AuthConfig = {
258 }, 254 },
259 }, 255 },
260 }, 256 },
261}; 257}
262 258
263export default authConfig; 259export default authConfig
diff --git a/config/bodyparser.ts b/config/bodyparser.ts
index b5adcda..b3a027b 100644
--- a/config/bodyparser.ts
+++ b/config/bodyparser.ts
@@ -5,9 +5,10 @@
5 * file. 5 * file.
6 */ 6 */
7 7
8import { BodyParserConfig } from '@ioc:Adonis/Core/BodyParser'; 8import { BodyParserConfig } from '@adonisjs/core/bodyparser'
9import { defineConfig } from '@adonisjs/core/bodyparser'
9 10
10const bodyParserConfig: BodyParserConfig = { 11const bodyParserConfig = defineConfig({
11 /* 12 /*
12 |-------------------------------------------------------------------------- 13 |--------------------------------------------------------------------------
13 | White listed methods 14 | White listed methods
@@ -200,6 +201,6 @@ const bodyParserConfig: BodyParserConfig = {
200 */ 201 */
201 types: ['multipart/form-data'], 202 types: ['multipart/form-data'],
202 }, 203 },
203}; 204})
204 205
205export default bodyParserConfig; 206export default bodyParserConfig
diff --git a/config/cors.ts b/config/cors.ts
index dc0e3f6..911326f 100644
--- a/config/cors.ts
+++ b/config/cors.ts
@@ -1,13 +1,6 @@
1/** 1import { defineConfig } from '@adonisjs/cors'
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 2
8import { CorsConfig } from '@ioc:Adonis/Core/Cors'; 3const corsConfig = defineConfig({
9
10const corsConfig: CorsConfig = {
11 /* 4 /*
12 |-------------------------------------------------------------------------- 5 |--------------------------------------------------------------------------
13 | Enabled 6 | Enabled
@@ -129,6 +122,6 @@ const corsConfig: CorsConfig = {
129 | 122 |
130 */ 123 */
131 maxAge: 90, 124 maxAge: 90,
132}; 125})
133 126
134export default corsConfig; 127export default corsConfig
diff --git a/config/dashboard.ts b/config/dashboard.ts
index 18feb14..9e92024 100644
--- a/config/dashboard.ts
+++ b/config/dashboard.ts
@@ -1,5 +1,5 @@
1import Env from '@ioc:Adonis/Core/Env'; 1import env from '#start/env'
2 2
3export const enabled: boolean = Env.get('IS_DASHBOARD_ENABLED') !== 'false'; 3export const enabled: boolean = env.get('IS_DASHBOARD_ENABLED') !== 'false'
4 4
5export const mailFrom: string = Env.get('MAIL_SENDER'); 5export const mailFrom: string = env.get('MAIL_SENDER')
diff --git a/config/database.ts b/config/database.ts
index 65a9455..d2db1c2 100644
--- a/config/database.ts
+++ b/config/database.ts
@@ -1,4 +1,3 @@
1/* eslint-disable @typescript-eslint/indent */
2/** 1/**
3 * Config source: https://git.io/JesV9 2 * Config source: https://git.io/JesV9
4 * 3 *
@@ -6,11 +5,12 @@
6 * file. 5 * file.
7 */ 6 */
8 7
9import path from 'node:path'; 8import path from 'node:path'
10import Env from '@ioc:Adonis/Core/Env'; 9import env from '#start/env'
11import { DatabaseConfig } from '@ioc:Adonis/Lucid/Database'; 10import { DatabaseConfig } from '@adonisjs/lucid/database'
11import { defineConfig } from '@adonisjs/lucid'
12 12
13const databaseConfig: DatabaseConfig = { 13const databaseConfig = defineConfig({
14 /* 14 /*
15 |-------------------------------------------------------------------------- 15 |--------------------------------------------------------------------------
16 | Connection 16 | Connection
@@ -21,7 +21,7 @@ const databaseConfig: DatabaseConfig = {
21 | file. 21 | file.
22 | 22 |
23 */ 23 */
24 connection: Env.get('DB_CONNECTION', 'sqlite'), 24 connection: env.get('DB_CONNECTION', 'sqlite'),
25 25
26 connections: { 26 connections: {
27 /* 27 /*
@@ -39,13 +39,13 @@ const databaseConfig: DatabaseConfig = {
39 client: 'sqlite', 39 client: 'sqlite',
40 connection: { 40 connection: {
41 filename: path.join( 41 filename: path.join(
42 Env.get('DATA_DIR', 'data'), 42 env.get('DATA_DIR', 'data'),
43 `${Env.get('DB_DATABASE', 'ferdium')}.sqlite`, 43 `${env.get('DB_DATABASE', 'ferdium')}.sqlite`
44 ), 44 ),
45 }, 45 },
46 pool: { 46 pool: {
47 afterCreate: (conn, cb) => { 47 afterCreate: (conn, cb) => {
48 conn.run('PRAGMA foreign_keys=true', cb); 48 conn.run('PRAGMA foreign_keys=true', cb)
49 }, 49 },
50 }, 50 },
51 migrations: { 51 migrations: {
@@ -53,7 +53,7 @@ const databaseConfig: DatabaseConfig = {
53 }, 53 },
54 useNullAsDefault: true, 54 useNullAsDefault: true,
55 healthCheck: false, 55 healthCheck: false,
56 debug: Env.get('DB_DEBUG', false), 56 debug: env.get('DB_DEBUG', false),
57 }, 57 },
58 58
59 /* 59 /*
@@ -70,17 +70,17 @@ const databaseConfig: DatabaseConfig = {
70 mysql: { 70 mysql: {
71 client: 'mysql', 71 client: 'mysql',
72 connection: { 72 connection: {
73 host: Env.get('DB_HOST', 'localhost'), 73 host: env.get('DB_HOST', 'localhost'),
74 port: Env.get('DB_PORT', ''), 74 port: env.get('DB_PORT', ''),
75 user: Env.get('DB_USER', 'root'), 75 user: env.get('DB_USER', 'root'),
76 password: Env.get('DB_PASSWORD', ''), 76 password: env.get('DB_PASSWORD', ''),
77 database: Env.get('DB_DATABASE', 'ferdium'), 77 database: env.get('DB_DATABASE', 'ferdium'),
78 }, 78 },
79 migrations: { 79 migrations: {
80 naturalSort: true, 80 naturalSort: true,
81 }, 81 },
82 healthCheck: false, 82 healthCheck: false,
83 debug: Env.get('DB_DEBUG', false), 83 debug: env.get('DB_DEBUG', false),
84 }, 84 },
85 85
86 /* 86 /*
@@ -97,25 +97,25 @@ const databaseConfig: DatabaseConfig = {
97 pg: { 97 pg: {
98 client: 'pg', 98 client: 'pg',
99 connection: { 99 connection: {
100 host: Env.get('DB_HOST', 'localhost'), 100 host: env.get('DB_HOST', 'localhost'),
101 port: Env.get('DB_PORT', ''), 101 port: env.get('DB_PORT', ''),
102 user: Env.get('DB_USER', 'root'), 102 user: env.get('DB_USER', 'root'),
103 password: Env.get('DB_PASSWORD', ''), 103 password: env.get('DB_PASSWORD', ''),
104 database: Env.get('DB_DATABASE', 'ferdium'), 104 database: env.get('DB_DATABASE', 'ferdium'),
105 ssl: Env.get('DB_CA_CERT') 105 ssl: env.get('DB_CA_CERT')
106 ? { 106 ? {
107 rejectUnauthorized: false, 107 rejectUnauthorized: false,
108 ca: Env.get('DB_CA_CERT'), 108 ca: env.get('DB_CA_CERT'),
109 } 109 }
110 : JSON.parse(Env.get('DB_SSL', 'true')), 110 : JSON.parse(env.get('DB_SSL', 'true')),
111 }, 111 },
112 migrations: { 112 migrations: {
113 naturalSort: true, 113 naturalSort: true,
114 }, 114 },
115 healthCheck: false, 115 healthCheck: false,
116 debug: Env.get('DB_DEBUG', false), 116 debug: env.get('DB_DEBUG', false),
117 }, 117 },
118 }, 118 },
119}; 119})
120 120
121export default databaseConfig; 121export default databaseConfig
diff --git a/config/drive.ts b/config/drive.ts
index b6950eb..f099303 100644
--- a/config/drive.ts
+++ b/config/drive.ts
@@ -5,9 +5,9 @@
5 * file. 5 * file.
6 */ 6 */
7 7
8import Env from '@ioc:Adonis/Core/Env'; 8import env from '#start/env'
9import { driveConfig } from '@adonisjs/core/build/config'; 9import { driveConfig } from '@adonisjs/core/build/config'
10import Application from '@ioc:Adonis/Core/Application'; 10import { app } from '@adonisjs/core/services/app'
11 11
12/* 12/*
13|-------------------------------------------------------------------------- 13|--------------------------------------------------------------------------
@@ -28,7 +28,7 @@ export default driveConfig({
28 | the `DRIVE_DISK` environment variable. 28 | the `DRIVE_DISK` environment variable.
29 | 29 |
30 */ 30 */
31 disk: Env.get('DRIVE_DISK', 'local'), 31 disk: env.get('DRIVE_DISK', 'local'),
32 32
33 disks: { 33 disks: {
34 /* 34 /*
@@ -53,7 +53,7 @@ export default driveConfig({
53 | files. 53 | files.
54 | 54 |
55 */ 55 */
56 root: Application.tmpPath('uploads'), 56 root: app.tmpPath('uploads'),
57 57
58 /* 58 /*
59 |-------------------------------------------------------------------------- 59 |--------------------------------------------------------------------------
@@ -146,4 +146,4 @@ export default driveConfig({
146 // usingUniformAcl: false, 146 // usingUniformAcl: false,
147 // }, 147 // },
148 }, 148 },
149}); 149})
diff --git a/config/hash.ts b/config/hash.ts
index abe7dd0..22e38bd 100644
--- a/config/hash.ts
+++ b/config/hash.ts
@@ -5,8 +5,9 @@
5 * file. 5 * file.
6 */ 6 */
7 7
8import Env from '@ioc:Adonis/Core/Env'; 8import env from '#start/env'
9import { hashConfig } from '@adonisjs/core/build/config'; 9import { defineConfig } from '@adonisjs/core/hash'
10import { drivers } from '@adonisjs/core/hash'
10 11
11/* 12/*
12|-------------------------------------------------------------------------- 13|--------------------------------------------------------------------------
@@ -17,7 +18,7 @@ import { hashConfig } from '@adonisjs/core/build/config';
17| defined inside `contracts` directory. 18| defined inside `contracts` directory.
18| 19|
19*/ 20*/
20export default hashConfig({ 21export default defineConfig({
21 /* 22 /*
22 |-------------------------------------------------------------------------- 23 |--------------------------------------------------------------------------
23 | Default hasher 24 | Default hasher
@@ -28,18 +29,17 @@ export default hashConfig({
28 | 29 |
29 | Default is set to bcrypt to prevent breaking-changes. 30 | Default is set to bcrypt to prevent breaking-changes.
30 */ 31 */
31 default: Env.get('HASH_DRIVER', 'scrypt'), 32 default: env.get('HASH_DRIVER', 'scrypt'),
32 33
33 list: { 34 list: {
34 scrypt: { 35 scrypt: drivers.scrypt({
35 driver: 'scrypt',
36 cost: 16_384, 36 cost: 16_384,
37 blockSize: 8, 37 blockSize: 8,
38 parallelization: 1, 38 parallelization: 1,
39 saltSize: 16, 39 saltSize: 16,
40 keyLength: 64, 40 keyLength: 64,
41 maxMemory: 32 * 1024 * 1024, 41 maxMemory: 32 * 1024 * 1024,
42 }, 42 }),
43 /* 43 /*
44 |-------------------------------------------------------------------------- 44 |--------------------------------------------------------------------------
45 | Argon 45 | Argon
@@ -53,14 +53,13 @@ export default hashConfig({
53 | npm install phc-argon2 53 | npm install phc-argon2
54 | 54 |
55 */ 55 */
56 argon: { 56 argon: drivers.argon2({
57 driver: 'argon2',
58 variant: 'id', 57 variant: 'id',
59 iterations: 3, 58 iterations: 3,
60 memory: 4096, 59 memory: 4096,
61 parallelism: 1, 60 parallelism: 1,
62 saltSize: 16, 61 saltSize: 16,
63 }, 62 }),
64 63
65 /* 64 /*
66 |-------------------------------------------------------------------------- 65 |--------------------------------------------------------------------------
@@ -75,14 +74,17 @@ export default hashConfig({
75 | npm install phc-bcrypt 74 | npm install phc-bcrypt
76 | 75 |
77 */ 76 */
78 bcrypt: { 77 bcrypt: drivers.bcrypt({
79 driver: 'bcrypt',
80 rounds: 10, 78 rounds: 10,
81 }, 79 }),
82 80
83 legacy: { 81 legacy: {
84 // @ts-expect-error 82 // @ts-expect-error
85 driver: 'legacy', 83 driver: 'legacy',
86 }, 84 },
87 }, 85 },
88}); 86})
87
88declare module '@adonisjs/core/types' {
89 export interface HashersList extends InferHashers<typeof hashConfig> {}
90}
diff --git a/config/mail.ts b/config/mail.ts
index 3f688ce..7d650d5 100644
--- a/config/mail.ts
+++ b/config/mail.ts
@@ -5,10 +5,10 @@
5 * file. 5 * file.
6 */ 6 */
7 7
8import Env from '@ioc:Adonis/Core/Env'; 8import env from '#start/env'
9import { mailConfig } from '@adonisjs/mail/build/config'; 9import { defineConfig } from '@adonisjs/mail'
10 10
11export default mailConfig({ 11export default defineConfig({
12 /* 12 /*
13 |-------------------------------------------------------------------------- 13 |--------------------------------------------------------------------------
14 | Default mailer 14 | Default mailer
@@ -18,7 +18,7 @@ export default mailConfig({
18 | a mailer 18 | a mailer
19 | 19 |
20 */ 20 */
21 mailer: Env.get('MAIL_CONNECTION', 'smtp'), 21 mailer: env.get('MAIL_CONNECTION', 'smtp'),
22 22
23 /* 23 /*
24 |-------------------------------------------------------------------------- 24 |--------------------------------------------------------------------------
@@ -42,22 +42,21 @@ export default mailConfig({
42 | Uses SMTP protocol for sending email 42 | Uses SMTP protocol for sending email
43 | 43 |
44 */ 44 */
45 smtp: { 45 smtp: drivers.smtp({
46 driver: 'smtp', 46 name: env.get('APP_URL'),
47 name: Env.get('APP_URL'), 47 port: env.get('SMTP_PORT', '2525'),
48 port: Env.get('SMTP_PORT', '2525'), 48 host: env.get('SMTP_HOST', 'localhost'),
49 host: Env.get('SMTP_HOST', 'localhost'), 49 secure: JSON.parse(env.get('MAIL_SSL', 'false')),
50 secure: JSON.parse(Env.get('MAIL_SSL', 'false')), 50 requireTLS: JSON.parse(env.get('MAIL_REQUIRE_TLS', 'false')),
51 requireTLS: JSON.parse(Env.get('MAIL_REQUIRE_TLS', 'false')),
52 auth: { 51 auth: {
53 user: Env.get('MAIL_USERNAME'), 52 user: env.get('MAIL_USERNAME'),
54 pass: Env.get('MAIL_PASSWORD'), 53 pass: env.get('MAIL_PASSWORD'),
55 type: 'login', 54 type: 'login',
56 }, 55 },
57 maxConnections: 5, 56 maxConnections: 5,
58 maxMessages: 100, 57 maxMessages: 100,
59 rateLimit: 10, 58 rateLimit: 10,
60 }, 59 }),
61 60
62 /* 61 /*
63 |-------------------------------------------------------------------------- 62 |--------------------------------------------------------------------------
@@ -72,47 +71,48 @@ export default mailConfig({
72 | ``` 71 | ```
73 | 72 |
74 */ 73 */
75 ses: { 74 ses: drivers.ses({
76 driver: 'ses',
77 apiVersion: '2010-12-01', 75 apiVersion: '2010-12-01',
78 key: Env.get('SES_ACCESS_KEY'), 76 key: env.get('SES_ACCESS_KEY'),
79 secret: Env.get('SES_ACCESS_SECRET'), 77 secret: env.get('SES_ACCESS_SECRET'),
80 region: Env.get('SES_REGION'), 78 region: env.get('SES_REGION'),
81 sslEnabled: true, 79 sslEnabled: true,
82 sendingRate: 10, 80 sendingRate: 10,
83 maxConnections: 5, 81 maxConnections: 5,
84 }, 82 }),
85 83
86 /* 84 /*
87 |-------------------------------------------------------------------------- 85 |--------------------------------------------------------------------------
88 | Mailgun 86 | Mailgun
89 |-------------------------------------------------------------------------- 87 |--------------------------------------------------------------------------
90 | 88 |
91 | Uses Mailgun service for sending emails. 89 | Uses Mailgun service for sending emails.
92 | 90 |
93 | If you are using an EU domain. Ensure to change the baseUrl to hit the 91 | If you are using an EU domain. Ensure to change the baseUrl to hit the
94 | europe endpoint (https://api.eu.mailgun.net/v3). 92 | europe endpoint (https://api.eu.mailgun.net/v3).
95 | 93 |
96 */ 94 */
97 mailgun: { 95 mailgun: drivers.mailgun({
98 driver: 'mailgun',
99 baseUrl: 'https://api.mailgun.net/v3', 96 baseUrl: 'https://api.mailgun.net/v3',
100 key: Env.get('MAILGUN_API_KEY'), 97 key: env.get('MAILGUN_API_KEY'),
101 domain: Env.get('MAILGUN_DOMAIN'), 98 domain: env.get('MAILGUN_DOMAIN'),
102 }, 99 }),
103 100
104 /* 101 /*
105 |-------------------------------------------------------------------------- 102 |--------------------------------------------------------------------------
106 | SparkPost 103 | SparkPost
107 |-------------------------------------------------------------------------- 104 |--------------------------------------------------------------------------
108 | 105 |
109 | Uses Sparkpost service for sending emails. 106 | Uses Sparkpost service for sending emails.
110 | 107 |
111 */ 108 */
112 sparkpost: { 109 sparkpost: drivers.sparkpost({
113 driver: 'sparkpost',
114 baseUrl: 'https://api.sparkpost.com/api/v1', 110 baseUrl: 'https://api.sparkpost.com/api/v1',
115 key: Env.get('SPARKPOST_API_KEY'), 111 key: env.get('SPARKPOST_API_KEY'),
116 }, 112 }),
117 }, 113 },
118}); 114})
115
116declare module '@adonisjs/mail/types' {
117 export interface MailersList extends InferMailers<typeof mailConfig> {}
118}
diff --git a/config/session.ts b/config/session.ts
index fbf8c7c..299eec3 100644
--- a/config/session.ts
+++ b/config/session.ts
@@ -5,11 +5,11 @@
5 * file. 5 * file.
6 */ 6 */
7 7
8import Env from '@ioc:Adonis/Core/Env'; 8import env from '#start/env'
9import Application from '@ioc:Adonis/Core/Application'; 9import { app } from '@adonisjs/core/services/app'
10import { sessionConfig } from '@adonisjs/session/build/config'; 10import { defineConfig } from '@adonisjs/session'
11 11
12export default sessionConfig({ 12export default defineConfig({
13 /* 13 /*
14 |-------------------------------------------------------------------------- 14 |--------------------------------------------------------------------------
15 | Enable/Disable sessions 15 | Enable/Disable sessions
@@ -36,7 +36,7 @@ export default sessionConfig({
36 | Note: Switching drivers will make existing sessions invalid. 36 | Note: Switching drivers will make existing sessions invalid.
37 | 37 |
38 */ 38 */
39 driver: Env.get('SESSION_DRIVER', 'cookie'), 39 driver: env.get('SESSION_DRIVER', 'cookie'),
40 40
41 /* 41 /*
42 |-------------------------------------------------------------------------- 42 |--------------------------------------------------------------------------
@@ -100,7 +100,7 @@ export default sessionConfig({
100 | 100 |
101 */ 101 */
102 file: { 102 file: {
103 location: Application.tmpPath('sessions'), 103 location: app.tmpPath('sessions'),
104 }, 104 },
105 105
106 /* 106 /*
@@ -113,4 +113,4 @@ export default sessionConfig({
113 | 113 |
114 */ 114 */
115 redisConnection: 'local', 115 redisConnection: 'local',
116}); 116})
diff --git a/config/shield.ts b/config/shield.ts
index 3566e1c..c88df25 100644
--- a/config/shield.ts
+++ b/config/shield.ts
@@ -1,243 +1,138 @@
1/** 1import env from '#start/env'
2 * Config source: https://git.io/Jvwvt 2import { defineConfig } from '@adonisjs/shield'
3 *
4 * Feel free to let us know via PR, if you find something broken in this config
5 * file.
6 */
7 3
8import Env from '@ioc:Adonis/Core/Env'; 4export default defineConfig({
9import { ShieldConfig } from '@ioc:Adonis/Addons/Shield'; 5 csp: {
6 /*
7 |--------------------------------------------------------------------------
8 | Enable/disable CSP
9 |--------------------------------------------------------------------------
10 |
11 | The CSP rules are disabled by default for seamless onboarding.
12 |
13 */
14 enabled: false,
10 15
11/* 16 /*
12|-------------------------------------------------------------------------- 17 |--------------------------------------------------------------------------
13| Content Security Policy 18 | Directives
14|-------------------------------------------------------------------------- 19 |--------------------------------------------------------------------------
15| 20 |
16| Content security policy filters out the origins not allowed to execute 21 | All directives are defined in camelCase and here is the list of
17| and load resources like scripts, styles and fonts. There are wide 22 | available directives and their possible values.
18| variety of options to choose from. 23 |
19*/ 24 | https://content-security-policy.com
20export const csp: ShieldConfig['csp'] = { 25 |
21 /* 26 | @example
22 |-------------------------------------------------------------------------- 27 | directives: {
23 | Enable/disable CSP 28 | defaultSrc: ["'self'", '@nonce', 'cdnjs.cloudflare.com']
24 |-------------------------------------------------------------------------- 29 | }
25 | 30 |
26 | The CSP rules are disabled by default for seamless onboarding. 31 */
27 | 32 directives: {},
28 */
29 enabled: false,
30 33
31 /* 34 /*
32 |-------------------------------------------------------------------------- 35 |--------------------------------------------------------------------------
33 | Directives 36 | Report only
34 |-------------------------------------------------------------------------- 37 |--------------------------------------------------------------------------
35 | 38 |
36 | All directives are defined in camelCase and here is the list of 39 | Setting `reportOnly=true` will not block the scripts from running and
37 | available directives and their possible values. 40 | instead report them to a URL.
38 | 41 |
39 | https://content-security-policy.com 42 */
40 | 43 reportOnly: false,
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 }, 44 },
45 csrf: {
46 /*
47 |--------------------------------------------------------------------------
48 | Enable/Disable CSRF
49 |--------------------------------------------------------------------------
50 */
51 enabled: env.get('NODE_ENV') === 'production',
102 52
103 /* 53 /*
104 |-------------------------------------------------------------------------- 54 |--------------------------------------------------------------------------
105 | Enable Sharing Token Via Cookie 55 | Routes to Ignore
106 |-------------------------------------------------------------------------- 56 |--------------------------------------------------------------------------
107 | 57 |
108 | When the following flag is enabled, AdonisJS will drop `XSRF-TOKEN` 58 | Define an array of route patterns that you want to ignore from CSRF
109 | cookie that frontend frameworks can read and return back as a 59 | validation. Make sure the route patterns are started with a leading
110 | `X-XSRF-TOKEN` header. 60 | slash. Example:
111 | 61 |
112 | The cookie has `httpOnly` flag set to false, so it is little insecure and 62 | `/foo/bar`
113 | can be turned off when you are not using a frontend framework making 63 |
114 | AJAX requests. 64 | Also you can define a function that is evaluated on every HTTP Request.
115 | 65 | ```
116 */ 66 | exceptRoutes: ({ request }) => request.url().includes('/api')
117 enableXsrfCookie: true, 67 | ```
118 68 |
119 /* 69 */
120 |-------------------------------------------------------------------------- 70 exceptRoutes: (ctx) => {
121 | Methods to Validate 71 // ignore all routes starting with /v1/ (api)
122 |-------------------------------------------------------------------------- 72 return ctx.request.url().includes('/v1/') || ctx.request.url().includes('/import')
123 | 73 },
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 74
149 /* 75 /*
150 |-------------------------------------------------------------------------- 76 |--------------------------------------------------------------------------
151 | Allow or Dis-Allow Explicitly 77 | Enable Sharing Token Via Cookie
152 |-------------------------------------------------------------------------- 78 |--------------------------------------------------------------------------
153 | 79 |
154 | The `enabled` boolean does not set `X-DNS-Prefetch-Control` header. However 80 | When the following flag is enabled, AdonisJS will drop `XSRF-TOKEN`
155 | the `allow` boolean controls the value of `X-DNS-Prefetch-Control` header. 81 | cookie that frontend frameworks can read and return back as a
156 | 82 | `X-XSRF-TOKEN` header.
157 | - When `allow = true`, then `X-DNS-Prefetch-Control = 'on'` 83 |
158 | - When `allow = false`, then `X-DNS-Prefetch-Control = 'off'` 84 | The cookie has `httpOnly` flag set to false, so it is little insecure and
159 | 85 | can be turned off when you are not using a frontend framework making
160 */ 86 | AJAX requests.
161 allow: true, 87 |
162}; 88 */
89 enableXsrfCookie: true,
163 90
164/* 91 /*
165|-------------------------------------------------------------------------- 92 |--------------------------------------------------------------------------
166| Iframe Options 93 | Methods to Validate
167|-------------------------------------------------------------------------- 94 |--------------------------------------------------------------------------
168| 95 |
169| xFrame defines whether or not your website can be embedded inside an 96 | Define an array of HTTP methods to be validated for a valid CSRF token.
170| iframe. Choose from one of the following options. 97 |
171| 98 */
172| - DENY 99 methods: ['POST', 'PUT', 'PATCH', 'DELETE'],
173| - SAMEORIGIN 100 },
174| - ALLOW-FROM http://example.com 101 hsts: {
175| 102 enabled: true,
176| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options 103 /*
177*/ 104 |--------------------------------------------------------------------------
178export const xFrame: ShieldConfig['xFrame'] = { 105 | Max Age
179 enabled: true, 106 |--------------------------------------------------------------------------
180 action: 'DENY', 107 |
181}; 108 | Control, how long the browser should remember that a site is only to be
182 109 | accessed using HTTPS.
183/* 110 |
184|-------------------------------------------------------------------------- 111 */
185| Http Strict Transport Security 112 maxAge: '180 days',
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 113
217 /* 114 /*
218 |-------------------------------------------------------------------------- 115 |--------------------------------------------------------------------------
219 | Preloading 116 | Include Subdomains
220 |-------------------------------------------------------------------------- 117 |--------------------------------------------------------------------------
221 | 118 |
222 | Google maintains a service to register your domain and it will preload 119 | Apply rules on the subdomains as well.
223 | the HSTS policy. Learn more https://hstspreload.org/ 120 |
224 | 121 */
225 */ 122 includeSubDomains: true,
226 preload: false,
227};
228 123
229/* 124 /*
230|-------------------------------------------------------------------------- 125 |--------------------------------------------------------------------------
231| No Sniff 126 | Preloading
232|-------------------------------------------------------------------------- 127 |--------------------------------------------------------------------------
233| 128 |
234| Browsers have a habit of sniffing content-type of a response. Which means 129 | Google maintains a service to register your domain and it will preload
235| files with .txt extension containing Javascript code will be executed as 130 | the HSTS policy. Learn more https://hstspreload.org/
236| Javascript. You can disable this behavior by setting nosniff to false. 131 |
237| 132 */
238| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options 133 preload: false,
239| 134 },
240*/ 135 contentTypeSniffing: {
241export const contentTypeSniffing: ShieldConfig['contentTypeSniffing'] = { 136 enabled: true,
242 enabled: true, 137 },
243}; 138})
diff --git a/config/static.ts b/config/static.ts
index 1f7c88f..1d0d0c3 100644
--- a/config/static.ts
+++ b/config/static.ts
@@ -1,10 +1,10 @@
1import { AssetsConfig } from '@ioc:Adonis/Core/Static'; 1import { defineConfig } from '@adonisjs/static'
2 2
3const staticConfig: AssetsConfig = { 3const staticConfig = defineConfig({
4 enabled: true, 4 enabled: true,
5 dotFiles: 'ignore', 5 dotFiles: 'ignore',
6 etag: true, 6 etag: true,
7 lastModified: true, 7 lastModified: true,
8}; 8})
9 9
10export default staticConfig; 10export default staticConfig
diff --git a/contracts/env.ts b/contracts/env.ts
deleted file mode 100644
index e1fd92e..0000000
--- a/contracts/env.ts
+++ /dev/null
@@ -1,23 +0,0 @@
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/hash.ts b/contracts/hash.ts
deleted file mode 100644
index af336c7..0000000
--- a/contracts/hash.ts
+++ /dev/null
@@ -1,26 +0,0 @@
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
deleted file mode 100644
index 0ea307f..0000000
--- a/contracts/mail.ts
+++ /dev/null
@@ -1,13 +0,0 @@
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/database/factories/ServiceFactory.ts b/database/factories/ServiceFactory.ts
index f675063..696a049 100644
--- a/database/factories/ServiceFactory.ts
+++ b/database/factories/ServiceFactory.ts
@@ -1,8 +1,8 @@
1import Service from 'App/Models/Service'; 1import Service from '#app/Models/Service'
2import Factory from '@ioc:Adonis/Lucid/Factory'; 2import Factory from '@adonisjs/lucid/factories'
3 3
4export default Factory.define(Service, ({ faker }) => ({ 4export default Factory.define(Service, ({ faker }) => ({
5 name: faker.company.name(), 5 name: faker.company.name(),
6 recipeId: faker.string.alphanumeric(9), 6 recipeId: faker.string.alphanumeric(9),
7 serviceId: faker.string.alphanumeric(10), 7 serviceId: faker.string.alphanumeric(10),
8})).build(); 8})).build()
diff --git a/database/factories/TokenFactory.ts b/database/factories/TokenFactory.ts
index 5afc679..0774dcd 100644
--- a/database/factories/TokenFactory.ts
+++ b/database/factories/TokenFactory.ts
@@ -1,6 +1,6 @@
1import Token from 'App/Models/Token'; 1import Token from '#app/Models/Token'
2import Factory from '@ioc:Adonis/Lucid/Factory'; 2import Factory from '@adonisjs/lucid/factories'
3import { DateTime } from 'luxon'; 3import { DateTime } from 'luxon'
4 4
5export default Factory.define(Token, async ({ faker }) => ({ 5export default Factory.define(Token, async ({ faker }) => ({
6 token: faker.string.alphanumeric(32), 6 token: faker.string.alphanumeric(32),
@@ -9,9 +9,6 @@ export default Factory.define(Token, async ({ faker }) => ({
9 created_at: DateTime.now(), 9 created_at: DateTime.now(),
10 updated_at: DateTime.now(), 10 updated_at: DateTime.now(),
11})) 11}))
12 .state( 12 .state('old_token', (token) => (token.updated_at = DateTime.now().minus({ hours: 25 })))
13 'old_token', 13 .state('revoked', (token) => (token.is_revoked = true))
14 token => (token.updated_at = DateTime.now().minus({ hours: 25 })), 14 .build()
15 )
16 .state('revoked', token => (token.is_revoked = true))
17 .build();
diff --git a/database/factories/UserFactory.ts b/database/factories/UserFactory.ts
index ee6553e..caa2ea9 100644
--- a/database/factories/UserFactory.ts
+++ b/database/factories/UserFactory.ts
@@ -1,13 +1,10 @@
1import User from 'App/Models/User'; 1import User from '#app/Models/User'
2import Factory from '@ioc:Adonis/Lucid/Factory'; 2import Factory from '@adonisjs/lucid/factories'
3import WorkspaceFactory from './WorkspaceFactory'; 3import WorkspaceFactory from './WorkspaceFactory.js'
4import ServiceFactory from './ServiceFactory'; 4import ServiceFactory from './ServiceFactory.js'
5import crypto from 'node:crypto'; 5import crypto from 'node:crypto'
6 6
7const hashedPassword = crypto 7const hashedPassword = crypto.createHash('sha256').update('password').digest('base64')
8 .createHash('sha256')
9 .update('password')
10 .digest('base64');
11 8
12export default Factory.define(User, async ({ faker }) => ({ 9export default Factory.define(User, async ({ faker }) => ({
13 email: faker.internet.email(), 10 email: faker.internet.email(),
@@ -18,4 +15,4 @@ export default Factory.define(User, async ({ faker }) => ({
18})) 15}))
19 .relation('workspaces', () => WorkspaceFactory) 16 .relation('workspaces', () => WorkspaceFactory)
20 .relation('services', () => ServiceFactory) 17 .relation('services', () => ServiceFactory)
21 .build(); 18 .build()
diff --git a/database/factories/WorkspaceFactory.ts b/database/factories/WorkspaceFactory.ts
index 40cda6b..7d29829 100644
--- a/database/factories/WorkspaceFactory.ts
+++ b/database/factories/WorkspaceFactory.ts
@@ -1,7 +1,7 @@
1import Workspace from 'App/Models/Workspace'; 1import Workspace from '#app/Models/Workspace'
2import Factory from '@ioc:Adonis/Lucid/Factory'; 2import Factory from '@adonisjs/lucid/factories'
3 3
4export default Factory.define(Workspace, ({ faker }) => ({ 4export default Factory.define(Workspace, ({ faker }) => ({
5 name: faker.internet.userName(), 5 name: faker.internet.userName(),
6 workspaceId: faker.string.alphanumeric(10), 6 workspaceId: faker.string.alphanumeric(10),
7})).build(); 7})).build()
diff --git a/database/migrations/1503250034279_user.ts b/database/migrations/1503250034279_user.ts
index 262a472..4a58213 100644
--- a/database/migrations/1503250034279_user.ts
+++ b/database/migrations/1503250034279_user.ts
@@ -1,20 +1,20 @@
1import BaseSchema from '@ioc:Adonis/Lucid/Schema'; 1import { BaseSchema } from '@adonisjs/lucid/schema'
2 2
3export default class extends BaseSchema { 3export default class extends BaseSchema {
4 protected tableName = 'users'; 4 protected tableName = 'users'
5 5
6 public async up(): Promise<void> { 6 public async up(): Promise<void> {
7 this.schema.createTable(this.tableName, table => { 7 this.schema.createTable(this.tableName, (table) => {
8 table.increments(); 8 table.increments()
9 table.string('username', 80).notNullable(); 9 table.string('username', 80).notNullable()
10 table.string('email', 254).notNullable().unique(); 10 table.string('email', 254).notNullable().unique()
11 table.string('password', 60).notNullable(); 11 table.string('password', 60).notNullable()
12 table.json('settings'); 12 table.json('settings')
13 table.timestamps(); 13 table.timestamps()
14 }); 14 })
15 } 15 }
16 16
17 public async down(): Promise<void> { 17 public async down(): Promise<void> {
18 this.schema.dropTable(this.tableName); 18 this.schema.dropTable(this.tableName)
19 } 19 }
20} 20}
diff --git a/database/migrations/1503250034280_token.ts b/database/migrations/1503250034280_token.ts
index 5a030d0..3830c98 100644
--- a/database/migrations/1503250034280_token.ts
+++ b/database/migrations/1503250034280_token.ts
@@ -1,20 +1,20 @@
1import BaseSchema from '@ioc:Adonis/Lucid/Schema'; 1import { BaseSchema } from '@adonisjs/lucid/schema'
2 2
3export default class extends BaseSchema { 3export default class extends BaseSchema {
4 protected tableName = 'tokens'; 4 protected tableName = 'tokens'
5 5
6 public async up(): Promise<void> { 6 public async up(): Promise<void> {
7 this.schema.createTable(this.tableName, table => { 7 this.schema.createTable(this.tableName, (table) => {
8 table.increments(); 8 table.increments()
9 table.integer('user_id').unsigned().references('users.id'); 9 table.integer('user_id').unsigned().references('users.id')
10 table.string('token', 255).notNullable().unique().index(); 10 table.string('token', 255).notNullable().unique().index()
11 table.string('type', 80).notNullable(); 11 table.string('type', 80).notNullable()
12 table.boolean('is_revoked').defaultTo(false); 12 table.boolean('is_revoked').defaultTo(false)
13 table.timestamps(); 13 table.timestamps()
14 }); 14 })
15 } 15 }
16 16
17 public async down(): Promise<void> { 17 public async down(): Promise<void> {
18 this.schema.dropTable(this.tableName); 18 this.schema.dropTable(this.tableName)
19 } 19 }
20} 20}
diff --git a/database/migrations/1566385379883_service_schema.ts b/database/migrations/1566385379883_service_schema.ts
index 9c3e23d..3c46cab 100644
--- a/database/migrations/1566385379883_service_schema.ts
+++ b/database/migrations/1566385379883_service_schema.ts
@@ -1,21 +1,21 @@
1import BaseSchema from '@ioc:Adonis/Lucid/Schema'; 1import { BaseSchema } from '@adonisjs/lucid/schema'
2 2
3export default class extends BaseSchema { 3export default class extends BaseSchema {
4 protected tableName = 'services'; 4 protected tableName = 'services'
5 5
6 public async up(): Promise<void> { 6 public async up(): Promise<void> {
7 this.schema.createTable(this.tableName, table => { 7 this.schema.createTable(this.tableName, (table) => {
8 table.increments(); 8 table.increments()
9 table.string('userId', 80).notNullable(); 9 table.string('userId', 80).notNullable()
10 table.string('serviceId', 80).notNullable(); 10 table.string('serviceId', 80).notNullable()
11 table.string('name', 80).notNullable(); 11 table.string('name', 80).notNullable()
12 table.string('recipeId', 254).notNullable(); 12 table.string('recipeId', 254).notNullable()
13 table.json('settings'); 13 table.json('settings')
14 table.timestamps(); 14 table.timestamps()
15 }); 15 })
16 } 16 }
17 17
18 public async down(): Promise<void> { 18 public async down(): Promise<void> {
19 this.schema.dropTable(this.tableName); 19 this.schema.dropTable(this.tableName)
20 } 20 }
21} 21}
diff --git a/database/migrations/1566554231482_recipe_schema.ts b/database/migrations/1566554231482_recipe_schema.ts
index 3a9784d..567c89f 100644
--- a/database/migrations/1566554231482_recipe_schema.ts
+++ b/database/migrations/1566554231482_recipe_schema.ts
@@ -1,19 +1,19 @@
1import BaseSchema from '@ioc:Adonis/Lucid/Schema'; 1import { BaseSchema } from '@adonisjs/lucid/schema'
2 2
3export default class extends BaseSchema { 3export default class extends BaseSchema {
4 protected tableName = 'recipes'; 4 protected tableName = 'recipes'
5 5
6 public async up(): Promise<void> { 6 public async up(): Promise<void> {
7 this.schema.createTable(this.tableName, table => { 7 this.schema.createTable(this.tableName, (table) => {
8 table.increments(); 8 table.increments()
9 table.string('name', 80).notNullable(); 9 table.string('name', 80).notNullable()
10 table.string('recipeId', 254).notNullable().unique(); 10 table.string('recipeId', 254).notNullable().unique()
11 table.json('data'); 11 table.json('data')
12 table.timestamps(); 12 table.timestamps()
13 }); 13 })
14 } 14 }
15 15
16 public async down(): Promise<void> { 16 public async down(): Promise<void> {
17 this.schema.dropTable(this.tableName); 17 this.schema.dropTable(this.tableName)
18 } 18 }
19} 19}
diff --git a/database/migrations/1566554359294_workspace_schema.ts b/database/migrations/1566554359294_workspace_schema.ts
index 77e1189..b863200 100644
--- a/database/migrations/1566554359294_workspace_schema.ts
+++ b/database/migrations/1566554359294_workspace_schema.ts
@@ -1,22 +1,22 @@
1import BaseSchema from '@ioc:Adonis/Lucid/Schema'; 1import { BaseSchema } from '@adonisjs/lucid/schema'
2 2
3export default class extends BaseSchema { 3export default class extends BaseSchema {
4 protected tableName = 'workspaces'; 4 protected tableName = 'workspaces'
5 5
6 public async up(): Promise<void> { 6 public async up(): Promise<void> {
7 this.schema.createTable(this.tableName, table => { 7 this.schema.createTable(this.tableName, (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()
11 table.string('name', 80).notNullable(); 11 table.string('name', 80).notNullable()
12 table.integer('order'); 12 table.integer('order')
13 table.json('services'); 13 table.json('services')
14 table.json('data'); 14 table.json('data')
15 table.timestamps(); 15 table.timestamps()
16 }); 16 })
17 } 17 }
18 18
19 public async down(): Promise<void> { 19 public async down(): Promise<void> {
20 this.schema.dropTable(this.tableName); 20 this.schema.dropTable(this.tableName)
21 } 21 }
22} 22}
diff --git a/database/migrations/1612629845398_users_update_schema.ts b/database/migrations/1612629845398_users_update_schema.ts
index 8831ea4..76dc816 100644
--- a/database/migrations/1612629845398_users_update_schema.ts
+++ b/database/migrations/1612629845398_users_update_schema.ts
@@ -1,15 +1,15 @@
1import BaseSchema from '@ioc:Adonis/Lucid/Schema'; 1import { BaseSchema } from '@adonisjs/lucid/schema'
2 2
3export default class extends BaseSchema { 3export default class extends BaseSchema {
4 public async up(): Promise<void> { 4 public async up(): Promise<void> {
5 this.schema.alterTable('users', table => { 5 this.schema.alterTable('users', (table) => {
6 table.string('lastname', 80).notNullable().defaultTo(''); 6 table.string('lastname', 80).notNullable().defaultTo('')
7 }); 7 })
8 } 8 }
9 9
10 public async down(): Promise<void> { 10 public async down(): Promise<void> {
11 this.schema.alterTable('users', table => { 11 this.schema.alterTable('users', (table) => {
12 table.dropColumn('lastname'); 12 table.dropColumn('lastname')
13 }); 13 })
14 } 14 }
15} 15}
diff --git a/database/migrations/1658076326250_correct_token_relations.ts b/database/migrations/1658076326250_correct_token_relations.ts
index 5486657..1013861 100644
--- a/database/migrations/1658076326250_correct_token_relations.ts
+++ b/database/migrations/1658076326250_correct_token_relations.ts
@@ -1,18 +1,16 @@
1import BaseSchema from '@ioc:Adonis/Lucid/Schema'; 1import { BaseSchema } from '@adonisjs/lucid/schema'
2 2
3export default class extends BaseSchema { 3export default class extends BaseSchema {
4 protected tableName = 'tokens'; 4 protected tableName = 'tokens'
5 5
6 public async up(): Promise<void> { 6 public async up(): Promise<void> {
7 await this.db.rawQuery( 7 await this.db.rawQuery('DELETE FROM tokens WHERE user_id NOT IN (SELECT id FROM users)')
8 'DELETE FROM tokens WHERE user_id NOT IN (SELECT id FROM users)',
9 );
10 8
11 this.schema.alterTable(this.tableName, table => { 9 this.schema.alterTable(this.tableName, (table) => {
12 table.dropForeign('user_id'); 10 table.dropForeign('user_id')
13 11
14 table.foreign('user_id').references('users.id').onDelete('cascade'); 12 table.foreign('user_id').references('users.id').onDelete('cascade')
15 }); 13 })
16 } 14 }
17 15
18 public async down(): Promise<void> { 16 public async down(): Promise<void> {
diff --git a/database/migrations/1696110557648_jwt_tokens.ts b/database/migrations/1696110557648_jwt_tokens.ts
index 9400de7..7823283 100644
--- a/database/migrations/1696110557648_jwt_tokens.ts
+++ b/database/migrations/1696110557648_jwt_tokens.ts
@@ -1,29 +1,23 @@
1import BaseSchema from '@ioc:Adonis/Lucid/Schema'; 1import { BaseSchema } from '@adonisjs/lucid/schema'
2 2
3export default class JwtTokens extends BaseSchema { 3export default class JwtTokens extends BaseSchema {
4 protected tableName = 'jwt_tokens'; 4 protected tableName = 'jwt_tokens'
5 5
6 public async up() { 6 public async up() {
7 this.schema.createTable(this.tableName, table => { 7 this.schema.createTable(this.tableName, (table) => {
8 table.increments('id').primary(); 8 table.increments('id').primary()
9 table 9 table.integer('user_id').unsigned().references('users.id').onDelete('CASCADE')
10 .integer('user_id') 10 table.string('name').notNullable()
11 .unsigned() 11 table.string('type').notNullable()
12 .references('users.id') 12 table.string('token', 64).notNullable().unique()
13 .onDelete('CASCADE'); 13 table.timestamp('expires_at', { useTz: true }).nullable()
14 table.string('name').notNullable(); 14 table.string('refresh_token').notNullable().unique().index()
15 table.string('type').notNullable(); 15 table.timestamp('refresh_token_expires_at', { useTz: true }).notNullable()
16 table.string('token', 64).notNullable().unique(); 16 table.timestamp('created_at', { useTz: true }).notNullable()
17 table.timestamp('expires_at', { useTz: true }).nullable(); 17 })
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 } 18 }
25 19
26 public async down() { 20 public async down() {
27 this.schema.dropTable(this.tableName); 21 this.schema.dropTable(this.tableName)
28 } 22 }
29} 23}
diff --git a/helpers/PasswordHash.ts b/helpers/PasswordHash.ts
index be3da2c..5c73195 100644
--- a/helpers/PasswordHash.ts
+++ b/helpers/PasswordHash.ts
@@ -1,17 +1,14 @@
1import User from 'App/Models/User'; 1import User from '#app/Models/User'
2import Hash from '@ioc:Adonis/Core/Hash'; 2import hash from '@adonisjs/core/services/hash'
3 3
4export async function handleVerifyAndReHash( 4export async function handleVerifyAndReHash(user: User, passwordToTest: string): Promise<boolean> {
5 user: User,
6 passwordToTest: string,
7): Promise<boolean> {
8 // Verify password 5 // Verify password
9 const usesLegacyHasher = /^\$2[aby]/.test(user.password); 6 const usesLegacyHasher = /^\$2[aby]/.test(user.password)
10 let isMatchedPassword = false; 7 let isMatchedPassword = false
11 8
12 isMatchedPassword = await (usesLegacyHasher 9 isMatchedPassword = await (usesLegacyHasher
13 ? Hash.use('legacy').verify(user.password, passwordToTest) 10 ? hash.use('legacy').verify(user.password, passwordToTest)
14 : Hash.verify(user.password, passwordToTest)); 11 : hash.verify(user.password, passwordToTest))
15 12
16 // TODO: For some reason this is not working (user can't login after re-hashing) 13 // TODO: For some reason this is not working (user can't login after re-hashing)
17 // rehash user password 14 // rehash user password
@@ -20,5 +17,5 @@ export async function handleVerifyAndReHash(
20 // await user.save(); 17 // await user.save();
21 // } 18 // }
22 19
23 return isMatchedPassword; 20 return isMatchedPassword
24} 21}
diff --git a/package.json b/package.json
index b274187..088ed8a 100644
--- a/package.json
+++ b/package.json
@@ -17,13 +17,13 @@
17 "homepage": "https://github.com/ferdium/ferdium-server", 17 "homepage": "https://github.com/ferdium/ferdium-server",
18 "license": "MIT License", 18 "license": "MIT License",
19 "scripts": { 19 "scripts": {
20 "prepare": "is-ci || husky install", 20 "prepare": "is-ci || husky",
21 "dev": "cross-env-shell ENV_PATH=.env.development node ace serve --watch", 21 "dev": "cross-env-shell ENV_PATH=.env.development node ace serve --watch",
22 "migrate": "cross-env-shell ENV_PATH=.env.development node ace migration:run", 22 "migrate": "cross-env-shell ENV_PATH=.env.development node ace migration:run",
23 "refresh": "cross-env-shell ENV_PATH=.env.development node ace migration:refresh", 23 "refresh": "cross-env-shell ENV_PATH=.env.development node ace migration:refresh",
24 "status": "cross-env-shell ENV_PATH=.env.development node ace migration:status", 24 "status": "cross-env-shell ENV_PATH=.env.development node ace migration:status",
25 "build": "node ace build --production", 25 "build": "node ace build --production",
26 "start": "cross-env-shell ENV_PATH=.env node build/server.js", 26 "start": "cross-env-shell ENV_PATH=.env node bin/server.js",
27 "test": "cross-env-shell ENV_PATH=.env.test node ace test", 27 "test": "cross-env-shell ENV_PATH=.env.test node ace test",
28 "typecheck": "tsc --noEmit", 28 "typecheck": "tsc --noEmit",
29 "lint": "eslint \"**/*.{js,ts}\"", 29 "lint": "eslint \"**/*.{js,ts}\"",
@@ -31,65 +31,73 @@
31 "reformat-files": "prettier --ignore-path .eslintignore --write \"**/*.{js,ts,scss,json}\"", 31 "reformat-files": "prettier --ignore-path .eslintignore --write \"**/*.{js,ts,scss,json}\"",
32 "prepare-code": "pnpm typecheck && pnpm lint:fix && pnpm reformat-files && pnpm test" 32 "prepare-code": "pnpm typecheck && pnpm lint:fix && pnpm reformat-files && pnpm test"
33 }, 33 },
34 "imports": {
35 "#controllers/*": "./app/Controllers/*.js",
36 "#exceptions/*": "./app/Exceptions/*.js",
37 "#models/*": "./app/Models/*.js",
38 "#middleware/*": "./app/Middleware/*.js",
39 "#database/*": "./database/*.js",
40 "#types/*": "./types/*.js",
41 "#start/*": "./start/*.js",
42 "#tests/*": "./tests/*.js",
43 "#config/*": "./config/*.js"
44 },
34 "devDependencies": { 45 "devDependencies": {
35 "@adonisjs/assembler": "5.9.5", 46 "@adonisjs/assembler": "7.1.1",
36 "@japa/preset-adonis": "1.2.0", 47 "@adonisjs/eslint-config": "1.2.1",
37 "@japa/runner": "2.5.1", 48 "@adonisjs/eslint-plugin": "1.2.1",
38 "@symfony/webpack-encore": "4.6.1", 49 "@adonisjs/prettier-config": "1.2.1",
50 "@adonisjs/tsconfig": "1.2.1",
51 "@adonisjs/vite": "2.0.2",
52 "@japa/plugin-adonisjs": "3.0.0",
53 "@japa/runner": "3.1.1",
54 "@swc/core": "1.4.0",
39 "@types/bcrypt": "5.0.2", 55 "@types/bcrypt": "5.0.2",
40 "@types/fs-extra": "11.0.4", 56 "@types/fs-extra": "11.0.4",
41 "@types/luxon": "3.4.2", 57 "@types/luxon": "3.4.2",
42 "@types/node-fetch": "2.6.11", 58 "@types/proxy-addr": "^2.0.3",
43 "@types/proxy-addr": "2.0.3",
44 "@types/semver": "7.5.6", 59 "@types/semver": "7.5.6",
45 "@types/source-map-support": "0.5.10", 60 "@types/source-map-support": "0.5.10",
46 "@types/targz": "1.0.4", 61 "@types/targz": "1.0.4",
47 "@types/uuid": "9.0.8", 62 "@types/uuid": "9.0.8",
48 "@typescript-eslint/eslint-plugin": "6.21.0", 63 "@typescript-eslint/eslint-plugin": "6.21.0",
49 "@typescript-eslint/parser": "6.21.0", 64 "@typescript-eslint/parser": "6.21.0",
50 "adonis-preset-ts": "2.1.0",
51 "cross-env": "7.0.3", 65 "cross-env": "7.0.3",
52 "eslint": "8.56.0", 66 "eslint": "8.56.0",
53 "eslint-config-prettier": "9.1.0",
54 "eslint-plugin-adonis": "2.1.1",
55 "eslint-plugin-import": "2.29.1", 67 "eslint-plugin-import": "2.29.1",
56 "eslint-plugin-prettier": "5.1.3", 68 "eslint-plugin-unicorn": "51.0.1",
57 "eslint-plugin-unicorn": "50.0.1",
58 "husky": "9.0.10", 69 "husky": "9.0.10",
59 "is-ci": "3.0.1", 70 "is-ci": "3.0.1",
60 "pino-pretty": "10.3.1",
61 "prettier": "3.2.5", 71 "prettier": "3.2.5",
72 "ts-node": "10.9.2",
62 "typescript": "5.3.3", 73 "typescript": "5.3.3",
63 "youch": "3.3.3", 74 "vite": "5.1.1"
64 "youch-terminal": "2.2.3"
65 }, 75 },
66 "dependencies": { 76 "dependencies": {
67 "@adonisjs/auth": "8.2.3", 77 "@adonisjs/auth": "9.1.1",
68 "@adonisjs/core": "5.9.0", 78 "@adonisjs/core": "6.2.3",
69 "@adonisjs/lucid": "18.4.0", 79 "@adonisjs/cors": "2.2.1",
70 "@adonisjs/mail": "8.2.0", 80 "@adonisjs/lucid": "20.1.0",
71 "@adonisjs/repl": "3.1.11", 81 "@adonisjs/mail": "9.2.0",
72 "@adonisjs/session": "6.4.0", 82 "@adonisjs/session": "7.1.1",
73 "@adonisjs/shield": "7.1.1", 83 "@adonisjs/shield": "8.1.1",
74 "@adonisjs/view": "6.2.0", 84 "@adonisjs/static": "1.1.1",
85 "@adonisjs/validator": "13.0.2",
75 "adonis5-jwt": "github:SpecialAro/adonis5-jwt#34941c10adcf89583a40767552b994ea499b92e3", 86 "adonis5-jwt": "github:SpecialAro/adonis5-jwt#34941c10adcf89583a40767552b994ea499b92e3",
76 "aws-sdk": "2.1555.0",
77 "bcrypt": "5.1.1", 87 "bcrypt": "5.1.1",
88 "edge.js": "6.0.1",
78 "fs-extra": "11.2.0", 89 "fs-extra": "11.2.0",
79 "jose": "4.14.6", 90 "jose": "5.2.1",
80 "luxon": "3.4.4", 91 "luxon": "3.4.4",
81 "moment": "2.30.1", 92 "moment": "2.30.1",
82 "mysql": "2.18.1", 93 "mysql": "2.18.1",
83 "node-fetch": "2",
84 "pg": "8.11.3", 94 "pg": "8.11.3",
85 "phc-bcrypt": "1.0.8",
86 "proxy-addr": "2.0.7", 95 "proxy-addr": "2.0.7",
87 "rand-token": "1.0.1", 96 "rand-token": "1.0.1",
88 "reflect-metadata": "0.1.13", 97 "reflect-metadata": "0.2.1",
89 "sanitize-filename": "1.6.3", 98 "sanitize-filename": "1.6.3",
90 "semver": "7.6.0", 99 "semver": "7.6.0",
91 "source-map-support": "0.5.21", 100 "sqlite3": "5.1.7",
92 "sqlite3": "5.1.6",
93 "targz": "1.0.1", 101 "targz": "1.0.1",
94 "uuid": "9.0.1" 102 "uuid": "9.0.1"
95 }, 103 },
@@ -99,12 +107,9 @@
99 "@types/pino-pretty": "5.0.0", 107 "@types/pino-pretty": "5.0.0",
100 "@types/pino-std-serializers": "4.0.0", 108 "@types/pino-std-serializers": "4.0.0",
101 "cuid": "2.1.8", 109 "cuid": "2.1.8",
102 "querystring": "0.2.0", 110 "querystring": "0.2.0"
103 "resolve-url": "0.2.1",
104 "source-map-resolve": "0.5.3",
105 "source-map-url": "0.4.1",
106 "stable": "0.1.8",
107 "urix": "0.1.0"
108 } 111 }
109 } 112 },
113 "type": "module",
114 "prettier": "@adonisjs/prettier-config"
110} 115}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7bc6543..2f40f25 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -6,44 +6,47 @@ settings:
6 6
7dependencies: 7dependencies:
8 '@adonisjs/auth': 8 '@adonisjs/auth':
9 specifier: 8.2.3 9 specifier: 9.1.1
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) 10 version: 9.1.1(@adonisjs/assembler@7.1.1)(@adonisjs/core@6.2.3)(@adonisjs/lucid@20.1.0)(@adonisjs/session@7.1.1)(@japa/plugin-adonisjs@3.0.0)
11 '@adonisjs/core': 11 '@adonisjs/core':
12 specifier: 5.9.0 12 specifier: 6.2.3
13 version: 5.9.0 13 version: 6.2.3(@adonisjs/assembler@7.1.1)(bcrypt@5.1.1)(edge.js@6.0.1)
14 '@adonisjs/cors':
15 specifier: 2.2.1
16 version: 2.2.1(@adonisjs/core@6.2.3)
14 '@adonisjs/lucid': 17 '@adonisjs/lucid':
15 specifier: 18.4.0 18 specifier: 20.1.0
16 version: 18.4.0(@adonisjs/application@5.3.0)(@adonisjs/core@5.9.0)(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.6) 19 version: 20.1.0(@adonisjs/assembler@7.1.1)(@adonisjs/core@6.2.3)(luxon@3.4.4)(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.7)
17 '@adonisjs/mail': 20 '@adonisjs/mail':
18 specifier: 8.2.0 21 specifier: 9.2.0
19 version: 8.2.0(@adonisjs/core@5.9.0)(@adonisjs/view@6.2.0)(@types/luxon@3.4.2)(luxon@3.4.4)(moment@2.30.1) 22 version: 9.2.0(@adonisjs/core@6.2.3)(@types/luxon@3.4.2)(@types/node@20.7.2)(edge.js@6.0.1)(luxon@3.4.4)(moment@2.30.1)
20 '@adonisjs/repl':
21 specifier: 3.1.11
22 version: 3.1.11(@adonisjs/core@5.9.0)
23 '@adonisjs/session': 23 '@adonisjs/session':
24 specifier: 6.4.0
25 version: 6.4.0(@adonisjs/core@5.9.0)
26 '@adonisjs/shield':
27 specifier: 7.1.1 24 specifier: 7.1.1
28 version: 7.1.1(@adonisjs/core@5.9.0)(@adonisjs/session@6.4.0)(@adonisjs/view@6.2.0) 25 version: 7.1.1(@adonisjs/core@6.2.3)(edge.js@6.0.1)
29 '@adonisjs/view': 26 '@adonisjs/shield':
30 specifier: 6.2.0 27 specifier: 8.1.1
31 version: 6.2.0(@adonisjs/core@5.9.0) 28 version: 8.1.1(@adonisjs/core@6.2.3)(@adonisjs/session@7.1.1)(edge.js@6.0.1)
29 '@adonisjs/static':
30 specifier: 1.1.1
31 version: 1.1.1(@adonisjs/core@6.2.3)
32 '@adonisjs/validator':
33 specifier: 13.0.2
34 version: 13.0.2(@adonisjs/core@6.2.3)
32 adonis5-jwt: 35 adonis5-jwt:
33 specifier: github:SpecialAro/adonis5-jwt#34941c10adcf89583a40767552b994ea499b92e3 36 specifier: github:SpecialAro/adonis5-jwt#34941c10adcf89583a40767552b994ea499b92e3
34 version: github.com/SpecialAro/adonis5-jwt/34941c10adcf89583a40767552b994ea499b92e3 37 version: github.com/SpecialAro/adonis5-jwt/34941c10adcf89583a40767552b994ea499b92e3
35 aws-sdk:
36 specifier: 2.1555.0
37 version: 2.1555.0
38 bcrypt: 38 bcrypt:
39 specifier: 5.1.1 39 specifier: 5.1.1
40 version: 5.1.1 40 version: 5.1.1
41 edge.js:
42 specifier: 6.0.1
43 version: 6.0.1
41 fs-extra: 44 fs-extra:
42 specifier: 11.2.0 45 specifier: 11.2.0
43 version: 11.2.0 46 version: 11.2.0
44 jose: 47 jose:
45 specifier: 4.14.6 48 specifier: 5.2.1
46 version: 4.14.6 49 version: 5.2.1
47 luxon: 50 luxon:
48 specifier: 3.4.4 51 specifier: 3.4.4
49 version: 3.4.4 52 version: 3.4.4
@@ -53,15 +56,9 @@ dependencies:
53 mysql: 56 mysql:
54 specifier: 2.18.1 57 specifier: 2.18.1
55 version: 2.18.1 58 version: 2.18.1
56 node-fetch:
57 specifier: '2'
58 version: 2.7.0
59 pg: 59 pg:
60 specifier: 8.11.3 60 specifier: 8.11.3
61 version: 8.11.3 61 version: 8.11.3
62 phc-bcrypt:
63 specifier: 1.0.8
64 version: 1.0.8
65 proxy-addr: 62 proxy-addr:
66 specifier: 2.0.7 63 specifier: 2.0.7
67 version: 2.0.7 64 version: 2.0.7
@@ -69,20 +66,17 @@ dependencies:
69 specifier: 1.0.1 66 specifier: 1.0.1
70 version: 1.0.1 67 version: 1.0.1
71 reflect-metadata: 68 reflect-metadata:
72 specifier: 0.1.13 69 specifier: 0.2.1
73 version: 0.1.13 70 version: 0.2.1
74 sanitize-filename: 71 sanitize-filename:
75 specifier: 1.6.3 72 specifier: 1.6.3
76 version: 1.6.3 73 version: 1.6.3
77 semver: 74 semver:
78 specifier: 7.6.0 75 specifier: 7.6.0
79 version: 7.6.0 76 version: 7.6.0
80 source-map-support:
81 specifier: 0.5.21
82 version: 0.5.21
83 sqlite3: 77 sqlite3:
84 specifier: 5.1.6 78 specifier: 5.1.7
85 version: 5.1.6 79 version: 5.1.7
86 targz: 80 targz:
87 specifier: 1.0.1 81 specifier: 1.0.1
88 version: 1.0.1 82 version: 1.0.1
@@ -92,17 +86,32 @@ dependencies:
92 86
93devDependencies: 87devDependencies:
94 '@adonisjs/assembler': 88 '@adonisjs/assembler':
95 specifier: 5.9.5 89 specifier: 7.1.1
96 version: 5.9.5(@adonisjs/core@5.9.0) 90 version: 7.1.1(typescript@5.3.3)
97 '@japa/preset-adonis': 91 '@adonisjs/eslint-config':
98 specifier: 1.2.0 92 specifier: 1.2.1
99 version: 1.2.0(@adonisjs/core@5.9.0)(@japa/runner@2.5.1)(openapi-types@12.1.3) 93 version: 1.2.1(eslint@8.56.0)(prettier@3.2.5)(typescript@5.3.3)
94 '@adonisjs/eslint-plugin':
95 specifier: 1.2.1
96 version: 1.2.1(eslint@8.56.0)(typescript@5.3.3)
97 '@adonisjs/prettier-config':
98 specifier: 1.2.1
99 version: 1.2.1
100 '@adonisjs/tsconfig':
101 specifier: 1.2.1
102 version: 1.2.1
103 '@adonisjs/vite':
104 specifier: 2.0.2
105 version: 2.0.2(@adonisjs/core@6.2.3)(@adonisjs/shield@8.1.1)(edge.js@6.0.1)(vite@5.1.1)
106 '@japa/plugin-adonisjs':
107 specifier: 3.0.0
108 version: 3.0.0(@adonisjs/core@6.2.3)(@japa/runner@3.1.1)
100 '@japa/runner': 109 '@japa/runner':
101 specifier: 2.5.1 110 specifier: 3.1.1
102 version: 2.5.1 111 version: 3.1.1
103 '@symfony/webpack-encore': 112 '@swc/core':
104 specifier: 4.6.1 113 specifier: 1.4.0
105 version: 4.6.1(@babel/core@7.23.0)(@babel/preset-env@7.22.20)(eslint@8.56.0)(postcss@8.4.31)(typescript@5.3.3)(webpack-cli@5.1.4)(webpack@5.88.2) 114 version: 1.4.0
106 '@types/bcrypt': 115 '@types/bcrypt':
107 specifier: 5.0.2 116 specifier: 5.0.2
108 version: 5.0.2 117 version: 5.0.2
@@ -112,11 +121,8 @@ devDependencies:
112 '@types/luxon': 121 '@types/luxon':
113 specifier: 3.4.2 122 specifier: 3.4.2
114 version: 3.4.2 123 version: 3.4.2
115 '@types/node-fetch':
116 specifier: 2.6.11
117 version: 2.6.11
118 '@types/proxy-addr': 124 '@types/proxy-addr':
119 specifier: 2.0.3 125 specifier: ^2.0.3
120 version: 2.0.3 126 version: 2.0.3
121 '@types/semver': 127 '@types/semver':
122 specifier: 7.5.6 128 specifier: 7.5.6
@@ -136,51 +142,36 @@ devDependencies:
136 '@typescript-eslint/parser': 142 '@typescript-eslint/parser':
137 specifier: 6.21.0 143 specifier: 6.21.0
138 version: 6.21.0(eslint@8.56.0)(typescript@5.3.3) 144 version: 6.21.0(eslint@8.56.0)(typescript@5.3.3)
139 adonis-preset-ts:
140 specifier: 2.1.0
141 version: 2.1.0
142 cross-env: 145 cross-env:
143 specifier: 7.0.3 146 specifier: 7.0.3
144 version: 7.0.3 147 version: 7.0.3
145 eslint: 148 eslint:
146 specifier: 8.56.0 149 specifier: 8.56.0
147 version: 8.56.0 150 version: 8.56.0
148 eslint-config-prettier:
149 specifier: 9.1.0
150 version: 9.1.0(eslint@8.56.0)
151 eslint-plugin-adonis:
152 specifier: 2.1.1
153 version: 2.1.1(eslint@8.56.0)(typescript@5.3.3)
154 eslint-plugin-import: 151 eslint-plugin-import:
155 specifier: 2.29.1 152 specifier: 2.29.1
156 version: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.56.0) 153 version: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)
157 eslint-plugin-prettier:
158 specifier: 5.1.3
159 version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.5)
160 eslint-plugin-unicorn: 154 eslint-plugin-unicorn:
161 specifier: 50.0.1 155 specifier: 51.0.1
162 version: 50.0.1(eslint@8.56.0) 156 version: 51.0.1(eslint@8.56.0)
163 husky: 157 husky:
164 specifier: 9.0.10 158 specifier: 9.0.10
165 version: 9.0.10 159 version: 9.0.10
166 is-ci: 160 is-ci:
167 specifier: 3.0.1 161 specifier: 3.0.1
168 version: 3.0.1 162 version: 3.0.1
169 pino-pretty:
170 specifier: 10.3.1
171 version: 10.3.1
172 prettier: 163 prettier:
173 specifier: 3.2.5 164 specifier: 3.2.5
174 version: 3.2.5 165 version: 3.2.5
166 ts-node:
167 specifier: 10.9.2
168 version: 10.9.2(@swc/core@1.4.0)(@types/node@20.7.2)(typescript@5.3.3)
175 typescript: 169 typescript:
176 specifier: 5.3.3 170 specifier: 5.3.3
177 version: 5.3.3 171 version: 5.3.3
178 youch: 172 vite:
179 specifier: 3.3.3 173 specifier: 5.1.1
180 version: 3.3.3 174 version: 5.1.1(@types/node@20.7.2)
181 youch-terminal:
182 specifier: 2.2.3
183 version: 2.2.3
184 175
185packages: 176packages:
186 177
@@ -189,251 +180,334 @@ packages:
189 engines: {node: '>=0.10.0'} 180 engines: {node: '>=0.10.0'}
190 dev: true 181 dev: true
191 182
192 /@adonisjs/ace@11.3.1(@adonisjs/application@5.3.0): 183 /@adonisjs/ace@13.0.0:
193 resolution: {integrity: sha512-Ho3+Lk/16OSjX3CfhxsoLUTlcVG4sDlXUwHx+Zry/RLft5M6plT5ln0WkZvL7tqtb1uCZgP5YiMrMtDjSRzZLA==} 184 resolution: {integrity: sha512-Hj5QjRgYnMUXiYuzMH5gQtzHH2hBNo4BO8VW7Jkrbbvh/YlUeFBkTSpTY010EBxmxSrslZKuHQynJ9JVRFExyQ==}
194 peerDependencies: 185 engines: {node: '>=18.16.0'}
195 '@adonisjs/application': ^5.0.0
196 dependencies:
197 '@adonisjs/application': 5.3.0
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
204 mustache: 4.2.0
205 slash: 3.0.0
206 term-size: 2.2.1
207
208 /@adonisjs/application@5.3.0:
209 resolution: {integrity: sha512-AruZZXMgOdmmRxJEHUbXoqhgRavPfhkeIR2nQtGyxbn0PCNjqlGraq8ypuLINY1J+wNuH2tt0xCS98EDeMdTOQ==}
210 dependencies: 186 dependencies:
211 '@adonisjs/config': 3.0.9 187 '@poppinss/cliui': 6.3.0
212 '@adonisjs/env': 3.0.9 188 '@poppinss/hooks': 7.2.2
213 '@adonisjs/fold': 8.2.0 189 '@poppinss/macroable': 1.0.1
214 '@adonisjs/logger': 4.1.5 190 '@poppinss/prompts': 3.1.2
215 '@adonisjs/profiler': 6.0.9(@adonisjs/logger@4.1.5) 191 '@poppinss/utils': 6.7.2
216 '@poppinss/utils': 5.0.0 192 fastest-levenshtein: 1.0.16
217 semver: 7.6.0 193 jsonschema: 1.4.1
194 string-width: 7.1.0
195 yargs-parser: 21.1.1
196 youch: 3.3.3
197 youch-terminal: 2.2.3
218 198
219 /@adonisjs/assembler@5.9.5(@adonisjs/core@5.9.0): 199 /@adonisjs/application@8.0.4(@adonisjs/config@5.0.1)(@adonisjs/fold@10.0.1):
220 resolution: {integrity: sha512-wCtQRZ4KoIZkzi+ux5NrDUDNASRomytRZ7AZBdw8Hi3LlEOeac4T8+47y7gXwJFKH2nnGoiIwnXGIgJyolXEfQ==} 200 resolution: {integrity: sha512-Bh+tKZ/nmU0odBq3FJjpFTZoLcp6/vEosE9DGBu9jbxELeLeW4eY3racNidlEpMz45ObQHA7mAgzeL50xKoWvQ==}
201 engines: {node: '>=18.16.0'}
221 peerDependencies: 202 peerDependencies:
222 '@adonisjs/core': ^5.1.0 203 '@adonisjs/config': ^5.0.0
223 dependencies: 204 '@adonisjs/fold': ^10.0.0
224 '@adonisjs/application': 5.3.0 205 dependencies:
225 '@adonisjs/core': 5.9.0 206 '@adonisjs/config': 5.0.1
226 '@adonisjs/env': 3.0.9 207 '@adonisjs/fold': 10.0.1
227 '@adonisjs/ioc-transformer': 2.3.4 208 '@poppinss/hooks': 7.2.2
228 '@adonisjs/require-ts': 2.0.13 209 '@poppinss/macroable': 1.0.1
229 '@adonisjs/sink': 5.4.3(@adonisjs/application@5.3.0) 210 '@poppinss/utils': 6.7.2
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 211 glob-parent: 6.0.2
239 has-yarn: 2.1.0 212 tempura: 0.4.0
240 picomatch: 2.3.1 213
241 slash: 3.0.0 214 /@adonisjs/assembler@7.1.1(typescript@5.3.3):
215 resolution: {integrity: sha512-W5D+IXs/6Zym+3htv2E9JUXvo7XUvA5vfEbtLEKSGw+hFEcGL5uo7BGFDafmYran4axF+mrIYS8gJDU8SvwszQ==}
216 engines: {node: '>=18.16.0'}
217 peerDependencies:
218 typescript: ^4.0.0 || ^5.0.0
219 dependencies:
220 '@adonisjs/env': 5.0.1
221 '@antfu/install-pkg': 0.3.1
222 '@poppinss/chokidar-ts': 4.1.3(typescript@5.3.3)
223 '@poppinss/cliui': 6.3.0
224 cpy: 11.0.0
225 dedent: 1.5.1
226 execa: 8.0.1
227 fast-glob: 3.3.2
228 get-port: 7.0.0
229 junk: 4.0.1
230 picomatch: 3.0.1
231 pretty-hrtime: 1.0.3
232 slash: 5.1.0
233 ts-morph: 21.0.1
234 typescript: 5.3.3
242 transitivePeerDependencies: 235 transitivePeerDependencies:
243 - supports-color 236 - babel-plugin-macros
244 dev: true 237
245 238 /@adonisjs/auth@9.1.1(@adonisjs/assembler@7.1.1)(@adonisjs/core@6.2.3)(@adonisjs/lucid@20.1.0)(@adonisjs/session@7.1.1)(@japa/plugin-adonisjs@3.0.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): 239 resolution: {integrity: sha512-gusUQT/9xWYZvdOzHQeqFlI1WDsxi0DIHxjkCNcExwLHpCwBvJ2+VItQ5+dBx5Aryi7Szm2C4od/vg08f//A5g==}
247 resolution: {integrity: sha512-js9e8AHEsNC/8MGvho6MgL+uXr8SlhTg9MJJDWQBBiqsKkT7+H7NMP/pLbuSzYaaf40t2u/OXfq6wXuIC5ZYvw==} 240 engines: {node: '>=18.16.0'}
248 peerDependencies: 241 peerDependencies:
249 '@adonisjs/core': ^5.7.1 242 '@adonisjs/core': ^6.2.1
250 '@adonisjs/i18n': ^1.5.0 243 '@adonisjs/lucid': ^20.1.0
251 '@adonisjs/lucid': ^18.0.0 244 '@adonisjs/session': ^7.1.1
252 '@adonisjs/redis': ^7.2.0 245 '@japa/api-client': ^2.0.2
253 '@adonisjs/session': ^6.2.0 246 '@japa/browser-client': ^2.0.2
247 '@japa/plugin-adonisjs': ^3.0.0
254 peerDependenciesMeta: 248 peerDependenciesMeta:
255 '@adonisjs/i18n':
256 optional: true
257 '@adonisjs/lucid': 249 '@adonisjs/lucid':
258 optional: true 250 optional: true
259 '@adonisjs/redis':
260 optional: true
261 '@adonisjs/session': 251 '@adonisjs/session':
262 optional: true 252 optional: true
253 '@japa/api-client':
254 optional: true
255 '@japa/browser-client':
256 optional: true
257 '@japa/plugin-adonisjs':
258 optional: true
263 dependencies: 259 dependencies:
264 '@adonisjs/core': 5.9.0 260 '@adonisjs/core': 6.2.3(@adonisjs/assembler@7.1.1)(bcrypt@5.1.1)(edge.js@6.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.3)(sqlite3@5.1.6) 261 '@adonisjs/lucid': 20.1.0(@adonisjs/assembler@7.1.1)(@adonisjs/core@6.2.3)(luxon@3.4.4)(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.7)
266 '@adonisjs/session': 6.4.0(@adonisjs/core@5.9.0) 262 '@adonisjs/presets': 2.2.4(@adonisjs/assembler@7.1.1)(@adonisjs/core@6.2.3)
267 '@poppinss/hooks': 5.0.3(@adonisjs/application@5.3.0) 263 '@adonisjs/session': 7.1.1(@adonisjs/core@6.2.3)(edge.js@6.0.1)
268 '@poppinss/utils': 5.0.0 264 '@japa/plugin-adonisjs': 3.0.0(@adonisjs/core@6.2.3)(@japa/runner@3.1.1)
269 luxon: 3.4.4 265 basic-auth: 2.0.1
270 transitivePeerDependencies: 266 transitivePeerDependencies:
271 - '@adonisjs/application' 267 - '@adonisjs/assembler'
272 dev: false 268 dev: false
273 269
274 /@adonisjs/bodyparser@8.1.9(@adonisjs/application@5.3.0)(@adonisjs/drive@2.3.0)(@adonisjs/http-server@5.12.0): 270 /@adonisjs/bodyparser@10.0.1(@adonisjs/http-server@7.0.3):
275 resolution: {integrity: sha512-enVETPmoBJhg+CP6AVlG/GSwllpW/5y22wjFpEhYZl0YOXnE7i+wsp2VeGfMtQzl4+snTuAPEfwCtG+I/s6jqQ==} 271 resolution: {integrity: sha512-Q5NvSjqSt8yNN/CObu7pRDgMRpFVnPHL1CReBK1Y9ZdPpSCJ+/n/GpOYsUh+ChhFMjRNdFy4rDk3RJ2QUOTHIQ==}
272 engines: {node: '>=18.16.0'}
276 peerDependencies: 273 peerDependencies:
277 '@adonisjs/application': ^5.0.0 274 '@adonisjs/http-server': ^7.0.2
278 '@adonisjs/drive': ^2.0.0 275 dependencies:
279 '@adonisjs/http-server': ^5.0.0 276 '@adonisjs/http-server': 7.0.3(@adonisjs/application@8.0.4)(@adonisjs/encryption@6.0.1)(@adonisjs/events@9.0.1)(@adonisjs/fold@10.0.1)(@adonisjs/logger@6.0.1)
280 dependencies: 277 '@paralleldrive/cuid2': 2.2.2
281 '@adonisjs/application': 5.3.0 278 '@poppinss/macroable': 1.0.1
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 279 '@poppinss/multiparty': 2.0.1
286 '@poppinss/utils': 5.0.0 280 '@poppinss/utils': 6.7.2
281 '@types/qs': 6.9.11
287 bytes: 3.1.2 282 bytes: 3.1.2
288 file-type: 16.5.4 283 file-type: 19.0.0
289 fs-extra: 10.1.0 284 inflation: 2.1.0
290 media-typer: 1.1.0 285 media-typer: 1.1.0
291 slash: 3.0.0 286 qs: 6.11.2
287 raw-body: 2.5.2
292 288
293 /@adonisjs/config@3.0.9: 289 /@adonisjs/config@5.0.1:
294 resolution: {integrity: sha512-f+wzrc+0HLvhJyYGEMV2QTHtyJ8sI3PKvH9h/baW/iF8UO3KF+llHH0Cf3/M5dYnpdz9rnmj0VtdTaIDfxrgGg==} 290 resolution: {integrity: sha512-hyednyDBGsoBthbcf7S8r8M68tS8Y7rnIBPIZKHhQikXOXgf/E9IkQWgWjJR9+ODbaiMY69roJYR5L9dElre7w==}
295 dependencies: 291 engines: {node: '>=18.16.0'}
296 '@poppinss/utils': 5.0.0 292 dependencies:
297 293 '@poppinss/utils': 6.7.2
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
318 transitivePeerDependencies:
319 - supports-color
320 294
321 /@adonisjs/drive@2.3.0(@adonisjs/application@5.3.0)(@adonisjs/http-server@5.12.0): 295 /@adonisjs/core@6.2.3(@adonisjs/assembler@7.1.1)(bcrypt@5.1.1)(edge.js@6.0.1):
322 resolution: {integrity: sha512-3V1kBe2qB/860KcS+dDonv8Xya2YDBdR7291pQgObJeTbV50Vy8RhwdOwtU7ybRfN2kh/svdC4238JGpbQOR9w==} 296 resolution: {integrity: sha512-ompZA34XINVz2FhegQLvjBn0l550DfIalMTRFgxDzSK80BYCd1xEbIZJ33Js361PH/REgekvdOH5YJBxJqJYjw==}
297 engines: {node: '>=18.16.0'}
298 hasBin: true
323 peerDependencies: 299 peerDependencies:
324 '@adonisjs/application': ^5.0.0 300 '@adonisjs/assembler': ^7.1.0
325 '@adonisjs/http-server': ^5.0.0 301 '@vinejs/vine': ^1.7.0
326 dependencies: 302 argon2: ^0.31.1
327 '@adonisjs/application': 5.3.0 303 bcrypt: ^5.1.1
328 '@adonisjs/http-server': 5.12.0(@adonisjs/application@5.3.0)(@adonisjs/encryption@4.0.8) 304 edge.js: ^6.0.1
329 '@poppinss/manager': 5.0.2 305 peerDependenciesMeta:
330 '@poppinss/utils': 5.0.0 306 '@adonisjs/assembler':
331 '@types/fs-extra': 9.0.13 307 optional: true
332 etag: 1.8.1 308 '@vinejs/vine':
333 fs-extra: 10.1.0 309 optional: true
334 memfs: 3.5.3 310 argon2:
311 optional: true
312 bcrypt:
313 optional: true
314 edge.js:
315 optional: true
316 dependencies:
317 '@adonisjs/ace': 13.0.0
318 '@adonisjs/application': 8.0.4(@adonisjs/config@5.0.1)(@adonisjs/fold@10.0.1)
319 '@adonisjs/assembler': 7.1.1(typescript@5.3.3)
320 '@adonisjs/bodyparser': 10.0.1(@adonisjs/http-server@7.0.3)
321 '@adonisjs/config': 5.0.1
322 '@adonisjs/encryption': 6.0.1
323 '@adonisjs/env': 5.0.1
324 '@adonisjs/events': 9.0.1(@adonisjs/application@8.0.4)(@adonisjs/fold@10.0.1)
325 '@adonisjs/fold': 10.0.1
326 '@adonisjs/hash': 9.0.1(bcrypt@5.1.1)
327 '@adonisjs/http-server': 7.0.3(@adonisjs/application@8.0.4)(@adonisjs/encryption@6.0.1)(@adonisjs/events@9.0.1)(@adonisjs/fold@10.0.1)(@adonisjs/logger@6.0.1)
328 '@adonisjs/logger': 6.0.1
329 '@adonisjs/repl': 4.0.1
330 '@paralleldrive/cuid2': 2.2.2
331 '@poppinss/macroable': 1.0.1
332 '@poppinss/utils': 6.7.2
333 '@sindresorhus/is': 6.1.0
334 '@types/he': 1.2.3
335 bcrypt: 5.1.1
336 edge.js: 6.0.1
337 he: 1.2.0
338 parse-imports: 1.1.2
339 pretty-hrtime: 1.0.3
340 string-width: 7.1.0
341 youch: 3.3.3
342 youch-terminal: 2.2.3
335 343
336 /@adonisjs/encryption@4.0.8(@adonisjs/application@5.3.0): 344 /@adonisjs/cors@2.2.1(@adonisjs/core@6.2.3):
337 resolution: {integrity: sha512-zMWbIESPHXafsbiLJyON/hlRYwrTIA3PuTil7xC8W4ngC36PgWe86Ra0x0t961u1We/LaSGkT8Vn93DymqB3aA==} 345 resolution: {integrity: sha512-qnrSG8ylpgTeZBOYEN3yXxY0PBUEg1KGDhgn9VKVFGxLKT+o9GGVOSZxUK3wG341B1zB9w5vuZN1z4M0Jitb6g==}
346 engines: {node: '>=18.16.0'}
338 peerDependencies: 347 peerDependencies:
339 '@adonisjs/application': ^5.0.0 348 '@adonisjs/core': ^6.2.0
340 dependencies: 349 dependencies:
341 '@adonisjs/application': 5.3.0 350 '@adonisjs/core': 6.2.3(@adonisjs/assembler@7.1.1)(bcrypt@5.1.1)(edge.js@6.0.1)
342 '@poppinss/utils': 4.0.4 351 dev: false
343 352
344 /@adonisjs/env@3.0.9: 353 /@adonisjs/encryption@6.0.1:
345 resolution: {integrity: sha512-9lxGmOQuF4FpUQ6NIwL/YQumaXG+2Wt8jQlQptplSUTasy6DHSEp7/SYvtC2RD9vxwn4gsptNCo+f8YRiqUvwQ==} 354 resolution: {integrity: sha512-9Vz2xU8cryCvRgQDri+4khZIeRDM6yJFe35PdR6xyhgQaT91Qn7fJ2oAcg3yVuNp3WKxg6PTRcxva+ZTfdP3SA==}
355 engines: {node: '>=18.16.0'}
346 dependencies: 356 dependencies:
347 '@poppinss/utils': 4.0.4 357 '@poppinss/utils': 6.7.2
348 dotenv: 16.3.1
349 validator: 13.11.0
350 358
351 /@adonisjs/events@7.2.1(@adonisjs/application@5.3.0): 359 /@adonisjs/env@5.0.1:
352 resolution: {integrity: sha512-N+ewQ19pvdWVIRGBeio1GqlMRJpHpZ+ZHCjhObI+bqoCh5nBApumW0JYe4blyMnUbUAtA9Aq1m1QbGaE7pRMcw==} 360 resolution: {integrity: sha512-jka5D+LHjG0Cuy1IpuOv7NfO5Pu4SZ41UzX5csPeXzBIWyuD9as+HphxctHZpsD2KZ97EuSbVJv6zzxJfZ4Edg==}
361 engines: {node: '>=18.16.0'}
362 dependencies:
363 '@poppinss/utils': 6.7.2
364 '@poppinss/validator-lite': 1.0.3
365 dotenv: 16.4.2
366 split-lines: 3.0.0
367
368 /@adonisjs/eslint-config@1.2.1(eslint@8.56.0)(prettier@3.2.5)(typescript@5.3.3):
369 resolution: {integrity: sha512-kCGvnLcRWyw21YVEnka1TDNquJKrqkY6K7EENxM6tWwoHUyn0j99ssX4+Hv3d2UVvVezcC4KF1l8YZKzLqlgjA==}
353 peerDependencies: 370 peerDependencies:
354 '@adonisjs/application': ^5.0.0 371 eslint: '>=7.4.0'
372 prettier: '>=2.0.0'
355 dependencies: 373 dependencies:
356 '@adonisjs/application': 5.3.0 374 '@adonisjs/eslint-plugin': 1.2.1(eslint@8.56.0)(typescript@5.3.3)
357 emittery: 0.10.2 375 '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3)
376 '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
377 eslint: 8.56.0
378 eslint-config-prettier: 8.10.0(eslint@8.56.0)
379 eslint-plugin-jsonc: 2.13.0(eslint@8.56.0)
380 eslint-plugin-prettier: 5.1.3(eslint-config-prettier@8.10.0)(eslint@8.56.0)(prettier@3.2.5)
381 eslint-plugin-unicorn: 47.0.0(eslint@8.56.0)
382 jsonc-eslint-parser: 2.4.0
383 prettier: 3.2.5
384 transitivePeerDependencies:
385 - '@types/eslint'
386 - supports-color
387 - typescript
388 dev: true
358 389
359 /@adonisjs/fold@8.2.0: 390 /@adonisjs/eslint-plugin@1.2.1(eslint@8.56.0)(typescript@5.3.3):
360 resolution: {integrity: sha512-Uoo2HPp4SShIkGOF3+p3gT09W3j0zpkK+fOpPyYPTqYm7CWAunklTlowqX45b6CAVb5DCcORDUB8ia4D1ijeKg==} 391 resolution: {integrity: sha512-dwL0x5An5n/q1sy4ZL3eUqqTGlTJKn/Z8m53m7/DpAHtvq4QZTaxUZ3rF5WgnNiI5Q8+wyc/JcQ+lvQ4T0vH+A==}
361 dependencies: 392 dependencies:
362 '@poppinss/utils': 4.0.4 393 '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3)
394 transitivePeerDependencies:
395 - eslint
396 - supports-color
397 - typescript
398 dev: true
363 399
364 /@adonisjs/hash@7.2.2(@adonisjs/application@5.3.0): 400 /@adonisjs/events@9.0.1(@adonisjs/application@8.0.4)(@adonisjs/fold@10.0.1):
365 resolution: {integrity: sha512-qJxFX8jNH+5+jxckIIvz2y9pMt59ueT50a4B5kUe/68g5iC7UdwKmMos+tj5Pnm5hRFfwKXbtIQBGd+Bb87+2Q==} 401 resolution: {integrity: sha512-1tOwBrwrJLE7zLB+/KzbAzBUq8IeQMLdqUFVC0d5A+Bq0ko/kn4O2xoRAybhrG9NHxQtFoSrOx+Ynb/8d+YffQ==}
402 engines: {node: '>=18.16.0'}
366 peerDependencies: 403 peerDependencies:
367 '@adonisjs/application': ^5.0.0 404 '@adonisjs/application': ^8.0.2
405 '@adonisjs/fold': ^10.0.1
368 dependencies: 406 dependencies:
369 '@adonisjs/application': 5.3.0 407 '@adonisjs/application': 8.0.4(@adonisjs/config@5.0.1)(@adonisjs/fold@10.0.1)
370 '@phc/format': 1.0.0 408 '@adonisjs/fold': 10.0.1
371 '@poppinss/manager': 5.0.2 409 '@poppinss/utils': 6.7.2
372 '@poppinss/utils': 5.0.0 410 '@sindresorhus/is': 6.1.0
411 emittery: 1.0.2
412
413 /@adonisjs/fold@10.0.1:
414 resolution: {integrity: sha512-3SqwopxFtvy3WDs1Z3ZOdjS1M3JfTX8r0dCEQ+ascXhiLYwmv0LCoCY3vcmwVL+wpuyOG1qkKWkjZP1sB3+/bA==}
415 engines: {node: '>=18.16.0'}
416 dependencies:
417 '@poppinss/utils': 6.7.2
373 418
374 /@adonisjs/http-server@5.12.0(@adonisjs/application@5.3.0)(@adonisjs/encryption@4.0.8): 419 /@adonisjs/hash@9.0.1(bcrypt@5.1.1):
375 resolution: {integrity: sha512-+9cw/DRlLO2NSoHsccmMe3pFf6c0/8INds2yf73ZAZOmzUROb9DQaXHocJ/iwHX9EVxtDuKWDc5z0jI1SYdqEA==} 420 resolution: {integrity: sha512-K1jHQWr7ovXf6zHoo+70fmAt33op50GVygZd6ilvyQfCCEPx3lRqGoxqmRdgzDW5eCAfxCwy+nH7zxf8BhX4GQ==}
421 engines: {node: '>=18.16.0'}
376 peerDependencies: 422 peerDependencies:
377 '@adonisjs/application': ^5.0.0 423 argon2: ^0.31.2
378 '@adonisjs/encryption': ^4.0.0 424 bcrypt: ^5.1.1
425 peerDependenciesMeta:
426 argon2:
427 optional: true
428 bcrypt:
429 optional: true
379 dependencies: 430 dependencies:
380 '@adonisjs/application': 5.3.0 431 '@phc/format': 1.0.0
381 '@adonisjs/encryption': 4.0.8(@adonisjs/application@5.3.0) 432 '@poppinss/utils': 6.7.2
433 bcrypt: 5.1.1
434
435 /@adonisjs/http-server@7.0.3(@adonisjs/application@8.0.4)(@adonisjs/encryption@6.0.1)(@adonisjs/events@9.0.1)(@adonisjs/fold@10.0.1)(@adonisjs/logger@6.0.1):
436 resolution: {integrity: sha512-z8IlnmCsEHiwqYo4eOXx+lKgyXtRCfbQ/KKfEJgfHfspmczJqCt2jVNiJuFuVBeIdPXDIJIys2dJMwu1hsyqoA==}
437 engines: {node: '>=18.16.0'}
438 peerDependencies:
439 '@adonisjs/application': ^8.0.2
440 '@adonisjs/encryption': ^6.0.0
441 '@adonisjs/events': ^9.0.0
442 '@adonisjs/fold': ^10.0.1
443 '@adonisjs/logger': ^6.0.1
444 dependencies:
445 '@adonisjs/application': 8.0.4(@adonisjs/config@5.0.1)(@adonisjs/fold@10.0.1)
446 '@adonisjs/encryption': 6.0.1
447 '@adonisjs/events': 9.0.1(@adonisjs/application@8.0.4)(@adonisjs/fold@10.0.1)
448 '@adonisjs/fold': 10.0.1
449 '@adonisjs/logger': 6.0.1
450 '@paralleldrive/cuid2': 2.2.2
451 '@poppinss/macroable': 1.0.1
382 '@poppinss/matchit': 3.1.2 452 '@poppinss/matchit': 3.1.2
383 '@poppinss/utils': 5.0.0 453 '@poppinss/middleware': 3.2.2
454 '@poppinss/utils': 6.7.2
455 '@sindresorhus/is': 6.1.0
384 accepts: 1.3.8 456 accepts: 1.3.8
385 co-compose: 7.0.3
386 content-disposition: 0.5.4 457 content-disposition: 0.5.4
387 cookie: 0.5.0 458 cookie: 0.6.0
388 destroy: 1.2.0 459 destroy: 1.2.0
389 encodeurl: 1.0.2 460 encodeurl: 1.0.2
390 etag: 1.8.1 461 etag: 1.8.1
391 fresh: 0.5.2 462 fresh: 0.5.2
392 haye: 3.0.0
393 macroable: 7.0.2
394 mime-types: 2.1.35 463 mime-types: 2.1.35
395 ms: 2.1.3
396 on-finished: 2.4.1 464 on-finished: 2.4.1
397 pluralize: 8.0.0
398 proxy-addr: 2.0.7 465 proxy-addr: 2.0.7
399 qs: 6.11.2 466 qs: 6.11.2
400 tmp-cache: 1.1.0 467 tmp-cache: 1.1.0
401 type-is: 1.6.18 468 type-is: 1.6.18
402 vary: 1.1.2 469 vary: 1.1.2
470 youch: 3.3.3
403 471
404 /@adonisjs/ioc-transformer@2.3.4: 472 /@adonisjs/logger@6.0.1:
405 resolution: {integrity: sha512-ik1C7f0Hbqenw6S1Ty06B4pznGfpUH5bL2fiCYgwq+jKPw8CKdsTQKvYudS6Tj68Nr6Mpqow4RNbvFV/OC0mZg==} 473 resolution: {integrity: sha512-zt3G2XPWZcreO6okdZ4A9CXfZhPBaAUTbsJZrLEYILdb5E0r5ZGw/MH6enK4uiN7BI+Y90W6HjXfQzKmXnNV2g==}
406 dev: true 474 engines: {node: '>=18.16.0'}
407
408 /@adonisjs/logger@4.1.5:
409 resolution: {integrity: sha512-JMINhXp/6VW0y4e86luyM8vbBzV4Y5F4IzVklMObCu/SwiaCbp5bgx9Z6QOHiGVW8SFVlRF1KlwLq8pAifjTpQ==}
410 dependencies: 475 dependencies:
411 '@poppinss/utils': 5.0.0 476 '@poppinss/utils': 6.7.2
412 '@types/pino': 6.3.12
413 abstract-logging: 2.0.1 477 abstract-logging: 2.0.1
414 pino: 6.14.0 478 pino: 8.18.0
415 479
416 /@adonisjs/lucid@18.4.0(@adonisjs/application@5.3.0)(@adonisjs/core@5.9.0)(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.6): 480 /@adonisjs/lucid@20.1.0(@adonisjs/assembler@7.1.1)(@adonisjs/core@6.2.3)(luxon@3.4.4)(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.7):
417 resolution: {integrity: sha512-pSBhKFzqr6mWoeIiGdcW2OQIWAyCoLn+G7VmXXLqxHvGm+9SaioKJaSMmaJa0xgS5v64r/MVLeH/nw87Q4KpyQ==} 481 resolution: {integrity: sha512-0kCqagM5pvydFFUP5rcc7G+LI18pMNKBnzdYzavAz2jKgw3yclr4I70t9j20DiMJTjWwF0v2X9gFfHXjXSQ7aA==}
482 engines: {node: '>=18.16.0'}
418 peerDependencies: 483 peerDependencies:
419 '@adonisjs/core': ^5.1.0 484 '@adonisjs/assembler': ^7.0.0
485 '@adonisjs/core': ^6.2.2
486 luxon: ^3.4.4
487 peerDependenciesMeta:
488 '@adonisjs/assembler':
489 optional: true
490 luxon:
491 optional: true
420 dependencies: 492 dependencies:
421 '@adonisjs/core': 5.9.0 493 '@adonisjs/assembler': 7.1.1(typescript@5.3.3)
422 '@faker-js/faker': 8.1.0 494 '@adonisjs/core': 6.2.3(@adonisjs/assembler@7.1.1)(bcrypt@5.1.1)(edge.js@6.0.1)
423 '@poppinss/hooks': 5.0.3(@adonisjs/application@5.3.0) 495 '@adonisjs/presets': 2.2.4(@adonisjs/assembler@7.1.1)(@adonisjs/core@6.2.3)
424 '@poppinss/utils': 5.0.0 496 '@faker-js/faker': 8.4.1
497 '@poppinss/hooks': 7.2.2
498 '@poppinss/macroable': 1.0.1
499 '@poppinss/utils': 6.7.2
425 fast-deep-equal: 3.1.3 500 fast-deep-equal: 3.1.3
426 igniculus: 1.5.0 501 igniculus: 1.5.0
427 knex: 2.5.1(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.6) 502 kleur: 4.1.5
428 knex-dynamic-connection: 3.1.0(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.6) 503 knex: 3.1.0(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.7)
504 knex-dynamic-connection: 3.1.1(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.7)
429 luxon: 3.4.4 505 luxon: 3.4.4
430 macroable: 7.0.2
431 pretty-hrtime: 1.0.3 506 pretty-hrtime: 1.0.3
432 qs: 6.11.2 507 qs: 6.11.2
433 slash: 3.0.0 508 slash: 5.1.0
434 tarn: 3.0.2 509 tarn: 3.0.2
435 transitivePeerDependencies: 510 transitivePeerDependencies:
436 - '@adonisjs/application'
437 - better-sqlite3 511 - better-sqlite3
438 - mysql 512 - mysql
439 - mysql2 513 - mysql2
@@ -444,23 +518,28 @@ packages:
444 - tedious 518 - tedious
445 dev: false 519 dev: false
446 520
447 /@adonisjs/mail@8.2.0(@adonisjs/core@5.9.0)(@adonisjs/view@6.2.0)(@types/luxon@3.4.2)(luxon@3.4.4)(moment@2.30.1): 521 /@adonisjs/mail@9.2.0(@adonisjs/core@6.2.3)(@types/luxon@3.4.2)(@types/node@20.7.2)(edge.js@6.0.1)(luxon@3.4.4)(moment@2.30.1):
448 resolution: {integrity: sha512-gsmqj4akVnR3UFBotrfY517uWl9JC9CLiXdxMdtO76sq3p6GUUV1GlqL/m6lPurPTrT8a+EFe5CKBpLwIt84CQ==} 522 resolution: {integrity: sha512-TeZuB0VV3dDh4lPdHxvR9nxWFYkgjtRCURCT4mBMpa3Pxu0XtLwCs8s6jLYvt8k+L4pG2zHJttCrKNpM6hsrlw==}
523 engines: {node: '>=18.16.0'}
449 peerDependencies: 524 peerDependencies:
450 '@adonisjs/core': ^5.1.0 525 '@adonisjs/core': ^6.2.0
451 '@adonisjs/view': ^6.0.0 526 '@aws-sdk/client-ses': ^3.485.0
452 dependencies: 527 edge.js: ^6.0.1
453 '@adonisjs/core': 5.9.0 528 peerDependenciesMeta:
454 '@adonisjs/view': 6.2.0(@adonisjs/core@5.9.0) 529 '@aws-sdk/client-ses':
455 '@poppinss/colors': 3.0.3 530 optional: true
456 '@poppinss/manager': 5.0.2 531 dependencies:
457 '@poppinss/utils': 4.0.4 532 '@adonisjs/core': 6.2.3(@adonisjs/assembler@7.1.1)(bcrypt@5.1.1)(edge.js@6.0.1)
458 fastq: 1.15.0 533 '@poppinss/colors': 4.1.2
459 get-stream: 6.0.1 534 '@poppinss/macroable': 1.0.1
460 got: 11.8.6 535 '@poppinss/utils': 6.7.2
461 ical-generator: 4.1.0(@types/luxon@3.4.2)(luxon@3.4.4)(moment@2.30.1) 536 '@types/nodemailer': 6.4.14
462 multi-part: 3.0.0 537 edge.js: 6.0.1
463 nodemailer: 6.9.5 538 fastq: 1.17.1
539 formdata-node: 6.0.3
540 got: 14.2.0
541 ical-generator: 6.0.1(@types/luxon@3.4.2)(@types/node@20.7.2)(luxon@3.4.4)(moment@2.30.1)
542 nodemailer: 6.9.9
464 transitivePeerDependencies: 543 transitivePeerDependencies:
465 - '@touch4it/ical-timezones' 544 - '@touch4it/ical-timezones'
466 - '@types/luxon' 545 - '@types/luxon'
@@ -473,156 +552,139 @@ packages:
473 - rrule 552 - rrule
474 dev: false 553 dev: false
475 554
476 /@adonisjs/profiler@6.0.9(@adonisjs/logger@4.1.5): 555 /@adonisjs/presets@2.2.4(@adonisjs/assembler@7.1.1)(@adonisjs/core@6.2.3):
477 resolution: {integrity: sha512-V1bJPPDTn05NzAKUEICnYtWi9fC8NownUToaqxVkWOUovYBO6ubt06qtH1Uv9zvUjB2PKHUn+ieDAOgyHle09A==} 556 resolution: {integrity: sha512-bYciFKma/M2JkKR2bxg3A9/oNGGIXgGNLatgvGVSxCJvAZ5LRkcPsdCr+n0rruAmY/BedUrhAV4b82UyDVxBEg==}
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: 557 peerDependencies:
488 '@adonisjs/core': ^5.1.0 558 '@adonisjs/assembler': ^7.0.0
559 '@adonisjs/core': ^6.2.0
560 peerDependenciesMeta:
561 '@adonisjs/assembler':
562 optional: true
489 dependencies: 563 dependencies:
490 '@adonisjs/core': 5.9.0 564 '@adonisjs/assembler': 7.1.1(typescript@5.3.3)
491 '@poppinss/colors': 3.0.3 565 '@adonisjs/core': 6.2.3(@adonisjs/assembler@7.1.1)(bcrypt@5.1.1)(edge.js@6.0.1)
492 node-repl-await: 0.1.2 566 '@poppinss/utils': 6.7.2
493 parse-imports: 0.0.5
494 string-width: 4.2.3
495 dev: false 567 dev: false
496 568
497 /@adonisjs/require-ts@2.0.13: 569 /@adonisjs/prettier-config@1.2.1:
498 resolution: {integrity: sha512-PyDvrGzriU9dJC/ZkP+aT/+5jKCMTWIlc6KivU/uSGX9L9+PF213nzAATS1PKEWP1G0GcWsnyhQW8QgMwuFS3A==} 570 resolution: {integrity: sha512-lE9vJNKvknB+RO7uf11C2aT4nPjCxrP6IqPDjVu3HU7qy1VPY1e44SEsxdCOvOm7aFbv9hRV8ZN7sOl37Wa8ww==}
499 dependencies:
500 '@poppinss/utils': 5.0.0
501 debug: 4.3.4
502 find-cache-dir: 3.3.2
503 fs-extra: 10.1.0
504 normalize-path: 3.0.0
505 pirates: 4.0.6
506 rev-hash: 3.0.0
507 source-map-support: 0.5.21
508 transitivePeerDependencies:
509 - supports-color
510 dev: true 571 dev: true
511 572
512 /@adonisjs/session@6.4.0(@adonisjs/core@5.9.0): 573 /@adonisjs/repl@4.0.1:
513 resolution: {integrity: sha512-9yHS60lFpNBUX5/yB+0j+bXQDWqbaYJ1JelLCYtaKRa7B0NewvmPAmsNpHH8SrXE3XGaRyKOxrUGRcmSGg5mRA==} 574 resolution: {integrity: sha512-fgDRC5I8RBKHzsJPM4rRQF/OWI0K9cNihCIf4yHdqQt3mhFqWSOUjSi4sXWykdICLiddmyBO86au7i0d0dj5vQ==}
575 engines: {node: '>=18.16.0'}
576 dependencies:
577 '@poppinss/colors': 4.1.2
578 string-width: 7.1.0
579
580 /@adonisjs/session@7.1.1(@adonisjs/core@6.2.3)(edge.js@6.0.1):
581 resolution: {integrity: sha512-rv5lF6uEaAT3kujAEbwpVJuTfPcskjXlM8bt8OV2V6eGMQHGVczV3bErvQjW5ouHqyZiotKkCV2+7roGJdDaWw==}
582 engines: {node: '>=18.16.0'}
514 peerDependencies: 583 peerDependencies:
515 '@adonisjs/core': ^5.8.0 584 '@adonisjs/core': ^6.2.0
585 '@adonisjs/redis': ^8.0.0
586 '@japa/api-client': ^2.0.2
587 '@japa/browser-client': ^2.0.2
588 edge.js: ^6.0.1
589 peerDependenciesMeta:
590 '@adonisjs/redis':
591 optional: true
592 '@japa/api-client':
593 optional: true
594 '@japa/browser-client':
595 optional: true
596 edge.js:
597 optional: true
516 dependencies: 598 dependencies:
517 '@adonisjs/core': 5.9.0 599 '@adonisjs/core': 6.2.3(@adonisjs/assembler@7.1.1)(bcrypt@5.1.1)(edge.js@6.0.1)
518 '@poppinss/utils': 4.0.4 600 '@poppinss/utils': 6.7.2
519 fs-extra: 10.1.0 601 edge.js: 6.0.1
520 dev: false
521 602
522 /@adonisjs/shield@7.1.1(@adonisjs/core@5.9.0)(@adonisjs/session@6.4.0)(@adonisjs/view@6.2.0): 603 /@adonisjs/shield@8.1.1(@adonisjs/core@6.2.3)(@adonisjs/session@7.1.1)(edge.js@6.0.1):
523 resolution: {integrity: sha512-y1YzXwravcS/A1yxcyfSD/UrRi2+H9v0ntX9NgVhLYvBF5eHuPzQKgv9sICVjmj2z7n94HzcTAio0Rc32EX51Q==} 604 resolution: {integrity: sha512-b/rIypxfG8HKPRvWYJo7qhvAlvYCFXn7/A7eb/QI/PQV4fMmW4iF9tAykxl5peu4WJCHCwXwR3Y6/j0VerQcmQ==}
605 engines: {node: '>=18.16.0'}
524 peerDependencies: 606 peerDependencies:
525 '@adonisjs/core': ^5.7.0 607 '@adonisjs/core': ^6.2.0
526 '@adonisjs/session': ^6.2.0 608 '@adonisjs/i18n': ^2.0.0
527 '@adonisjs/view': ^6.1.0 609 '@adonisjs/session': ^7.0.0
610 '@japa/api-client': ^2.0.2
611 edge.js: ^6.0.1
528 peerDependenciesMeta: 612 peerDependenciesMeta:
529 '@adonisjs/view': 613 '@adonisjs/i18n':
614 optional: true
615 '@japa/api-client':
616 optional: true
617 edge.js:
530 optional: true 618 optional: true
531 dependencies: 619 dependencies:
532 '@adonisjs/core': 5.9.0 620 '@adonisjs/core': 6.2.3(@adonisjs/assembler@7.1.1)(bcrypt@5.1.1)(edge.js@6.0.1)
533 '@adonisjs/session': 6.4.0(@adonisjs/core@5.9.0) 621 '@adonisjs/session': 7.1.1(@adonisjs/core@6.2.3)(edge.js@6.0.1)
534 '@adonisjs/view': 6.2.0(@adonisjs/core@5.9.0) 622 '@poppinss/utils': 6.7.2
535 '@poppinss/utils': 4.0.4
536 csrf: 3.1.0 623 csrf: 3.1.0
624 edge.js: 6.0.1
537 helmet-csp: 3.4.0 625 helmet-csp: 3.4.0
538 dev: false
539 626
540 /@adonisjs/sink@5.4.3(@adonisjs/application@5.3.0): 627 /@adonisjs/static@1.1.1(@adonisjs/core@6.2.3):
541 resolution: {integrity: sha512-wmAft/tjHQLtjbDjntaVu3/cmeP+3tXKDaMeWjVf6Dz+tXaM9XNg2EVVSV41F3JDF4W1u9ich9mC+4wvWJDy5g==} 628 resolution: {integrity: sha512-Ukd2WB21/eajKLNQbaQ3Chxdqn7HyeHSO41J29oWc8DQFEhxxQIUGq0C1Kv5cJFY7PvZm9RAKMBi/2JC58LFWQ==}
629 engines: {node: '>=18.16.0'}
542 peerDependencies: 630 peerDependencies:
543 '@adonisjs/application': ^5.0.0 631 '@adonisjs/core': ^6.2.0
544 dependencies: 632 dependencies:
545 '@adonisjs/application': 5.3.0 633 '@adonisjs/core': 6.2.3(@adonisjs/assembler@7.1.1)(bcrypt@5.1.1)(edge.js@6.0.1)
546 '@poppinss/cliui': 3.0.5 634 serve-static: 1.15.0
547 '@poppinss/prompts': 2.0.2 635 transitivePeerDependencies:
548 '@poppinss/utils': 5.0.0 636 - supports-color
549 cp-file: 9.1.0 637 dev: false
550 fs-extra: 10.1.0 638
551 marked: 4.3.0 639 /@adonisjs/tsconfig@1.2.1:
552 marked-terminal: 5.2.0(marked@4.3.0) 640 resolution: {integrity: sha512-N8zdNw/bC3ft64e7CGr/LfYDCumoWe3wwePEqq2LRTCjBN/ICyxywW6f60QHLr+q17yHMU6fRFDt0GuRLXtPSA==}
553 mrm-core: 7.1.13
554 mustache: 4.2.0
555 open: 8.4.2
556 dev: true 641 dev: true
557 642
558 /@adonisjs/validator@12.5.0(@adonisjs/application@5.3.0)(@adonisjs/bodyparser@8.1.9)(@adonisjs/http-server@5.12.0): 643 /@adonisjs/validator@13.0.2(@adonisjs/core@6.2.3):
559 resolution: {integrity: sha512-88Lu+8OyS92A4mg0hE8AEjr8q9KmgZeR5obPGoAnCxBrptrsHHtKTQq242c+DbzuAWZzw5ZEX2dvv34PW/FmFw==} 644 resolution: {integrity: sha512-gec1SiJP6Y/SUbm1Co6Z0kh9euUWZnEioWHKJ/XdoX31rTI6qoET1EYX/NGuzT6axsk/zBWmgENhMv/WwNwZ7Q==}
645 engines: {node: '>=18.16.0'}
560 peerDependencies: 646 peerDependencies:
561 '@adonisjs/application': ^5.0.0 647 '@adonisjs/core': ^6.2.0
562 '@adonisjs/bodyparser': ^8.0.0 648 dependencies:
563 '@adonisjs/http-server': ^5.0.0 649 '@adonisjs/core': 6.2.3(@adonisjs/assembler@7.1.1)(bcrypt@5.1.1)(edge.js@6.0.1)
564 dependencies: 650 '@poppinss/utils': 6.7.2
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.4.2 651 '@types/luxon': 3.4.2
570 '@types/validator': 13.11.2 652 '@types/validator': 13.11.9
571 luxon: 3.4.4 653 luxon: 3.4.4
572 normalize-url: 6.1.0 654 normalize-url: 8.0.0
573 tmp-cache: 1.1.0 655 tmp-cache: 1.1.0
574 validator: 13.11.0 656 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
585 dev: false 657 dev: false
586 658
587 /@ampproject/remapping@2.2.1: 659 /@adonisjs/vite@2.0.2(@adonisjs/core@6.2.3)(@adonisjs/shield@8.1.1)(edge.js@6.0.1)(vite@5.1.1):
588 resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} 660 resolution: {integrity: sha512-DBlJGZFPdfGGtwwp119LZgcXlG8oBIdzxA7nqXZdO7KoEcmZJ9QVYTyJHMc5aYxgbhUXcZtKegNcIrfxXCRwjw==}
589 engines: {node: '>=6.0.0'} 661 engines: {node: '>=18.16.0'}
590 dependencies: 662 peerDependencies:
591 '@jridgewell/gen-mapping': 0.3.3 663 '@adonisjs/core': ^6.2.0
592 '@jridgewell/trace-mapping': 0.3.19 664 '@adonisjs/shield': ^8.0.0
593 dev: true 665 edge.js: ^6.0.1
594 666 vite: ^5.0.11
595 /@apidevtools/json-schema-ref-parser@9.1.2: 667 peerDependenciesMeta:
596 resolution: {integrity: sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==} 668 '@adonisjs/shield':
669 optional: true
670 edge.js:
671 optional: true
672 vite:
673 optional: true
597 dependencies: 674 dependencies:
598 '@jsdevtools/ono': 7.1.3 675 '@adonisjs/core': 6.2.3(@adonisjs/assembler@7.1.1)(bcrypt@5.1.1)(edge.js@6.0.1)
599 '@types/json-schema': 7.0.13 676 '@adonisjs/shield': 8.1.1(@adonisjs/core@6.2.3)(@adonisjs/session@7.1.1)(edge.js@6.0.1)
600 call-me-maybe: 1.0.2 677 defu: 6.1.4
601 js-yaml: 4.1.0 678 edge-error: 4.0.1
602 dev: true 679 edge.js: 6.0.1
603 680 vite: 5.1.1(@types/node@20.7.2)
604 /@apidevtools/openapi-schemas@2.1.0: 681 vite-plugin-restart: 0.4.0(vite@5.1.1)
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 682 dev: true
612 683
613 /@apidevtools/swagger-parser@10.0.3(openapi-types@12.1.3): 684 /@antfu/install-pkg@0.3.1:
614 resolution: {integrity: sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==} 685 resolution: {integrity: sha512-A3zWY9VeTPnxlMiZtsGHw2lSd3ghwvL8s9RiGOtqvDxhhFfZ781ynsGBa/iUnDJ5zBrmTFQrJDud3TGgRISaxw==}
615 peerDependencies:
616 openapi-types: '>=7'
617 dependencies: 686 dependencies:
618 '@apidevtools/json-schema-ref-parser': 9.1.2 687 execa: 8.0.1
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 688
627 /@arr/every@1.0.1: 689 /@arr/every@1.0.1:
628 resolution: {integrity: sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg==} 690 resolution: {integrity: sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg==}
@@ -636,254 +698,11 @@ packages:
636 chalk: 2.4.2 698 chalk: 2.4.2
637 dev: true 699 dev: true
638 700
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
659 debug: 4.3.4
660 gensync: 1.0.0-beta.2
661 json5: 2.2.3
662 semver: 6.3.1
663 transitivePeerDependencies:
664 - supports-color
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
676
677 /@babel/helper-annotate-as-pure@7.22.5:
678 resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==}
679 engines: {node: '>=6.9.0'}
680 dependencies:
681 '@babel/types': 7.23.0
682 dev: true
683
684 /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15:
685 resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==}
686 engines: {node: '>=6.9.0'}
687 dependencies:
688 '@babel/types': 7.23.0
689 dev: true
690
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
856
857 /@babel/helper-validator-identifier@7.22.20: 701 /@babel/helper-validator-identifier@7.22.20:
858 resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} 702 resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
859 engines: {node: '>=6.9.0'} 703 engines: {node: '>=6.9.0'}
860 dev: true 704 dev: true
861 705
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'}
870 dependencies:
871 '@babel/helper-function-name': 7.23.0
872 '@babel/template': 7.22.15
873 '@babel/types': 7.23.0
874 dev: true
875
876 /@babel/helpers@7.23.1:
877 resolution: {integrity: sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==}
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
885 dev: true
886
887 /@babel/highlight@7.22.20: 706 /@babel/highlight@7.22.20:
888 resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} 707 resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==}
889 engines: {node: '>=6.9.0'} 708 engines: {node: '>=6.9.0'}
@@ -893,905 +712,225 @@ packages:
893 js-tokens: 4.0.0 712 js-tokens: 4.0.0
894 dev: true 713 dev: true
895 714
896 /@babel/parser@7.23.0: 715 /@colors/colors@1.5.0:
897 resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} 716 resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
898 engines: {node: '>=6.0.0'} 717 engines: {node: '>=0.1.90'}
899 hasBin: true 718 requiresBuild: true
900 dependencies: 719 optional: true
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==}
916 engines: {node: '>=6.9.0'}
917 peerDependencies:
918 '@babel/core': ^7.13.0
919 dependencies:
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)
924 dev: true
925
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 720
1477 /@babel/plugin-transform-parameters@7.22.15(@babel/core@7.23.0): 721 /@cspotcode/source-map-support@0.8.1:
1478 resolution: {integrity: sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==} 722 resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
1479 engines: {node: '>=6.9.0'} 723 engines: {node: '>=12'}
1480 peerDependencies:
1481 '@babel/core': ^7.0.0-0
1482 dependencies: 724 dependencies:
1483 '@babel/core': 7.23.0 725 '@jridgewell/trace-mapping': 0.3.9
1484 '@babel/helper-plugin-utils': 7.22.5
1485 dev: true 726 dev: true
1486 727
1487 /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.23.0): 728 /@esbuild/aix-ppc64@0.19.12:
1488 resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} 729 resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==}
1489 engines: {node: '>=6.9.0'} 730 engines: {node: '>=12'}
1490 peerDependencies: 731 cpu: [ppc64]
1491 '@babel/core': ^7.0.0-0 732 os: [aix]
1492 dependencies: 733 requiresBuild: true
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 734 dev: true
735 optional: true
1497 736
1498 /@babel/plugin-transform-private-property-in-object@7.22.11(@babel/core@7.23.0): 737 /@esbuild/android-arm64@0.19.12:
1499 resolution: {integrity: sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==} 738 resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==}
1500 engines: {node: '>=6.9.0'} 739 engines: {node: '>=12'}
1501 peerDependencies: 740 cpu: [arm64]
1502 '@babel/core': ^7.0.0-0 741 os: [android]
1503 dependencies: 742 requiresBuild: true
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 743 dev: true
744 optional: true
1510 745
1511 /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.23.0): 746 /@esbuild/android-arm@0.19.12:
1512 resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} 747 resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==}
1513 engines: {node: '>=6.9.0'} 748 engines: {node: '>=12'}
1514 peerDependencies: 749 cpu: [arm]
1515 '@babel/core': ^7.0.0-0 750 os: [android]
1516 dependencies: 751 requiresBuild: true
1517 '@babel/core': 7.23.0
1518 '@babel/helper-plugin-utils': 7.22.5
1519 dev: true 752 dev: true
753 optional: true
1520 754
1521 /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.23.0): 755 /@esbuild/android-x64@0.19.12:
1522 resolution: {integrity: sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==} 756 resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==}
1523 engines: {node: '>=6.9.0'} 757 engines: {node: '>=12'}
1524 peerDependencies: 758 cpu: [x64]
1525 '@babel/core': ^7.0.0-0 759 os: [android]
1526 dependencies: 760 requiresBuild: true
1527 '@babel/core': 7.23.0
1528 '@babel/helper-plugin-utils': 7.22.5
1529 regenerator-transform: 0.15.2
1530 dev: true 761 dev: true
762 optional: true
1531 763
1532 /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.23.0): 764 /@esbuild/darwin-arm64@0.19.12:
1533 resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} 765 resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==}
1534 engines: {node: '>=6.9.0'} 766 engines: {node: '>=12'}
1535 peerDependencies: 767 cpu: [arm64]
1536 '@babel/core': ^7.0.0-0 768 os: [darwin]
1537 dependencies: 769 requiresBuild: true
1538 '@babel/core': 7.23.0
1539 '@babel/helper-plugin-utils': 7.22.5
1540 dev: true 770 dev: true
771 optional: true
1541 772
1542 /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.23.0): 773 /@esbuild/darwin-x64@0.19.12:
1543 resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} 774 resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==}
1544 engines: {node: '>=6.9.0'} 775 engines: {node: '>=12'}
1545 peerDependencies: 776 cpu: [x64]
1546 '@babel/core': ^7.0.0-0 777 os: [darwin]
1547 dependencies: 778 requiresBuild: true
1548 '@babel/core': 7.23.0
1549 '@babel/helper-plugin-utils': 7.22.5
1550 dev: true 779 dev: true
780 optional: true
1551 781
1552 /@babel/plugin-transform-spread@7.22.5(@babel/core@7.23.0): 782 /@esbuild/freebsd-arm64@0.19.12:
1553 resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} 783 resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==}
1554 engines: {node: '>=6.9.0'} 784 engines: {node: '>=12'}
1555 peerDependencies: 785 cpu: [arm64]
1556 '@babel/core': ^7.0.0-0 786 os: [freebsd]
1557 dependencies: 787 requiresBuild: true
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 788 dev: true
789 optional: true
1562 790
1563 /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.23.0): 791 /@esbuild/freebsd-x64@0.19.12:
1564 resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} 792 resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==}
1565 engines: {node: '>=6.9.0'} 793 engines: {node: '>=12'}
1566 peerDependencies: 794 cpu: [x64]
1567 '@babel/core': ^7.0.0-0 795 os: [freebsd]
1568 dependencies: 796 requiresBuild: true
1569 '@babel/core': 7.23.0
1570 '@babel/helper-plugin-utils': 7.22.5
1571 dev: true 797 dev: true
798 optional: true
1572 799
1573 /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.23.0): 800 /@esbuild/linux-arm64@0.19.12:
1574 resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} 801 resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==}
1575 engines: {node: '>=6.9.0'} 802 engines: {node: '>=12'}
1576 peerDependencies: 803 cpu: [arm64]
1577 '@babel/core': ^7.0.0-0 804 os: [linux]
1578 dependencies: 805 requiresBuild: true
1579 '@babel/core': 7.23.0
1580 '@babel/helper-plugin-utils': 7.22.5
1581 dev: true 806 dev: true
807 optional: true
1582 808
1583 /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.23.0): 809 /@esbuild/linux-arm@0.19.12:
1584 resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} 810 resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==}
1585 engines: {node: '>=6.9.0'} 811 engines: {node: '>=12'}
1586 peerDependencies: 812 cpu: [arm]
1587 '@babel/core': ^7.0.0-0 813 os: [linux]
1588 dependencies: 814 requiresBuild: true
1589 '@babel/core': 7.23.0
1590 '@babel/helper-plugin-utils': 7.22.5
1591 dev: true 815 dev: true
816 optional: true
1592 817
1593 /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.23.0): 818 /@esbuild/linux-ia32@0.19.12:
1594 resolution: {integrity: sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==} 819 resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==}
1595 engines: {node: '>=6.9.0'} 820 engines: {node: '>=12'}
1596 peerDependencies: 821 cpu: [ia32]
1597 '@babel/core': ^7.0.0-0 822 os: [linux]
1598 dependencies: 823 requiresBuild: true
1599 '@babel/core': 7.23.0
1600 '@babel/helper-plugin-utils': 7.22.5
1601 dev: true 824 dev: true
825 optional: true
1602 826
1603 /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.23.0): 827 /@esbuild/linux-loong64@0.19.12:
1604 resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} 828 resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==}
1605 engines: {node: '>=6.9.0'} 829 engines: {node: '>=12'}
1606 peerDependencies: 830 cpu: [loong64]
1607 '@babel/core': ^7.0.0-0 831 os: [linux]
1608 dependencies: 832 requiresBuild: true
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 833 dev: true
834 optional: true
1613 835
1614 /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.23.0): 836 /@esbuild/linux-mips64el@0.19.12:
1615 resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} 837 resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==}
1616 engines: {node: '>=6.9.0'} 838 engines: {node: '>=12'}
1617 peerDependencies: 839 cpu: [mips64el]
1618 '@babel/core': ^7.0.0-0 840 os: [linux]
1619 dependencies: 841 requiresBuild: true
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 842 dev: true
843 optional: true
1624 844
1625 /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.23.0): 845 /@esbuild/linux-ppc64@0.19.12:
1626 resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} 846 resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==}
1627 engines: {node: '>=6.9.0'} 847 engines: {node: '>=12'}
1628 peerDependencies: 848 cpu: [ppc64]
1629 '@babel/core': ^7.0.0 849 os: [linux]
1630 dependencies: 850 requiresBuild: true
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 851 dev: true
852 optional: true
1635 853
1636 /@babel/preset-env@7.22.20(@babel/core@7.23.0): 854 /@esbuild/linux-riscv64@0.19.12:
1637 resolution: {integrity: sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg==} 855 resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==}
1638 engines: {node: '>=6.9.0'} 856 engines: {node: '>=12'}
1639 peerDependencies: 857 cpu: [riscv64]
1640 '@babel/core': ^7.0.0-0 858 os: [linux]
1641 dependencies: 859 requiresBuild: true
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 860 dev: true
861 optional: true
1726 862
1727 /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.0): 863 /@esbuild/linux-s390x@0.19.12:
1728 resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} 864 resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==}
1729 peerDependencies: 865 engines: {node: '>=12'}
1730 '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 866 cpu: [s390x]
1731 dependencies: 867 os: [linux]
1732 '@babel/core': 7.23.0 868 requiresBuild: true
1733 '@babel/helper-plugin-utils': 7.22.5
1734 '@babel/types': 7.23.0
1735 esutils: 2.0.3
1736 dev: true 869 dev: true
870 optional: true
1737 871
1738 /@babel/regjsgen@0.8.0: 872 /@esbuild/linux-x64@0.19.12:
1739 resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} 873 resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==}
874 engines: {node: '>=12'}
875 cpu: [x64]
876 os: [linux]
877 requiresBuild: true
1740 dev: true 878 dev: true
879 optional: true
1741 880
1742 /@babel/runtime@7.23.1: 881 /@esbuild/netbsd-x64@0.19.12:
1743 resolution: {integrity: sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==} 882 resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==}
1744 engines: {node: '>=6.9.0'} 883 engines: {node: '>=12'}
1745 dependencies: 884 cpu: [x64]
1746 regenerator-runtime: 0.14.0 885 os: [netbsd]
886 requiresBuild: true
1747 dev: true 887 dev: true
888 optional: true
1748 889
1749 /@babel/template@7.22.15: 890 /@esbuild/openbsd-x64@0.19.12:
1750 resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} 891 resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==}
1751 engines: {node: '>=6.9.0'} 892 engines: {node: '>=12'}
1752 dependencies: 893 cpu: [x64]
1753 '@babel/code-frame': 7.22.13 894 os: [openbsd]
1754 '@babel/parser': 7.23.0 895 requiresBuild: true
1755 '@babel/types': 7.23.0
1756 dev: true 896 dev: true
897 optional: true
1757 898
1758 /@babel/traverse@7.23.0: 899 /@esbuild/sunos-x64@0.19.12:
1759 resolution: {integrity: sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==} 900 resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==}
1760 engines: {node: '>=6.9.0'} 901 engines: {node: '>=12'}
1761 dependencies: 902 cpu: [x64]
1762 '@babel/code-frame': 7.22.13 903 os: [sunos]
1763 '@babel/generator': 7.23.0 904 requiresBuild: true
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 905 dev: true
906 optional: true
1775 907
1776 /@babel/types@7.23.0: 908 /@esbuild/win32-arm64@0.19.12:
1777 resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} 909 resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==}
1778 engines: {node: '>=6.9.0'} 910 engines: {node: '>=12'}
1779 dependencies: 911 cpu: [arm64]
1780 '@babel/helper-string-parser': 7.22.5 912 os: [win32]
1781 '@babel/helper-validator-identifier': 7.22.20 913 requiresBuild: true
1782 to-fast-properties: 2.0.0
1783 dev: true 914 dev: true
915 optional: true
1784 916
1785 /@colors/colors@1.5.0: 917 /@esbuild/win32-ia32@0.19.12:
1786 resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} 918 resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==}
1787 engines: {node: '>=0.1.90'} 919 engines: {node: '>=12'}
920 cpu: [ia32]
921 os: [win32]
1788 requiresBuild: true 922 requiresBuild: true
923 dev: true
1789 optional: true 924 optional: true
1790 925
1791 /@discoveryjs/json-ext@0.5.7: 926 /@esbuild/win32-x64@0.19.12:
1792 resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} 927 resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==}
1793 engines: {node: '>=10.0.0'} 928 engines: {node: '>=12'}
929 cpu: [x64]
930 os: [win32]
931 requiresBuild: true
1794 dev: true 932 dev: true
933 optional: true
1795 934
1796 /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): 935 /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0):
1797 resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 936 resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
@@ -1830,8 +969,8 @@ packages:
1830 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 969 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1831 dev: true 970 dev: true
1832 971
1833 /@faker-js/faker@8.1.0: 972 /@faker-js/faker@8.4.1:
1834 resolution: {integrity: sha512-38DT60rumHfBYynif3lmtxMqMqmsOQIxQgEuPZxCk2yUYN0eqWpTACgxi0VpidvsJB8CRxCpvP7B3anK85FjtQ==} 973 resolution: {integrity: sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==}
1835 engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'} 974 engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'}
1836 dev: false 975 dev: false
1837 976
@@ -1861,190 +1000,87 @@ packages:
1861 resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} 1000 resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==}
1862 dev: true 1001 dev: true
1863 1002
1864 /@japa/api-client@1.4.4(@japa/runner@2.5.1): 1003 /@japa/core@9.0.0:
1865 resolution: {integrity: sha512-7YVDWMWDvUGRlAxOS2QmYTyfxsY+EC0fiVz/w7J4qIT2oYhl1TVfJ/R1WWRoLe/KuZr2yIUNlp7OdStVjESB5A==} 1004 resolution: {integrity: sha512-BQiS8rd1qiSkz+uTsx+Bfsp+FVeoKpJXMtUse4XDt2cUfDdCnvYkvRnqmR/F/u8ttt71sZ4mHKizGa1Q5MG3DQ==}
1866 peerDependencies: 1005 engines: {node: '>=18.16.0'}
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
1884 dependencies:
1885 '@japa/runner': 2.5.1
1886 '@types/chai': 4.3.6
1887 api-contract-validator: 2.2.8(openapi-types@12.1.3)
1888 chai: 4.3.10
1889 macroable: 7.0.2
1890 transitivePeerDependencies:
1891 - openapi-types
1892 dev: true
1893
1894 /@japa/base-reporter@1.1.2:
1895 resolution: {integrity: sha512-6MYs/EsXjouFPNUQL3VGllryZ5enI5rqhvQbY2Dzh3Zmhu22DWw6v9d2pxucrFptDTtQ38MBPVL/BIeZAafmOw==}
1896 dependencies:
1897 '@japa/errors-printer': 2.1.0
1898 '@poppinss/cliui': 3.0.5
1899 ms: 2.1.3
1900 dev: true
1901
1902 /@japa/core@7.3.3:
1903 resolution: {integrity: sha512-3mkWlzWVALZANFfMK6Q6xtYGM3mpzZeeGGUVQGDt2OOxvL8FDADVxHrRn9BFc1V4fVJO4jR/QH5utrb+RfCF5g==}
1904 dependencies: 1006 dependencies:
1905 '@poppinss/hooks': 6.0.2-0 1007 '@poppinss/cliui': 6.3.0
1008 '@poppinss/hooks': 7.2.2
1009 '@poppinss/macroable': 1.0.1
1906 async-retry: 1.3.3 1010 async-retry: 1.3.3
1907 emittery: 0.13.1 1011 emittery: 1.0.2
1908 macroable: 7.0.2 1012 string-width: 7.1.0
1909 time-span: 4.0.0 1013 time-span: 5.1.0
1910 dev: true
1911 1014
1912 /@japa/errors-printer@2.1.0: 1015 /@japa/errors-printer@3.0.2:
1913 resolution: {integrity: sha512-iZUrB58e29jbRxb7lxocz5uHt9mQ1q7iojs8Gh1kIKmvaPx0KMqce77JDtqYzu2+95WjmppAvM6au1l1WYJmpw==} 1016 resolution: {integrity: sha512-8U4d8umhyg3YNAzQaJoHSULjFdEp/c+xGBwZgpMgIIYvhy3NKU0KvE3TfVAjfKcO8zaLuvh72NlnLSfyP3ooqw==}
1017 engines: {node: '>=18.16.0'}
1914 dependencies: 1018 dependencies:
1915 '@poppinss/cliui': 3.0.5 1019 '@poppinss/colors': 4.1.2
1916 jest-diff: 29.7.0 1020 jest-diff: 29.7.0
1917 youch: 3.3.3 1021 youch: 3.3.3
1918 youch-terminal: 2.2.3 1022 youch-terminal: 2.2.3
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 1023
1938 /@japa/run-failed-tests@1.1.1(@japa/runner@2.5.1): 1024 /@japa/plugin-adonisjs@3.0.0(@adonisjs/core@6.2.3)(@japa/runner@3.1.1):
1939 resolution: {integrity: sha512-lMv1nAtKBpX7CH8K+HHRr2aaCTAJ9Q3i7DG12MmU2A/EDJFuP7e9ZASE8O0UTlk5Goc+DR6mzuFXG3R351J89w==} 1025 resolution: {integrity: sha512-gw92tnOlNeVuZoI/ysX/AW9AZdACd5cm50Jpa+dUPQ7VJU7J7PQCNGhp3FF98h7czdGvw8KJvszr/grr3SENEA==}
1026 engines: {node: '>=18.16.0'}
1940 peerDependencies: 1027 peerDependencies:
1941 '@japa/runner': ^2.2.3 1028 '@adonisjs/core': ^6.2.0
1029 '@japa/api-client': ^2.0.2
1030 '@japa/browser-client': ^2.0.2
1031 '@japa/runner': ^3.1.1
1032 playwright: ^1.40.1
1033 peerDependenciesMeta:
1034 '@japa/api-client':
1035 optional: true
1036 '@japa/browser-client':
1037 optional: true
1038 playwright:
1039 optional: true
1942 dependencies: 1040 dependencies:
1943 '@japa/runner': 2.5.1 1041 '@adonisjs/core': 6.2.3(@adonisjs/assembler@7.1.1)(bcrypt@5.1.1)(edge.js@6.0.1)
1944 '@poppinss/cliui': 3.0.5 1042 '@japa/runner': 3.1.1
1945 find-cache-dir: 3.3.2
1946 fs-extra: 11.2.0
1947 dev: true
1948 1043
1949 /@japa/runner@2.5.1: 1044 /@japa/runner@3.1.1:
1950 resolution: {integrity: sha512-p1zjniMCiGxRnZkUs5WtZjTQhbXcnK0aM2Wu4Qc+w+MBpmOrw5J2zJuge0FweepTUR9CT3r2x65uw4qIshy8XQ==} 1045 resolution: {integrity: sha512-DWy16uw2naDMitXGNN0ULURLaVIQY/VBVtxw7rpdA8QL1Q2nCaaqJXufHqS8kO1ZRd0bOtFHMgx2/eYvxkmapA==}
1046 engines: {node: '>=18.16.0'}
1951 dependencies: 1047 dependencies:
1952 '@japa/core': 7.3.3 1048 '@japa/core': 9.0.0
1953 '@japa/errors-printer': 2.1.0 1049 '@japa/errors-printer': 3.0.2
1954 '@poppinss/cliui': 3.0.5 1050 '@poppinss/colors': 4.1.2
1955 '@poppinss/hooks': 6.0.2-0 1051 '@poppinss/hooks': 7.2.2
1956 fast-glob: 3.3.1 1052 fast-glob: 3.3.2
1053 find-cache-dir: 5.0.0
1957 getopts: 2.3.0 1054 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 1055 ms: 2.1.3
1968 dev: true 1056 serialize-error: 11.0.3
1057 slash: 5.1.0
1969 1058
1970 /@jest/schemas@29.6.3: 1059 /@jest/schemas@29.6.3:
1971 resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} 1060 resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
1972 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1061 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1973 dependencies: 1062 dependencies:
1974 '@sinclair/typebox': 0.27.8 1063 '@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 1064
2008 /@jridgewell/resolve-uri@3.1.1: 1065 /@jridgewell/resolve-uri@3.1.1:
2009 resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 1066 resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
2010 engines: {node: '>=6.0.0'} 1067 engines: {node: '>=6.0.0'}
2011 dev: true 1068 dev: true
2012 1069
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: 1070 /@jridgewell/sourcemap-codec@1.4.15:
2026 resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 1071 resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
2027 dev: true 1072 dev: true
2028 1073
2029 /@jridgewell/trace-mapping@0.3.19: 1074 /@jridgewell/trace-mapping@0.3.9:
2030 resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} 1075 resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
2031 dependencies: 1076 dependencies:
2032 '@jridgewell/resolve-uri': 3.1.1 1077 '@jridgewell/resolve-uri': 3.1.1
2033 '@jridgewell/sourcemap-codec': 1.4.15 1078 '@jridgewell/sourcemap-codec': 1.4.15
2034 dev: true 1079 dev: true
2035 1080
2036 /@jsdevtools/ono@7.1.3: 1081 /@lukeed/ms@2.0.2:
2037 resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} 1082 resolution: {integrity: sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==}
2038 dev: true 1083 engines: {node: '>=8'}
2039
2040 /@kdf/salt@2.0.1:
2041 resolution: {integrity: sha512-1RBY7HcGYuWBm0+4ygjdRerN+mhpuT5picGB6+azqUXsz/IZljegrKkeHRiV6wuxY8n4HrxOuw8ou7JuGxRWdQ==}
2042 engines: {node: '>=10'}
2043 dev: false
2044
2045 /@leichtgewicht/ip-codec@2.0.4:
2046 resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==}
2047 dev: true
2048 1084
2049 /@mapbox/node-pre-gyp@1.0.11: 1085 /@mapbox/node-pre-gyp@1.0.11:
2050 resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} 1086 resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==}
@@ -2062,15 +1098,10 @@ packages:
2062 transitivePeerDependencies: 1098 transitivePeerDependencies:
2063 - encoding 1099 - encoding
2064 - supports-color 1100 - supports-color
2065 dev: false
2066 1101
2067 /@mrmlnc/readdir-enhanced@2.2.1: 1102 /@noble/hashes@1.3.3:
2068 resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==} 1103 resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==}
2069 engines: {node: '>=4'} 1104 engines: {node: '>= 16'}
2070 dependencies:
2071 call-me-maybe: 1.0.2
2072 glob-to-regexp: 0.3.0
2073 dev: true
2074 1105
2075 /@nodelib/fs.scandir@2.1.5: 1106 /@nodelib/fs.scandir@2.1.5:
2076 resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 1107 resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
@@ -2079,11 +1110,6 @@ packages:
2079 '@nodelib/fs.stat': 2.0.5 1110 '@nodelib/fs.stat': 2.0.5
2080 run-parallel: 1.2.0 1111 run-parallel: 1.2.0
2081 1112
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: 1113 /@nodelib/fs.stat@2.0.5:
2088 resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 1114 resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
2089 engines: {node: '>= 8'} 1115 engines: {node: '>= 8'}
@@ -2115,18 +1141,10 @@ packages:
2115 dev: false 1141 dev: false
2116 optional: true 1142 optional: true
2117 1143
2118 /@nuxt/friendly-errors-webpack-plugin@2.5.2(webpack@5.88.2): 1144 /@paralleldrive/cuid2@2.2.2:
2119 resolution: {integrity: sha512-LLc+90lnxVbpKkMqk5z1EWpXoODhc6gRkqqXJCInJwF5xabHAE7biFvbULfvTRmtaTzAaP8IV4HQDLUgeAUTTw==} 1145 resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==}
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
2123 dependencies: 1146 dependencies:
2124 chalk: 2.4.2 1147 '@noble/hashes': 1.3.3
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 1148
2131 /@phc/format@1.0.0: 1149 /@phc/format@1.0.0:
2132 resolution: {integrity: sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ==} 1150 resolution: {integrity: sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ==}
@@ -2137,78 +1155,60 @@ packages:
2137 engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 1155 engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
2138 dev: true 1156 dev: true
2139 1157
2140 /@poppinss/chokidar-ts@3.3.5: 1158 /@poppinss/chokidar-ts@4.1.3(typescript@5.3.3):
2141 resolution: {integrity: sha512-Ht//xB2ZPa16EDH/bmaWEBWunsBTnBYdnv3nKwXHrqNHDfcYX1DHcJmcNORRH9YLOOuVsTmqDcpiAdTn06LaHQ==} 1159 resolution: {integrity: sha512-v5Tx0mxt1fX6+acYKm1ZUhFMlGdcKgO1C8wSPRO/X44LjE0PduHGDDq6ePBrMDyg+EKnUUt3DcU9APRri7zEcA==}
1160 engines: {node: '>=18.16.0'}
1161 peerDependencies:
1162 typescript: ^4.0.0 || ^5.0.0
2142 dependencies: 1163 dependencies:
2143 builtin-modules: 3.3.0
2144 chokidar: 3.5.3 1164 chokidar: 3.5.3
2145 debug: 4.3.4 1165 emittery: 1.0.2
2146 emittery: 0.10.2 1166 memoize: 10.0.0
2147 fs-extra: 10.1.0 1167 picomatch: 3.0.1
2148 mem: 8.1.1 1168 slash: 5.1.0
2149 picomatch: 2.3.1 1169 typescript: 5.3.3
2150 transitivePeerDependencies:
2151 - supports-color
2152 dev: true
2153 1170
2154 /@poppinss/cliui@3.0.5: 1171 /@poppinss/cliui@6.3.0:
2155 resolution: {integrity: sha512-9TCwhJ6hQDAv7LWredEQL7eSA97kQ/i5Td80T7InV9z9rOXT8keywAM0pSvTUS01bwCeiZQVoT4r/G67DRiPJA==} 1172 resolution: {integrity: sha512-GEu/IsJ9SanzAGa9NaHsHneumwlScLfhBJHU8uYcB6GyaTvQQg38OuiGnn5U95Wk3a/roUOSsrEVU1bnVvYtoQ==}
1173 engines: {node: '>=18.16.0'}
2156 dependencies: 1174 dependencies:
2157 '@poppinss/colors': 3.0.3 1175 '@poppinss/colors': 4.1.2
2158 cli-boxes: 3.0.0 1176 cli-boxes: 3.0.0
2159 cli-table3: 0.6.3 1177 cli-table3: 0.6.3
2160 color-support: 1.1.3 1178 cli-truncate: 4.0.0
2161 log-update: 4.0.0 1179 log-update: 6.0.0
2162 pretty-hrtime: 1.0.3 1180 pretty-hrtime: 1.0.3
2163 string-width: 4.2.3 1181 string-width: 7.1.0
2164 1182 supports-color: 9.4.0
2165 /@poppinss/co-body@1.2.0: 1183 terminal-size: 4.0.0
2166 resolution: {integrity: sha512-1aJ06XrtQ8gueo91+Vc7TTSeXECsW1pWDCKumtuGL+9xsjJvP6n567YuimwHuH99wFMIhyNW5U1g2C/4wjvXCQ==} 1184 wordwrap: 1.0.0
2167 dependencies:
2168 '@poppinss/utils': 5.0.0
2169 inflation: 2.0.0
2170 qs: 6.11.2
2171 raw-body: 2.5.2
2172 type-is: 1.6.18
2173 1185
2174 /@poppinss/colors@3.0.3: 1186 /@poppinss/colors@4.1.2:
2175 resolution: {integrity: sha512-jiZcp91PvIs5s4Wz4gEVY9J2tqH6H1++mZmsrC3TmFam9gbVPUJPEubPM5j4BQYJre7bjs9nkIbYFcWMOFHIVQ==} 1187 resolution: {integrity: sha512-+qLfhQrdLa7RqJNZmGIc1ERVz2JtMD3kLI41tNfKhQBZt0wiWoYMhP/Tv+eopPnMy3NwANWgDSbqsi+teY1oig==}
1188 engines: {node: '>=18.16.0'}
2176 dependencies: 1189 dependencies:
2177 color-support: 1.1.3
2178 kleur: 4.1.5 1190 kleur: 4.1.5
2179 1191
2180 /@poppinss/file-generator@1.0.2: 1192 /@poppinss/hooks@7.2.2:
2181 resolution: {integrity: sha512-rRob//4jLbUVbDSsNRihloKGgpyVsWdFQWUmONxX/gyv4koT1OlVoc3ccWgk7Y/sEa2cFxj3zrFs+wdT09iXWw==} 1193 resolution: {integrity: sha512-EDivPMt9sAUV5kNhH2bvtVjuLvHhQ6SKVP19OjvvcyRalqAa6KqCItJ2qeU8A93s0cr1a28Sytu+KSwsmOY8pg==}
2182 dependencies: 1194 engines: {node: '>=18.16.0'}
2183 bytes: 3.1.2
2184
2185 /@poppinss/hooks@5.0.3(@adonisjs/application@5.3.0):
2186 resolution: {integrity: sha512-M5a151VUl+RslVP5qwDW+u+0VmzKt5Nfplzdx2nrtXol3yVlLN3u2Jp6UADESid3DDI7IRHmFrA3sQusey3eUA==}
2187 peerDependencies:
2188 '@adonisjs/application': '>=4.0.0'
2189 peerDependenciesMeta:
2190 '@adonisjs/application':
2191 optional: true
2192 dependencies:
2193 '@adonisjs/application': 5.3.0
2194 dev: false
2195
2196 /@poppinss/hooks@6.0.2-0:
2197 resolution: {integrity: sha512-mG0hnQlxgflvxyM6t/XO8z/FwotsYRXPhtLZ3cz3iyk4t8xaNtOihSANBcvqdkxZCtGBvotNIf/GnES9hvlfSQ==}
2198 dev: true
2199 1195
2200 /@poppinss/inspect@1.0.1: 1196 /@poppinss/inspect@1.0.1:
2201 resolution: {integrity: sha512-kLeEaBSGhlleyYvKc7c9s3uE6xv7cwyulE0EgHf4jU/CL96h0yC4mkdw1wvC1l1PYYQozCGy46FwMBAAMOobCA==} 1197 resolution: {integrity: sha512-kLeEaBSGhlleyYvKc7c9s3uE6xv7cwyulE0EgHf4jU/CL96h0yC4mkdw1wvC1l1PYYQozCGy46FwMBAAMOobCA==}
2202 dev: false
2203 1198
2204 /@poppinss/manager@5.0.2: 1199 /@poppinss/macroable@1.0.1:
2205 resolution: {integrity: sha512-c5F3EKztq/iw0J+BfNu5rSI5/ji+kjts4rJaC/VvIzpTWzbRorb7UR9J32T8cLtTwjNHbmxk3BAU402lvL2JFA==} 1200 resolution: {integrity: sha512-bO3+rnqGhE+gdx4DOyYjY9jCm2+c5Ncyl2Gmst0w271rIFnsB00btonpdmAqvFNzS8rcas+APGm+47fYMmkpQA==}
1201 engines: {node: '>=18.16.0'}
2206 1202
2207 /@poppinss/matchit@3.1.2: 1203 /@poppinss/matchit@3.1.2:
2208 resolution: {integrity: sha512-Bx+jY+vmdQFmwYiHliiPjr+oVBaGnh79B1h1FSAm3jME1QylLFt8PPYC0ymO8Q5PzJj/KuE3jeTnZhRHOWqq8g==} 1204 resolution: {integrity: sha512-Bx+jY+vmdQFmwYiHliiPjr+oVBaGnh79B1h1FSAm3jME1QylLFt8PPYC0ymO8Q5PzJj/KuE3jeTnZhRHOWqq8g==}
2209 dependencies: 1205 dependencies:
2210 '@arr/every': 1.0.1 1206 '@arr/every': 1.0.1
2211 1207
1208 /@poppinss/middleware@3.2.2:
1209 resolution: {integrity: sha512-73AJXODpZcfpO3b9Fr4SQNksXtATpUpCAnKgIUVDfZqAsS1gzLGhDfYo/Qi44hH29P8q28MXqmaoYY2oTpdZFQ==}
1210 engines: {node: '>=18.16.0'}
1211
2212 /@poppinss/multiparty@2.0.1: 1212 /@poppinss/multiparty@2.0.1:
2213 resolution: {integrity: sha512-Pf3V9PFyZDIkDBBiAOT2hdmA+1l/+hverHbUnMzNzwtwgO50s2ZPt5KxUydVA0hceg9gryo5unQ0WUF1SO9tkQ==} 1213 resolution: {integrity: sha512-Pf3V9PFyZDIkDBBiAOT2hdmA+1l/+hverHbUnMzNzwtwgO50s2ZPt5KxUydVA0hceg9gryo5unQ0WUF1SO9tkQ==}
2214 dependencies: 1214 dependencies:
@@ -2216,222 +1216,273 @@ packages:
2216 safe-buffer: 5.2.1 1216 safe-buffer: 5.2.1
2217 uid-safe: 2.1.5 1217 uid-safe: 2.1.5
2218 1218
2219 /@poppinss/prompts@2.0.2: 1219 /@poppinss/prompts@3.1.2:
2220 resolution: {integrity: sha512-jTrE8U5rnHTZNpBvPauFVDMQZZuEnfABbJUEXfq0uu8oGJnPaaA+y0bQbyqVf4yWqgRGldgrzAwNz739hIEnPQ==} 1220 resolution: {integrity: sha512-wjAWTZkZz2kH5dVGbEPx9IRxJcIy6Nzn614TdGsn2kzeMI5woPaKWKxrLEQfK/teIxUrOVUmbjcorDohBkIjiw==}
1221 engines: {node: '>=18.16.0'}
2221 dependencies: 1222 dependencies:
2222 '@poppinss/colors': 3.0.3 1223 '@poppinss/colors': 4.1.2
1224 '@poppinss/utils': 6.7.2
2223 enquirer: 2.4.1 1225 enquirer: 2.4.1
2224 1226
2225 /@poppinss/utils@3.3.1: 1227 /@poppinss/utils@6.7.2:
2226 resolution: {integrity: sha512-k4MFt+4JhOWJZ9D2xpEcG/mpZyXVXYT+dSOg83vHK1xhXl+7r0IYBXRKWX2+To7/90KJaWlwpcdCAalXE8Debg==} 1228 resolution: {integrity: sha512-C7K0gy7nW0XzlWcuVrSqT1nLQBAddhpgbnvHtYtxFYkS/BdJKzeVz771c80yhLcmrqXoGqZZgjdC7y6Me1L4Tg==}
1229 engines: {node: '>=18.16.0'}
2227 dependencies: 1230 dependencies:
2228 '@types/bytes': 3.1.2 1231 '@lukeed/ms': 2.0.2
2229 '@types/he': 1.2.1 1232 '@types/bytes': 3.1.4
2230 buffer-alloc: 1.2.0 1233 '@types/pluralize': 0.0.33
2231 bytes: 3.1.2 1234 bytes: 3.1.2
2232 change-case: 4.1.2 1235 case-anything: 2.1.13
2233 cuid: 2.1.8
2234 flattie: 1.1.0 1236 flattie: 1.1.0
2235 fs-readdir-recursive: 1.1.0
2236 he: 1.2.0
2237 kind-of: 6.0.3
2238 lodash: 4.17.21
2239 ms: 2.1.3
2240 pluralize: 8.0.0 1237 pluralize: 8.0.0
2241 require-all: 3.0.0 1238 safe-stable-stringify: 2.4.3
2242 resolve-from: 5.0.0 1239 secure-json-parse: 2.7.0
1240 slash: 5.1.0
2243 slugify: 1.6.6 1241 slugify: 1.6.6
2244 truncatise: 0.0.8 1242 truncatise: 0.0.8
2245 dev: false
2246 1243
2247 /@poppinss/utils@4.0.4: 1244 /@poppinss/validator-lite@1.0.3:
2248 resolution: {integrity: sha512-6LS3mofSVB9IQZqofA4rX6KVVcCpdwUQuNe4efHqOTzgD/Q5HTVvDP0vKg1m994QlzJs4aLW1JwXVcNCThEh4g==} 1245 resolution: {integrity: sha512-u4dmT7PDHwNtxY3q1jHVp/u+hMEEcBlkzd37QwwM4tVt/0mLlEDttSfPQ+TT7sqPG4VEtWKwVSlMInwPUYyJpA==}
2249 dependencies: 1246 dependencies:
2250 '@poppinss/file-generator': 1.0.2 1247 validator: 13.11.0
2251 '@types/bytes': 3.1.2
2252 '@types/he': 1.2.1
2253 bytes: 3.1.2
2254 change-case: 4.1.2
2255 cuid: 2.1.8
2256 flattie: 1.1.0
2257 fs-readdir-recursive: 1.1.0
2258 he: 1.2.0
2259 kind-of: 6.0.3
2260 lodash: 4.17.21
2261 ms: 2.1.3
2262 pluralize: 8.0.0
2263 require-all: 3.0.0
2264 resolve-from: 5.0.0
2265 slugify: 1.6.6
2266 truncatise: 0.0.8
2267 1248
2268 /@poppinss/utils@5.0.0: 1249 /@rollup/rollup-android-arm-eabi@4.10.0:
2269 resolution: {integrity: sha512-SpJL5p4Nx3bRCpCf62KagZLUHLvJD+VDylGpXAeP2G5qb3s6SSOBlpaFmer4GxdyTqLIUt0PRCzF1TbpNU+qZw==} 1250 resolution: {integrity: sha512-/MeDQmcD96nVoRumKUljsYOLqfv1YFJps+0pTrb2Z9Nl/w5qNUysMaWQsrd1mvAlNT4yza1iVyIu4Q4AgF6V3A==}
2270 dependencies: 1251 cpu: [arm]
2271 '@poppinss/file-generator': 1.0.2 1252 os: [android]
2272 '@types/bytes': 3.1.2 1253 requiresBuild: true
2273 '@types/he': 1.2.1 1254 dev: true
2274 bytes: 3.1.2 1255 optional: true
2275 change-case: 4.1.2 1256
2276 cuid: 2.1.8 1257 /@rollup/rollup-android-arm64@4.10.0:
2277 flattie: 1.1.0 1258 resolution: {integrity: sha512-lvu0jK97mZDJdpZKDnZI93I0Om8lSDaiPx3OiCk0RXn3E8CMPJNS/wxjAvSJJzhhZpfjXsjLWL8LnS6qET4VNQ==}
2278 fs-readdir-recursive: 1.1.0 1259 cpu: [arm64]
2279 he: 1.2.0 1260 os: [android]
2280 kind-of: 6.0.3 1261 requiresBuild: true
2281 lodash: 4.17.21 1262 dev: true
2282 ms: 2.1.3 1263 optional: true
2283 pluralize: 8.0.0 1264
2284 require-all: 3.0.0 1265 /@rollup/rollup-darwin-arm64@4.10.0:
2285 resolve-from: 5.0.0 1266 resolution: {integrity: sha512-uFpayx8I8tyOvDkD7X6n0PriDRWxcqEjqgtlxnUA/G9oS93ur9aZ8c8BEpzFmsed1TH5WZNG5IONB8IiW90TQg==}
2286 slugify: 1.6.6 1267 cpu: [arm64]
2287 truncatise: 0.0.8 1268 os: [darwin]
1269 requiresBuild: true
1270 dev: true
1271 optional: true
1272
1273 /@rollup/rollup-darwin-x64@4.10.0:
1274 resolution: {integrity: sha512-nIdCX03qFKoR/MwQegQBK+qZoSpO3LESurVAC6s6jazLA1Mpmgzo3Nj3H1vydXp/JM29bkCiuF7tDuToj4+U9Q==}
1275 cpu: [x64]
1276 os: [darwin]
1277 requiresBuild: true
1278 dev: true
1279 optional: true
1280
1281 /@rollup/rollup-linux-arm-gnueabihf@4.10.0:
1282 resolution: {integrity: sha512-Fz7a+y5sYhYZMQFRkOyCs4PLhICAnxRX/GnWYReaAoruUzuRtcf+Qnw+T0CoAWbHCuz2gBUwmWnUgQ67fb3FYw==}
1283 cpu: [arm]
1284 os: [linux]
1285 requiresBuild: true
1286 dev: true
1287 optional: true
1288
1289 /@rollup/rollup-linux-arm64-gnu@4.10.0:
1290 resolution: {integrity: sha512-yPtF9jIix88orwfTi0lJiqINnlWo6p93MtZEoaehZnmCzEmLL0eqjA3eGVeyQhMtxdV+Mlsgfwhh0+M/k1/V7Q==}
1291 cpu: [arm64]
1292 os: [linux]
1293 requiresBuild: true
1294 dev: true
1295 optional: true
1296
1297 /@rollup/rollup-linux-arm64-musl@4.10.0:
1298 resolution: {integrity: sha512-9GW9yA30ib+vfFiwjX+N7PnjTnCMiUffhWj4vkG4ukYv1kJ4T9gHNg8zw+ChsOccM27G9yXrEtMScf1LaCuoWQ==}
1299 cpu: [arm64]
1300 os: [linux]
1301 requiresBuild: true
1302 dev: true
1303 optional: true
1304
1305 /@rollup/rollup-linux-riscv64-gnu@4.10.0:
1306 resolution: {integrity: sha512-X1ES+V4bMq2ws5fF4zHornxebNxMXye0ZZjUrzOrf7UMx1d6wMQtfcchZ8SqUnQPPHdOyOLW6fTcUiFgHFadRA==}
1307 cpu: [riscv64]
1308 os: [linux]
1309 requiresBuild: true
1310 dev: true
1311 optional: true
1312
1313 /@rollup/rollup-linux-x64-gnu@4.10.0:
1314 resolution: {integrity: sha512-w/5OpT2EnI/Xvypw4FIhV34jmNqU5PZjZue2l2Y3ty1Ootm3SqhI+AmfhlUYGBTd9JnpneZCDnt3uNOiOBkMyw==}
1315 cpu: [x64]
1316 os: [linux]
1317 requiresBuild: true
1318 dev: true
1319 optional: true
1320
1321 /@rollup/rollup-linux-x64-musl@4.10.0:
1322 resolution: {integrity: sha512-q/meftEe3QlwQiGYxD9rWwB21DoKQ9Q8wA40of/of6yGHhZuGfZO0c3WYkN9dNlopHlNT3mf5BPsUSxoPuVQaw==}
1323 cpu: [x64]
1324 os: [linux]
1325 requiresBuild: true
1326 dev: true
1327 optional: true
1328
1329 /@rollup/rollup-win32-arm64-msvc@4.10.0:
1330 resolution: {integrity: sha512-NrR6667wlUfP0BHaEIKgYM/2va+Oj+RjZSASbBMnszM9k+1AmliRjHc3lJIiOehtSSjqYiO7R6KLNrWOX+YNSQ==}
1331 cpu: [arm64]
1332 os: [win32]
1333 requiresBuild: true
1334 dev: true
1335 optional: true
1336
1337 /@rollup/rollup-win32-ia32-msvc@4.10.0:
1338 resolution: {integrity: sha512-FV0Tpt84LPYDduIDcXvEC7HKtyXxdvhdAOvOeWMWbQNulxViH2O07QXkT/FffX4FqEI02jEbCJbr+YcuKdyyMg==}
1339 cpu: [ia32]
1340 os: [win32]
1341 requiresBuild: true
1342 dev: true
1343 optional: true
1344
1345 /@rollup/rollup-win32-x64-msvc@4.10.0:
1346 resolution: {integrity: sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ==}
1347 cpu: [x64]
1348 os: [win32]
1349 requiresBuild: true
1350 dev: true
1351 optional: true
2288 1352
2289 /@sinclair/typebox@0.27.8: 1353 /@sinclair/typebox@0.27.8:
2290 resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} 1354 resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
1355
1356 /@sindresorhus/is@6.1.0:
1357 resolution: {integrity: sha512-BuvU07zq3tQ/2SIgBsEuxKYDyDjC0n7Zir52bpHy2xnBbW81+po43aLFPLbeV3HRAheFbGud1qgcqSYfhtHMAg==}
1358 engines: {node: '>=16'}
1359
1360 /@swc/core-darwin-arm64@1.4.0:
1361 resolution: {integrity: sha512-UTJ/Vz+s7Pagef6HmufWt6Rs0aUu+EJF4Pzuwvr7JQQ5b1DZeAAUeUtkUTFx/PvCbM8Xfw4XdKBUZfrIKCfW8A==}
1362 engines: {node: '>=10'}
1363 cpu: [arm64]
1364 os: [darwin]
1365 requiresBuild: true
2291 dev: true 1366 dev: true
1367 optional: true
2292 1368
2293 /@sindresorhus/is@4.6.0: 1369 /@swc/core-darwin-x64@1.4.0:
2294 resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} 1370 resolution: {integrity: sha512-f8v58u2GsGak8EtZFN9guXqE0Ep10Suny6xriaW2d8FGqESPyNrnBzli3aqkSeQk5gGqu2zJ7WiiKp3XoUOidA==}
2295 engines: {node: '>=10'} 1371 engines: {node: '>=10'}
2296 dev: false 1372 cpu: [x64]
1373 os: [darwin]
1374 requiresBuild: true
1375 dev: true
1376 optional: true
2297 1377
2298 /@symfony/webpack-encore@4.6.1(@babel/core@7.23.0)(@babel/preset-env@7.22.20)(eslint@8.56.0)(postcss@8.4.31)(typescript@5.3.3)(webpack-cli@5.1.4)(webpack@5.88.2): 1378 /@swc/core-linux-arm-gnueabihf@1.4.0:
2299 resolution: {integrity: sha512-JbOjy0P6P9pcbgVE3nceFnCCneRO+tbcLUkQh9rpPj/sHtFl12foSjHz6uY93ZGZGAvTyqEslie+4MlD/rUtnQ==} 1379 resolution: {integrity: sha512-q2KAkBzmPcTnRij/Y1fgHCKAGevUX/H4uUESrw1J5gmUg9Qip6onKV80lTumA1/aooGJ18LOsB31qdbwmZk9OA==}
2300 engines: {node: '>=18.0.0'} 1380 engines: {node: '>=10'}
2301 hasBin: true 1381 cpu: [arm]
1382 os: [linux]
1383 requiresBuild: true
1384 dev: true
1385 optional: true
1386
1387 /@swc/core-linux-arm64-gnu@1.4.0:
1388 resolution: {integrity: sha512-SknGu96W0mzHtLHWm+62fk5+Omp9fMPFO7AWyGFmz2tr8EgRRXtTSrBUnWhAbgcalnhen48GsvtMdxf1KNputg==}
1389 engines: {node: '>=10'}
1390 cpu: [arm64]
1391 os: [linux]
1392 requiresBuild: true
1393 dev: true
1394 optional: true
1395
1396 /@swc/core-linux-arm64-musl@1.4.0:
1397 resolution: {integrity: sha512-/k3TDvpBRMDNskHooNN1KqwUhcwkfBlIYxRTnJvsfT2C7My4pffR+4KXmt0IKynlTTbCdlU/4jgX4801FSuliw==}
1398 engines: {node: '>=10'}
1399 cpu: [arm64]
1400 os: [linux]
1401 requiresBuild: true
1402 dev: true
1403 optional: true
1404
1405 /@swc/core-linux-x64-gnu@1.4.0:
1406 resolution: {integrity: sha512-GYsTMvNt5+WTVlwwQzOOWsPMw6P/F41u5PGHWmfev8Nd4QJ1h3rWPySKk4mV42IJwH9MgQCVSl3ygwNqwl6kFg==}
1407 engines: {node: '>=10'}
1408 cpu: [x64]
1409 os: [linux]
1410 requiresBuild: true
1411 dev: true
1412 optional: true
1413
1414 /@swc/core-linux-x64-musl@1.4.0:
1415 resolution: {integrity: sha512-jGVPdM/VwF7kK/uYRW5N6FwzKf/FnDjGIR3RPvQokjYJy7Auk+3Oj21C0Jev7sIT9RYnO/TrFEoEozKeD/z2Qw==}
1416 engines: {node: '>=10'}
1417 cpu: [x64]
1418 os: [linux]
1419 requiresBuild: true
1420 dev: true
1421 optional: true
1422
1423 /@swc/core-win32-arm64-msvc@1.4.0:
1424 resolution: {integrity: sha512-biHYm1AronEKlt47O/H8sSOBM2BKXMmWT+ApvlxUw50m1RGNnVnE0bgY7tylFuuSiWyXsQPJbmUV708JqORXVg==}
1425 engines: {node: '>=10'}
1426 cpu: [arm64]
1427 os: [win32]
1428 requiresBuild: true
1429 dev: true
1430 optional: true
1431
1432 /@swc/core-win32-ia32-msvc@1.4.0:
1433 resolution: {integrity: sha512-TL5L2tFQb19kJwv6+elToGBj74QXCn9j+hZfwQatvZEJRA5rDK16eH6oAE751dGUArhnWlW3Vj65hViPvTuycw==}
1434 engines: {node: '>=10'}
1435 cpu: [ia32]
1436 os: [win32]
1437 requiresBuild: true
1438 dev: true
1439 optional: true
1440
1441 /@swc/core-win32-x64-msvc@1.4.0:
1442 resolution: {integrity: sha512-e2xVezU7XZ2Stzn4i7TOQe2Kn84oYdG0M3A7XI7oTdcpsKCcKwgiMoroiAhqCv+iN20KNqhnWwJiUiTj/qN5AA==}
1443 engines: {node: '>=10'}
1444 cpu: [x64]
1445 os: [win32]
1446 requiresBuild: true
1447 dev: true
1448 optional: true
1449
1450 /@swc/core@1.4.0:
1451 resolution: {integrity: sha512-wc5DMI5BJftnK0Fyx9SNJKkA0+BZSJQx8430yutWmsILkHMBD3Yd9GhlMaxasab9RhgKqZp7Ht30hUYO5ZDvQg==}
1452 engines: {node: '>=10'}
1453 requiresBuild: true
2302 peerDependencies: 1454 peerDependencies:
2303 '@babel/core': ^7.17.0 1455 '@swc/helpers': ^0.5.0
2304 '@babel/plugin-transform-react-jsx': ^7.12.11
2305 '@babel/preset-env': ^7.16.0
2306 '@babel/preset-react': ^7.0.0
2307 '@babel/preset-typescript': ^7.0.0
2308 '@symfony/stimulus-bridge': ^3.0.0
2309 '@vue/babel-helper-vue-jsx-merge-props': ^1.0.0
2310 '@vue/babel-preset-jsx': ^1.0.0
2311 '@vue/compiler-sfc': ^2.6 || ^3.0.2
2312 eslint: ^8.0.0
2313 eslint-webpack-plugin: ^3.1.0 || ^4.0.0
2314 file-loader: ^6.0.0
2315 fork-ts-checker-webpack-plugin: ^7.0.0 || ^8.0.0 || ^9.0.0
2316 handlebars: ^4.7.7
2317 handlebars-loader: ^1.7.0
2318 less: ^4.0.0
2319 less-loader: ^11.0.0
2320 postcss: ^8.3.0
2321 postcss-loader: ^7.0.0
2322 sass: ^1.17.0
2323 sass-loader: ^13.0.0 || ^14.0.0
2324 stylus: ^0.58.1
2325 stylus-loader: ^7.0.0
2326 ts-loader: ^9.0.0
2327 typescript: ^4.2.2 || ^5.0.0
2328 vue: ^2.6 || ^3.2.14
2329 vue-loader: ^15.0.11 || ^17.0.0
2330 vue-template-compiler: ^2.5
2331 webpack: ^5.72
2332 webpack-cli: ^4.9.1 || ^5.0.1
2333 webpack-notifier: ^1.15.0
2334 peerDependenciesMeta: 1456 peerDependenciesMeta:
2335 '@babel/plugin-transform-react-jsx': 1457 '@swc/helpers':
2336 optional: true
2337 '@babel/preset-react':
2338 optional: true
2339 '@babel/preset-typescript':
2340 optional: true
2341 '@symfony/stimulus-bridge':
2342 optional: true
2343 '@vue/babel-helper-vue-jsx-merge-props':
2344 optional: true
2345 '@vue/babel-preset-jsx':
2346 optional: true
2347 '@vue/compiler-sfc':
2348 optional: true
2349 eslint:
2350 optional: true
2351 eslint-webpack-plugin:
2352 optional: true
2353 file-loader:
2354 optional: true
2355 fork-ts-checker-webpack-plugin:
2356 optional: true
2357 handlebars:
2358 optional: true
2359 handlebars-loader:
2360 optional: true
2361 less:
2362 optional: true
2363 less-loader:
2364 optional: true
2365 postcss:
2366 optional: true
2367 postcss-loader:
2368 optional: true
2369 sass:
2370 optional: true
2371 sass-loader:
2372 optional: true
2373 stylus:
2374 optional: true
2375 stylus-loader:
2376 optional: true
2377 ts-loader:
2378 optional: true
2379 typescript:
2380 optional: true
2381 vue:
2382 optional: true
2383 vue-loader:
2384 optional: true
2385 vue-template-compiler:
2386 optional: true
2387 webpack-notifier:
2388 optional: true 1458 optional: true
2389 dependencies: 1459 dependencies:
2390 '@babel/core': 7.23.0 1460 '@swc/counter': 0.1.3
2391 '@babel/preset-env': 7.22.20(@babel/core@7.23.0) 1461 '@swc/types': 0.1.5
2392 '@nuxt/friendly-errors-webpack-plugin': 2.5.2(webpack@5.88.2) 1462 optionalDependencies:
2393 assets-webpack-plugin: 7.0.0(webpack@5.88.2) 1463 '@swc/core-darwin-arm64': 1.4.0
2394 babel-loader: 9.1.3(@babel/core@7.23.0)(webpack@5.88.2) 1464 '@swc/core-darwin-x64': 1.4.0
2395 chalk: 4.1.2 1465 '@swc/core-linux-arm-gnueabihf': 1.4.0
2396 clean-webpack-plugin: 4.0.0(webpack@5.88.2) 1466 '@swc/core-linux-arm64-gnu': 1.4.0
2397 css-loader: 6.8.1(webpack@5.88.2) 1467 '@swc/core-linux-arm64-musl': 1.4.0
2398 css-minimizer-webpack-plugin: 5.0.1(webpack@5.88.2) 1468 '@swc/core-linux-x64-gnu': 1.4.0
2399 eslint: 8.56.0 1469 '@swc/core-linux-x64-musl': 1.4.0
2400 fast-levenshtein: 3.0.0 1470 '@swc/core-win32-arm64-msvc': 1.4.0
2401 mini-css-extract-plugin: 2.7.6(webpack@5.88.2) 1471 '@swc/core-win32-ia32-msvc': 1.4.0
2402 pkg-up: 3.1.0 1472 '@swc/core-win32-x64-msvc': 1.4.0
2403 postcss: 8.4.31
2404 pretty-error: 4.0.0
2405 resolve-url-loader: 5.0.0
2406 semver: 7.6.0
2407 style-loader: 3.3.3(webpack@5.88.2)
2408 sync-rpc: 1.3.6
2409 tapable: 2.2.1
2410 terser-webpack-plugin: 5.3.9(webpack@5.88.2)
2411 tmp: 0.2.1
2412 typescript: 5.3.3
2413 webpack: 5.88.2(webpack-cli@5.1.4)
2414 webpack-cli: 5.1.4(webpack@5.88.2)
2415 webpack-dev-server: 4.15.1(webpack-cli@5.1.4)(webpack@5.88.2)
2416 yargs-parser: 21.1.1
2417 transitivePeerDependencies:
2418 - '@parcel/css'
2419 - '@swc/core'
2420 - '@swc/css'
2421 - bufferutil
2422 - clean-css
2423 - csso
2424 - debug
2425 - esbuild
2426 - lightningcss
2427 - supports-color
2428 - uglify-js
2429 - utf-8-validate
2430 dev: true 1473 dev: true
2431 1474
2432 /@szmarczak/http-timer@4.0.6: 1475 /@swc/counter@0.1.3:
2433 resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} 1476 resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
2434 engines: {node: '>=10'} 1477 dev: true
1478
1479 /@swc/types@0.1.5:
1480 resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==}
1481 dev: true
1482
1483 /@szmarczak/http-timer@5.0.1:
1484 resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==}
1485 engines: {node: '>=14.16'}
2435 dependencies: 1486 dependencies:
2436 defer-to-connect: 2.0.1 1487 defer-to-connect: 2.0.1
2437 dev: false 1488 dev: false
@@ -2446,11 +1497,6 @@ packages:
2446 dev: false 1497 dev: false
2447 optional: true 1498 optional: true
2448 1499
2449 /@trysound/sax@0.2.0:
2450 resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
2451 engines: {node: '>=10.13.0'}
2452 dev: true
2453
2454 /@ts-morph/common@0.17.0: 1500 /@ts-morph/common@0.17.0:
2455 resolution: {integrity: sha512-RMSSvSfs9kb0VzkvQ2NWobwnj7TxCA9vI/IjR9bDHqgAyVbu2T0DN4wiKVqomyDWqO7dPr/tErSfq7urQ1Q37g==} 1501 resolution: {integrity: sha512-RMSSvSfs9kb0VzkvQ2NWobwnj7TxCA9vI/IjR9bDHqgAyVbu2T0DN4wiKVqomyDWqO7dPr/tErSfq7urQ1Q37g==}
2456 dependencies: 1502 dependencies:
@@ -2460,92 +1506,41 @@ packages:
2460 path-browserify: 1.0.1 1506 path-browserify: 1.0.1
2461 dev: false 1507 dev: false
2462 1508
2463 /@types/bcrypt@5.0.2: 1509 /@ts-morph/common@0.22.0:
2464 resolution: {integrity: sha512-6atioO8Y75fNcbmj0G7UjI9lXN2pQ/IGJ2FWT4a/btd0Lk9lQalHLKhkgKVZ3r+spnmWUKfbMi1GEe9wyHQfNQ==} 1510 resolution: {integrity: sha512-HqNBuV/oIlMKdkLshXd1zKBqNQCsuPEsgQOkfFQ/eUKjRlwndXW1AjN9LVkBEIukm00gGXSRmfkl0Wv5VXLnlw==}
2465 dependencies: 1511 dependencies:
2466 '@types/node': 20.7.2 1512 fast-glob: 3.3.2
2467 dev: true 1513 minimatch: 9.0.3
1514 mkdirp: 3.0.1
1515 path-browserify: 1.0.1
2468 1516
2469 /@types/body-parser@1.19.3: 1517 /@tsconfig/node10@1.0.9:
2470 resolution: {integrity: sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==} 1518 resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==}
2471 dependencies:
2472 '@types/connect': 3.4.36
2473 '@types/node': 20.7.2
2474 dev: true 1519 dev: true
2475 1520
2476 /@types/bonjour@3.5.11: 1521 /@tsconfig/node12@1.0.11:
2477 resolution: {integrity: sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg==} 1522 resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==}
2478 dependencies:
2479 '@types/node': 20.7.2
2480 dev: true 1523 dev: true
2481 1524
2482 /@types/bytes@3.1.2: 1525 /@tsconfig/node14@1.0.3:
2483 resolution: {integrity: sha512-92b6q7CSYBMVZDtMZh5PuKm3LjZwcU7s6H8e9sU20Z1tOrTuXN+Hz3VuP9E8axiQRaCoiEOMN1duqPCEIhamrQ==} 1526 resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==}
2484
2485 /@types/cacheable-request@6.0.3:
2486 resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==}
2487 dependencies:
2488 '@types/http-cache-semantics': 4.0.2
2489 '@types/keyv': 3.1.4
2490 '@types/node': 20.7.2
2491 '@types/responselike': 1.0.1
2492 dev: false
2493
2494 /@types/chai@4.3.6:
2495 resolution: {integrity: sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==}
2496 dev: true 1527 dev: true
2497 1528
2498 /@types/connect-history-api-fallback@1.5.1: 1529 /@tsconfig/node16@1.0.4:
2499 resolution: {integrity: sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==} 1530 resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
2500 dependencies:
2501 '@types/express-serve-static-core': 4.17.37
2502 '@types/node': 20.7.2
2503 dev: true 1531 dev: true
2504 1532
2505 /@types/connect@3.4.36: 1533 /@types/bcrypt@5.0.2:
2506 resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} 1534 resolution: {integrity: sha512-6atioO8Y75fNcbmj0G7UjI9lXN2pQ/IGJ2FWT4a/btd0Lk9lQalHLKhkgKVZ3r+spnmWUKfbMi1GEe9wyHQfNQ==}
2507 dependencies: 1535 dependencies:
2508 '@types/node': 20.7.2 1536 '@types/node': 20.7.2
2509 dev: true 1537 dev: true
2510 1538
2511 /@types/cookiejar@2.1.2: 1539 /@types/bytes@3.1.4:
2512 resolution: {integrity: sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==} 1540 resolution: {integrity: sha512-A0uYgOj3zNc4hNjHc5lYUfJQ/HVyBXiUMKdXd7ysclaE6k9oJdavQzODHuwjpUu2/boCP8afjQYi8z/GtvNCWA==}
2513 dev: true
2514
2515 /@types/eslint-scope@3.7.5:
2516 resolution: {integrity: sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA==}
2517 dependencies:
2518 '@types/eslint': 8.44.3
2519 '@types/estree': 1.0.2
2520 dev: true
2521
2522 /@types/eslint@8.44.3:
2523 resolution: {integrity: sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g==}
2524 dependencies:
2525 '@types/estree': 1.0.2
2526 '@types/json-schema': 7.0.13
2527 dev: true
2528
2529 /@types/estree@1.0.2:
2530 resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==}
2531 dev: true
2532
2533 /@types/express-serve-static-core@4.17.37:
2534 resolution: {integrity: sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==}
2535 dependencies:
2536 '@types/node': 20.7.2
2537 '@types/qs': 6.9.8
2538 '@types/range-parser': 1.2.5
2539 '@types/send': 0.17.2
2540 dev: true
2541 1541
2542 /@types/express@4.17.18: 1542 /@types/estree@1.0.5:
2543 resolution: {integrity: sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ==} 1543 resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
2544 dependencies:
2545 '@types/body-parser': 1.19.3
2546 '@types/express-serve-static-core': 4.17.37
2547 '@types/qs': 6.9.8
2548 '@types/serve-static': 1.15.3
2549 dev: true 1544 dev: true
2550 1545
2551 /@types/fs-extra@11.0.4: 1546 /@types/fs-extra@11.0.4:
@@ -2555,58 +1550,13 @@ packages:
2555 '@types/node': 20.7.2 1550 '@types/node': 20.7.2
2556 dev: true 1551 dev: true
2557 1552
2558 /@types/fs-extra@9.0.13: 1553 /@types/he@1.2.3:
2559 resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} 1554 resolution: {integrity: sha512-q67/qwlxblDzEDvzHhVkwc1gzVWxaNxeyHUBF4xElrvjL11O+Ytze+1fGpBHlr/H9myiBUaUXNnNPmBHxxfAcA==}
2560 dependencies:
2561 '@types/node': 20.7.2
2562
2563 /@types/glob@7.2.0:
2564 resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
2565 dependencies:
2566 '@types/minimatch': 5.1.2
2567 '@types/node': 20.7.2
2568 dev: true
2569
2570 /@types/he@1.2.1:
2571 resolution: {integrity: sha512-CdNmJMcSqX1BiP3iSsWt+VgixndRIDGzWyaGpBnW3i5heATSk5bJu2j3buutsoBQNjyryqxaNpr8M7fRsGL15w==}
2572 1555
2573 /@types/http-cache-semantics@4.0.2: 1556 /@types/http-cache-semantics@4.0.2:
2574 resolution: {integrity: sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==} 1557 resolution: {integrity: sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==}
2575 dev: false 1558 dev: false
2576 1559
2577 /@types/http-errors@2.0.2:
2578 resolution: {integrity: sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==}
2579 dev: true
2580
2581 /@types/http-proxy@1.17.12:
2582 resolution: {integrity: sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw==}
2583 dependencies:
2584 '@types/node': 20.7.2
2585 dev: true
2586
2587 /@types/istanbul-lib-coverage@2.0.4:
2588 resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==}
2589 dev: true
2590
2591 /@types/istanbul-lib-report@3.0.1:
2592 resolution: {integrity: sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==}
2593 dependencies:
2594 '@types/istanbul-lib-coverage': 2.0.4
2595 dev: true
2596
2597 /@types/istanbul-reports@1.1.2:
2598 resolution: {integrity: sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==}
2599 dependencies:
2600 '@types/istanbul-lib-coverage': 2.0.4
2601 '@types/istanbul-lib-report': 3.0.1
2602 dev: true
2603
2604 /@types/istanbul-reports@3.0.2:
2605 resolution: {integrity: sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==}
2606 dependencies:
2607 '@types/istanbul-lib-report': 3.0.1
2608 dev: true
2609
2610 /@types/json-schema@7.0.13: 1560 /@types/json-schema@7.0.13:
2611 resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} 1561 resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==}
2612 dev: true 1562 dev: true
@@ -2621,60 +1571,24 @@ packages:
2621 '@types/node': 20.7.2 1571 '@types/node': 20.7.2
2622 dev: true 1572 dev: true
2623 1573
2624 /@types/keyv@3.1.4:
2625 resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
2626 dependencies:
2627 '@types/node': 20.7.2
2628 dev: false
2629
2630 /@types/luxon@3.4.2: 1574 /@types/luxon@3.4.2:
2631 resolution: {integrity: sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==} 1575 resolution: {integrity: sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==}
2632 1576
2633 /@types/mime@1.3.3: 1577 /@types/node@20.7.2:
2634 resolution: {integrity: sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg==} 1578 resolution: {integrity: sha512-RcdC3hOBOauLP+r/kRt27NrByYtDjsXyAuSbR87O6xpsvi763WI+5fbSIvYJrXnt9w4RuxhV6eAXfIs7aaf/FQ==}
2635 dev: true
2636
2637 /@types/mime@3.0.2:
2638 resolution: {integrity: sha512-Wj+fqpTLtTbG7c0tH47dkahefpLKEbB+xAZuLq7b4/IDHPl/n6VoXcyUQ2bypFlbSwvCr0y+bD4euTTqTJsPxQ==}
2639 dev: true
2640
2641 /@types/minimatch@5.1.2:
2642 resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==}
2643 dev: true
2644 1579
2645 /@types/node-fetch@2.6.11: 1580 /@types/nodemailer@6.4.14:
2646 resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} 1581 resolution: {integrity: sha512-fUWthHO9k9DSdPCSPRqcu6TWhYyxTBg382vlNIttSe9M7XfsT06y0f24KHXtbnijPGGRIcVvdKHTNikOI6qiHA==}
2647 dependencies: 1582 dependencies:
2648 '@types/node': 20.7.2 1583 '@types/node': 20.7.2
2649 form-data: 4.0.0 1584 dev: false
2650 dev: true
2651
2652 /@types/node@20.7.2:
2653 resolution: {integrity: sha512-RcdC3hOBOauLP+r/kRt27NrByYtDjsXyAuSbR87O6xpsvi763WI+5fbSIvYJrXnt9w4RuxhV6eAXfIs7aaf/FQ==}
2654 1585
2655 /@types/normalize-package-data@2.4.2: 1586 /@types/normalize-package-data@2.4.2:
2656 resolution: {integrity: sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==} 1587 resolution: {integrity: sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==}
2657 dev: true 1588 dev: true
2658 1589
2659 /@types/pino-pretty@5.0.0: 1590 /@types/pluralize@0.0.33:
2660 resolution: {integrity: sha512-N1uzqSzioqz8R3AkDbSJwcfDWeI3YMPNapSQQhnB2ISU4NYgUIcAh+hYT5ygqBM+klX4htpEhXMmoJv3J7GrdA==} 1591 resolution: {integrity: sha512-JOqsl+ZoCpP4e8TDke9W79FDcSgPAR0l6pixx2JHkhnRjvShyYiAYw2LVsnA7K08Y6DeOnaU6ujmENO4os/cYg==}
2661 deprecated: This is a stub types definition. pino-pretty provides its own type definitions, so you do not need this installed.
2662 dependencies:
2663 pino-pretty: 10.3.1
2664
2665 /@types/pino-std-serializers@4.0.0:
2666 resolution: {integrity: sha512-gXfUZx2xIBbFYozGms53fT0nvkacx/+62c8iTxrEqH5PkIGAQvDbXg2774VWOycMPbqn5YJBQ3BMsg4Li3dWbg==}
2667 deprecated: This is a stub types definition. pino-std-serializers provides its own type definitions, so you do not need this installed.
2668 dependencies:
2669 pino-std-serializers: 6.2.2
2670
2671 /@types/pino@6.3.12:
2672 resolution: {integrity: sha512-dsLRTq8/4UtVSpJgl9aeqHvbh6pzdmjYD3C092SYgLD2TyoCqHpTJk6vp8DvCTGGc7iowZ2MoiYiVUUCcu7muw==}
2673 dependencies:
2674 '@types/node': 20.7.2
2675 '@types/pino-pretty': 5.0.0
2676 '@types/pino-std-serializers': 4.0.0
2677 sonic-boom: 2.8.0
2678 1592
2679 /@types/proxy-addr@2.0.3: 1593 /@types/proxy-addr@2.0.3:
2680 resolution: {integrity: sha512-TgAHHO4tNG3HgLTUhB+hM4iwW6JUNeQHCLnF1DjaDA9c69PN+IasoFu2MYDhubFc+ZIw5c5t9DMtjvrD6R3Egg==} 1594 resolution: {integrity: sha512-TgAHHO4tNG3HgLTUhB+hM4iwW6JUNeQHCLnF1DjaDA9c69PN+IasoFu2MYDhubFc+ZIw5c5t9DMtjvrD6R3Egg==}
@@ -2682,68 +1596,19 @@ packages:
2682 '@types/node': 20.7.2 1596 '@types/node': 20.7.2
2683 dev: true 1597 dev: true
2684 1598
2685 /@types/qs@6.9.8: 1599 /@types/qs@6.9.11:
2686 resolution: {integrity: sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==} 1600 resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==}
2687 dev: true
2688
2689 /@types/range-parser@1.2.5:
2690 resolution: {integrity: sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA==}
2691 dev: true
2692
2693 /@types/responselike@1.0.1:
2694 resolution: {integrity: sha512-TiGnitEDxj2X0j+98Eqk5lv/Cij8oHd32bU4D/Yw6AOq7vvTk0gSD2GPj0G/HkvhMoVsdlhYF4yqqlyPBTM6Sg==}
2695 dependencies:
2696 '@types/node': 20.7.2
2697 dev: false
2698
2699 /@types/retry@0.12.0:
2700 resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==}
2701 dev: true
2702 1601
2703 /@types/semver@7.5.6: 1602 /@types/semver@7.5.6:
2704 resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} 1603 resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==}
2705 dev: true 1604 dev: true
2706 1605
2707 /@types/send@0.17.2:
2708 resolution: {integrity: sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw==}
2709 dependencies:
2710 '@types/mime': 1.3.3
2711 '@types/node': 20.7.2
2712 dev: true
2713
2714 /@types/serve-index@1.9.2:
2715 resolution: {integrity: sha512-asaEIoc6J+DbBKXtO7p2shWUpKacZOoMBEGBgPG91P8xhO53ohzHWGCs4ScZo5pQMf5ukQzVT9fhX1WzpHihig==}
2716 dependencies:
2717 '@types/express': 4.17.18
2718 dev: true
2719
2720 /@types/serve-static@1.15.3:
2721 resolution: {integrity: sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg==}
2722 dependencies:
2723 '@types/http-errors': 2.0.2
2724 '@types/mime': 3.0.2
2725 '@types/node': 20.7.2
2726 dev: true
2727
2728 /@types/sockjs@0.3.34:
2729 resolution: {integrity: sha512-R+n7qBFnm/6jinlteC9DBL5dGiDGjWAvjo4viUanpnc/dG1y7uDoacXPIQ/PQEg1fI912SMHIa014ZjRpvDw4g==}
2730 dependencies:
2731 '@types/node': 20.7.2
2732 dev: true
2733
2734 /@types/source-map-support@0.5.10: 1606 /@types/source-map-support@0.5.10:
2735 resolution: {integrity: sha512-tgVP2H469x9zq34Z0m/fgPewGhg/MLClalNOiPIzQlXrSS2YrKu/xCdSCKnEDwkFha51VKEKB6A9wW26/ZNwzA==} 1607 resolution: {integrity: sha512-tgVP2H469x9zq34Z0m/fgPewGhg/MLClalNOiPIzQlXrSS2YrKu/xCdSCKnEDwkFha51VKEKB6A9wW26/ZNwzA==}
2736 dependencies: 1608 dependencies:
2737 source-map: 0.6.1 1609 source-map: 0.6.1
2738 dev: true 1610 dev: true
2739 1611
2740 /@types/superagent@4.1.19:
2741 resolution: {integrity: sha512-McM1mlc7PBZpCaw0fw/36uFqo0YeA6m8JqoyE4OfqXsZCIg0hPP2xdE6FM7r6fdprDZHlJwDpydUj1R++93hCA==}
2742 dependencies:
2743 '@types/cookiejar': 2.1.2
2744 '@types/node': 20.7.2
2745 dev: true
2746
2747 /@types/tar-fs@2.0.2: 1612 /@types/tar-fs@2.0.2:
2748 resolution: {integrity: sha512-XuZRAvdo7FbDfgQCNkc8NOdSae5XtG+of2mTSgJ85G4OG0miN4E8BTGT+JBTLO87RQ7iCwsIDCqCsHnf2IaSXA==} 1613 resolution: {integrity: sha512-XuZRAvdo7FbDfgQCNkc8NOdSae5XtG+of2mTSgJ85G4OG0miN4E8BTGT+JBTLO87RQ7iCwsIDCqCsHnf2IaSXA==}
2749 dependencies: 1614 dependencies:
@@ -2767,58 +1632,9 @@ packages:
2767 resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} 1632 resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==}
2768 dev: true 1633 dev: true
2769 1634
2770 /@types/validator@13.11.2: 1635 /@types/validator@13.11.9:
2771 resolution: {integrity: sha512-nIKVVQKT6kGKysnNt+xLobr+pFJNssJRi2s034wgWeFBUx01fI8BeHTW2TcRp7VcFu9QCYG8IlChTuovcm0oKQ==} 1636 resolution: {integrity: sha512-FCTsikRozryfayPuiI46QzH3fnrOoctTjvOYZkho9BTFLCOZ2rgZJHMOVgCOfttjPJcgOx52EpkY0CMfy87MIw==}
2772 1637 dev: false
2773 /@types/ws@8.5.6:
2774 resolution: {integrity: sha512-8B5EO9jLVCy+B58PLHvLDuOD8DRVMgQzq8d55SjLCOn9kqGyqOvy27exVaTio1q1nX5zLu8/6N0n2ThSxOM6tg==}
2775 dependencies:
2776 '@types/node': 20.7.2
2777 dev: true
2778
2779 /@types/yargs-parser@21.0.1:
2780 resolution: {integrity: sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==}
2781 dev: true
2782
2783 /@types/yargs@15.0.16:
2784 resolution: {integrity: sha512-2FeD5qezW3FvLpZ0JpfuaEWepgNLl9b2gQYiz/ce0NhoB1W/D+VZu98phITXkADYerfr/jb7JcDcVhITsc9bwg==}
2785 dependencies:
2786 '@types/yargs-parser': 21.0.1
2787 dev: true
2788
2789 /@types/yargs@17.0.26:
2790 resolution: {integrity: sha512-Y3vDy2X6zw/ZCumcwLpdhM5L7jmyGpmBCTYMHDLqT2IKVMYRRLdv6ZakA+wxhra6Z/3bwhNbNl9bDGXaFU+6rw==}
2791 dependencies:
2792 '@types/yargs-parser': 21.0.1
2793 dev: true
2794
2795 /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.56.0)(typescript@5.3.3):
2796 resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==}
2797 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2798 peerDependencies:
2799 '@typescript-eslint/parser': ^5.0.0
2800 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
2801 typescript: '*'
2802 peerDependenciesMeta:
2803 typescript:
2804 optional: true
2805 dependencies:
2806 '@eslint-community/regexpp': 4.9.0
2807 '@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.3)
2808 '@typescript-eslint/scope-manager': 5.62.0
2809 '@typescript-eslint/type-utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3)
2810 '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3)
2811 debug: 4.3.4
2812 eslint: 8.56.0
2813 graphemer: 1.4.0
2814 ignore: 5.2.4
2815 natural-compare-lite: 1.4.0
2816 semver: 7.6.0
2817 tsutils: 3.21.0(typescript@5.3.3)
2818 typescript: 5.3.3
2819 transitivePeerDependencies:
2820 - supports-color
2821 dev: true
2822 1638
2823 /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3): 1639 /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3):
2824 resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} 1640 resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==}
@@ -2849,26 +1665,6 @@ packages:
2849 - supports-color 1665 - supports-color
2850 dev: true 1666 dev: true
2851 1667
2852 /@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.3):
2853 resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==}
2854 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2855 peerDependencies:
2856 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
2857 typescript: '*'
2858 peerDependenciesMeta:
2859 typescript:
2860 optional: true
2861 dependencies:
2862 '@typescript-eslint/scope-manager': 5.62.0
2863 '@typescript-eslint/types': 5.62.0
2864 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3)
2865 debug: 4.3.4
2866 eslint: 8.56.0
2867 typescript: 5.3.3
2868 transitivePeerDependencies:
2869 - supports-color
2870 dev: true
2871
2872 /@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3): 1668 /@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3):
2873 resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} 1669 resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==}
2874 engines: {node: ^16.0.0 || >=18.0.0} 1670 engines: {node: ^16.0.0 || >=18.0.0}
@@ -2890,14 +1686,6 @@ packages:
2890 - supports-color 1686 - supports-color
2891 dev: true 1687 dev: true
2892 1688
2893 /@typescript-eslint/scope-manager@5.62.0:
2894 resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
2895 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2896 dependencies:
2897 '@typescript-eslint/types': 5.62.0
2898 '@typescript-eslint/visitor-keys': 5.62.0
2899 dev: true
2900
2901 /@typescript-eslint/scope-manager@6.21.0: 1689 /@typescript-eslint/scope-manager@6.21.0:
2902 resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} 1690 resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==}
2903 engines: {node: ^16.0.0 || >=18.0.0} 1691 engines: {node: ^16.0.0 || >=18.0.0}
@@ -2906,26 +1694,6 @@ packages:
2906 '@typescript-eslint/visitor-keys': 6.21.0 1694 '@typescript-eslint/visitor-keys': 6.21.0
2907 dev: true 1695 dev: true
2908 1696
2909 /@typescript-eslint/type-utils@5.62.0(eslint@8.56.0)(typescript@5.3.3):
2910 resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==}
2911 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2912 peerDependencies:
2913 eslint: '*'
2914 typescript: '*'
2915 peerDependenciesMeta:
2916 typescript:
2917 optional: true
2918 dependencies:
2919 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3)
2920 '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3)
2921 debug: 4.3.4
2922 eslint: 8.56.0
2923 tsutils: 3.21.0(typescript@5.3.3)
2924 typescript: 5.3.3
2925 transitivePeerDependencies:
2926 - supports-color
2927 dev: true
2928
2929 /@typescript-eslint/type-utils@6.21.0(eslint@8.56.0)(typescript@5.3.3): 1697 /@typescript-eslint/type-utils@6.21.0(eslint@8.56.0)(typescript@5.3.3):
2930 resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} 1698 resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==}
2931 engines: {node: ^16.0.0 || >=18.0.0} 1699 engines: {node: ^16.0.0 || >=18.0.0}
@@ -2946,37 +1714,11 @@ packages:
2946 - supports-color 1714 - supports-color
2947 dev: true 1715 dev: true
2948 1716
2949 /@typescript-eslint/types@5.62.0:
2950 resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
2951 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2952 dev: true
2953
2954 /@typescript-eslint/types@6.21.0: 1717 /@typescript-eslint/types@6.21.0:
2955 resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} 1718 resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==}
2956 engines: {node: ^16.0.0 || >=18.0.0} 1719 engines: {node: ^16.0.0 || >=18.0.0}
2957 dev: true 1720 dev: true
2958 1721
2959 /@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3):
2960 resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
2961 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2962 peerDependencies:
2963 typescript: '*'
2964 peerDependenciesMeta:
2965 typescript:
2966 optional: true
2967 dependencies:
2968 '@typescript-eslint/types': 5.62.0
2969 '@typescript-eslint/visitor-keys': 5.62.0
2970 debug: 4.3.4
2971 globby: 11.1.0
2972 is-glob: 4.0.3
2973 semver: 7.6.0
2974 tsutils: 3.21.0(typescript@5.3.3)
2975 typescript: 5.3.3
2976 transitivePeerDependencies:
2977 - supports-color
2978 dev: true
2979
2980 /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3): 1722 /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3):
2981 resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} 1723 resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==}
2982 engines: {node: ^16.0.0 || >=18.0.0} 1724 engines: {node: ^16.0.0 || >=18.0.0}
@@ -2999,26 +1741,6 @@ packages:
2999 - supports-color 1741 - supports-color
3000 dev: true 1742 dev: true
3001 1743
3002 /@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.3.3):
3003 resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
3004 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
3005 peerDependencies:
3006 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
3007 dependencies:
3008 '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
3009 '@types/json-schema': 7.0.13
3010 '@types/semver': 7.5.6
3011 '@typescript-eslint/scope-manager': 5.62.0
3012 '@typescript-eslint/types': 5.62.0
3013 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3)
3014 eslint: 8.56.0
3015 eslint-scope: 5.1.1
3016 semver: 7.6.0
3017 transitivePeerDependencies:
3018 - supports-color
3019 - typescript
3020 dev: true
3021
3022 /@typescript-eslint/utils@6.21.0(eslint@8.56.0)(typescript@5.3.3): 1744 /@typescript-eslint/utils@6.21.0(eslint@8.56.0)(typescript@5.3.3):
3023 resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} 1745 resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==}
3024 engines: {node: ^16.0.0 || >=18.0.0} 1746 engines: {node: ^16.0.0 || >=18.0.0}
@@ -3038,14 +1760,6 @@ packages:
3038 - typescript 1760 - typescript
3039 dev: true 1761 dev: true
3040 1762
3041 /@typescript-eslint/visitor-keys@5.62.0:
3042 resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
3043 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
3044 dependencies:
3045 '@typescript-eslint/types': 5.62.0
3046 eslint-visitor-keys: 3.4.3
3047 dev: true
3048
3049 /@typescript-eslint/visitor-keys@6.21.0: 1763 /@typescript-eslint/visitor-keys@6.21.0:
3050 resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} 1764 resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==}
3051 engines: {node: ^16.0.0 || >=18.0.0} 1765 engines: {node: ^16.0.0 || >=18.0.0}
@@ -3058,161 +1772,9 @@ packages:
3058 resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} 1772 resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
3059 dev: true 1773 dev: true
3060 1774
3061 /@webassemblyjs/ast@1.11.6:
3062 resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==}
3063 dependencies:
3064 '@webassemblyjs/helper-numbers': 1.11.6
3065 '@webassemblyjs/helper-wasm-bytecode': 1.11.6
3066 dev: true
3067
3068 /@webassemblyjs/floating-point-hex-parser@1.11.6:
3069 resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==}
3070 dev: true
3071
3072 /@webassemblyjs/helper-api-error@1.11.6:
3073 resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==}
3074 dev: true
3075
3076 /@webassemblyjs/helper-buffer@1.11.6:
3077 resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==}
3078 dev: true
3079
3080 /@webassemblyjs/helper-numbers@1.11.6:
3081 resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==}
3082 dependencies:
3083 '@webassemblyjs/floating-point-hex-parser': 1.11.6
3084 '@webassemblyjs/helper-api-error': 1.11.6
3085 '@xtuc/long': 4.2.2
3086 dev: true
3087
3088 /@webassemblyjs/helper-wasm-bytecode@1.11.6:
3089 resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==}
3090 dev: true
3091
3092 /@webassemblyjs/helper-wasm-section@1.11.6:
3093 resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==}
3094 dependencies:
3095 '@webassemblyjs/ast': 1.11.6
3096 '@webassemblyjs/helper-buffer': 1.11.6
3097 '@webassemblyjs/helper-wasm-bytecode': 1.11.6
3098 '@webassemblyjs/wasm-gen': 1.11.6
3099 dev: true
3100
3101 /@webassemblyjs/ieee754@1.11.6:
3102 resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==}
3103 dependencies:
3104 '@xtuc/ieee754': 1.2.0
3105 dev: true
3106
3107 /@webassemblyjs/leb128@1.11.6:
3108 resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==}
3109 dependencies:
3110 '@xtuc/long': 4.2.2
3111 dev: true
3112
3113 /@webassemblyjs/utf8@1.11.6:
3114 resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==}
3115 dev: true
3116
3117 /@webassemblyjs/wasm-edit@1.11.6:
3118 resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==}
3119 dependencies:
3120 '@webassemblyjs/ast': 1.11.6
3121 '@webassemblyjs/helper-buffer': 1.11.6
3122 '@webassemblyjs/helper-wasm-bytecode': 1.11.6
3123 '@webassemblyjs/helper-wasm-section': 1.11.6
3124 '@webassemblyjs/wasm-gen': 1.11.6
3125 '@webassemblyjs/wasm-opt': 1.11.6
3126 '@webassemblyjs/wasm-parser': 1.11.6
3127 '@webassemblyjs/wast-printer': 1.11.6
3128 dev: true
3129
3130 /@webassemblyjs/wasm-gen@1.11.6:
3131 resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==}
3132 dependencies:
3133 '@webassemblyjs/ast': 1.11.6
3134 '@webassemblyjs/helper-wasm-bytecode': 1.11.6
3135 '@webassemblyjs/ieee754': 1.11.6
3136 '@webassemblyjs/leb128': 1.11.6
3137 '@webassemblyjs/utf8': 1.11.6
3138 dev: true
3139
3140 /@webassemblyjs/wasm-opt@1.11.6:
3141 resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==}
3142 dependencies:
3143 '@webassemblyjs/ast': 1.11.6
3144 '@webassemblyjs/helper-buffer': 1.11.6
3145 '@webassemblyjs/wasm-gen': 1.11.6
3146 '@webassemblyjs/wasm-parser': 1.11.6
3147 dev: true
3148
3149 /@webassemblyjs/wasm-parser@1.11.6:
3150 resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==}
3151 dependencies:
3152 '@webassemblyjs/ast': 1.11.6
3153 '@webassemblyjs/helper-api-error': 1.11.6
3154 '@webassemblyjs/helper-wasm-bytecode': 1.11.6
3155 '@webassemblyjs/ieee754': 1.11.6
3156 '@webassemblyjs/leb128': 1.11.6
3157 '@webassemblyjs/utf8': 1.11.6
3158 dev: true
3159
3160 /@webassemblyjs/wast-printer@1.11.6:
3161 resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==}
3162 dependencies:
3163 '@webassemblyjs/ast': 1.11.6
3164 '@xtuc/long': 4.2.2
3165 dev: true
3166
3167 /@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.88.2):
3168 resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==}
3169 engines: {node: '>=14.15.0'}
3170 peerDependencies:
3171 webpack: 5.x.x
3172 webpack-cli: 5.x.x
3173 dependencies:
3174 webpack: 5.88.2(webpack-cli@5.1.4)
3175 webpack-cli: 5.1.4(webpack@5.88.2)
3176 dev: true
3177
3178 /@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.88.2):
3179 resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==}
3180 engines: {node: '>=14.15.0'}
3181 peerDependencies:
3182 webpack: 5.x.x
3183 webpack-cli: 5.x.x
3184 dependencies:
3185 webpack: 5.88.2(webpack-cli@5.1.4)
3186 webpack-cli: 5.1.4(webpack@5.88.2)
3187 dev: true
3188
3189 /@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.88.2):
3190 resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==}
3191 engines: {node: '>=14.15.0'}
3192 peerDependencies:
3193 webpack: 5.x.x
3194 webpack-cli: 5.x.x
3195 webpack-dev-server: '*'
3196 peerDependenciesMeta:
3197 webpack-dev-server:
3198 optional: true
3199 dependencies:
3200 webpack: 5.88.2(webpack-cli@5.1.4)
3201 webpack-cli: 5.1.4(webpack@5.88.2)
3202 dev: true
3203
3204 /@xtuc/ieee754@1.2.0:
3205 resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==}
3206 dev: true
3207
3208 /@xtuc/long@4.2.2:
3209 resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
3210 dev: true
3211
3212 /abbrev@1.1.1: 1775 /abbrev@1.1.1:
3213 resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} 1776 resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
3214 requiresBuild: true 1777 requiresBuild: true
3215 dev: false
3216 1778
3217 /abort-controller@3.0.0: 1779 /abort-controller@3.0.0:
3218 resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} 1780 resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
@@ -3230,24 +1792,6 @@ packages:
3230 mime-types: 2.1.35 1792 mime-types: 2.1.35
3231 negotiator: 0.6.3 1793 negotiator: 0.6.3
3232 1794
3233 /acorn-class-fields@1.0.0(acorn@8.10.0):
3234 resolution: {integrity: sha512-l+1FokF34AeCXGBHkrXFmml9nOIRI+2yBnBpO5MaVAaTIJ96irWLtcCxX+7hAp6USHFCe+iyyBB4ZhxV807wmA==}
3235 engines: {node: '>=4.8.2'}
3236 peerDependencies:
3237 acorn: ^6 || ^7 || ^8
3238 dependencies:
3239 acorn: 8.10.0
3240 acorn-private-class-elements: 1.0.0(acorn@8.10.0)
3241 dev: false
3242
3243 /acorn-import-assertions@1.9.0(acorn@8.10.0):
3244 resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==}
3245 peerDependencies:
3246 acorn: ^8
3247 dependencies:
3248 acorn: 8.10.0
3249 dev: true
3250
3251 /acorn-jsx@5.3.2(acorn@8.10.0): 1795 /acorn-jsx@5.3.2(acorn@8.10.0):
3252 resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 1796 resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
3253 peerDependencies: 1797 peerDependencies:
@@ -3256,56 +1800,21 @@ packages:
3256 acorn: 8.10.0 1800 acorn: 8.10.0
3257 dev: true 1801 dev: true
3258 1802
3259 /acorn-private-class-elements@1.0.0(acorn@8.10.0):
3260 resolution: {integrity: sha512-zYNcZtxKgVCg1brS39BEou86mIao1EV7eeREG+6WMwKbuYTeivRRs6S2XdWnboRde6G9wKh2w+WBydEyJsJ6mg==}
3261 engines: {node: '>=4.8.2'}
3262 peerDependencies:
3263 acorn: ^6.1.0 || ^7 || ^8
3264 dependencies:
3265 acorn: 8.10.0
3266 dev: false
3267
3268 /acorn-private-methods@1.0.0(acorn@8.10.0):
3269 resolution: {integrity: sha512-Jou2L3nfwfPpFdmmHObI3yUpVPM1bPohTUAZCyVDw5Efyn9LSS6E36neRLCRfIr8QjskAfdxRdABOrvP4c/gwQ==}
3270 engines: {node: '>=4.8.2'}
3271 peerDependencies:
3272 acorn: ^6 || ^7 || ^8
3273 dependencies:
3274 acorn: 8.10.0
3275 acorn-private-class-elements: 1.0.0(acorn@8.10.0)
3276 dev: false
3277
3278 /acorn-static-class-features@1.0.0(acorn@8.10.0):
3279 resolution: {integrity: sha512-XZJECjbmMOKvMHiNzbiPXuXpLAJfN3dAKtfIYbk1eHiWdsutlek+gS7ND4B8yJ3oqvHo1NxfafnezVmq7NXK0A==}
3280 engines: {node: '>=4.8.2'}
3281 peerDependencies:
3282 acorn: ^6.1.0 || ^7 || ^8
3283 dependencies:
3284 acorn: 8.10.0
3285 acorn-private-class-elements: 1.0.0(acorn@8.10.0)
3286 dev: false
3287
3288 /acorn-walk@8.2.0: 1803 /acorn-walk@8.2.0:
3289 resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} 1804 resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==}
3290 engines: {node: '>=0.4.0'} 1805 engines: {node: '>=0.4.0'}
3291 dev: false 1806 dev: true
3292 1807
3293 /acorn@8.10.0: 1808 /acorn@8.10.0:
3294 resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} 1809 resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
3295 engines: {node: '>=0.4.0'} 1810 engines: {node: '>=0.4.0'}
3296 hasBin: true 1811 hasBin: true
3297
3298 /adjust-sourcemap-loader@4.0.0:
3299 resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==}
3300 engines: {node: '>=8.9'}
3301 dependencies:
3302 loader-utils: 2.0.4
3303 regex-parser: 2.2.11
3304 dev: true 1812 dev: true
3305 1813
3306 /adonis-preset-ts@2.1.0: 1814 /acorn@8.11.3:
3307 resolution: {integrity: sha512-cQH/NP250gOF9k3TTDhVsTOPSAvyH4MhKVZ4ryYiihA+vnP27sut1gVIrRas3Evl5d2wEgWVGI5DgdP/ZFSk0w==} 1815 resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
3308 dev: true 1816 engines: {node: '>=0.4.0'}
1817 hasBin: true
3309 1818
3310 /agent-base@6.0.2: 1819 /agent-base@6.0.2:
3311 resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} 1820 resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
@@ -3314,7 +1823,6 @@ packages:
3314 debug: 4.3.4 1823 debug: 4.3.4
3315 transitivePeerDependencies: 1824 transitivePeerDependencies:
3316 - supports-color 1825 - supports-color
3317 dev: false
3318 1826
3319 /agentkeepalive@4.5.0: 1827 /agentkeepalive@4.5.0:
3320 resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} 1828 resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==}
@@ -3328,37 +1836,19 @@ packages:
3328 /aggregate-error@3.1.0: 1836 /aggregate-error@3.1.0:
3329 resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} 1837 resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
3330 engines: {node: '>=8'} 1838 engines: {node: '>=8'}
1839 requiresBuild: true
3331 dependencies: 1840 dependencies:
3332 clean-stack: 2.2.0 1841 clean-stack: 2.2.0
3333 indent-string: 4.0.0 1842 indent-string: 4.0.0
1843 dev: false
1844 optional: true
3334 1845
3335 /ajv-formats@2.1.1(ajv@8.12.0): 1846 /aggregate-error@4.0.1:
3336 resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} 1847 resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==}
3337 peerDependencies: 1848 engines: {node: '>=12'}
3338 ajv: ^8.0.0
3339 peerDependenciesMeta:
3340 ajv:
3341 optional: true
3342 dependencies:
3343 ajv: 8.12.0
3344 dev: true
3345
3346 /ajv-keywords@3.5.2(ajv@6.12.6):
3347 resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==}
3348 peerDependencies:
3349 ajv: ^6.9.1
3350 dependencies:
3351 ajv: 6.12.6
3352 dev: true
3353
3354 /ajv-keywords@5.1.0(ajv@8.12.0):
3355 resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==}
3356 peerDependencies:
3357 ajv: ^8.8.2
3358 dependencies: 1849 dependencies:
3359 ajv: 8.12.0 1850 clean-stack: 4.2.0
3360 fast-deep-equal: 3.1.3 1851 indent-string: 5.0.0
3361 dev: true
3362 1852
3363 /ajv@6.12.6: 1853 /ajv@6.12.6:
3364 resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 1854 resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
@@ -3369,51 +1859,23 @@ packages:
3369 uri-js: 4.4.1 1859 uri-js: 4.4.1
3370 dev: true 1860 dev: true
3371 1861
3372 /ajv@8.12.0:
3373 resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==}
3374 dependencies:
3375 fast-deep-equal: 3.1.3
3376 json-schema-traverse: 1.0.0
3377 require-from-string: 2.0.2
3378 uri-js: 4.4.1
3379 dev: true
3380
3381 /ansi-colors@4.1.3: 1862 /ansi-colors@4.1.3:
3382 resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} 1863 resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
3383 engines: {node: '>=6'} 1864 engines: {node: '>=6'}
3384 1865
3385 /ansi-escapes@4.3.2:
3386 resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
3387 engines: {node: '>=8'}
3388 dependencies:
3389 type-fest: 0.21.3
3390
3391 /ansi-escapes@6.2.0: 1866 /ansi-escapes@6.2.0:
3392 resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==} 1867 resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==}
3393 engines: {node: '>=14.16'} 1868 engines: {node: '>=14.16'}
3394 dependencies: 1869 dependencies:
3395 type-fest: 3.13.1 1870 type-fest: 3.13.1
3396 dev: true
3397
3398 /ansi-html-community@0.0.8:
3399 resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==}
3400 engines: {'0': node >= 0.8.0}
3401 hasBin: true
3402 dev: true
3403
3404 /ansi-regex@2.1.1:
3405 resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==}
3406 engines: {node: '>=0.10.0'}
3407 dev: true
3408 1871
3409 /ansi-regex@5.0.1: 1872 /ansi-regex@5.0.1:
3410 resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 1873 resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
3411 engines: {node: '>=8'} 1874 engines: {node: '>=8'}
3412 1875
3413 /ansi-styles@2.2.1: 1876 /ansi-regex@6.0.1:
3414 resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} 1877 resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
3415 engines: {node: '>=0.10.0'} 1878 engines: {node: '>=12'}
3416 dev: true
3417 1879
3418 /ansi-styles@3.2.1: 1880 /ansi-styles@3.2.1:
3419 resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 1881 resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
@@ -3431,11 +1893,10 @@ packages:
3431 /ansi-styles@5.2.0: 1893 /ansi-styles@5.2.0:
3432 resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 1894 resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
3433 engines: {node: '>=10'} 1895 engines: {node: '>=10'}
3434 dev: true
3435 1896
3436 /ansicolors@0.3.2: 1897 /ansi-styles@6.2.1:
3437 resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} 1898 resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
3438 dev: true 1899 engines: {node: '>=12'}
3439 1900
3440 /anymatch@3.1.3: 1901 /anymatch@3.1.3:
3441 resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 1902 resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
@@ -3443,44 +1904,9 @@ packages:
3443 dependencies: 1904 dependencies:
3444 normalize-path: 3.0.0 1905 normalize-path: 3.0.0
3445 picomatch: 2.3.1 1906 picomatch: 2.3.1
3446 dev: true
3447
3448 /api-contract-validator@2.2.8(openapi-types@12.1.3):
3449 resolution: {integrity: sha512-YM3rMcrIp8Thf/WWbVBXBGX793Mm3Phw2pn3VbJpiZkpeTCTtF10huKPrzQ2gSIaK5GjAhTRJMAOyf+rsS7MAw==}
3450 engines: {node: '>=8'}
3451 dependencies:
3452 api-schema-builder: 2.0.11(openapi-types@12.1.3)
3453 chalk: 3.0.0
3454 columnify: 1.6.0
3455 jest-diff: 25.5.0
3456 jest-matcher-utils: 25.5.0
3457 lodash.flatten: 4.4.0
3458 lodash.get: 4.4.2
3459 lodash.set: 4.3.2
3460 uri-js: 4.4.1
3461 transitivePeerDependencies:
3462 - openapi-types
3463 dev: true
3464
3465 /api-schema-builder@2.0.11(openapi-types@12.1.3):
3466 resolution: {integrity: sha512-85zbwf8MtPWodhfnmQRW5YD/fuGR12FP+8TbcYai5wbRnoUmPYLftLSbp7NB6zQMPb61Gjz+ApPUSyTdcCos7g==}
3467 engines: {node: '>=8'}
3468 dependencies:
3469 ajv: 6.12.6
3470 clone-deep: 4.0.1
3471 decimal.js: 10.4.3
3472 js-yaml: 3.14.1
3473 json-schema-deref-sync: 0.14.0
3474 lodash.get: 4.4.2
3475 openapi-schema-validator: 3.0.3
3476 swagger-parser: 10.0.3(openapi-types@12.1.3)
3477 transitivePeerDependencies:
3478 - openapi-types
3479 dev: true
3480 1907
3481 /aproba@2.0.0: 1908 /aproba@2.0.0:
3482 resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} 1909 resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
3483 dev: false
3484 1910
3485 /are-we-there-yet@2.0.0: 1911 /are-we-there-yet@2.0.0:
3486 resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} 1912 resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==}
@@ -3488,7 +1914,6 @@ packages:
3488 dependencies: 1914 dependencies:
3489 delegates: 1.0.0 1915 delegates: 1.0.0
3490 readable-stream: 3.6.2 1916 readable-stream: 3.6.2
3491 dev: false
3492 1917
3493 /are-we-there-yet@3.0.1: 1918 /are-we-there-yet@3.0.1:
3494 resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} 1919 resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==}
@@ -3500,31 +1925,14 @@ packages:
3500 dev: false 1925 dev: false
3501 optional: true 1926 optional: true
3502 1927
3503 /argparse@1.0.10: 1928 /arg@4.1.3:
3504 resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 1929 resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
3505 dependencies:
3506 sprintf-js: 1.0.3
3507 dev: true 1930 dev: true
3508 1931
3509 /argparse@2.0.1: 1932 /argparse@2.0.1:
3510 resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 1933 resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
3511 dev: true 1934 dev: true
3512 1935
3513 /arr-diff@4.0.0:
3514 resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==}
3515 engines: {node: '>=0.10.0'}
3516 dev: true
3517
3518 /arr-flatten@1.1.0:
3519 resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==}
3520 engines: {node: '>=0.10.0'}
3521 dev: true
3522
3523 /arr-union@3.1.0:
3524 resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==}
3525 engines: {node: '>=0.10.0'}
3526 dev: true
3527
3528 /array-buffer-byte-length@1.0.0: 1936 /array-buffer-byte-length@1.0.0:
3529 resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} 1937 resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==}
3530 dependencies: 1938 dependencies:
@@ -3532,14 +1940,6 @@ packages:
3532 is-array-buffer: 3.0.2 1940 is-array-buffer: 3.0.2
3533 dev: true 1941 dev: true
3534 1942
3535 /array-flatten@1.1.1:
3536 resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
3537 dev: true
3538
3539 /array-flatten@2.1.2:
3540 resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==}
3541 dev: true
3542
3543 /array-includes@3.1.7: 1943 /array-includes@3.1.7:
3544 resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} 1944 resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==}
3545 engines: {node: '>= 0.4'} 1945 engines: {node: '>= 0.4'}
@@ -3551,28 +1951,11 @@ packages:
3551 is-string: 1.0.7 1951 is-string: 1.0.7
3552 dev: true 1952 dev: true
3553 1953
3554 /array-union@1.0.2:
3555 resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==}
3556 engines: {node: '>=0.10.0'}
3557 dependencies:
3558 array-uniq: 1.0.3
3559 dev: true
3560
3561 /array-union@2.1.0: 1954 /array-union@2.1.0:
3562 resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 1955 resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
3563 engines: {node: '>=8'} 1956 engines: {node: '>=8'}
3564 dev: true 1957 dev: true
3565 1958
3566 /array-uniq@1.0.3:
3567 resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==}
3568 engines: {node: '>=0.10.0'}
3569 dev: true
3570
3571 /array-unique@0.3.2:
3572 resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==}
3573 engines: {node: '>=0.10.0'}
3574 dev: true
3575
3576 /array.prototype.findlastindex@1.2.3: 1959 /array.prototype.findlastindex@1.2.3:
3577 resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} 1960 resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==}
3578 engines: {node: '>= 0.4'} 1961 engines: {node: '>= 0.4'}
@@ -3617,66 +2000,19 @@ packages:
3617 is-shared-array-buffer: 1.0.2 2000 is-shared-array-buffer: 1.0.2
3618 dev: true 2001 dev: true
3619 2002
3620 /arrify@2.0.1:
3621 resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==}
3622 engines: {node: '>=8'}
3623 dev: true
3624
3625 /as-table@1.0.55: 2003 /as-table@1.0.55:
3626 resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} 2004 resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==}
3627 dependencies: 2005 dependencies:
3628 printable-characters: 1.0.42 2006 printable-characters: 1.0.42
3629 dev: true
3630
3631 /asap@2.0.6:
3632 resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==}
3633 dev: true
3634
3635 /assertion-error@1.1.0:
3636 resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
3637 dev: true
3638
3639 /assets-webpack-plugin@7.0.0(webpack@5.88.2):
3640 resolution: {integrity: sha512-DMZ9r6HFxynWeONRMhSOFTvTrmit5dovdoUKdJgCG03M6CC7XiwNImPH+Ad1jaVrQ2n59e05lBhte52xPt4MSA==}
3641 engines: {node: '>=10.x.x'}
3642 peerDependencies:
3643 webpack: '>=5.0.0'
3644 dependencies:
3645 camelcase: 6.3.0
3646 escape-string-regexp: 4.0.0
3647 lodash: 4.17.21
3648 webpack: 5.88.2(webpack-cli@5.1.4)
3649 dev: true
3650
3651 /assign-symbols@1.0.0:
3652 resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==}
3653 engines: {node: '>=0.10.0'}
3654 dev: true
3655
3656 /astral-regex@2.0.0:
3657 resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
3658 engines: {node: '>=8'}
3659 2007
3660 /astring@1.8.6: 2008 /astring@1.8.6:
3661 resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} 2009 resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==}
3662 hasBin: true 2010 hasBin: true
3663 dev: false
3664 2011
3665 /async-retry@1.3.3: 2012 /async-retry@1.3.3:
3666 resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} 2013 resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==}
3667 dependencies: 2014 dependencies:
3668 retry: 0.13.1 2015 retry: 0.13.1
3669 dev: true
3670
3671 /asynckit@0.4.0:
3672 resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
3673 dev: true
3674
3675 /atob@2.1.2:
3676 resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==}
3677 engines: {node: '>= 4.5.0'}
3678 hasBin: true
3679 dev: true
3680 2016
3681 /atomic-sleep@1.0.0: 2017 /atomic-sleep@1.0.0:
3682 resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} 2018 resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==}
@@ -3685,78 +2021,6 @@ packages:
3685 /available-typed-arrays@1.0.5: 2021 /available-typed-arrays@1.0.5:
3686 resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} 2022 resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
3687 engines: {node: '>= 0.4'} 2023 engines: {node: '>= 0.4'}
3688
3689 /aws-sdk@2.1555.0:
3690 resolution: {integrity: sha512-hjYs1MQkJxdHnoZm8hypqGy4PQKWVUs19McdXRXWNXr97V0il4xcUpIfvjHQ9x9EjP0p/jyIx9/BtyrR68jnUQ==}
3691 engines: {node: '>= 10.0.0'}
3692 dependencies:
3693 buffer: 4.9.2
3694 events: 1.1.1
3695 ieee754: 1.1.13
3696 jmespath: 0.16.0
3697 querystring: 0.2.0
3698 sax: 1.2.1
3699 url: 0.10.3
3700 util: 0.12.5
3701 uuid: 8.0.0
3702 xml2js: 0.6.2
3703 dev: false
3704
3705 /babel-code-frame@6.26.0:
3706 resolution: {integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==}
3707 dependencies:
3708 chalk: 1.1.3
3709 esutils: 2.0.3
3710 js-tokens: 3.0.2
3711 dev: true
3712
3713 /babel-loader@9.1.3(@babel/core@7.23.0)(webpack@5.88.2):
3714 resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==}
3715 engines: {node: '>= 14.15.0'}
3716 peerDependencies:
3717 '@babel/core': ^7.12.0
3718 webpack: '>=5'
3719 dependencies:
3720 '@babel/core': 7.23.0
3721 find-cache-dir: 4.0.0
3722 schema-utils: 4.2.0
3723 webpack: 5.88.2(webpack-cli@5.1.4)
3724 dev: true
3725
3726 /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.23.0):
3727 resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==}
3728 peerDependencies:
3729 '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
3730 dependencies:
3731 '@babel/compat-data': 7.22.20
3732 '@babel/core': 7.23.0
3733 '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.0)
3734 semver: 6.3.1
3735 transitivePeerDependencies:
3736 - supports-color
3737 dev: true
3738
3739 /babel-plugin-polyfill-corejs3@0.8.4(@babel/core@7.23.0):
3740 resolution: {integrity: sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg==}
3741 peerDependencies:
3742 '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
3743 dependencies:
3744 '@babel/core': 7.23.0
3745 '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.0)
3746 core-js-compat: 3.32.2
3747 transitivePeerDependencies:
3748 - supports-color
3749 dev: true
3750
3751 /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.23.0):
3752 resolution: {integrity: sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==}
3753 peerDependencies:
3754 '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
3755 dependencies:
3756 '@babel/core': 7.23.0
3757 '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.0)
3758 transitivePeerDependencies:
3759 - supports-color
3760 dev: true 2024 dev: true
3761 2025
3762 /balanced-match@1.0.2: 2026 /balanced-match@1.0.2:
@@ -3765,22 +2029,12 @@ packages:
3765 /base64-js@1.5.1: 2029 /base64-js@1.5.1:
3766 resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 2030 resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
3767 2031
3768 /base@0.11.2: 2032 /basic-auth@2.0.1:
3769 resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} 2033 resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==}
3770 engines: {node: '>=0.10.0'} 2034 engines: {node: '>= 0.8'}
3771 dependencies: 2035 dependencies:
3772 cache-base: 1.0.1 2036 safe-buffer: 5.1.2
3773 class-utils: 0.3.6 2037 dev: false
3774 component-emitter: 1.3.0
3775 define-property: 1.0.0
3776 isobject: 3.0.1
3777 mixin-deep: 1.3.2
3778 pascalcase: 0.1.1
3779 dev: true
3780
3781 /batch@0.6.1:
3782 resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==}
3783 dev: true
3784 2038
3785 /bcrypt@5.1.1: 2039 /bcrypt@5.1.1:
3786 resolution: {integrity: sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==} 2040 resolution: {integrity: sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==}
@@ -3792,11 +2046,6 @@ packages:
3792 transitivePeerDependencies: 2046 transitivePeerDependencies:
3793 - encoding 2047 - encoding
3794 - supports-color 2048 - supports-color
3795 dev: false
3796
3797 /big.js@5.2.2:
3798 resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==}
3799 dev: true
3800 2049
3801 /bignumber.js@9.0.0: 2050 /bignumber.js@9.0.0:
3802 resolution: {integrity: sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==} 2051 resolution: {integrity: sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==}
@@ -3805,7 +2054,12 @@ packages:
3805 /binary-extensions@2.2.0: 2054 /binary-extensions@2.2.0:
3806 resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 2055 resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
3807 engines: {node: '>=8'} 2056 engines: {node: '>=8'}
3808 dev: true 2057
2058 /bindings@1.5.0:
2059 resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
2060 dependencies:
2061 file-uri-to-path: 1.0.0
2062 dev: false
3809 2063
3810 /bl@1.2.3: 2064 /bl@1.2.3:
3811 resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} 2065 resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==}
@@ -3814,38 +2068,13 @@ packages:
3814 safe-buffer: 5.2.1 2068 safe-buffer: 5.2.1
3815 dev: false 2069 dev: false
3816 2070
3817 /body-parser@1.20.1: 2071 /bl@4.1.0:
3818 resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} 2072 resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
3819 engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
3820 dependencies:
3821 bytes: 3.1.2
3822 content-type: 1.0.5
3823 debug: 2.6.9
3824 depd: 2.0.0
3825 destroy: 1.2.0
3826 http-errors: 2.0.0
3827 iconv-lite: 0.4.24
3828 on-finished: 2.4.1
3829 qs: 6.11.0
3830 raw-body: 2.5.1
3831 type-is: 1.6.18
3832 unpipe: 1.0.0
3833 transitivePeerDependencies:
3834 - supports-color
3835 dev: true
3836
3837 /bonjour-service@1.1.1:
3838 resolution: {integrity: sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==}
3839 dependencies: 2073 dependencies:
3840 array-flatten: 2.1.2 2074 buffer: 5.7.1
3841 dns-equal: 1.0.0 2075 inherits: 2.0.4
3842 fast-deep-equal: 3.1.3 2076 readable-stream: 3.6.2
3843 multicast-dns: 7.2.5 2077 dev: false
3844 dev: true
3845
3846 /boolbase@1.0.0:
3847 resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
3848 dev: true
3849 2078
3850 /brace-expansion@1.1.11: 2079 /brace-expansion@1.1.11:
3851 resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 2080 resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
@@ -3858,41 +2087,12 @@ packages:
3858 dependencies: 2087 dependencies:
3859 balanced-match: 1.0.2 2088 balanced-match: 1.0.2
3860 2089
3861 /braces@2.3.2:
3862 resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==}
3863 engines: {node: '>=0.10.0'}
3864 dependencies:
3865 arr-flatten: 1.1.0
3866 array-unique: 0.3.2
3867 extend-shallow: 2.0.1
3868 fill-range: 4.0.0
3869 isobject: 3.0.1
3870 repeat-element: 1.1.4
3871 snapdragon: 0.8.2
3872 snapdragon-node: 2.1.1
3873 split-string: 3.1.0
3874 to-regex: 3.0.2
3875 transitivePeerDependencies:
3876 - supports-color
3877 dev: true
3878
3879 /braces@3.0.2: 2090 /braces@3.0.2:
3880 resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 2091 resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
3881 engines: {node: '>=8'} 2092 engines: {node: '>=8'}
3882 dependencies: 2093 dependencies:
3883 fill-range: 7.0.1 2094 fill-range: 7.0.1
3884 2095
3885 /browserslist@4.22.1:
3886 resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==}
3887 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
3888 hasBin: true
3889 dependencies:
3890 caniuse-lite: 1.0.30001541
3891 electron-to-chromium: 1.4.537
3892 node-releases: 2.0.13
3893 update-browserslist-db: 1.0.13(browserslist@4.22.1)
3894 dev: true
3895
3896 /browserslist@4.22.3: 2096 /browserslist@4.22.3:
3897 resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==} 2097 resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==}
3898 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 2098 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
@@ -3919,20 +2119,16 @@ packages:
3919 resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} 2119 resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==}
3920 dev: false 2120 dev: false
3921 2121
3922 /buffer-from@1.1.2:
3923 resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
3924
3925 /buffer-writer@2.0.0: 2122 /buffer-writer@2.0.0:
3926 resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} 2123 resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==}
3927 engines: {node: '>=4'} 2124 engines: {node: '>=4'}
3928 dev: false 2125 dev: false
3929 2126
3930 /buffer@4.9.2: 2127 /buffer@5.7.1:
3931 resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} 2128 resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
3932 dependencies: 2129 dependencies:
3933 base64-js: 1.5.1 2130 base64-js: 1.5.1
3934 ieee754: 1.2.1 2131 ieee754: 1.2.1
3935 isarray: 1.0.0
3936 dev: false 2132 dev: false
3937 2133
3938 /buffer@6.0.3: 2134 /buffer@6.0.3:
@@ -3946,15 +2142,6 @@ packages:
3946 engines: {node: '>=6'} 2142 engines: {node: '>=6'}
3947 dev: true 2143 dev: true
3948 2144
3949 /builtins@1.0.3:
3950 resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==}
3951 dev: true
3952
3953 /bytes@3.0.0:
3954 resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==}
3955 engines: {node: '>= 0.8'}
3956 dev: true
3957
3958 /bytes@3.1.2: 2145 /bytes@3.1.2:
3959 resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 2146 resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
3960 engines: {node: '>= 0.8'} 2147 engines: {node: '>= 0.8'}
@@ -3987,37 +2174,22 @@ packages:
3987 dev: false 2174 dev: false
3988 optional: true 2175 optional: true
3989 2176
3990 /cache-base@1.0.1: 2177 /cacheable-lookup@7.0.0:
3991 resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} 2178 resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==}
3992 engines: {node: '>=0.10.0'} 2179 engines: {node: '>=14.16'}
3993 dependencies:
3994 collection-visit: 1.0.0
3995 component-emitter: 1.3.0
3996 get-value: 2.0.6
3997 has-value: 1.0.0
3998 isobject: 3.0.1
3999 set-value: 2.0.1
4000 to-object-path: 0.3.0
4001 union-value: 1.0.1
4002 unset-value: 1.0.0
4003 dev: true
4004
4005 /cacheable-lookup@5.0.4:
4006 resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==}
4007 engines: {node: '>=10.6.0'}
4008 dev: false 2180 dev: false
4009 2181
4010 /cacheable-request@7.0.4: 2182 /cacheable-request@10.2.14:
4011 resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} 2183 resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==}
4012 engines: {node: '>=8'} 2184 engines: {node: '>=14.16'}
4013 dependencies: 2185 dependencies:
4014 clone-response: 1.0.3 2186 '@types/http-cache-semantics': 4.0.2
4015 get-stream: 5.2.0 2187 get-stream: 6.0.1
4016 http-cache-semantics: 4.1.1 2188 http-cache-semantics: 4.1.1
4017 keyv: 4.5.3 2189 keyv: 4.5.3
4018 lowercase-keys: 2.0.0 2190 mimic-response: 4.0.0
4019 normalize-url: 6.1.0 2191 normalize-url: 8.0.0
4020 responselike: 2.0.1 2192 responselike: 3.0.0
4021 dev: false 2193 dev: false
4022 2194
4023 /call-bind@1.0.2: 2195 /call-bind@1.0.2:
@@ -4026,81 +2198,18 @@ packages:
4026 function-bind: 1.1.1 2198 function-bind: 1.1.1
4027 get-intrinsic: 1.2.1 2199 get-intrinsic: 1.2.1
4028 2200
4029 /call-me-maybe@1.0.2:
4030 resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==}
4031 dev: true
4032
4033 /callsites@3.1.0: 2201 /callsites@3.1.0:
4034 resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 2202 resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
4035 engines: {node: '>=6'} 2203 engines: {node: '>=6'}
4036 dev: true 2204 dev: true
4037 2205
4038 /camel-case@4.1.2:
4039 resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
4040 dependencies:
4041 pascal-case: 3.1.2
4042 tslib: 2.6.2
4043
4044 /camelcase@6.3.0:
4045 resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
4046 engines: {node: '>=10'}
4047 dev: true
4048
4049 /caniuse-api@3.0.0:
4050 resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
4051 dependencies:
4052 browserslist: 4.22.1
4053 caniuse-lite: 1.0.30001541
4054 lodash.memoize: 4.1.2
4055 lodash.uniq: 4.5.0
4056 dev: true
4057
4058 /caniuse-lite@1.0.30001541:
4059 resolution: {integrity: sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw==}
4060 dev: true
4061
4062 /caniuse-lite@1.0.30001585: 2206 /caniuse-lite@1.0.30001585:
4063 resolution: {integrity: sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==} 2207 resolution: {integrity: sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==}
4064 dev: true 2208 dev: true
4065 2209
4066 /capital-case@1.0.4: 2210 /case-anything@2.1.13:
4067 resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} 2211 resolution: {integrity: sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==}
4068 dependencies: 2212 engines: {node: '>=12.13'}
4069 no-case: 3.0.4
4070 tslib: 2.6.2
4071 upper-case-first: 2.0.2
4072
4073 /cardinal@2.1.1:
4074 resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==}
4075 hasBin: true
4076 dependencies:
4077 ansicolors: 0.3.2
4078 redeyed: 2.1.1
4079 dev: true
4080
4081 /chai@4.3.10:
4082 resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==}
4083 engines: {node: '>=4'}
4084 dependencies:
4085 assertion-error: 1.1.0
4086 check-error: 1.0.3
4087 deep-eql: 4.1.3
4088 get-func-name: 2.0.2
4089 loupe: 2.3.6
4090 pathval: 1.1.1
4091 type-detect: 4.0.8
4092 dev: true
4093
4094 /chalk@1.1.3:
4095 resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==}
4096 engines: {node: '>=0.10.0'}
4097 dependencies:
4098 ansi-styles: 2.2.1
4099 escape-string-regexp: 1.0.5
4100 has-ansi: 2.0.0
4101 strip-ansi: 3.0.1
4102 supports-color: 2.0.0
4103 dev: true
4104 2213
4105 /chalk@2.4.2: 2214 /chalk@2.4.2:
4106 resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 2215 resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
@@ -4111,52 +2220,12 @@ packages:
4111 supports-color: 5.5.0 2220 supports-color: 5.5.0
4112 dev: true 2221 dev: true
4113 2222
4114 /chalk@3.0.0:
4115 resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==}
4116 engines: {node: '>=8'}
4117 dependencies:
4118 ansi-styles: 4.3.0
4119 supports-color: 7.2.0
4120 dev: true
4121
4122 /chalk@4.1.2: 2223 /chalk@4.1.2:
4123 resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 2224 resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
4124 engines: {node: '>=10'} 2225 engines: {node: '>=10'}
4125 dependencies: 2226 dependencies:
4126 ansi-styles: 4.3.0 2227 ansi-styles: 4.3.0
4127 supports-color: 7.2.0 2228 supports-color: 7.2.0
4128 dev: true
4129
4130 /chalk@5.3.0:
4131 resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
4132 engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
4133 dev: true
4134
4135 /change-case@4.1.2:
4136 resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==}
4137 dependencies:
4138 camel-case: 4.1.2
4139 capital-case: 1.0.4
4140 constant-case: 3.0.4
4141 dot-case: 3.0.4
4142 header-case: 2.0.4
4143 no-case: 3.0.4
4144 param-case: 3.0.4
4145 pascal-case: 3.1.2
4146 path-case: 3.0.4
4147 sentence-case: 3.0.4
4148 snake-case: 3.0.4
4149 tslib: 2.6.2
4150
4151 /charenc@0.0.2:
4152 resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==}
4153 dev: true
4154
4155 /check-error@1.0.3:
4156 resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
4157 dependencies:
4158 get-func-name: 2.0.2
4159 dev: true
4160 2229
4161 /chokidar@3.5.3: 2230 /chokidar@3.5.3:
4162 resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 2231 resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
@@ -4171,7 +2240,6 @@ packages:
4171 readdirp: 3.6.0 2240 readdirp: 3.6.0
4172 optionalDependencies: 2241 optionalDependencies:
4173 fsevents: 2.3.3 2242 fsevents: 2.3.3
4174 dev: true
4175 2243
4176 /chownr@1.1.4: 2244 /chownr@1.1.4:
4177 resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} 2245 resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
@@ -4180,12 +2248,6 @@ packages:
4180 /chownr@2.0.0: 2248 /chownr@2.0.0:
4181 resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} 2249 resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
4182 engines: {node: '>=10'} 2250 engines: {node: '>=10'}
4183 dev: false
4184
4185 /chrome-trace-event@1.0.3:
4186 resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==}
4187 engines: {node: '>=6.0'}
4188 dev: true
4189 2251
4190 /ci-info@3.8.0: 2252 /ci-info@3.8.0:
4191 resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} 2253 resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==}
@@ -4197,15 +2259,8 @@ packages:
4197 engines: {node: '>=8'} 2259 engines: {node: '>=8'}
4198 dev: true 2260 dev: true
4199 2261
4200 /class-utils@0.3.6: 2262 /classnames@2.5.1:
4201 resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} 2263 resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==}
4202 engines: {node: '>=0.10.0'}
4203 dependencies:
4204 arr-union: 3.1.0
4205 define-property: 0.2.5
4206 isobject: 3.0.1
4207 static-extend: 0.1.2
4208 dev: true
4209 2264
4210 /clean-regexp@1.0.0: 2265 /clean-regexp@1.0.0:
4211 resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} 2266 resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==}
@@ -4217,26 +2272,25 @@ packages:
4217 /clean-stack@2.2.0: 2272 /clean-stack@2.2.0:
4218 resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} 2273 resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
4219 engines: {node: '>=6'} 2274 engines: {node: '>=6'}
2275 requiresBuild: true
2276 dev: false
2277 optional: true
4220 2278
4221 /clean-webpack-plugin@4.0.0(webpack@5.88.2): 2279 /clean-stack@4.2.0:
4222 resolution: {integrity: sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==} 2280 resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==}
4223 engines: {node: '>=10.0.0'} 2281 engines: {node: '>=12'}
4224 peerDependencies:
4225 webpack: '>=4.0.0 <6.0.0'
4226 dependencies: 2282 dependencies:
4227 del: 4.1.1 2283 escape-string-regexp: 5.0.0
4228 webpack: 5.88.2(webpack-cli@5.1.4)
4229 dev: true
4230 2284
4231 /cli-boxes@3.0.0: 2285 /cli-boxes@3.0.0:
4232 resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} 2286 resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
4233 engines: {node: '>=10'} 2287 engines: {node: '>=10'}
4234 2288
4235 /cli-cursor@3.1.0: 2289 /cli-cursor@4.0.0:
4236 resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} 2290 resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
4237 engines: {node: '>=8'} 2291 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
4238 dependencies: 2292 dependencies:
4239 restore-cursor: 3.1.0 2293 restore-cursor: 4.0.0
4240 2294
4241 /cli-table3@0.6.3: 2295 /cli-table3@0.6.3:
4242 resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} 2296 resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==}
@@ -4246,45 +2300,19 @@ packages:
4246 optionalDependencies: 2300 optionalDependencies:
4247 '@colors/colors': 1.5.0 2301 '@colors/colors': 1.5.0
4248 2302
4249 /clone-deep@4.0.1: 2303 /cli-truncate@4.0.0:
4250 resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} 2304 resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==}
4251 engines: {node: '>=6'} 2305 engines: {node: '>=18'}
4252 dependencies:
4253 is-plain-object: 2.0.4
4254 kind-of: 6.0.3
4255 shallow-clone: 3.0.1
4256 dev: true
4257
4258 /clone-response@1.0.3:
4259 resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==}
4260 dependencies: 2306 dependencies:
4261 mimic-response: 1.0.1 2307 slice-ansi: 5.0.0
4262 dev: false 2308 string-width: 7.1.0
4263
4264 /clone@1.0.4:
4265 resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
4266 engines: {node: '>=0.8'}
4267 dev: true
4268
4269 /clone@2.1.2:
4270 resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==}
4271 engines: {node: '>=0.8'}
4272 dev: true
4273
4274 /co-compose@7.0.3:
4275 resolution: {integrity: sha512-ZHLSLzeBXe5yaEyIHo9T92uVrbsBRLMXlG0G4/pSm9f6148l4mJTr1cii8Jl9ce+mbLmW5XqHURPC7gZFJNeZA==}
4276 2309
4277 /code-block-writer@11.0.3: 2310 /code-block-writer@11.0.3:
4278 resolution: {integrity: sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==} 2311 resolution: {integrity: sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==}
4279 dev: false 2312 dev: false
4280 2313
4281 /collection-visit@1.0.0: 2314 /code-block-writer@12.0.0:
4282 resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} 2315 resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==}
4283 engines: {node: '>=0.10.0'}
4284 dependencies:
4285 map-visit: 1.0.0
4286 object-visit: 1.0.1
4287 dev: true
4288 2316
4289 /color-convert@1.9.3: 2317 /color-convert@1.9.3:
4290 resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 2318 resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
@@ -4309,118 +2337,23 @@ packages:
4309 resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} 2337 resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
4310 hasBin: true 2338 hasBin: true
4311 2339
4312 /colord@2.9.3:
4313 resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==}
4314 dev: true
4315
4316 /colorette@2.0.19: 2340 /colorette@2.0.19:
4317 resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} 2341 resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==}
4318 dev: false 2342 dev: false
4319 2343
4320 /colorette@2.0.20:
4321 resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
4322
4323 /columnify@1.6.0:
4324 resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==}
4325 engines: {node: '>=8.0.0'}
4326 dependencies:
4327 strip-ansi: 6.0.1
4328 wcwidth: 1.0.1
4329 dev: true
4330
4331 /combined-stream@1.0.8:
4332 resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
4333 engines: {node: '>= 0.8'}
4334 dependencies:
4335 delayed-stream: 1.0.0
4336 dev: true
4337
4338 /commander@10.0.1: 2344 /commander@10.0.1:
4339 resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} 2345 resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==}
4340 engines: {node: '>=14'} 2346 engines: {node: '>=14'}
4341 2347 dev: false
4342 /commander@2.20.3:
4343 resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
4344 dev: true
4345
4346 /commander@7.2.0:
4347 resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
4348 engines: {node: '>= 10'}
4349 dev: true
4350
4351 /commander@9.5.0:
4352 resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
4353 engines: {node: ^12.20.0 || >=14}
4354 requiresBuild: true
4355 dev: true
4356 optional: true
4357
4358 /comment-json@2.4.2:
4359 resolution: {integrity: sha512-T+iXox779qsqneMYx/x5BZyz4xjCeQRmuNVzz8tko7qZUs3MlzpA3RAs+O1XsgcKToNBMIvfVzafGOeiU7RggA==}
4360 engines: {node: '>= 6'}
4361 dependencies:
4362 core-util-is: 1.0.3
4363 esprima: 4.0.1
4364 has-own-prop: 2.0.0
4365 repeat-string: 1.6.1
4366 dev: true
4367 2348
4368 /common-path-prefix@3.0.0: 2349 /common-path-prefix@3.0.0:
4369 resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} 2350 resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==}
4370 dev: true
4371
4372 /commondir@1.0.1:
4373 resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
4374 dev: true
4375
4376 /component-emitter@1.3.0:
4377 resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==}
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
4401 2351
4402 /concat-map@0.0.1: 2352 /concat-map@0.0.1:
4403 resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 2353 resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
4404 2354
4405 /connect-history-api-fallback@2.0.0:
4406 resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==}
4407 engines: {node: '>=0.8'}
4408 dev: true
4409
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: 2355 /console-control-strings@1.1.0:
4415 resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} 2356 resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
4416 dev: false
4417
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 2357
4425 /content-disposition@0.5.4: 2358 /content-disposition@0.5.4:
4426 resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} 2359 resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
@@ -4428,46 +2361,24 @@ packages:
4428 dependencies: 2361 dependencies:
4429 safe-buffer: 5.2.1 2362 safe-buffer: 5.2.1
4430 2363
4431 /content-type@1.0.5: 2364 /convert-hrtime@5.0.0:
4432 resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} 2365 resolution: {integrity: sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==}
4433 engines: {node: '>= 0.6'} 2366 engines: {node: '>=12'}
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
4444
4445 /convert-source-map@2.0.0:
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 2367
4453 /cookie@0.5.0: 2368 /cookie@0.5.0:
4454 resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} 2369 resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
4455 engines: {node: '>= 0.6'} 2370 engines: {node: '>= 0.6'}
4456 2371
4457 /cookiejar@2.1.4: 2372 /cookie@0.6.0:
4458 resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} 2373 resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
4459 dev: true 2374 engines: {node: '>= 0.6'}
4460
4461 /copy-descriptor@0.1.1:
4462 resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==}
4463 engines: {node: '>=0.10.0'}
4464 dev: true
4465 2375
4466 /core-js-compat@3.32.2: 2376 /copy-file@11.0.0:
4467 resolution: {integrity: sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==} 2377 resolution: {integrity: sha512-mFsNh/DIANLqFt5VHZoGirdg7bK5+oTWlhnGu6tgRhzBlnEKWaPX2xrFaLltii/6rmhqFMJqffUgknuRdpYlHw==}
2378 engines: {node: '>=18'}
4468 dependencies: 2379 dependencies:
4469 browserslist: 4.22.1 2380 graceful-fs: 4.2.11
4470 dev: true 2381 p-event: 6.0.0
4471 2382
4472 /core-js-compat@3.35.1: 2383 /core-js-compat@3.35.1:
4473 resolution: {integrity: sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==} 2384 resolution: {integrity: sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==}
@@ -4477,42 +2388,21 @@ packages:
4477 2388
4478 /core-util-is@1.0.3: 2389 /core-util-is@1.0.3:
4479 resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} 2390 resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
2391 dev: false
4480 2392
4481 /cp-file@7.0.0: 2393 /cpy@11.0.0:
4482 resolution: {integrity: sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==} 2394 resolution: {integrity: sha512-vA71mFQyIxCrqvP/9JBLCj05UJV/+WpvAxZK2/EiK5ndD090cjuChfJ3ExVVuZXHoTJ/3HLedOPYDWyxnNHjrg==}
4483 engines: {node: '>=8'} 2395 engines: {node: '>=18'}
4484 dependencies:
4485 graceful-fs: 4.2.11
4486 make-dir: 3.1.0
4487 nested-error-stacks: 2.1.1
4488 p-event: 4.2.0
4489 dev: true
4490
4491 /cp-file@9.1.0:
4492 resolution: {integrity: sha512-3scnzFj/94eb7y4wyXRWwvzLFaQp87yyfTnChIjlfYrVqp5lVO3E2hIJMeQIltUT0K2ZAB3An1qXcBmwGyvuwA==}
4493 engines: {node: '>=10'}
4494 dependencies: 2396 dependencies:
4495 graceful-fs: 4.2.11 2397 copy-file: 11.0.0
4496 make-dir: 3.1.0 2398 globby: 13.2.2
4497 nested-error-stacks: 2.1.1 2399 junk: 4.0.1
4498 p-event: 4.2.0 2400 micromatch: 4.0.5
4499 dev: true 2401 p-filter: 3.0.0
2402 p-map: 6.0.0
4500 2403
4501 /cpy@8.1.2: 2404 /create-require@1.1.1:
4502 resolution: {integrity: sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg==} 2405 resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
4503 engines: {node: '>=8'}
4504 dependencies:
4505 arrify: 2.0.1
4506 cp-file: 7.0.0
4507 globby: 9.2.0
4508 has-glob: 1.0.0
4509 junk: 3.1.0
4510 nested-error-stacks: 2.1.1
4511 p-all: 2.1.0
4512 p-filter: 2.1.0
4513 p-map: 3.0.0
4514 transitivePeerDependencies:
4515 - supports-color
4516 dev: true 2406 dev: true
4517 2407
4518 /cross-env@7.0.3: 2408 /cross-env@7.0.3:
@@ -4530,11 +2420,6 @@ packages:
4530 path-key: 3.1.1 2420 path-key: 3.1.1
4531 shebang-command: 2.0.0 2421 shebang-command: 2.0.0
4532 which: 2.0.2 2422 which: 2.0.2
4533 dev: true
4534
4535 /crypt@0.0.2:
4536 resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==}
4537 dev: true
4538 2423
4539 /csrf@3.1.0: 2424 /csrf@3.1.0:
4540 resolution: {integrity: sha512-uTqEnCvWRk042asU6JtapDTcJeeailFy4ydOQS28bj1hcLnYRiqi8SsD2jS412AY1I/4qdOwWZun774iqywf9w==} 2425 resolution: {integrity: sha512-uTqEnCvWRk042asU6JtapDTcJeeailFy4ydOQS28bj1hcLnYRiqi8SsD2jS412AY1I/4qdOwWZun774iqywf9w==}
@@ -4543,194 +2428,9 @@ packages:
4543 rndm: 1.2.0 2428 rndm: 1.2.0
4544 tsscmp: 1.0.6 2429 tsscmp: 1.0.6
4545 uid-safe: 2.1.5 2430 uid-safe: 2.1.5
4546 dev: false
4547
4548 /css-declaration-sorter@6.4.1(postcss@8.4.31):
4549 resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==}
4550 engines: {node: ^10 || ^12 || >=14}
4551 peerDependencies:
4552 postcss: ^8.0.9
4553 dependencies:
4554 postcss: 8.4.31
4555 dev: true
4556
4557 /css-loader@6.8.1(webpack@5.88.2):
4558 resolution: {integrity: sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==}
4559 engines: {node: '>= 12.13.0'}
4560 peerDependencies:
4561 webpack: ^5.0.0
4562 dependencies:
4563 icss-utils: 5.1.0(postcss@8.4.31)
4564 postcss: 8.4.31
4565 postcss-modules-extract-imports: 3.0.0(postcss@8.4.31)
4566 postcss-modules-local-by-default: 4.0.3(postcss@8.4.31)
4567 postcss-modules-scope: 3.0.0(postcss@8.4.31)
4568 postcss-modules-values: 4.0.0(postcss@8.4.31)
4569 postcss-value-parser: 4.2.0
4570 semver: 7.6.0
4571 webpack: 5.88.2(webpack-cli@5.1.4)
4572 dev: true
4573
4574 /css-minimizer-webpack-plugin@5.0.1(webpack@5.88.2):
4575 resolution: {integrity: sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==}
4576 engines: {node: '>= 14.15.0'}
4577 peerDependencies:
4578 '@parcel/css': '*'
4579 '@swc/css': '*'
4580 clean-css: '*'
4581 csso: '*'
4582 esbuild: '*'
4583 lightningcss: '*'
4584 webpack: ^5.0.0
4585 peerDependenciesMeta:
4586 '@parcel/css':
4587 optional: true
4588 '@swc/css':
4589 optional: true
4590 clean-css:
4591 optional: true
4592 csso:
4593 optional: true
4594 esbuild:
4595 optional: true
4596 lightningcss:
4597 optional: true
4598 dependencies:
4599 '@jridgewell/trace-mapping': 0.3.19
4600 cssnano: 6.0.1(postcss@8.4.31)
4601 jest-worker: 29.7.0
4602 postcss: 8.4.31
4603 schema-utils: 4.2.0
4604 serialize-javascript: 6.0.1
4605 webpack: 5.88.2(webpack-cli@5.1.4)
4606 dev: true
4607
4608 /css-select@4.3.0:
4609 resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
4610 dependencies:
4611 boolbase: 1.0.0
4612 css-what: 6.1.0
4613 domhandler: 4.3.1
4614 domutils: 2.8.0
4615 nth-check: 2.1.1
4616 dev: true
4617
4618 /css-select@5.1.0:
4619 resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==}
4620 dependencies:
4621 boolbase: 1.0.0
4622 css-what: 6.1.0
4623 domhandler: 5.0.3
4624 domutils: 3.1.0
4625 nth-check: 2.1.1
4626 dev: true
4627
4628 /css-tree@2.2.1:
4629 resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==}
4630 engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
4631 dependencies:
4632 mdn-data: 2.0.28
4633 source-map-js: 1.0.2
4634 dev: true
4635
4636 /css-tree@2.3.1:
4637 resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
4638 engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
4639 dependencies:
4640 mdn-data: 2.0.30
4641 source-map-js: 1.0.2
4642 dev: true
4643
4644 /css-what@6.1.0:
4645 resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
4646 engines: {node: '>= 6'}
4647 dev: true
4648
4649 /cssesc@3.0.0:
4650 resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
4651 engines: {node: '>=4'}
4652 hasBin: true
4653 dev: true
4654
4655 /cssnano-preset-default@6.0.1(postcss@8.4.31):
4656 resolution: {integrity: sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ==}
4657 engines: {node: ^14 || ^16 || >=18.0}
4658 peerDependencies:
4659 postcss: ^8.2.15
4660 dependencies:
4661 css-declaration-sorter: 6.4.1(postcss@8.4.31)
4662 cssnano-utils: 4.0.0(postcss@8.4.31)
4663 postcss: 8.4.31
4664 postcss-calc: 9.0.1(postcss@8.4.31)
4665 postcss-colormin: 6.0.0(postcss@8.4.31)
4666 postcss-convert-values: 6.0.0(postcss@8.4.31)
4667 postcss-discard-comments: 6.0.0(postcss@8.4.31)
4668 postcss-discard-duplicates: 6.0.0(postcss@8.4.31)
4669 postcss-discard-empty: 6.0.0(postcss@8.4.31)
4670 postcss-discard-overridden: 6.0.0(postcss@8.4.31)
4671 postcss-merge-longhand: 6.0.0(postcss@8.4.31)
4672 postcss-merge-rules: 6.0.1(postcss@8.4.31)
4673 postcss-minify-font-values: 6.0.0(postcss@8.4.31)
4674 postcss-minify-gradients: 6.0.0(postcss@8.4.31)
4675 postcss-minify-params: 6.0.0(postcss@8.4.31)
4676 postcss-minify-selectors: 6.0.0(postcss@8.4.31)
4677 postcss-normalize-charset: 6.0.0(postcss@8.4.31)
4678 postcss-normalize-display-values: 6.0.0(postcss@8.4.31)
4679 postcss-normalize-positions: 6.0.0(postcss@8.4.31)
4680 postcss-normalize-repeat-style: 6.0.0(postcss@8.4.31)
4681 postcss-normalize-string: 6.0.0(postcss@8.4.31)
4682 postcss-normalize-timing-functions: 6.0.0(postcss@8.4.31)
4683 postcss-normalize-unicode: 6.0.0(postcss@8.4.31)
4684 postcss-normalize-url: 6.0.0(postcss@8.4.31)
4685 postcss-normalize-whitespace: 6.0.0(postcss@8.4.31)
4686 postcss-ordered-values: 6.0.0(postcss@8.4.31)
4687 postcss-reduce-initial: 6.0.0(postcss@8.4.31)
4688 postcss-reduce-transforms: 6.0.0(postcss@8.4.31)
4689 postcss-svgo: 6.0.0(postcss@8.4.31)
4690 postcss-unique-selectors: 6.0.0(postcss@8.4.31)
4691 dev: true
4692
4693 /cssnano-utils@4.0.0(postcss@8.4.31):
4694 resolution: {integrity: sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw==}
4695 engines: {node: ^14 || ^16 || >=18.0}
4696 peerDependencies:
4697 postcss: ^8.2.15
4698 dependencies:
4699 postcss: 8.4.31
4700 dev: true
4701
4702 /cssnano@6.0.1(postcss@8.4.31):
4703 resolution: {integrity: sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg==}
4704 engines: {node: ^14 || ^16 || >=18.0}
4705 peerDependencies:
4706 postcss: ^8.2.15
4707 dependencies:
4708 cssnano-preset-default: 6.0.1(postcss@8.4.31)
4709 lilconfig: 2.1.0
4710 postcss: 8.4.31
4711 dev: true
4712
4713 /csso@5.0.5:
4714 resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==}
4715 engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
4716 dependencies:
4717 css-tree: 2.2.1
4718 dev: true
4719
4720 /cuid@2.1.8:
4721 resolution: {integrity: sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==}
4722 deprecated: Cuid and other k-sortable and non-cryptographic ids (Ulid, ObjectId, KSUID, all UUIDs) are all insecure. Use @paralleldrive/cuid2 instead.
4723
4724 /dag-map@1.0.2:
4725 resolution: {integrity: sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==}
4726 dev: true
4727 2431
4728 /data-uri-to-buffer@2.0.2: 2432 /data-uri-to-buffer@2.0.2:
4729 resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} 2433 resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==}
4730 dev: true
4731
4732 /dateformat@4.6.3:
4733 resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==}
4734 2434
4735 /debug@2.6.9: 2435 /debug@2.6.9:
4736 resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 2436 resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
@@ -4741,6 +2441,7 @@ packages:
4741 optional: true 2441 optional: true
4742 dependencies: 2442 dependencies:
4743 ms: 2.0.0 2443 ms: 2.0.0
2444 dev: false
4744 2445
4745 /debug@3.2.7: 2446 /debug@3.2.7:
4746 resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 2447 resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
@@ -4764,15 +2465,6 @@ packages:
4764 dependencies: 2465 dependencies:
4765 ms: 2.1.2 2466 ms: 2.1.2
4766 2467
4767 /decimal.js@10.4.3:
4768 resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
4769 dev: true
4770
4771 /decode-uri-component@0.2.2:
4772 resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
4773 engines: {node: '>=0.10'}
4774 dev: true
4775
4776 /decompress-response@6.0.0: 2468 /decompress-response@6.0.0:
4777 resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} 2469 resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
4778 engines: {node: '>=10'} 2470 engines: {node: '>=10'}
@@ -4780,35 +2472,23 @@ packages:
4780 mimic-response: 3.1.0 2472 mimic-response: 3.1.0
4781 dev: false 2473 dev: false
4782 2474
4783 /deep-eql@4.1.3: 2475 /dedent@1.5.1:
4784 resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} 2476 resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==}
4785 engines: {node: '>=6'} 2477 peerDependencies:
4786 dependencies: 2478 babel-plugin-macros: ^3.1.0
4787 type-detect: 4.0.8 2479 peerDependenciesMeta:
4788 dev: true 2480 babel-plugin-macros:
2481 optional: true
4789 2482
4790 /deep-extend@0.6.0: 2483 /deep-extend@0.6.0:
4791 resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} 2484 resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
4792 engines: {node: '>=4.0.0'} 2485 engines: {node: '>=4.0.0'}
4793 dev: true 2486 dev: false
4794 2487
4795 /deep-is@0.1.4: 2488 /deep-is@0.1.4:
4796 resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 2489 resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
4797 dev: true 2490 dev: true
4798 2491
4799 /default-gateway@6.0.3:
4800 resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==}
4801 engines: {node: '>= 10'}
4802 dependencies:
4803 execa: 5.1.1
4804 dev: true
4805
4806 /defaults@1.0.4:
4807 resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
4808 dependencies:
4809 clone: 1.0.4
4810 dev: true
4811
4812 /defer-to-connect@2.0.1: 2492 /defer-to-connect@2.0.1:
4813 resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} 2493 resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==}
4814 engines: {node: '>=10'} 2494 engines: {node: '>=10'}
@@ -4823,11 +2503,6 @@ packages:
4823 has-property-descriptors: 1.0.0 2503 has-property-descriptors: 1.0.0
4824 dev: true 2504 dev: true
4825 2505
4826 /define-lazy-prop@2.0.0:
4827 resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
4828 engines: {node: '>=8'}
4829 dev: true
4830
4831 /define-properties@1.2.1: 2506 /define-properties@1.2.1:
4832 resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} 2507 resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
4833 engines: {node: '>= 0.4'} 2508 engines: {node: '>= 0.4'}
@@ -4837,54 +2512,12 @@ packages:
4837 object-keys: 1.1.1 2512 object-keys: 1.1.1
4838 dev: true 2513 dev: true
4839 2514
4840 /define-property@0.2.5: 2515 /defu@6.1.4:
4841 resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} 2516 resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
4842 engines: {node: '>=0.10.0'}
4843 dependencies:
4844 is-descriptor: 0.1.6
4845 dev: true
4846
4847 /define-property@1.0.0:
4848 resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==}
4849 engines: {node: '>=0.10.0'}
4850 dependencies:
4851 is-descriptor: 1.0.2
4852 dev: true
4853
4854 /define-property@2.0.2:
4855 resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==}
4856 engines: {node: '>=0.10.0'}
4857 dependencies:
4858 is-descriptor: 1.0.2
4859 isobject: 3.0.1
4860 dev: true
4861
4862 /del@4.1.1:
4863 resolution: {integrity: sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==}
4864 engines: {node: '>=6'}
4865 dependencies:
4866 '@types/glob': 7.2.0
4867 globby: 6.1.0
4868 is-path-cwd: 2.2.0
4869 is-path-in-cwd: 2.1.0
4870 p-map: 2.1.0
4871 pify: 4.0.1
4872 rimraf: 2.7.1
4873 dev: true
4874
4875 /delayed-stream@1.0.0:
4876 resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
4877 engines: {node: '>=0.4.0'}
4878 dev: true 2517 dev: true
4879 2518
4880 /delegates@1.0.0: 2519 /delegates@1.0.0:
4881 resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} 2520 resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
4882 dev: false
4883
4884 /depd@1.1.2:
4885 resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==}
4886 engines: {node: '>= 0.6'}
4887 dev: true
4888 2521
4889 /depd@2.0.0: 2522 /depd@2.0.0:
4890 resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 2523 resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
@@ -4894,42 +2527,17 @@ packages:
4894 resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} 2527 resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
4895 engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 2528 engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
4896 2529
4897 /detect-indent@6.1.0:
4898 resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
4899 engines: {node: '>=8'}
4900 dev: true
4901
4902 /detect-libc@2.0.2: 2530 /detect-libc@2.0.2:
4903 resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} 2531 resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==}
4904 engines: {node: '>=8'} 2532 engines: {node: '>=8'}
4905 dev: false
4906
4907 /detect-node@2.1.0:
4908 resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==}
4909 dev: true
4910
4911 /dezalgo@1.0.4:
4912 resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==}
4913 dependencies:
4914 asap: 2.0.6
4915 wrappy: 1.0.2
4916 dev: true
4917
4918 /diff-sequences@25.2.6:
4919 resolution: {integrity: sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==}
4920 engines: {node: '>= 8.3'}
4921 dev: true
4922 2533
4923 /diff-sequences@29.6.3: 2534 /diff-sequences@29.6.3:
4924 resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} 2535 resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
4925 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 2536 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
4926 dev: true
4927 2537
4928 /dir-glob@2.2.2: 2538 /diff@4.0.2:
4929 resolution: {integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==} 2539 resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
4930 engines: {node: '>=4'} 2540 engines: {node: '>=0.3.1'}
4931 dependencies:
4932 path-type: 3.0.0
4933 dev: true 2541 dev: true
4934 2542
4935 /dir-glob@3.0.1: 2543 /dir-glob@3.0.1:
@@ -4937,18 +2545,6 @@ packages:
4937 engines: {node: '>=8'} 2545 engines: {node: '>=8'}
4938 dependencies: 2546 dependencies:
4939 path-type: 4.0.0 2547 path-type: 4.0.0
4940 dev: true
4941
4942 /dns-equal@1.0.0:
4943 resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==}
4944 dev: true
4945
4946 /dns-packet@5.6.1:
4947 resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==}
4948 engines: {node: '>=6'}
4949 dependencies:
4950 '@leichtgewicht/ip-codec': 2.0.4
4951 dev: true
4952 2548
4953 /doctrine@2.1.0: 2549 /doctrine@2.1.0:
4954 resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 2550 resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
@@ -4964,154 +2560,64 @@ packages:
4964 esutils: 2.0.3 2560 esutils: 2.0.3
4965 dev: true 2561 dev: true
4966 2562
4967 /dom-converter@0.2.0: 2563 /dotenv@16.4.2:
4968 resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} 2564 resolution: {integrity: sha512-rZSSFxke7d9nYQ5NeMIwp5PP+f8wXgKNljpOb7KtH6SKW1cEqcXAz9VSJYVLKe7Jhup/gUYOkaeSVyK8GJ+nBg==}
4969 dependencies:
4970 utila: 0.4.0
4971 dev: true
4972
4973 /dom-serializer@1.4.1:
4974 resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
4975 dependencies:
4976 domelementtype: 2.3.0
4977 domhandler: 4.3.1
4978 entities: 2.2.0
4979 dev: true
4980
4981 /dom-serializer@2.0.0:
4982 resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
4983 dependencies:
4984 domelementtype: 2.3.0
4985 domhandler: 5.0.3
4986 entities: 4.5.0
4987 dev: true
4988
4989 /domelementtype@2.3.0:
4990 resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
4991 dev: true
4992
4993 /domhandler@4.3.1:
4994 resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
4995 engines: {node: '>= 4'}
4996 dependencies:
4997 domelementtype: 2.3.0
4998 dev: true
4999
5000 /domhandler@5.0.3:
5001 resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
5002 engines: {node: '>= 4'}
5003 dependencies:
5004 domelementtype: 2.3.0
5005 dev: true
5006
5007 /domutils@2.8.0:
5008 resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
5009 dependencies:
5010 dom-serializer: 1.4.1
5011 domelementtype: 2.3.0
5012 domhandler: 4.3.1
5013 dev: true
5014
5015 /domutils@3.1.0:
5016 resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==}
5017 dependencies:
5018 dom-serializer: 2.0.0
5019 domelementtype: 2.3.0
5020 domhandler: 5.0.3
5021 dev: true
5022
5023 /dot-case@3.0.4:
5024 resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==}
5025 dependencies:
5026 no-case: 3.0.4
5027 tslib: 2.6.2
5028
5029 /dotenv@16.3.1:
5030 resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==}
5031 engines: {node: '>=12'} 2565 engines: {node: '>=12'}
5032 2566
5033 /edge-error@2.0.8: 2567 /edge-error@4.0.1:
5034 resolution: {integrity: sha512-ORKH7rn/LEfgo0qrgoMMwFPfestNFvTO+dRLDmS+zgulhd9BVXfv/p+V6K3OyEeu2L0ysYp/71uHB31GIDe68A==} 2568 resolution: {integrity: sha512-z5mNO97k8hRVpJ6Ew1qbkMTfQ44CwuWnl+ShMCrEFgD+b324CnjBS6HbiR+Wh6Wcmw9C+/XsFBHzZ+376PpD/w==}
5035 dev: false 2569 engines: {node: '>=18.16.0'}
5036
5037 /edge-error@3.0.0:
5038 resolution: {integrity: sha512-TJE2A6KFqBMIe3EPyl/5V8veGYcMfpEtSNKfZkrSkQAyz3kh27etQ2erU6o0lkAFqDjjUl11YVzBIO2ij5/Zhw==}
5039 dev: false
5040 2570
5041 /edge-lexer@5.0.2: 2571 /edge-lexer@6.0.1:
5042 resolution: {integrity: sha512-MSpv6JRPD96eZl0uPo8gIvE9cPAXb1eNRfZKlQpFYJ2O8cNdZDpN8RvT2zpu4XqC63HWs/c938qc3dWN+GJhFw==} 2572 resolution: {integrity: sha512-iYPlo+EyERGL4cICzqXIYVxMB6sSOXazpAqkqN4YcLtwR7K1i1KcwNkSy36T40BYvP7UjjjjAVnz+fk3NEWH9Q==}
2573 engines: {node: '>=18.16.0'}
5043 dependencies: 2574 dependencies:
5044 edge-error: 3.0.0 2575 edge-error: 4.0.1
5045 dev: false
5046 2576
5047 /edge-parser@8.2.2: 2577 /edge-parser@9.0.1:
5048 resolution: {integrity: sha512-48iOLaOD4PAxIU0jnLRNXUL8G6ktO79bA4adOGXzNHg2M+mHfudFI7QPdF6IO8gW0NC1N0TPvwLWK3FVkE9bLQ==} 2578 resolution: {integrity: sha512-E6N8GRlI6gnVDpy1VmxZzY+zhB24cmjb0jrLbeXATBX+GM8XntFybQERMfCrt4wkV1LRTpKZ8F6gzupRxAo9zQ==}
2579 engines: {node: '>=18.16.0'}
5049 dependencies: 2580 dependencies:
5050 acorn: 8.10.0 2581 acorn: 8.11.3
5051 astring: 1.8.6 2582 astring: 1.8.6
5052 edge-error: 3.0.0 2583 edge-error: 4.0.1
5053 edge-lexer: 5.0.2 2584 edge-lexer: 6.0.1
5054 js-stringify: 1.0.2 2585 js-stringify: 1.0.2
5055 dev: false
5056
5057 /edge-supercharged@3.1.1:
5058 resolution: {integrity: sha512-Pxgst3UeR+0PWuTIG2QHuFgFe73TMoVMphRsa/bOmIvOkQ87cD7+VxiS9ph2KbA4djJ2ChbdgtbNiIvju5yXEw==}
5059 dependencies:
5060 '@poppinss/utils': 3.3.1
5061 slash: 3.0.0
5062 dev: false
5063 2586
5064 /edge.js@5.5.1: 2587 /edge.js@6.0.1:
5065 resolution: {integrity: sha512-lAhEdj1tW2VOJsP5X38wSHjjaXXwoteZ+8PDAJ50rAKzBxpw4QsdXK2jVzMFgRoTMUf7C+x+Tp51R9yxGTLO0w==} 2588 resolution: {integrity: sha512-htTUs7szn0LlAUi7yvczfUIZuIBNgaWyOc/OQsekHQeD8zKqSTPI9PWbCSHwwXqYWoKZxxc0O+uzcB+5kT/9ow==}
2589 engines: {node: '>=18.16.0'}
5066 dependencies: 2590 dependencies:
5067 '@poppinss/inspect': 1.0.1 2591 '@poppinss/inspect': 1.0.1
5068 '@poppinss/utils': 5.0.0 2592 '@poppinss/macroable': 1.0.1
5069 edge-error: 3.0.0 2593 '@poppinss/utils': 6.7.2
5070 edge-lexer: 5.0.2 2594 classnames: 2.5.1
5071 edge-parser: 8.2.2 2595 edge-error: 4.0.1
2596 edge-lexer: 6.0.1
2597 edge-parser: 9.0.1
2598 fs-readdir-recursive: 1.1.0
2599 he: 1.2.0
5072 js-stringify: 1.0.2 2600 js-stringify: 1.0.2
5073 macroable: 7.0.2 2601 property-information: 6.4.1
5074 stringify-attributes: 2.0.0 2602 stringify-attributes: 4.0.0
5075 dev: false
5076
5077 /editorconfig@0.15.3:
5078 resolution: {integrity: sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==}
5079 hasBin: true
5080 dependencies:
5081 commander: 2.20.3
5082 lru-cache: 4.1.5
5083 semver: 5.7.2
5084 sigmund: 1.0.1
5085 dev: true
5086 2603
5087 /ee-first@1.1.1: 2604 /ee-first@1.1.1:
5088 resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} 2605 resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
5089 2606
5090 /electron-to-chromium@1.4.537:
5091 resolution: {integrity: sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA==}
5092 dev: true
5093
5094 /electron-to-chromium@1.4.665: 2607 /electron-to-chromium@1.4.665:
5095 resolution: {integrity: sha512-UpyCWObBoD+nSZgOC2ToaIdZB0r9GhqT2WahPKiSki6ckkSuKhQNso8V2PrFcHBMleI/eqbKgVQgVC4Wni4ilw==} 2608 resolution: {integrity: sha512-UpyCWObBoD+nSZgOC2ToaIdZB0r9GhqT2WahPKiSki6ckkSuKhQNso8V2PrFcHBMleI/eqbKgVQgVC4Wni4ilw==}
5096 dev: true 2609 dev: true
5097 2610
5098 /emittery@0.10.2: 2611 /emittery@1.0.2:
5099 resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} 2612 resolution: {integrity: sha512-PqHdP6JJrxiSXQzCAzII77dVsfyGWu+7V0ghqkaCej2shF1cnIPeFE9kKZcVTqvBjrRMDVOdNXKEYcjxkznS1g==}
5100 engines: {node: '>=12'} 2613 engines: {node: '>=14.16'}
5101 2614
5102 /emittery@0.13.1: 2615 /emoji-regex@10.3.0:
5103 resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} 2616 resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==}
5104 engines: {node: '>=12'}
5105 dev: true
5106 2617
5107 /emoji-regex@8.0.0: 2618 /emoji-regex@8.0.0:
5108 resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 2619 resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
5109 2620
5110 /emojis-list@3.0.0:
5111 resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==}
5112 engines: {node: '>= 4'}
5113 dev: true
5114
5115 /encodeurl@1.0.2: 2621 /encodeurl@1.0.2:
5116 resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} 2622 resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
5117 engines: {node: '>= 0.8'} 2623 engines: {node: '>= 0.8'}
@@ -5128,14 +2634,7 @@ packages:
5128 resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} 2634 resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
5129 dependencies: 2635 dependencies:
5130 once: 1.4.0 2636 once: 1.4.0
5131 2637 dev: false
5132 /enhanced-resolve@5.15.0:
5133 resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==}
5134 engines: {node: '>=10.13.0'}
5135 dependencies:
5136 graceful-fs: 4.2.11
5137 tapable: 2.2.1
5138 dev: true
5139 2638
5140 /enquirer@2.4.1: 2639 /enquirer@2.4.1:
5141 resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} 2640 resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==}
@@ -5144,15 +2643,6 @@ packages:
5144 ansi-colors: 4.1.3 2643 ansi-colors: 4.1.3
5145 strip-ansi: 6.0.1 2644 strip-ansi: 6.0.1
5146 2645
5147 /entities@2.2.0:
5148 resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
5149 dev: true
5150
5151 /entities@4.5.0:
5152 resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
5153 engines: {node: '>=0.12'}
5154 dev: true
5155
5156 /env-paths@2.2.1: 2646 /env-paths@2.2.1:
5157 resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} 2647 resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
5158 engines: {node: '>=6'} 2648 engines: {node: '>=6'}
@@ -5160,12 +2650,6 @@ packages:
5160 dev: false 2650 dev: false
5161 optional: true 2651 optional: true
5162 2652
5163 /envinfo@7.10.0:
5164 resolution: {integrity: sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==}
5165 engines: {node: '>=4'}
5166 hasBin: true
5167 dev: true
5168
5169 /err-code@2.0.3: 2653 /err-code@2.0.3:
5170 resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} 2654 resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==}
5171 requiresBuild: true 2655 requiresBuild: true
@@ -5178,12 +2662,6 @@ packages:
5178 is-arrayish: 0.2.1 2662 is-arrayish: 0.2.1
5179 dev: true 2663 dev: true
5180 2664
5181 /error-stack-parser@2.1.4:
5182 resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==}
5183 dependencies:
5184 stackframe: 1.3.4
5185 dev: true
5186
5187 /es-abstract@1.22.2: 2665 /es-abstract@1.22.2:
5188 resolution: {integrity: sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==} 2666 resolution: {integrity: sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==}
5189 engines: {node: '>= 0.4'} 2667 engines: {node: '>= 0.4'}
@@ -5229,13 +2707,8 @@ packages:
5229 which-typed-array: 1.1.11 2707 which-typed-array: 1.1.11
5230 dev: true 2708 dev: true
5231 2709
5232 /es-module-lexer@0.3.26:
5233 resolution: {integrity: sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA==}
5234 dev: false
5235
5236 /es-module-lexer@1.3.1: 2710 /es-module-lexer@1.3.1:
5237 resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==} 2711 resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==}
5238 dev: true
5239 2712
5240 /es-set-tostringtag@2.0.1: 2713 /es-set-tostringtag@2.0.1:
5241 resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} 2714 resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==}
@@ -5261,16 +2734,48 @@ packages:
5261 is-symbol: 1.0.4 2734 is-symbol: 1.0.4
5262 dev: true 2735 dev: true
5263 2736
2737 /esbuild@0.19.12:
2738 resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==}
2739 engines: {node: '>=12'}
2740 hasBin: true
2741 requiresBuild: true
2742 optionalDependencies:
2743 '@esbuild/aix-ppc64': 0.19.12
2744 '@esbuild/android-arm': 0.19.12
2745 '@esbuild/android-arm64': 0.19.12
2746 '@esbuild/android-x64': 0.19.12
2747 '@esbuild/darwin-arm64': 0.19.12
2748 '@esbuild/darwin-x64': 0.19.12
2749 '@esbuild/freebsd-arm64': 0.19.12
2750 '@esbuild/freebsd-x64': 0.19.12
2751 '@esbuild/linux-arm': 0.19.12
2752 '@esbuild/linux-arm64': 0.19.12
2753 '@esbuild/linux-ia32': 0.19.12
2754 '@esbuild/linux-loong64': 0.19.12
2755 '@esbuild/linux-mips64el': 0.19.12
2756 '@esbuild/linux-ppc64': 0.19.12
2757 '@esbuild/linux-riscv64': 0.19.12
2758 '@esbuild/linux-s390x': 0.19.12
2759 '@esbuild/linux-x64': 0.19.12
2760 '@esbuild/netbsd-x64': 0.19.12
2761 '@esbuild/openbsd-x64': 0.19.12
2762 '@esbuild/sunos-x64': 0.19.12
2763 '@esbuild/win32-arm64': 0.19.12
2764 '@esbuild/win32-ia32': 0.19.12
2765 '@esbuild/win32-x64': 0.19.12
2766 dev: true
2767
5264 /escalade@3.1.1: 2768 /escalade@3.1.1:
5265 resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 2769 resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
5266 engines: {node: '>=6'} 2770 engines: {node: '>=6'}
5267 2771
5268 /escape-goat@2.1.1: 2772 /escape-goat@4.0.0:
5269 resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} 2773 resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==}
5270 engines: {node: '>=8'} 2774 engines: {node: '>=12'}
5271 2775
5272 /escape-html@1.0.3: 2776 /escape-html@1.0.3:
5273 resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 2777 resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
2778 dev: false
5274 2779
5275 /escape-string-regexp@1.0.5: 2780 /escape-string-regexp@1.0.5:
5276 resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 2781 resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
@@ -5282,8 +2787,22 @@ packages:
5282 engines: {node: '>=10'} 2787 engines: {node: '>=10'}
5283 dev: true 2788 dev: true
5284 2789
5285 /eslint-config-prettier@9.1.0(eslint@8.56.0): 2790 /escape-string-regexp@5.0.0:
5286 resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} 2791 resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
2792 engines: {node: '>=12'}
2793
2794 /eslint-compat-utils@0.4.1(eslint@8.56.0):
2795 resolution: {integrity: sha512-5N7ZaJG5pZxUeNNJfUchurLVrunD1xJvyg5kYOIVF8kg1f3ajTikmAu/5fZ9w100omNPOoMjngRszh/Q/uFGMg==}
2796 engines: {node: '>=12'}
2797 peerDependencies:
2798 eslint: '>=6.0.0'
2799 dependencies:
2800 eslint: 8.56.0
2801 semver: 7.6.0
2802 dev: true
2803
2804 /eslint-config-prettier@8.10.0(eslint@8.56.0):
2805 resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==}
5287 hasBin: true 2806 hasBin: true
5288 peerDependencies: 2807 peerDependencies:
5289 eslint: '>=7.0.0' 2808 eslint: '>=7.0.0'
@@ -5330,20 +2849,6 @@ packages:
5330 - supports-color 2849 - supports-color
5331 dev: true 2850 dev: true
5332 2851
5333 /eslint-plugin-adonis@2.1.1(eslint@8.56.0)(typescript@5.3.3):
5334 resolution: {integrity: sha512-iC3eZXofK4q+KOGypiquT74amCpeqW+5K5WZ7pezUvrXgmFkZMn7MSQjAg44KVzq6pQdXFuRNlnS+ijcwx0AMw==}
5335 engines: {node: '>=10.0.0'}
5336 peerDependencies:
5337 eslint: ^8.0.0
5338 dependencies:
5339 '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.56.0)(typescript@5.3.3)
5340 '@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.3)
5341 eslint: 8.56.0
5342 transitivePeerDependencies:
5343 - supports-color
5344 - typescript
5345 dev: true
5346
5347 /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.56.0): 2852 /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.56.0):
5348 resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} 2853 resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==}
5349 engines: {node: '>=4'} 2854 engines: {node: '>=4'}
@@ -5379,7 +2884,23 @@ packages:
5379 - supports-color 2884 - supports-color
5380 dev: true 2885 dev: true
5381 2886
5382 /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.5): 2887 /eslint-plugin-jsonc@2.13.0(eslint@8.56.0):
2888 resolution: {integrity: sha512-2wWdJfpO/UbZzPDABuUVvlUQjfMJa2p2iQfYt/oWxOMpXCcjuiMUSaA02gtY/Dbu82vpaSqc+O7Xq6ECHwtIxA==}
2889 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
2890 peerDependencies:
2891 eslint: '>=6.0.0'
2892 dependencies:
2893 '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
2894 eslint: 8.56.0
2895 eslint-compat-utils: 0.4.1(eslint@8.56.0)
2896 espree: 9.6.1
2897 graphemer: 1.4.0
2898 jsonc-eslint-parser: 2.4.0
2899 natural-compare: 1.4.0
2900 synckit: 0.6.2
2901 dev: true
2902
2903 /eslint-plugin-prettier@5.1.3(eslint-config-prettier@8.10.0)(eslint@8.56.0)(prettier@3.2.5):
5383 resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} 2904 resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==}
5384 engines: {node: ^14.18.0 || >=16.0.0} 2905 engines: {node: ^14.18.0 || >=16.0.0}
5385 peerDependencies: 2906 peerDependencies:
@@ -5394,14 +2915,39 @@ packages:
5394 optional: true 2915 optional: true
5395 dependencies: 2916 dependencies:
5396 eslint: 8.56.0 2917 eslint: 8.56.0
5397 eslint-config-prettier: 9.1.0(eslint@8.56.0) 2918 eslint-config-prettier: 8.10.0(eslint@8.56.0)
5398 prettier: 3.2.5 2919 prettier: 3.2.5
5399 prettier-linter-helpers: 1.0.0 2920 prettier-linter-helpers: 1.0.0
5400 synckit: 0.8.8 2921 synckit: 0.8.8
5401 dev: true 2922 dev: true
5402 2923
5403 /eslint-plugin-unicorn@50.0.1(eslint@8.56.0): 2924 /eslint-plugin-unicorn@47.0.0(eslint@8.56.0):
5404 resolution: {integrity: sha512-KxenCZxqSYW0GWHH18okDlOQcpezcitm5aOSz6EnobyJ6BIByiPDviQRjJIUAjG/tMN11958MxaQ+qCoU6lfDA==} 2925 resolution: {integrity: sha512-ivB3bKk7fDIeWOUmmMm9o3Ax9zbMz1Bsza/R2qm46ufw4T6VBFBaJIR1uN3pCKSmSXm8/9Nri8V+iUut1NhQGA==}
2926 engines: {node: '>=16'}
2927 peerDependencies:
2928 eslint: '>=8.38.0'
2929 dependencies:
2930 '@babel/helper-validator-identifier': 7.22.20
2931 '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
2932 ci-info: 3.8.0
2933 clean-regexp: 1.0.0
2934 eslint: 8.56.0
2935 esquery: 1.5.0
2936 indent-string: 4.0.0
2937 is-builtin-module: 3.2.1
2938 jsesc: 3.0.2
2939 lodash: 4.17.21
2940 pluralize: 8.0.0
2941 read-pkg-up: 7.0.1
2942 regexp-tree: 0.1.27
2943 regjsparser: 0.10.0
2944 safe-regex: 2.1.1
2945 semver: 7.6.0
2946 strip-indent: 3.0.0
2947 dev: true
2948
2949 /eslint-plugin-unicorn@51.0.1(eslint@8.56.0):
2950 resolution: {integrity: sha512-MuR/+9VuB0fydoI0nIn2RDA5WISRn4AsJyNSaNKLVwie9/ONvQhxOBbkfSICBPnzKrB77Fh6CZZXjgTt/4Latw==}
5405 engines: {node: '>=16'} 2951 engines: {node: '>=16'}
5406 peerDependencies: 2952 peerDependencies:
5407 eslint: '>=8.56.0' 2953 eslint: '>=8.56.0'
@@ -5427,14 +2973,6 @@ packages:
5427 - supports-color 2973 - supports-color
5428 dev: true 2974 dev: true
5429 2975
5430 /eslint-scope@5.1.1:
5431 resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
5432 engines: {node: '>=8.0.0'}
5433 dependencies:
5434 esrecurse: 4.3.0
5435 estraverse: 4.3.0
5436 dev: true
5437
5438 /eslint-scope@7.2.2: 2976 /eslint-scope@7.2.2:
5439 resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 2977 resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
5440 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2978 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -5509,12 +3047,6 @@ packages:
5509 eslint-visitor-keys: 3.4.3 3047 eslint-visitor-keys: 3.4.3
5510 dev: true 3048 dev: true
5511 3049
5512 /esprima@4.0.1:
5513 resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
5514 engines: {node: '>=4'}
5515 hasBin: true
5516 dev: true
5517
5518 /esquery@1.5.0: 3050 /esquery@1.5.0:
5519 resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 3051 resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
5520 engines: {node: '>=0.10'} 3052 engines: {node: '>=0.10'}
@@ -5529,11 +3061,6 @@ packages:
5529 estraverse: 5.3.0 3061 estraverse: 5.3.0
5530 dev: true 3062 dev: true
5531 3063
5532 /estraverse@4.3.0:
5533 resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
5534 engines: {node: '>=4.0'}
5535 dev: true
5536
5537 /estraverse@5.3.0: 3064 /estraverse@5.3.0:
5538 resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 3065 resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
5539 engines: {node: '>=4.0'} 3066 engines: {node: '>=4.0'}
@@ -5552,125 +3079,28 @@ packages:
5552 resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} 3079 resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
5553 engines: {node: '>=6'} 3080 engines: {node: '>=6'}
5554 3081
5555 /eventemitter3@4.0.7:
5556 resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
5557 dev: true
5558
5559 /events@1.1.1:
5560 resolution: {integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==}
5561 engines: {node: '>=0.4.x'}
5562 dev: false
5563
5564 /events@3.3.0: 3082 /events@3.3.0:
5565 resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} 3083 resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
5566 engines: {node: '>=0.8.x'} 3084 engines: {node: '>=0.8.x'}
5567 3085
5568 /execa@5.1.1: 3086 /execa@8.0.1:
5569 resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 3087 resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
5570 engines: {node: '>=10'} 3088 engines: {node: '>=16.17'}
5571 dependencies: 3089 dependencies:
5572 cross-spawn: 7.0.3 3090 cross-spawn: 7.0.3
5573 get-stream: 6.0.1 3091 get-stream: 8.0.1
5574 human-signals: 2.1.0 3092 human-signals: 5.0.0
5575 is-stream: 2.0.1 3093 is-stream: 3.0.0
5576 merge-stream: 2.0.0 3094 merge-stream: 2.0.0
5577 npm-run-path: 4.0.1 3095 npm-run-path: 5.2.0
5578 onetime: 5.1.2 3096 onetime: 6.0.0
5579 signal-exit: 3.0.7 3097 signal-exit: 4.1.0
5580 strip-final-newline: 2.0.0 3098 strip-final-newline: 3.0.0
5581 dev: true
5582
5583 /expand-brackets@2.1.4:
5584 resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==}
5585 engines: {node: '>=0.10.0'}
5586 dependencies:
5587 debug: 2.6.9
5588 define-property: 0.2.5
5589 extend-shallow: 2.0.1
5590 posix-character-classes: 0.1.1
5591 regex-not: 1.0.2
5592 snapdragon: 0.8.2
5593 to-regex: 3.0.2
5594 transitivePeerDependencies:
5595 - supports-color
5596 dev: true
5597
5598 /express@4.18.2:
5599 resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==}
5600 engines: {node: '>= 0.10.0'}
5601 dependencies:
5602 accepts: 1.3.8
5603 array-flatten: 1.1.1
5604 body-parser: 1.20.1
5605 content-disposition: 0.5.4
5606 content-type: 1.0.5
5607 cookie: 0.5.0
5608 cookie-signature: 1.0.6
5609 debug: 2.6.9
5610 depd: 2.0.0
5611 encodeurl: 1.0.2
5612 escape-html: 1.0.3
5613 etag: 1.8.1
5614 finalhandler: 1.2.0
5615 fresh: 0.5.2
5616 http-errors: 2.0.0
5617 merge-descriptors: 1.0.1
5618 methods: 1.1.2
5619 on-finished: 2.4.1
5620 parseurl: 1.3.3
5621 path-to-regexp: 0.1.7
5622 proxy-addr: 2.0.7
5623 qs: 6.11.0
5624 range-parser: 1.2.1
5625 safe-buffer: 5.2.1
5626 send: 0.18.0
5627 serve-static: 1.15.0
5628 setprototypeof: 1.2.0
5629 statuses: 2.0.1
5630 type-is: 1.6.18
5631 utils-merge: 1.0.1
5632 vary: 1.1.2
5633 transitivePeerDependencies:
5634 - supports-color
5635 dev: true
5636
5637 /extend-shallow@2.0.1:
5638 resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
5639 engines: {node: '>=0.10.0'}
5640 dependencies:
5641 is-extendable: 0.1.1
5642 dev: true
5643
5644 /extend-shallow@3.0.2:
5645 resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==}
5646 engines: {node: '>=0.10.0'}
5647 dependencies:
5648 assign-symbols: 1.0.0
5649 is-extendable: 1.0.1
5650 dev: true
5651
5652 /extend@3.0.2:
5653 resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
5654 dev: true
5655
5656 /extglob@2.0.4:
5657 resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==}
5658 engines: {node: '>=0.10.0'}
5659 dependencies:
5660 array-unique: 0.3.2
5661 define-property: 1.0.0
5662 expand-brackets: 2.1.4
5663 extend-shallow: 2.0.1
5664 fragment-cache: 0.2.1
5665 regex-not: 1.0.2
5666 snapdragon: 0.8.2
5667 to-regex: 3.0.2
5668 transitivePeerDependencies:
5669 - supports-color
5670 dev: true
5671 3099
5672 /fast-copy@3.0.1: 3100 /expand-template@2.0.3:
5673 resolution: {integrity: sha512-Knr7NOtK3HWRYGtHoJrjkaWepqT8thIVGAwt0p0aUs1zqkAzXZV4vo9fFNwyb5fcqK1GKYFYxldQdIDVKhUAfA==} 3101 resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==}
3102 engines: {node: '>=6'}
3103 dev: false
5674 3104
5675 /fast-deep-equal@3.1.3: 3105 /fast-deep-equal@3.1.3:
5676 resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 3106 resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
@@ -5679,22 +3109,18 @@ packages:
5679 resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} 3109 resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
5680 dev: true 3110 dev: true
5681 3111
5682 /fast-glob@2.2.7: 3112 /fast-glob@3.3.1:
5683 resolution: {integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==} 3113 resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
5684 engines: {node: '>=4.0.0'} 3114 engines: {node: '>=8.6.0'}
5685 dependencies: 3115 dependencies:
5686 '@mrmlnc/readdir-enhanced': 2.2.1 3116 '@nodelib/fs.stat': 2.0.5
5687 '@nodelib/fs.stat': 1.1.3 3117 '@nodelib/fs.walk': 1.2.8
5688 glob-parent: 3.1.0 3118 glob-parent: 5.1.2
5689 is-glob: 4.0.3
5690 merge2: 1.4.1 3119 merge2: 1.4.1
5691 micromatch: 3.1.10 3120 micromatch: 4.0.5
5692 transitivePeerDependencies:
5693 - supports-color
5694 dev: true
5695 3121
5696 /fast-glob@3.3.1: 3122 /fast-glob@3.3.2:
5697 resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} 3123 resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
5698 engines: {node: '>=8.6.0'} 3124 engines: {node: '>=8.6.0'}
5699 dependencies: 3125 dependencies:
5700 '@nodelib/fs.stat': 2.0.5 3126 '@nodelib/fs.stat': 2.0.5
@@ -5711,35 +3137,24 @@ packages:
5711 resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 3137 resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
5712 dev: true 3138 dev: true
5713 3139
5714 /fast-levenshtein@3.0.0:
5715 resolution: {integrity: sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==}
5716 dependencies:
5717 fastest-levenshtein: 1.0.16
5718 dev: true
5719
5720 /fast-redact@3.3.0: 3140 /fast-redact@3.3.0:
5721 resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} 3141 resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==}
5722 engines: {node: '>=6'} 3142 engines: {node: '>=6'}
5723 3143
5724 /fast-safe-stringify@2.1.1:
5725 resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==}
5726
5727 /fastest-levenshtein@1.0.16: 3144 /fastest-levenshtein@1.0.16:
5728 resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} 3145 resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==}
5729 engines: {node: '>= 4.9.1'} 3146 engines: {node: '>= 4.9.1'}
5730 dev: true
5731 3147
5732 /fastq@1.15.0: 3148 /fastq@1.15.0:
5733 resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 3149 resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
5734 dependencies: 3150 dependencies:
5735 reusify: 1.0.4 3151 reusify: 1.0.4
5736 3152
5737 /faye-websocket@0.11.4: 3153 /fastq@1.17.1:
5738 resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} 3154 resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
5739 engines: {node: '>=0.8.0'}
5740 dependencies: 3155 dependencies:
5741 websocket-driver: 0.7.4 3156 reusify: 1.0.4
5742 dev: true 3157 dev: false
5743 3158
5744 /file-entry-cache@6.0.1: 3159 /file-entry-cache@6.0.1:
5745 resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 3160 resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
@@ -5748,28 +3163,17 @@ packages:
5748 flat-cache: 3.1.0 3163 flat-cache: 3.1.0
5749 dev: true 3164 dev: true
5750 3165
5751 /file-type@12.4.2: 3166 /file-type@19.0.0:
5752 resolution: {integrity: sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==} 3167 resolution: {integrity: sha512-s7cxa7/leUWLiXO78DVVfBVse+milos9FitauDLG1pI7lNaJ2+5lzPnr2N24ym+84HVwJL6hVuGfgVE+ALvU8Q==}
5753 engines: {node: '>=8'} 3168 engines: {node: '>=18'}
5754 dev: false
5755
5756 /file-type@16.5.4:
5757 resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==}
5758 engines: {node: '>=10'}
5759 dependencies: 3169 dependencies:
5760 readable-web-to-node-stream: 3.0.2 3170 readable-web-to-node-stream: 3.0.2
5761 strtok3: 6.3.0 3171 strtok3: 7.0.0
5762 token-types: 4.2.1 3172 token-types: 5.0.1
5763 3173
5764 /fill-range@4.0.0: 3174 /file-uri-to-path@1.0.0:
5765 resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} 3175 resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
5766 engines: {node: '>=0.10.0'} 3176 dev: false
5767 dependencies:
5768 extend-shallow: 2.0.1
5769 is-number: 3.0.0
5770 repeat-string: 1.6.1
5771 to-regex-range: 2.1.1
5772 dev: true
5773 3177
5774 /fill-range@7.0.1: 3178 /fill-range@7.0.1:
5775 resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 3179 resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
@@ -5777,44 +3181,12 @@ packages:
5777 dependencies: 3181 dependencies:
5778 to-regex-range: 5.0.1 3182 to-regex-range: 5.0.1
5779 3183
5780 /finalhandler@1.2.0: 3184 /find-cache-dir@5.0.0:
5781 resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} 3185 resolution: {integrity: sha512-OuWNfjfP05JcpAP3JPgAKUhWefjMRfI5iAoSsvE24ANYWJaepAtlSgWECSVEuRgSXpyNEc9DJwG/TZpgcOqyig==}
5782 engines: {node: '>= 0.8'} 3186 engines: {node: '>=16'}
5783 dependencies:
5784 debug: 2.6.9
5785 encodeurl: 1.0.2
5786 escape-html: 1.0.3
5787 on-finished: 2.4.1
5788 parseurl: 1.3.3
5789 statuses: 2.0.1
5790 unpipe: 1.0.0
5791 transitivePeerDependencies:
5792 - supports-color
5793 dev: true
5794
5795 /find-cache-dir@3.3.2:
5796 resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==}
5797 engines: {node: '>=8'}
5798 dependencies:
5799 commondir: 1.0.1
5800 make-dir: 3.1.0
5801 pkg-dir: 4.2.0
5802 dev: true
5803
5804 /find-cache-dir@4.0.0:
5805 resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==}
5806 engines: {node: '>=14.16'}
5807 dependencies: 3187 dependencies:
5808 common-path-prefix: 3.0.0 3188 common-path-prefix: 3.0.0
5809 pkg-dir: 7.0.0 3189 pkg-dir: 7.0.0
5810 dev: true
5811
5812 /find-up@3.0.0:
5813 resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==}
5814 engines: {node: '>=6'}
5815 dependencies:
5816 locate-path: 3.0.0
5817 dev: true
5818 3190
5819 /find-up@4.1.0: 3191 /find-up@4.1.0:
5820 resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 3192 resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
@@ -5838,7 +3210,6 @@ packages:
5838 dependencies: 3210 dependencies:
5839 locate-path: 7.2.0 3211 locate-path: 7.2.0
5840 path-exists: 5.0.0 3212 path-exists: 5.0.0
5841 dev: true
5842 3213
5843 /flat-cache@3.1.0: 3214 /flat-cache@3.1.0:
5844 resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} 3215 resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==}
@@ -5849,9 +3220,6 @@ packages:
5849 rimraf: 3.0.2 3220 rimraf: 3.0.2
5850 dev: true 3221 dev: true
5851 3222
5852 /flatstr@1.0.12:
5853 resolution: {integrity: sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==}
5854
5855 /flatted@3.2.9: 3223 /flatted@3.2.9:
5856 resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} 3224 resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==}
5857 dev: true 3225 dev: true
@@ -5860,55 +3228,26 @@ packages:
5860 resolution: {integrity: sha512-xU99gDEnciIwJdGcBmNHnzTJ/w5AT+VFJOu6sTB6WM8diOYNA3Sa+K1DiEBQ7XH4QikQq3iFW1U+jRVcotQnBw==} 3228 resolution: {integrity: sha512-xU99gDEnciIwJdGcBmNHnzTJ/w5AT+VFJOu6sTB6WM8diOYNA3Sa+K1DiEBQ7XH4QikQq3iFW1U+jRVcotQnBw==}
5861 engines: {node: '>=8'} 3229 engines: {node: '>=8'}
5862 3230
5863 /follow-redirects@1.15.3:
5864 resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==}
5865 engines: {node: '>=4.0'}
5866 peerDependencies:
5867 debug: '*'
5868 peerDependenciesMeta:
5869 debug:
5870 optional: true
5871 dev: true
5872
5873 /for-each@0.3.3: 3231 /for-each@0.3.3:
5874 resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 3232 resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
5875 dependencies: 3233 dependencies:
5876 is-callable: 1.2.7 3234 is-callable: 1.2.7
5877
5878 /for-in@1.0.2:
5879 resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==}
5880 engines: {node: '>=0.10.0'}
5881 dev: true 3235 dev: true
5882 3236
5883 /form-data@4.0.0: 3237 /form-data-encoder@4.0.2:
5884 resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 3238 resolution: {integrity: sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw==}
5885 engines: {node: '>= 6'} 3239 engines: {node: '>= 18'}
5886 dependencies: 3240 dev: false
5887 asynckit: 0.4.0
5888 combined-stream: 1.0.8
5889 mime-types: 2.1.35
5890 dev: true
5891 3241
5892 /formidable@2.1.2: 3242 /formdata-node@6.0.3:
5893 resolution: {integrity: sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==} 3243 resolution: {integrity: sha512-8e1++BCiTzUno9v5IZ2J6bv4RU+3UKDmqWUQD0MIMVCd9AdhWkO1gw57oo1mNEX1dMq2EGI+FbWz4B92pscSQg==}
5894 dependencies: 3244 engines: {node: '>= 18'}
5895 dezalgo: 1.0.4 3245 dev: false
5896 hexoid: 1.0.0
5897 once: 1.4.0
5898 qs: 6.11.2
5899 dev: true
5900 3246
5901 /forwarded@0.2.0: 3247 /forwarded@0.2.0:
5902 resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 3248 resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
5903 engines: {node: '>= 0.6'} 3249 engines: {node: '>= 0.6'}
5904 3250
5905 /fragment-cache@0.2.1:
5906 resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==}
5907 engines: {node: '>=0.10.0'}
5908 dependencies:
5909 map-cache: 0.2.2
5910 dev: true
5911
5912 /fresh@0.5.2: 3251 /fresh@0.5.2:
5913 resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} 3252 resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
5914 engines: {node: '>= 0.6'} 3253 engines: {node: '>= 0.6'}
@@ -5917,14 +3256,6 @@ packages:
5917 resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} 3256 resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
5918 dev: false 3257 dev: false
5919 3258
5920 /fs-extra@10.1.0:
5921 resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
5922 engines: {node: '>=12'}
5923 dependencies:
5924 graceful-fs: 4.2.11
5925 jsonfile: 6.1.0
5926 universalify: 2.0.0
5927
5928 /fs-extra@11.2.0: 3259 /fs-extra@11.2.0:
5929 resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} 3260 resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==}
5930 engines: {node: '>=14.14'} 3261 engines: {node: '>=14.14'}
@@ -5932,25 +3263,13 @@ packages:
5932 graceful-fs: 4.2.11 3263 graceful-fs: 4.2.11
5933 jsonfile: 6.1.0 3264 jsonfile: 6.1.0
5934 universalify: 2.0.0 3265 universalify: 2.0.0
5935 3266 dev: false
5936 /fs-extra@8.1.0:
5937 resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
5938 engines: {node: '>=6 <7 || >=8'}
5939 dependencies:
5940 graceful-fs: 4.2.11
5941 jsonfile: 4.0.0
5942 universalify: 0.1.2
5943 dev: true
5944 3267
5945 /fs-minipass@2.1.0: 3268 /fs-minipass@2.1.0:
5946 resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} 3269 resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
5947 engines: {node: '>= 8'} 3270 engines: {node: '>= 8'}
5948 dependencies: 3271 dependencies:
5949 minipass: 3.3.6 3272 minipass: 3.3.6
5950 dev: false
5951
5952 /fs-monkey@1.0.5:
5953 resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==}
5954 3273
5955 /fs-readdir-recursive@1.1.0: 3274 /fs-readdir-recursive@1.1.0:
5956 resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} 3275 resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==}
@@ -5963,7 +3282,6 @@ packages:
5963 engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 3282 engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
5964 os: [darwin] 3283 os: [darwin]
5965 requiresBuild: true 3284 requiresBuild: true
5966 dev: true
5967 optional: true 3285 optional: true
5968 3286
5969 /function-bind@1.1.1: 3287 /function-bind@1.1.1:
@@ -5999,7 +3317,6 @@ packages:
5999 string-width: 4.2.3 3317 string-width: 4.2.3
6000 strip-ansi: 6.0.1 3318 strip-ansi: 6.0.1
6001 wide-align: 1.1.5 3319 wide-align: 1.1.5
6002 dev: false
6003 3320
6004 /gauge@4.0.4: 3321 /gauge@4.0.4:
6005 resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} 3322 resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==}
@@ -6017,14 +3334,9 @@ packages:
6017 dev: false 3334 dev: false
6018 optional: true 3335 optional: true
6019 3336
6020 /gensync@1.0.0-beta.2: 3337 /get-east-asian-width@1.2.0:
6021 resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 3338 resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==}
6022 engines: {node: '>=6.9.0'} 3339 engines: {node: '>=18'}
6023 dev: true
6024
6025 /get-func-name@2.0.2:
6026 resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
6027 dev: true
6028 3340
6029 /get-intrinsic@1.2.1: 3341 /get-intrinsic@1.2.1:
6030 resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} 3342 resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==}
@@ -6039,33 +3351,24 @@ packages:
6039 engines: {node: '>=8.0.0'} 3351 engines: {node: '>=8.0.0'}
6040 dev: false 3352 dev: false
6041 3353
6042 /get-port@3.2.0: 3354 /get-port@7.0.0:
6043 resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} 3355 resolution: {integrity: sha512-mDHFgApoQd+azgMdwylJrv2DX47ywGq1i5VFJE7fZ0dttNq3iQMfsU4IvEgBHojA3KqEudyu7Vq+oN8kNaNkWw==}
6044 engines: {node: '>=4'} 3356 engines: {node: '>=16'}
6045 dev: true
6046
6047 /get-port@5.1.1:
6048 resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==}
6049 engines: {node: '>=8'}
6050 dev: true
6051 3357
6052 /get-source@2.0.12: 3358 /get-source@2.0.12:
6053 resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} 3359 resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==}
6054 dependencies: 3360 dependencies:
6055 data-uri-to-buffer: 2.0.2 3361 data-uri-to-buffer: 2.0.2
6056 source-map: 0.6.1 3362 source-map: 0.6.1
6057 dev: true
6058
6059 /get-stream@5.2.0:
6060 resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
6061 engines: {node: '>=8'}
6062 dependencies:
6063 pump: 3.0.0
6064 dev: false
6065 3363
6066 /get-stream@6.0.1: 3364 /get-stream@6.0.1:
6067 resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 3365 resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
6068 engines: {node: '>=10'} 3366 engines: {node: '>=10'}
3367 dev: false
3368
3369 /get-stream@8.0.1:
3370 resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
3371 engines: {node: '>=16'}
6069 3372
6070 /get-symbol-description@1.0.0: 3373 /get-symbol-description@1.0.0:
6071 resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 3374 resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
@@ -6075,20 +3378,12 @@ packages:
6075 get-intrinsic: 1.2.1 3378 get-intrinsic: 1.2.1
6076 dev: true 3379 dev: true
6077 3380
6078 /get-value@2.0.6:
6079 resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==}
6080 engines: {node: '>=0.10.0'}
6081 dev: true
6082
6083 /getopts@2.3.0: 3381 /getopts@2.3.0:
6084 resolution: {integrity: sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==} 3382 resolution: {integrity: sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==}
6085 3383
6086 /glob-parent@3.1.0: 3384 /github-from-package@0.0.0:
6087 resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} 3385 resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
6088 dependencies: 3386 dev: false
6089 is-glob: 3.1.0
6090 path-dirname: 1.0.2
6091 dev: true
6092 3387
6093 /glob-parent@5.1.2: 3388 /glob-parent@5.1.2:
6094 resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 3389 resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
@@ -6101,15 +3396,6 @@ packages:
6101 engines: {node: '>=10.13.0'} 3396 engines: {node: '>=10.13.0'}
6102 dependencies: 3397 dependencies:
6103 is-glob: 4.0.3 3398 is-glob: 4.0.3
6104 dev: true
6105
6106 /glob-to-regexp@0.3.0:
6107 resolution: {integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==}
6108 dev: true
6109
6110 /glob-to-regexp@0.4.1:
6111 resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
6112 dev: true
6113 3399
6114 /glob@7.2.3: 3400 /glob@7.2.3:
6115 resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 3401 resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
@@ -6121,11 +3407,6 @@ packages:
6121 once: 1.4.0 3407 once: 1.4.0
6122 path-is-absolute: 1.0.1 3408 path-is-absolute: 1.0.1
6123 3409
6124 /globals@11.12.0:
6125 resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
6126 engines: {node: '>=4'}
6127 dev: true
6128
6129 /globals@13.22.0: 3410 /globals@13.22.0:
6130 resolution: {integrity: sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==} 3411 resolution: {integrity: sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==}
6131 engines: {node: '>=8'} 3412 engines: {node: '>=8'}
@@ -6152,53 +3433,37 @@ packages:
6152 slash: 3.0.0 3433 slash: 3.0.0
6153 dev: true 3434 dev: true
6154 3435
6155 /globby@6.1.0: 3436 /globby@13.2.2:
6156 resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} 3437 resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==}
6157 engines: {node: '>=0.10.0'} 3438 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
6158 dependencies:
6159 array-union: 1.0.2
6160 glob: 7.2.3
6161 object-assign: 4.1.1
6162 pify: 2.3.0
6163 pinkie-promise: 2.0.1
6164 dev: true
6165
6166 /globby@9.2.0:
6167 resolution: {integrity: sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==}
6168 engines: {node: '>=6'}
6169 dependencies: 3439 dependencies:
6170 '@types/glob': 7.2.0 3440 dir-glob: 3.0.1
6171 array-union: 1.0.2 3441 fast-glob: 3.3.2
6172 dir-glob: 2.2.2 3442 ignore: 5.2.4
6173 fast-glob: 2.2.7 3443 merge2: 1.4.1
6174 glob: 7.2.3 3444 slash: 4.0.0
6175 ignore: 4.0.6
6176 pify: 4.0.1
6177 slash: 2.0.0
6178 transitivePeerDependencies:
6179 - supports-color
6180 dev: true
6181 3445
6182 /gopd@1.0.1: 3446 /gopd@1.0.1:
6183 resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 3447 resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
6184 dependencies: 3448 dependencies:
6185 get-intrinsic: 1.2.1 3449 get-intrinsic: 1.2.1
3450 dev: true
6186 3451
6187 /got@11.8.6: 3452 /got@14.2.0:
6188 resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} 3453 resolution: {integrity: sha512-dBq2KkHcQl3AwPoIWsLsQScCPpUgRulz1qZVthjPYKYOPmYfBnekR3vxecjZbm91Vc3JUGnV9mqFX7B+Fe2quw==}
6189 engines: {node: '>=10.19.0'} 3454 engines: {node: '>=20'}
6190 dependencies: 3455 dependencies:
6191 '@sindresorhus/is': 4.6.0 3456 '@sindresorhus/is': 6.1.0
6192 '@szmarczak/http-timer': 4.0.6 3457 '@szmarczak/http-timer': 5.0.1
6193 '@types/cacheable-request': 6.0.3 3458 cacheable-lookup: 7.0.0
6194 '@types/responselike': 1.0.1 3459 cacheable-request: 10.2.14
6195 cacheable-lookup: 5.0.4
6196 cacheable-request: 7.0.4
6197 decompress-response: 6.0.0 3460 decompress-response: 6.0.0
6198 http2-wrapper: 1.0.3 3461 form-data-encoder: 4.0.2
6199 lowercase-keys: 2.0.0 3462 get-stream: 8.0.1
6200 p-cancelable: 2.1.1 3463 http2-wrapper: 2.2.1
6201 responselike: 2.0.1 3464 lowercase-keys: 3.0.0
3465 p-cancelable: 4.0.1
3466 responselike: 3.0.0
6202 dev: false 3467 dev: false
6203 3468
6204 /graceful-fs@4.2.11: 3469 /graceful-fs@4.2.11:
@@ -6208,17 +3473,6 @@ packages:
6208 resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 3473 resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
6209 dev: true 3474 dev: true
6210 3475
6211 /handle-thing@2.0.1:
6212 resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==}
6213 dev: true
6214
6215 /has-ansi@2.0.0:
6216 resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==}
6217 engines: {node: '>=0.10.0'}
6218 dependencies:
6219 ansi-regex: 2.1.1
6220 dev: true
6221
6222 /has-bigints@1.0.2: 3476 /has-bigints@1.0.2:
6223 resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 3477 resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
6224 dev: true 3478 dev: true
@@ -6232,18 +3486,6 @@ packages:
6232 resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 3486 resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
6233 engines: {node: '>=8'} 3487 engines: {node: '>=8'}
6234 3488
6235 /has-glob@1.0.0:
6236 resolution: {integrity: sha512-D+8A457fBShSEI3tFCj65PAbT++5sKiFtdCdOam0gnfBgw9D277OERk+HM9qYJXmdVLZ/znez10SqHN0BBQ50g==}
6237 engines: {node: '>=0.10.0'}
6238 dependencies:
6239 is-glob: 3.1.0
6240 dev: true
6241
6242 /has-own-prop@2.0.0:
6243 resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==}
6244 engines: {node: '>=8'}
6245 dev: true
6246
6247 /has-property-descriptors@1.0.0: 3489 /has-property-descriptors@1.0.0:
6248 resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 3490 resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
6249 dependencies: 3491 dependencies:
@@ -6263,46 +3505,10 @@ packages:
6263 engines: {node: '>= 0.4'} 3505 engines: {node: '>= 0.4'}
6264 dependencies: 3506 dependencies:
6265 has-symbols: 1.0.3 3507 has-symbols: 1.0.3
3508 dev: true
6266 3509
6267 /has-unicode@2.0.1: 3510 /has-unicode@2.0.1:
6268 resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} 3511 resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
6269 dev: false
6270
6271 /has-value@0.3.1:
6272 resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==}
6273 engines: {node: '>=0.10.0'}
6274 dependencies:
6275 get-value: 2.0.6
6276 has-values: 0.1.4
6277 isobject: 2.1.0
6278 dev: true
6279
6280 /has-value@1.0.0:
6281 resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==}
6282 engines: {node: '>=0.10.0'}
6283 dependencies:
6284 get-value: 2.0.6
6285 has-values: 1.0.0
6286 isobject: 3.0.1
6287 dev: true
6288
6289 /has-values@0.1.4:
6290 resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==}
6291 engines: {node: '>=0.10.0'}
6292 dev: true
6293
6294 /has-values@1.0.0:
6295 resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==}
6296 engines: {node: '>=0.10.0'}
6297 dependencies:
6298 is-number: 3.0.0
6299 kind-of: 4.0.0
6300 dev: true
6301
6302 /has-yarn@2.1.0:
6303 resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==}
6304 engines: {node: '>=8'}
6305 dev: true
6306 3512
6307 /has@1.0.3: 3513 /has@1.0.3:
6308 resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 3514 resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
@@ -6316,76 +3522,22 @@ packages:
6316 dependencies: 3522 dependencies:
6317 function-bind: 1.1.2 3523 function-bind: 1.1.2
6318 3524
6319 /haye@3.0.0:
6320 resolution: {integrity: sha512-yWxbPdeex78IR3x3X/DdqkZbVG4rP4UaRdUGmpClfnUh1C61mASt7Iav8vk2tXcTMSygBHDDfgoVqk68NJqzhQ==}
6321
6322 /he@1.2.0: 3525 /he@1.2.0:
6323 resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} 3526 resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
6324 hasBin: true 3527 hasBin: true
6325 3528
6326 /header-case@2.0.4:
6327 resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==}
6328 dependencies:
6329 capital-case: 1.0.4
6330 tslib: 2.6.2
6331
6332 /helmet-csp@3.4.0: 3529 /helmet-csp@3.4.0:
6333 resolution: {integrity: sha512-a+YgzWw6dajqhQfb6ktxil0FsQuWTKzrLSUfy55dxS8fuvl1jidTIMPZ2udN15mjjcpBPgTHNHGF5tyWKYyR8w==} 3530 resolution: {integrity: sha512-a+YgzWw6dajqhQfb6ktxil0FsQuWTKzrLSUfy55dxS8fuvl1jidTIMPZ2udN15mjjcpBPgTHNHGF5tyWKYyR8w==}
6334 engines: {node: '>=10.0.0'} 3531 engines: {node: '>=10.0.0'}
6335 dev: false
6336
6337 /help-me@5.0.0:
6338 resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==}
6339
6340 /hexoid@1.0.0:
6341 resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==}
6342 engines: {node: '>=8'}
6343 dev: true
6344 3532
6345 /hosted-git-info@2.8.9: 3533 /hosted-git-info@2.8.9:
6346 resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} 3534 resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
6347 dev: true 3535 dev: true
6348 3536
6349 /hpack.js@2.1.6:
6350 resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==}
6351 dependencies:
6352 inherits: 2.0.4
6353 obuf: 1.1.2
6354 readable-stream: 2.3.8
6355 wbuf: 1.7.3
6356 dev: true
6357
6358 /html-entities@2.4.0:
6359 resolution: {integrity: sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==}
6360 dev: true
6361
6362 /htmlparser2@6.1.0:
6363 resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==}
6364 dependencies:
6365 domelementtype: 2.3.0
6366 domhandler: 4.3.1
6367 domutils: 2.8.0
6368 entities: 2.2.0
6369 dev: true
6370
6371 /http-cache-semantics@4.1.1: 3537 /http-cache-semantics@4.1.1:
6372 resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} 3538 resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
6373 dev: false 3539 dev: false
6374 3540
6375 /http-deceiver@1.2.7:
6376 resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==}
6377 dev: true
6378
6379 /http-errors@1.6.3:
6380 resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==}
6381 engines: {node: '>= 0.6'}
6382 dependencies:
6383 depd: 1.1.2
6384 inherits: 2.0.3
6385 setprototypeof: 1.1.0
6386 statuses: 1.5.0
6387 dev: true
6388
6389 /http-errors@2.0.0: 3541 /http-errors@2.0.0:
6390 resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} 3542 resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
6391 engines: {node: '>= 0.8'} 3543 engines: {node: '>= 0.8'}
@@ -6396,10 +3548,6 @@ packages:
6396 statuses: 2.0.1 3548 statuses: 2.0.1
6397 toidentifier: 1.0.1 3549 toidentifier: 1.0.1
6398 3550
6399 /http-parser-js@0.5.8:
6400 resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==}
6401 dev: true
6402
6403 /http-proxy-agent@4.0.1: 3551 /http-proxy-agent@4.0.1:
6404 resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} 3552 resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==}
6405 engines: {node: '>= 6'} 3553 engines: {node: '>= 6'}
@@ -6413,38 +3561,8 @@ packages:
6413 dev: false 3561 dev: false
6414 optional: true 3562 optional: true
6415 3563
6416 /http-proxy-middleware@2.0.6(@types/express@4.17.18): 3564 /http2-wrapper@2.2.1:
6417 resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} 3565 resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==}
6418 engines: {node: '>=12.0.0'}
6419 peerDependencies:
6420 '@types/express': ^4.17.13
6421 peerDependenciesMeta:
6422 '@types/express':
6423 optional: true
6424 dependencies:
6425 '@types/express': 4.17.18
6426 '@types/http-proxy': 1.17.12
6427 http-proxy: 1.18.1
6428 is-glob: 4.0.3
6429 is-plain-obj: 3.0.0
6430 micromatch: 4.0.5
6431 transitivePeerDependencies:
6432 - debug
6433 dev: true
6434
6435 /http-proxy@1.18.1:
6436 resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==}
6437 engines: {node: '>=8.0.0'}
6438 dependencies:
6439 eventemitter3: 4.0.7
6440 follow-redirects: 1.15.3
6441 requires-port: 1.0.0
6442 transitivePeerDependencies:
6443 - debug
6444 dev: true
6445
6446 /http2-wrapper@1.0.3:
6447 resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==}
6448 engines: {node: '>=10.19.0'} 3566 engines: {node: '>=10.19.0'}
6449 dependencies: 3567 dependencies:
6450 quick-lru: 5.1.1 3568 quick-lru: 5.1.1
@@ -6459,12 +3577,10 @@ packages:
6459 debug: 4.3.4 3577 debug: 4.3.4
6460 transitivePeerDependencies: 3578 transitivePeerDependencies:
6461 - supports-color 3579 - supports-color
6462 dev: false
6463 3580
6464 /human-signals@2.1.0: 3581 /human-signals@5.0.0:
6465 resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 3582 resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
6466 engines: {node: '>=10.17.0'} 3583 engines: {node: '>=16.17.0'}
6467 dev: true
6468 3584
6469 /humanize-ms@1.2.1: 3585 /humanize-ms@1.2.1:
6470 resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} 3586 resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
@@ -6480,14 +3596,14 @@ packages:
6480 hasBin: true 3596 hasBin: true
6481 dev: true 3597 dev: true
6482 3598
6483 /ical-generator@4.1.0(@types/luxon@3.4.2)(luxon@3.4.4)(moment@2.30.1): 3599 /ical-generator@6.0.1(@types/luxon@3.4.2)(@types/node@20.7.2)(luxon@3.4.4)(moment@2.30.1):
6484 resolution: {integrity: sha512-5GrFDJ8SAOj8cB9P1uEZIfKrNxSZ1R2eOQfZePL+CtdWh4RwNXWe8b0goajz+Hu37vcipG3RVldoa2j57Y20IA==} 3600 resolution: {integrity: sha512-m0Li239l4xddH+MveodfAWFFrHrT8F3rGmgR0zyWUe0Mg7Q/XxiPssN+cKer3+WSpfFNyhjdAsqalTUivKl/vQ==}
6485 engines: {node: ^14.8.0 || >=16.0.0} 3601 engines: {node: '>=18.0.0'}
6486 peerDependencies: 3602 peerDependencies:
6487 '@touch4it/ical-timezones': '>=1.6.0' 3603 '@touch4it/ical-timezones': '>=1.6.0'
6488 '@types/luxon': '>= 1.26.0' 3604 '@types/luxon': '>= 1.26.0'
6489 '@types/mocha': '>= 8.2.1' 3605 '@types/mocha': '>= 8.2.1'
6490 '@types/node': '>= 15.0.0' 3606 '@types/node': '*'
6491 dayjs: '>= 1.10.0' 3607 dayjs: '>= 1.10.0'
6492 luxon: '>= 1.26.0' 3608 luxon: '>= 1.26.0'
6493 moment: '>= 2.29.0' 3609 moment: '>= 2.29.0'
@@ -6514,6 +3630,7 @@ packages:
6514 optional: true 3630 optional: true
6515 dependencies: 3631 dependencies:
6516 '@types/luxon': 3.4.2 3632 '@types/luxon': 3.4.2
3633 '@types/node': 20.7.2
6517 luxon: 3.4.4 3634 luxon: 3.4.4
6518 moment: 2.30.1 3635 moment: 2.30.1
6519 uuid-random: 1.3.2 3636 uuid-random: 1.3.2
@@ -6534,19 +3651,6 @@ packages:
6534 dev: false 3651 dev: false
6535 optional: true 3652 optional: true
6536 3653
6537 /icss-utils@5.1.0(postcss@8.4.31):
6538 resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==}
6539 engines: {node: ^10 || ^12 || >= 14}
6540 peerDependencies:
6541 postcss: ^8.1.0
6542 dependencies:
6543 postcss: 8.4.31
6544 dev: true
6545
6546 /ieee754@1.1.13:
6547 resolution: {integrity: sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==}
6548 dev: false
6549
6550 /ieee754@1.2.1: 3654 /ieee754@1.2.1:
6551 resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 3655 resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
6552 3656
@@ -6555,15 +3659,9 @@ packages:
6555 engines: {node: '>=4.0.0'} 3659 engines: {node: '>=4.0.0'}
6556 dev: false 3660 dev: false
6557 3661
6558 /ignore@4.0.6:
6559 resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==}
6560 engines: {node: '>= 4'}
6561 dev: true
6562
6563 /ignore@5.2.4: 3662 /ignore@5.2.4:
6564 resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 3663 resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
6565 engines: {node: '>= 4'} 3664 engines: {node: '>= 4'}
6566 dev: true
6567 3665
6568 /import-fresh@3.3.0: 3666 /import-fresh@3.3.0:
6569 resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 3667 resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
@@ -6573,37 +3671,26 @@ packages:
6573 resolve-from: 4.0.0 3671 resolve-from: 4.0.0
6574 dev: true 3672 dev: true
6575 3673
6576 /import-local@3.1.0:
6577 resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==}
6578 engines: {node: '>=8'}
6579 hasBin: true
6580 dependencies:
6581 pkg-dir: 4.2.0
6582 resolve-cwd: 3.0.0
6583 dev: true
6584
6585 /imurmurhash@0.1.4: 3674 /imurmurhash@0.1.4:
6586 resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 3675 resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
6587 engines: {node: '>=0.8.19'} 3676 engines: {node: '>=0.8.19'}
6588 3677
6589 /inclusion@1.0.1:
6590 resolution: {integrity: sha512-TRicJXpIfJN+a47xxjs5nfy2V5l413e4aAtsLYRG+OsDM3A3uloBd/+fDmj23RVuIL9VQfwtb37iIc0rtMw9KA==}
6591 dependencies:
6592 parent-module: 2.0.0
6593 dev: true
6594
6595 /indent-string@4.0.0: 3678 /indent-string@4.0.0:
6596 resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 3679 resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
6597 engines: {node: '>=8'} 3680 engines: {node: '>=8'}
6598 3681
3682 /indent-string@5.0.0:
3683 resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==}
3684 engines: {node: '>=12'}
3685
6599 /infer-owner@1.0.4: 3686 /infer-owner@1.0.4:
6600 resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} 3687 resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==}
6601 requiresBuild: true 3688 requiresBuild: true
6602 dev: false 3689 dev: false
6603 optional: true 3690 optional: true
6604 3691
6605 /inflation@2.0.0: 3692 /inflation@2.1.0:
6606 resolution: {integrity: sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==} 3693 resolution: {integrity: sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==}
6607 engines: {node: '>= 0.8.0'} 3694 engines: {node: '>= 0.8.0'}
6608 3695
6609 /inflight@1.0.6: 3696 /inflight@1.0.6:
@@ -6612,16 +3699,12 @@ packages:
6612 once: 1.4.0 3699 once: 1.4.0
6613 wrappy: 1.0.2 3700 wrappy: 1.0.2
6614 3701
6615 /inherits@2.0.3:
6616 resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==}
6617 dev: true
6618
6619 /inherits@2.0.4: 3702 /inherits@2.0.4:
6620 resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 3703 resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
6621 3704
6622 /ini@1.3.8: 3705 /ini@1.3.8:
6623 resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 3706 resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
6624 dev: true 3707 dev: false
6625 3708
6626 /internal-slot@1.0.5: 3709 /internal-slot@1.0.5:
6627 resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} 3710 resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
@@ -6637,11 +3720,6 @@ packages:
6637 engines: {node: '>= 0.10'} 3720 engines: {node: '>= 0.10'}
6638 dev: false 3721 dev: false
6639 3722
6640 /interpret@3.1.1:
6641 resolution: {integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==}
6642 engines: {node: '>=10.13.0'}
6643 dev: true
6644
6645 /ip@2.0.0: 3723 /ip@2.0.0:
6646 resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} 3724 resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==}
6647 requiresBuild: true 3725 requiresBuild: true
@@ -6652,33 +3730,6 @@ packages:
6652 resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 3730 resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
6653 engines: {node: '>= 0.10'} 3731 engines: {node: '>= 0.10'}
6654 3732
6655 /ipaddr.js@2.1.0:
6656 resolution: {integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==}
6657 engines: {node: '>= 10'}
6658 dev: true
6659
6660 /is-accessor-descriptor@0.1.6:
6661 resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==}
6662 engines: {node: '>=0.10.0'}
6663 dependencies:
6664 kind-of: 3.2.2
6665 dev: true
6666
6667 /is-accessor-descriptor@1.0.0:
6668 resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==}
6669 engines: {node: '>=0.10.0'}
6670 dependencies:
6671 kind-of: 6.0.3
6672 dev: true
6673
6674 /is-arguments@1.1.1:
6675 resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
6676 engines: {node: '>= 0.4'}
6677 dependencies:
6678 call-bind: 1.0.2
6679 has-tostringtag: 1.0.0
6680 dev: false
6681
6682 /is-array-buffer@3.0.2: 3733 /is-array-buffer@3.0.2:
6683 resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} 3734 resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
6684 dependencies: 3735 dependencies:
@@ -6702,7 +3753,6 @@ packages:
6702 engines: {node: '>=8'} 3753 engines: {node: '>=8'}
6703 dependencies: 3754 dependencies:
6704 binary-extensions: 2.2.0 3755 binary-extensions: 2.2.0
6705 dev: true
6706 3756
6707 /is-boolean-object@1.1.2: 3757 /is-boolean-object@1.1.2:
6708 resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 3758 resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
@@ -6712,10 +3762,6 @@ packages:
6712 has-tostringtag: 1.0.0 3762 has-tostringtag: 1.0.0
6713 dev: true 3763 dev: true
6714 3764
6715 /is-buffer@1.1.6:
6716 resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==}
6717 dev: true
6718
6719 /is-builtin-module@3.2.1: 3765 /is-builtin-module@3.2.1:
6720 resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} 3766 resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==}
6721 engines: {node: '>=6'} 3767 engines: {node: '>=6'}
@@ -6726,6 +3772,7 @@ packages:
6726 /is-callable@1.2.7: 3772 /is-callable@1.2.7:
6727 resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 3773 resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
6728 engines: {node: '>= 0.4'} 3774 engines: {node: '>= 0.4'}
3775 dev: true
6729 3776
6730 /is-ci@3.0.1: 3777 /is-ci@3.0.1:
6731 resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} 3778 resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==}
@@ -6739,20 +3786,6 @@ packages:
6739 dependencies: 3786 dependencies:
6740 hasown: 2.0.0 3787 hasown: 2.0.0
6741 3788
6742 /is-data-descriptor@0.1.4:
6743 resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==}
6744 engines: {node: '>=0.10.0'}
6745 dependencies:
6746 kind-of: 3.2.2
6747 dev: true
6748
6749 /is-data-descriptor@1.0.0:
6750 resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==}
6751 engines: {node: '>=0.10.0'}
6752 dependencies:
6753 kind-of: 6.0.3
6754 dev: true
6755
6756 /is-date-object@1.0.5: 3789 /is-date-object@1.0.5:
6757 resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 3790 resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
6758 engines: {node: '>= 0.4'} 3791 engines: {node: '>= 0.4'}
@@ -6760,47 +3793,6 @@ packages:
6760 has-tostringtag: 1.0.0 3793 has-tostringtag: 1.0.0
6761 dev: true 3794 dev: true
6762 3795
6763 /is-descriptor@0.1.6:
6764 resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==}
6765 engines: {node: '>=0.10.0'}
6766 dependencies:
6767 is-accessor-descriptor: 0.1.6
6768 is-data-descriptor: 0.1.4
6769 kind-of: 5.1.0
6770 dev: true
6771
6772 /is-descriptor@1.0.2:
6773 resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==}
6774 engines: {node: '>=0.10.0'}
6775 dependencies:
6776 is-accessor-descriptor: 1.0.0
6777 is-data-descriptor: 1.0.0
6778 kind-of: 6.0.3
6779 dev: true
6780
6781 /is-docker@2.2.1:
6782 resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
6783 engines: {node: '>=8'}
6784 hasBin: true
6785 dev: true
6786
6787 /is-extendable@0.1.1:
6788 resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
6789 engines: {node: '>=0.10.0'}
6790 dev: true
6791
6792 /is-extendable@1.0.1:
6793 resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==}
6794 engines: {node: '>=0.10.0'}
6795 dependencies:
6796 is-plain-object: 2.0.4
6797 dev: true
6798
6799 /is-extglob@1.0.0:
6800 resolution: {integrity: sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==}
6801 engines: {node: '>=0.10.0'}
6802 dev: true
6803
6804 /is-extglob@2.1.1: 3796 /is-extglob@2.1.1:
6805 resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 3797 resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
6806 engines: {node: '>=0.10.0'} 3798 engines: {node: '>=0.10.0'}
@@ -6809,26 +3801,15 @@ packages:
6809 resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 3801 resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
6810 engines: {node: '>=8'} 3802 engines: {node: '>=8'}
6811 3803
6812 /is-generator-function@1.0.10: 3804 /is-fullwidth-code-point@4.0.0:
6813 resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} 3805 resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==}
6814 engines: {node: '>= 0.4'} 3806 engines: {node: '>=12'}
6815 dependencies:
6816 has-tostringtag: 1.0.0
6817 dev: false
6818
6819 /is-glob@2.0.1:
6820 resolution: {integrity: sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==}
6821 engines: {node: '>=0.10.0'}
6822 dependencies:
6823 is-extglob: 1.0.0
6824 dev: true
6825 3807
6826 /is-glob@3.1.0: 3808 /is-fullwidth-code-point@5.0.0:
6827 resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} 3809 resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==}
6828 engines: {node: '>=0.10.0'} 3810 engines: {node: '>=18'}
6829 dependencies: 3811 dependencies:
6830 is-extglob: 2.1.1 3812 get-east-asian-width: 1.2.0
6831 dev: true
6832 3813
6833 /is-glob@4.0.3: 3814 /is-glob@4.0.3:
6834 resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 3815 resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
@@ -6836,13 +3817,6 @@ packages:
6836 dependencies: 3817 dependencies:
6837 is-extglob: 2.1.1 3818 is-extglob: 2.1.1
6838 3819
6839 /is-invalid-path@0.1.0:
6840 resolution: {integrity: sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==}
6841 engines: {node: '>=0.10.0'}
6842 dependencies:
6843 is-glob: 2.0.1
6844 dev: true
6845
6846 /is-lambda@1.0.1: 3820 /is-lambda@1.0.1:
6847 resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} 3821 resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==}
6848 requiresBuild: true 3822 requiresBuild: true
@@ -6861,53 +3835,15 @@ packages:
6861 has-tostringtag: 1.0.0 3835 has-tostringtag: 1.0.0
6862 dev: true 3836 dev: true
6863 3837
6864 /is-number@3.0.0:
6865 resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==}
6866 engines: {node: '>=0.10.0'}
6867 dependencies:
6868 kind-of: 3.2.2
6869 dev: true
6870
6871 /is-number@7.0.0: 3838 /is-number@7.0.0:
6872 resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 3839 resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
6873 engines: {node: '>=0.12.0'} 3840 engines: {node: '>=0.12.0'}
6874 3841
6875 /is-path-cwd@2.2.0:
6876 resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==}
6877 engines: {node: '>=6'}
6878 dev: true
6879
6880 /is-path-in-cwd@2.1.0:
6881 resolution: {integrity: sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==}
6882 engines: {node: '>=6'}
6883 dependencies:
6884 is-path-inside: 2.1.0
6885 dev: true
6886
6887 /is-path-inside@2.1.0:
6888 resolution: {integrity: sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==}
6889 engines: {node: '>=6'}
6890 dependencies:
6891 path-is-inside: 1.0.2
6892 dev: true
6893
6894 /is-path-inside@3.0.3: 3842 /is-path-inside@3.0.3:
6895 resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 3843 resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
6896 engines: {node: '>=8'} 3844 engines: {node: '>=8'}
6897 dev: true 3845 dev: true
6898 3846
6899 /is-plain-obj@3.0.0:
6900 resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==}
6901 engines: {node: '>=10'}
6902 dev: true
6903
6904 /is-plain-object@2.0.4:
6905 resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
6906 engines: {node: '>=0.10.0'}
6907 dependencies:
6908 isobject: 3.0.1
6909 dev: true
6910
6911 /is-regex@1.1.4: 3847 /is-regex@1.1.4:
6912 resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 3848 resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
6913 engines: {node: '>= 0.4'} 3849 engines: {node: '>= 0.4'}
@@ -6922,10 +3858,9 @@ packages:
6922 call-bind: 1.0.2 3858 call-bind: 1.0.2
6923 dev: true 3859 dev: true
6924 3860
6925 /is-stream@2.0.1: 3861 /is-stream@3.0.0:
6926 resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 3862 resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
6927 engines: {node: '>=8'} 3863 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
6928 dev: true
6929 3864
6930 /is-string@1.0.7: 3865 /is-string@1.0.7:
6931 resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 3866 resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
@@ -6946,12 +3881,6 @@ packages:
6946 engines: {node: '>= 0.4'} 3881 engines: {node: '>= 0.4'}
6947 dependencies: 3882 dependencies:
6948 which-typed-array: 1.1.11 3883 which-typed-array: 1.1.11
6949
6950 /is-valid-path@0.1.1:
6951 resolution: {integrity: sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==}
6952 engines: {node: '>=0.10.0'}
6953 dependencies:
6954 is-invalid-path: 0.1.0
6955 dev: true 3884 dev: true
6956 3885
6957 /is-weakref@1.0.2: 3886 /is-weakref@1.0.2:
@@ -6960,20 +3889,9 @@ packages:
6960 call-bind: 1.0.2 3889 call-bind: 1.0.2
6961 dev: true 3890 dev: true
6962 3891
6963 /is-windows@1.0.2:
6964 resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
6965 engines: {node: '>=0.10.0'}
6966 dev: true
6967
6968 /is-wsl@2.2.0:
6969 resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
6970 engines: {node: '>=8'}
6971 dependencies:
6972 is-docker: 2.2.1
6973 dev: true
6974
6975 /isarray@1.0.0: 3892 /isarray@1.0.0:
6976 resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} 3893 resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
3894 dev: false
6977 3895
6978 /isarray@2.0.5: 3896 /isarray@2.0.5:
6979 resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 3897 resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
@@ -6982,28 +3900,6 @@ packages:
6982 /isexe@2.0.0: 3900 /isexe@2.0.0:
6983 resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 3901 resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
6984 3902
6985 /isobject@2.1.0:
6986 resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==}
6987 engines: {node: '>=0.10.0'}
6988 dependencies:
6989 isarray: 1.0.0
6990 dev: true
6991
6992 /isobject@3.0.1:
6993 resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
6994 engines: {node: '>=0.10.0'}
6995 dev: true
6996
6997 /jest-diff@25.5.0:
6998 resolution: {integrity: sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==}
6999 engines: {node: '>= 8.3'}
7000 dependencies:
7001 chalk: 3.0.0
7002 diff-sequences: 25.2.6
7003 jest-get-type: 25.2.6
7004 pretty-format: 25.5.0
7005 dev: true
7006
7007 /jest-diff@29.7.0: 3903 /jest-diff@29.7.0:
7008 resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} 3904 resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==}
7009 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 3905 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -7012,91 +3908,26 @@ packages:
7012 diff-sequences: 29.6.3 3908 diff-sequences: 29.6.3
7013 jest-get-type: 29.6.3 3909 jest-get-type: 29.6.3
7014 pretty-format: 29.7.0 3910 pretty-format: 29.7.0
7015 dev: true
7016
7017 /jest-get-type@25.2.6:
7018 resolution: {integrity: sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==}
7019 engines: {node: '>= 8.3'}
7020 dev: true
7021 3911
7022 /jest-get-type@29.6.3: 3912 /jest-get-type@29.6.3:
7023 resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} 3913 resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==}
7024 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 3914 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7025 dev: true
7026
7027 /jest-matcher-utils@25.5.0:
7028 resolution: {integrity: sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw==}
7029 engines: {node: '>= 8.3'}
7030 dependencies:
7031 chalk: 3.0.0
7032 jest-diff: 25.5.0
7033 jest-get-type: 25.2.6
7034 pretty-format: 25.5.0
7035 dev: true
7036
7037 /jest-util@29.7.0:
7038 resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==}
7039 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7040 dependencies:
7041 '@jest/types': 29.6.3
7042 '@types/node': 20.7.2
7043 chalk: 4.1.2
7044 ci-info: 3.8.0
7045 graceful-fs: 4.2.11
7046 picomatch: 2.3.1
7047 dev: true
7048
7049 /jest-worker@27.5.1:
7050 resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
7051 engines: {node: '>= 10.13.0'}
7052 dependencies:
7053 '@types/node': 20.7.2
7054 merge-stream: 2.0.0
7055 supports-color: 8.1.1
7056
7057 /jest-worker@29.7.0:
7058 resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
7059 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
7060 dependencies:
7061 '@types/node': 20.7.2
7062 jest-util: 29.7.0
7063 merge-stream: 2.0.0
7064 supports-color: 8.1.1
7065 dev: true
7066
7067 /jmespath@0.16.0:
7068 resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==}
7069 engines: {node: '>= 0.6.0'}
7070 dev: false
7071 3915
7072 /jose@4.14.6: 3916 /jose@4.14.6:
7073 resolution: {integrity: sha512-EqJPEUlZD0/CSUMubKtMaYUOtWe91tZXTWMJZoKSbLk+KtdhNdcvppH8lA9XwVu2V4Ailvsj0GBZJ2ZwDjfesQ==} 3917 resolution: {integrity: sha512-EqJPEUlZD0/CSUMubKtMaYUOtWe91tZXTWMJZoKSbLk+KtdhNdcvppH8lA9XwVu2V4Ailvsj0GBZJ2ZwDjfesQ==}
7074 dev: false 3918 dev: false
7075 3919
7076 /joycon@3.1.1: 3920 /jose@5.2.1:
7077 resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 3921 resolution: {integrity: sha512-qiaQhtQRw6YrOaOj0v59h3R6hUY9NvxBmmnMfKemkqYmBB0tEc97NbLP7ix44VP5p9/0YHG8Vyhzuo5YBNwviA==}
7078 engines: {node: '>=10'} 3922 dev: false
7079 3923
7080 /js-stringify@1.0.2: 3924 /js-stringify@1.0.2:
7081 resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==} 3925 resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==}
7082 dev: false
7083
7084 /js-tokens@3.0.2:
7085 resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==}
7086 dev: true
7087 3926
7088 /js-tokens@4.0.0: 3927 /js-tokens@4.0.0:
7089 resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 3928 resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
7090 dev: true 3929 dev: true
7091 3930
7092 /js-yaml@3.14.1:
7093 resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
7094 hasBin: true
7095 dependencies:
7096 argparse: 1.0.10
7097 esprima: 4.0.1
7098 dev: true
7099
7100 /js-yaml@4.1.0: 3931 /js-yaml@4.1.0:
7101 resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 3932 resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
7102 hasBin: true 3933 hasBin: true
@@ -7109,12 +3940,6 @@ packages:
7109 hasBin: true 3940 hasBin: true
7110 dev: true 3941 dev: true
7111 3942
7112 /jsesc@2.5.2:
7113 resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
7114 engines: {node: '>=4'}
7115 hasBin: true
7116 dev: true
7117
7118 /jsesc@3.0.2: 3943 /jsesc@3.0.2:
7119 resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} 3944 resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
7120 engines: {node: '>=6'} 3945 engines: {node: '>=6'}
@@ -7128,28 +3953,10 @@ packages:
7128 resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 3953 resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
7129 dev: true 3954 dev: true
7130 3955
7131 /json-schema-deref-sync@0.14.0:
7132 resolution: {integrity: sha512-yGR1xmhdiD6R0MSrwWcFxQzAj5b3i5Gb/mt5tvQKgFMMeNe0KZYNEN/jWr7G+xn39Azqgcvk4ZKMs8dQl8e4wA==}
7133 engines: {node: '>=6.0.0'}
7134 dependencies:
7135 clone: 2.1.2
7136 dag-map: 1.0.2
7137 is-valid-path: 0.1.1
7138 lodash: 4.17.21
7139 md5: 2.2.1
7140 memory-cache: 0.2.0
7141 traverse: 0.6.7
7142 valid-url: 1.0.9
7143 dev: true
7144
7145 /json-schema-traverse@0.4.1: 3956 /json-schema-traverse@0.4.1:
7146 resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 3957 resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
7147 dev: true 3958 dev: true
7148 3959
7149 /json-schema-traverse@1.0.0:
7150 resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
7151 dev: true
7152
7153 /json-stable-stringify-without-jsonify@1.0.1: 3960 /json-stable-stringify-without-jsonify@1.0.1:
7154 resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 3961 resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
7155 dev: true 3962 dev: true
@@ -7161,16 +3968,14 @@ packages:
7161 minimist: 1.2.8 3968 minimist: 1.2.8
7162 dev: true 3969 dev: true
7163 3970
7164 /json5@2.2.3: 3971 /jsonc-eslint-parser@2.4.0:
7165 resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 3972 resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==}
7166 engines: {node: '>=6'} 3973 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
7167 hasBin: true 3974 dependencies:
7168 dev: true 3975 acorn: 8.10.0
7169 3976 eslint-visitor-keys: 3.4.3
7170 /jsonfile@4.0.0: 3977 espree: 9.6.1
7171 resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} 3978 semver: 7.6.0
7172 optionalDependencies:
7173 graceful-fs: 4.2.11
7174 dev: true 3979 dev: true
7175 3980
7176 /jsonfile@6.1.0: 3981 /jsonfile@6.1.0:
@@ -7179,55 +3984,30 @@ packages:
7179 universalify: 2.0.0 3984 universalify: 2.0.0
7180 optionalDependencies: 3985 optionalDependencies:
7181 graceful-fs: 4.2.11 3986 graceful-fs: 4.2.11
3987 dev: false
7182 3988
7183 /junk@3.1.0: 3989 /jsonschema@1.4.1:
7184 resolution: {integrity: sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==} 3990 resolution: {integrity: sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==}
7185 engines: {node: '>=8'} 3991
7186 dev: true 3992 /junk@4.0.1:
3993 resolution: {integrity: sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==}
3994 engines: {node: '>=12.20'}
7187 3995
7188 /keyv@4.5.3: 3996 /keyv@4.5.3:
7189 resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} 3997 resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==}
7190 dependencies: 3998 dependencies:
7191 json-buffer: 3.0.1 3999 json-buffer: 3.0.1
7192 4000
7193 /kind-of@3.2.2:
7194 resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==}
7195 engines: {node: '>=0.10.0'}
7196 dependencies:
7197 is-buffer: 1.1.6
7198 dev: true
7199
7200 /kind-of@4.0.0:
7201 resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==}
7202 engines: {node: '>=0.10.0'}
7203 dependencies:
7204 is-buffer: 1.1.6
7205 dev: true
7206
7207 /kind-of@5.1.0:
7208 resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==}
7209 engines: {node: '>=0.10.0'}
7210 dev: true
7211
7212 /kind-of@6.0.3:
7213 resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
7214 engines: {node: '>=0.10.0'}
7215
7216 /kleur@3.0.3:
7217 resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
7218 engines: {node: '>=6'}
7219 dev: true
7220
7221 /kleur@4.1.5: 4001 /kleur@4.1.5:
7222 resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 4002 resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
7223 engines: {node: '>=6'} 4003 engines: {node: '>=6'}
7224 4004
7225 /knex-dynamic-connection@3.1.0(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.6): 4005 /knex-dynamic-connection@3.1.1(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.7):
7226 resolution: {integrity: sha512-owRQ9cHBtaBUfYBs/dyt1s/Y0PYwUE66apnfYpzzMTkN2tNlzC1s7owqDJleHOelhJERZgd4jd1BZgcdfXLEhQ==} 4006 resolution: {integrity: sha512-Omq2Mw+5LkjJvZX+ESWpLx2FYkH9SB6Qq4Jad7f2LNQOQV1VLq91QQqtEhkgprnQuT3IUvzFooARpSN1uzoMEg==}
7227 engines: {node: '>=14.0.0'} 4007 engines: {node: '>=14.0.0'}
7228 dependencies: 4008 dependencies:
7229 debug: 4.3.4 4009 debug: 4.3.4
7230 knex: 2.5.1(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.6) 4010 knex: 3.1.0(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.7)
7231 transitivePeerDependencies: 4011 transitivePeerDependencies:
7232 - better-sqlite3 4012 - better-sqlite3
7233 - mysql 4013 - mysql
@@ -7239,9 +4019,9 @@ packages:
7239 - tedious 4019 - tedious
7240 dev: false 4020 dev: false
7241 4021
7242 /knex@2.5.1(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.6): 4022 /knex@3.1.0(mysql@2.18.1)(pg@8.11.3)(sqlite3@5.1.7):
7243 resolution: {integrity: sha512-z78DgGKUr4SE/6cm7ku+jHvFT0X97aERh/f0MUKAKgFnwCYBEW4TFBqtHWFYiJFid7fMrtpZ/gxJthvz5mEByA==} 4023 resolution: {integrity: sha512-GLoII6hR0c4ti243gMs5/1Rb3B+AjwMOfjYm97pu0FOQa7JH56hgBxYf5WK2525ceSbBY1cjeZ9yk99GPMB6Kw==}
7244 engines: {node: '>=12'} 4024 engines: {node: '>=16'}
7245 hasBin: true 4025 hasBin: true
7246 peerDependencies: 4026 peerDependencies:
7247 better-sqlite3: '*' 4027 better-sqlite3: '*'
@@ -7278,27 +4058,16 @@ packages:
7278 lodash: 4.17.21 4058 lodash: 4.17.21
7279 mysql: 2.18.1 4059 mysql: 2.18.1
7280 pg: 8.11.3 4060 pg: 8.11.3
7281 pg-connection-string: 2.6.1 4061 pg-connection-string: 2.6.2
7282 rechoir: 0.8.0 4062 rechoir: 0.8.0
7283 resolve-from: 5.0.0 4063 resolve-from: 5.0.0
7284 sqlite3: 5.1.6 4064 sqlite3: 5.1.7
7285 tarn: 3.0.2 4065 tarn: 3.0.2
7286 tildify: 2.0.0 4066 tildify: 2.0.0
7287 transitivePeerDependencies: 4067 transitivePeerDependencies:
7288 - supports-color 4068 - supports-color
7289 dev: false 4069 dev: false
7290 4070
7291 /launch-editor@2.6.0:
7292 resolution: {integrity: sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==}
7293 dependencies:
7294 picocolors: 1.0.0
7295 shell-quote: 1.8.1
7296 dev: true
7297
7298 /leven@3.1.0:
7299 resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
7300 engines: {node: '>=6'}
7301
7302 /levn@0.4.1: 4071 /levn@0.4.1:
7303 resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 4072 resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
7304 engines: {node: '>= 0.8.0'} 4073 engines: {node: '>= 0.8.0'}
@@ -7307,42 +4076,10 @@ packages:
7307 type-check: 0.4.0 4076 type-check: 0.4.0
7308 dev: true 4077 dev: true
7309 4078
7310 /lilconfig@2.1.0:
7311 resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
7312 engines: {node: '>=10'}
7313 dev: true
7314
7315 /lines-and-columns@1.2.4: 4079 /lines-and-columns@1.2.4:
7316 resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 4080 resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
7317 dev: true 4081 dev: true
7318 4082
7319 /listify@1.0.3:
7320 resolution: {integrity: sha512-083swF7iH7bx8666zdzBColpgEuy46HjN3r1isD4zV6Ix7FuHfb/2/WVnl4CH8hjuoWeFF7P5KkKNXUnJCFEJg==}
7321 engines: {node: '>= 0.4'}
7322 dev: true
7323
7324 /loader-runner@4.3.0:
7325 resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==}
7326 engines: {node: '>=6.11.5'}
7327 dev: true
7328
7329 /loader-utils@2.0.4:
7330 resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==}
7331 engines: {node: '>=8.9.0'}
7332 dependencies:
7333 big.js: 5.2.2
7334 emojis-list: 3.0.0
7335 json5: 2.2.3
7336 dev: true
7337
7338 /locate-path@3.0.0:
7339 resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==}
7340 engines: {node: '>=6'}
7341 dependencies:
7342 p-locate: 3.0.0
7343 path-exists: 3.0.0
7344 dev: true
7345
7346 /locate-path@5.0.0: 4083 /locate-path@5.0.0:
7347 resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 4084 resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
7348 engines: {node: '>=8'} 4085 engines: {node: '>=8'}
@@ -7362,81 +4099,29 @@ packages:
7362 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 4099 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
7363 dependencies: 4100 dependencies:
7364 p-locate: 6.0.0 4101 p-locate: 6.0.0
7365 dev: true
7366
7367 /lodash.debounce@4.0.8:
7368 resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
7369 dev: true
7370
7371 /lodash.flatten@4.4.0:
7372 resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==}
7373 dev: true
7374
7375 /lodash.get@4.4.2:
7376 resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==}
7377 dev: true
7378
7379 /lodash.isequal@4.5.0:
7380 resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
7381 dev: true
7382
7383 /lodash.memoize@4.1.2:
7384 resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
7385 dev: true
7386 4102
7387 /lodash.merge@4.6.2: 4103 /lodash.merge@4.6.2:
7388 resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 4104 resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
7389 dev: true 4105 dev: true
7390 4106
7391 /lodash.set@4.3.2:
7392 resolution: {integrity: sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==}
7393 dev: true
7394
7395 /lodash.uniq@4.5.0:
7396 resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==}
7397 dev: true
7398
7399 /lodash@4.17.21: 4107 /lodash@4.17.21:
7400 resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 4108 resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
7401 4109
7402 /log-update@4.0.0: 4110 /log-update@6.0.0:
7403 resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} 4111 resolution: {integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==}
7404 engines: {node: '>=10'} 4112 engines: {node: '>=18'}
7405 dependencies:
7406 ansi-escapes: 4.3.2
7407 cli-cursor: 3.1.0
7408 slice-ansi: 4.0.0
7409 wrap-ansi: 6.2.0
7410
7411 /loupe@2.3.6:
7412 resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==}
7413 dependencies:
7414 get-func-name: 2.0.2
7415 dev: true
7416
7417 /lower-case@2.0.2:
7418 resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
7419 dependencies: 4113 dependencies:
7420 tslib: 2.6.2 4114 ansi-escapes: 6.2.0
4115 cli-cursor: 4.0.0
4116 slice-ansi: 7.1.0
4117 strip-ansi: 7.1.0
4118 wrap-ansi: 9.0.0
7421 4119
7422 /lowercase-keys@2.0.0: 4120 /lowercase-keys@3.0.0:
7423 resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} 4121 resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==}
7424 engines: {node: '>=8'} 4122 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
7425 dev: false 4123 dev: false
7426 4124
7427 /lru-cache@4.1.5:
7428 resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==}
7429 dependencies:
7430 pseudomap: 1.0.2
7431 yallist: 2.1.2
7432 dev: true
7433
7434 /lru-cache@5.1.1:
7435 resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
7436 dependencies:
7437 yallist: 3.1.1
7438 dev: true
7439
7440 /lru-cache@6.0.0: 4125 /lru-cache@6.0.0:
7441 resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 4126 resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
7442 engines: {node: '>=10'} 4127 engines: {node: '>=10'}
@@ -7446,9 +4131,7 @@ packages:
7446 /luxon@3.4.4: 4131 /luxon@3.4.4:
7447 resolution: {integrity: sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==} 4132 resolution: {integrity: sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==}
7448 engines: {node: '>=12'} 4133 engines: {node: '>=12'}
7449 4134 dev: false
7450 /macroable@7.0.2:
7451 resolution: {integrity: sha512-QS9p+Q20YBxpE0dJBnF6CPURP7p1GUsxnhTxTWH5nG3A1F5w8Rg3T4Xyh5UlrFSbHp88oOciVP/0agsNLhkHdQ==}
7452 4135
7453 /make-dir@3.1.0: 4136 /make-dir@3.1.0:
7454 resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} 4137 resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
@@ -7456,6 +4139,10 @@ packages:
7456 dependencies: 4139 dependencies:
7457 semver: 6.3.1 4140 semver: 6.3.1
7458 4141
4142 /make-error@1.3.6:
4143 resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
4144 dev: true
4145
7459 /make-fetch-happen@9.1.0: 4146 /make-fetch-happen@9.1.0:
7460 resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==} 4147 resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==}
7461 engines: {node: '>= 10'} 4148 engines: {node: '>= 10'}
@@ -7483,62 +4170,6 @@ packages:
7483 dev: false 4170 dev: false
7484 optional: true 4171 optional: true
7485 4172
7486 /map-age-cleaner@0.1.3:
7487 resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==}
7488 engines: {node: '>=6'}
7489 dependencies:
7490 p-defer: 1.0.0
7491 dev: true
7492
7493 /map-cache@0.2.2:
7494 resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==}
7495 engines: {node: '>=0.10.0'}
7496 dev: true
7497
7498 /map-visit@1.0.0:
7499 resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==}
7500 engines: {node: '>=0.10.0'}
7501 dependencies:
7502 object-visit: 1.0.1
7503 dev: true
7504
7505 /marked-terminal@5.2.0(marked@4.3.0):
7506 resolution: {integrity: sha512-Piv6yNwAQXGFjZSaiNljyNFw7jKDdGrw70FSbtxEyldLsyeuV5ZHm/1wW++kWbrOF1VPnUgYOhB2oLL0ZpnekA==}
7507 engines: {node: '>=14.13.1 || >=16.0.0'}
7508 peerDependencies:
7509 marked: ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0
7510 dependencies:
7511 ansi-escapes: 6.2.0
7512 cardinal: 2.1.1
7513 chalk: 5.3.0
7514 cli-table3: 0.6.3
7515 marked: 4.3.0
7516 node-emoji: 1.11.0
7517 supports-hyperlinks: 2.3.0
7518 dev: true
7519
7520 /marked@4.3.0:
7521 resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==}
7522 engines: {node: '>= 12'}
7523 hasBin: true
7524 dev: true
7525
7526 /md5@2.2.1:
7527 resolution: {integrity: sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==}
7528 dependencies:
7529 charenc: 0.0.2
7530 crypt: 0.0.2
7531 is-buffer: 1.1.6
7532 dev: true
7533
7534 /mdn-data@2.0.28:
7535 resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==}
7536 dev: true
7537
7538 /mdn-data@2.0.30:
7539 resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
7540 dev: true
7541
7542 /media-typer@0.3.0: 4173 /media-typer@0.3.0:
7543 resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} 4174 resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
7544 engines: {node: '>= 0.6'} 4175 engines: {node: '>= 0.6'}
@@ -7547,27 +4178,11 @@ packages:
7547 resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} 4178 resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
7548 engines: {node: '>= 0.8'} 4179 engines: {node: '>= 0.8'}
7549 4180
7550 /mem@8.1.1: 4181 /memoize@10.0.0:
7551 resolution: {integrity: sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==} 4182 resolution: {integrity: sha512-H6cBLgsi6vMWOcCpvVCdFFnl3kerEXbrYh9q+lY6VXvQSmM6CkmV08VOwT+WE2tzIEqRPFfAq3fm4v/UIW6mSA==}
7552 engines: {node: '>=10'} 4183 engines: {node: '>=18'}
7553 dependencies:
7554 map-age-cleaner: 0.1.3
7555 mimic-fn: 3.1.0
7556 dev: true
7557
7558 /memfs@3.5.3:
7559 resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==}
7560 engines: {node: '>= 4.0.0'}
7561 dependencies: 4184 dependencies:
7562 fs-monkey: 1.0.5 4185 mimic-function: 5.0.0
7563
7564 /memory-cache@0.2.0:
7565 resolution: {integrity: sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==}
7566 dev: true
7567
7568 /merge-descriptors@1.0.1:
7569 resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==}
7570 dev: true
7571 4186
7572 /merge-stream@2.0.0: 4187 /merge-stream@2.0.0:
7573 resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 4188 resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
@@ -7576,32 +4191,6 @@ packages:
7576 resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 4191 resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
7577 engines: {node: '>= 8'} 4192 engines: {node: '>= 8'}
7578 4193
7579 /methods@1.1.2:
7580 resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
7581 engines: {node: '>= 0.6'}
7582 dev: true
7583
7584 /micromatch@3.1.10:
7585 resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==}
7586 engines: {node: '>=0.10.0'}
7587 dependencies:
7588 arr-diff: 4.0.0
7589 array-unique: 0.3.2
7590 braces: 2.3.2
7591 define-property: 2.0.2
7592 extend-shallow: 3.0.2
7593 extglob: 2.0.4
7594 fragment-cache: 0.2.1
7595 kind-of: 6.0.3
7596 nanomatch: 1.2.13
7597 object.pick: 1.3.0
7598 regex-not: 1.0.2
7599 snapdragon: 0.8.2
7600 to-regex: 3.0.2
7601 transitivePeerDependencies:
7602 - supports-color
7603 dev: true
7604
7605 /micromatch@4.0.5: 4194 /micromatch@4.0.5:
7606 resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 4195 resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
7607 engines: {node: '>=8.6'} 4196 engines: {node: '>=8.6'}
@@ -7613,14 +4202,6 @@ packages:
7613 resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 4202 resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
7614 engines: {node: '>= 0.6'} 4203 engines: {node: '>= 0.6'}
7615 4204
7616 /mime-kind@3.0.0:
7617 resolution: {integrity: sha512-sx9lClVP7GXY2mO3aVDWTQLhfvAdDvNhGi3o3g7+ae3aKaoybeGbEIlnreoRKjrbDpvlPltlkIryxOtatojeXQ==}
7618 engines: {node: '>=8.3.0'}
7619 dependencies:
7620 file-type: 12.4.2
7621 mime-types: 2.1.35
7622 dev: false
7623
7624 /mime-types@2.1.35: 4205 /mime-types@2.1.35:
7625 resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 4206 resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
7626 engines: {node: '>= 0.6'} 4207 engines: {node: '>= 0.6'}
@@ -7631,51 +4212,35 @@ packages:
7631 resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} 4212 resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
7632 engines: {node: '>=4'} 4213 engines: {node: '>=4'}
7633 hasBin: true 4214 hasBin: true
7634 4215 dev: false
7635 /mime@2.6.0:
7636 resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==}
7637 engines: {node: '>=4.0.0'}
7638 hasBin: true
7639 dev: true
7640 4216
7641 /mimic-fn@2.1.0: 4217 /mimic-fn@2.1.0:
7642 resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 4218 resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
7643 engines: {node: '>=6'} 4219 engines: {node: '>=6'}
7644 4220
7645 /mimic-fn@3.1.0: 4221 /mimic-fn@4.0.0:
7646 resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==} 4222 resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
7647 engines: {node: '>=8'} 4223 engines: {node: '>=12'}
7648 dev: true
7649 4224
7650 /mimic-response@1.0.1: 4225 /mimic-function@5.0.0:
7651 resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} 4226 resolution: {integrity: sha512-RBfQ+9X9DpXdEoK7Bu+KeEU6vFhumEIiXKWECPzRBmDserEq4uR2b/VCm0LwpMSosoq2k+Zuxj/GzOr0Fn6h/g==}
7652 engines: {node: '>=4'} 4227 engines: {node: '>=18'}
7653 dev: false
7654 4228
7655 /mimic-response@3.1.0: 4229 /mimic-response@3.1.0:
7656 resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} 4230 resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
7657 engines: {node: '>=10'} 4231 engines: {node: '>=10'}
7658 dev: false 4232 dev: false
7659 4233
4234 /mimic-response@4.0.0:
4235 resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==}
4236 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
4237 dev: false
4238
7660 /min-indent@1.0.1: 4239 /min-indent@1.0.1:
7661 resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 4240 resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
7662 engines: {node: '>=4'} 4241 engines: {node: '>=4'}
7663 dev: true 4242 dev: true
7664 4243
7665 /mini-css-extract-plugin@2.7.6(webpack@5.88.2):
7666 resolution: {integrity: sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==}
7667 engines: {node: '>= 12.13.0'}
7668 peerDependencies:
7669 webpack: ^5.0.0
7670 dependencies:
7671 schema-utils: 4.2.0
7672 webpack: 5.88.2(webpack-cli@5.1.4)
7673 dev: true
7674
7675 /minimalistic-assert@1.0.1:
7676 resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==}
7677 dev: true
7678
7679 /minimatch@3.1.2: 4244 /minimatch@3.1.2:
7680 resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 4245 resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
7681 dependencies: 4246 dependencies:
@@ -7693,7 +4258,6 @@ packages:
7693 engines: {node: '>=16 || 14 >=14.17'} 4258 engines: {node: '>=16 || 14 >=14.17'}
7694 dependencies: 4259 dependencies:
7695 brace-expansion: 2.0.1 4260 brace-expansion: 2.0.1
7696 dev: true
7697 4261
7698 /minimist@1.2.8: 4262 /minimist@1.2.8:
7699 resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 4263 resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
@@ -7752,12 +4316,10 @@ packages:
7752 engines: {node: '>=8'} 4316 engines: {node: '>=8'}
7753 dependencies: 4317 dependencies:
7754 yallist: 4.0.0 4318 yallist: 4.0.0
7755 dev: false
7756 4319
7757 /minipass@5.0.0: 4320 /minipass@5.0.0:
7758 resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} 4321 resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
7759 engines: {node: '>=8'} 4322 engines: {node: '>=8'}
7760 dev: false
7761 4323
7762 /minizlib@2.1.2: 4324 /minizlib@2.1.2:
7763 resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} 4325 resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
@@ -7765,15 +4327,10 @@ packages:
7765 dependencies: 4327 dependencies:
7766 minipass: 3.3.6 4328 minipass: 3.3.6
7767 yallist: 4.0.0 4329 yallist: 4.0.0
7768 dev: false
7769 4330
7770 /mixin-deep@1.3.2: 4331 /mkdirp-classic@0.5.3:
7771 resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} 4332 resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
7772 engines: {node: '>=0.10.0'} 4333 dev: false
7773 dependencies:
7774 for-in: 1.0.2
7775 is-extendable: 1.0.1
7776 dev: true
7777 4334
7778 /mkdirp@0.5.6: 4335 /mkdirp@0.5.6:
7779 resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} 4336 resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
@@ -7786,40 +4343,19 @@ packages:
7786 resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} 4343 resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
7787 engines: {node: '>=10'} 4344 engines: {node: '>=10'}
7788 hasBin: true 4345 hasBin: true
7789 dev: false 4346
4347 /mkdirp@3.0.1:
4348 resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==}
4349 engines: {node: '>=10'}
4350 hasBin: true
7790 4351
7791 /moment@2.30.1: 4352 /moment@2.30.1:
7792 resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} 4353 resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==}
7793 dev: false 4354 dev: false
7794 4355
7795 /mrm-core@7.1.13:
7796 resolution: {integrity: sha512-+AlsNuryLYw9HWqf+HBcNXULiwBEfcmb2VDccvYyg71x25bC8nJOn0YJA13x1PUUEF0aEbc5RTfqa6weMtRHaw==}
7797 engines: {node: '>=10.13'}
7798 dependencies:
7799 babel-code-frame: 6.26.0
7800 comment-json: 2.4.2
7801 detect-indent: 6.1.0
7802 editorconfig: 0.15.3
7803 find-up: 4.1.0
7804 fs-extra: 8.1.0
7805 kleur: 3.0.3
7806 listify: 1.0.3
7807 lodash: 4.17.21
7808 minimist: 1.2.8
7809 prop-ini: 0.0.2
7810 rc: 1.2.8
7811 readme-badger: 0.3.0
7812 semver: 6.3.1
7813 smpltmpl: 1.0.2
7814 split-lines: 2.1.0
7815 strip-bom: 4.0.0
7816 validate-npm-package-name: 3.0.0
7817 webpack-merge: 4.2.2
7818 yaml: 2.3.2
7819 dev: true
7820
7821 /ms@2.0.0: 4356 /ms@2.0.0:
7822 resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 4357 resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
4358 dev: false
7823 4359
7824 /ms@2.1.2: 4360 /ms@2.1.2:
7825 resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 4361 resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
@@ -7827,27 +4363,6 @@ packages:
7827 /ms@2.1.3: 4363 /ms@2.1.3:
7828 resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 4364 resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
7829 4365
7830 /multi-part-lite@1.0.0:
7831 resolution: {integrity: sha512-KxIRbBZZ45hoKX1ROD/19wJr0ql1bef1rE8Y1PCwD3PuNXV42pp7Wo8lEHYuAajoT4vfAFcd3rPjlkyEEyt1nw==}
7832 engines: {node: '>=8.3.0'}
7833 dev: false
7834
7835 /multi-part@3.0.0:
7836 resolution: {integrity: sha512-pDbdYQ6DLDxAsD83w9R7r7rlW56cETL7hIB5bCWX7FJYw0K+kL5JwHr0I8tRk9lGeFcAzf+2OEzXWlG/4wCnFw==}
7837 engines: {node: '>=8.3.0'}
7838 dependencies:
7839 mime-kind: 3.0.0
7840 multi-part-lite: 1.0.0
7841 dev: false
7842
7843 /multicast-dns@7.2.5:
7844 resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==}
7845 hasBin: true
7846 dependencies:
7847 dns-packet: 5.6.1
7848 thunky: 1.1.0
7849 dev: true
7850
7851 /mustache@4.2.0: 4366 /mustache@4.2.0:
7852 resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} 4367 resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==}
7853 hasBin: true 4368 hasBin: true
@@ -7862,34 +4377,15 @@ packages:
7862 sqlstring: 2.3.1 4377 sqlstring: 2.3.1
7863 dev: false 4378 dev: false
7864 4379
7865 /nanoid@3.3.6: 4380 /nanoid@3.3.7:
7866 resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 4381 resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
7867 engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 4382 engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
7868 hasBin: true 4383 hasBin: true
7869 dev: true 4384 dev: true
7870 4385
7871 /nanomatch@1.2.13: 4386 /napi-build-utils@1.0.2:
7872 resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} 4387 resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==}
7873 engines: {node: '>=0.10.0'} 4388 dev: false
7874 dependencies:
7875 arr-diff: 4.0.0
7876 array-unique: 0.3.2
7877 define-property: 2.0.2
7878 extend-shallow: 3.0.2
7879 fragment-cache: 0.2.1
7880 is-windows: 1.0.2
7881 kind-of: 6.0.3
7882 object.pick: 1.3.0
7883 regex-not: 1.0.2
7884 snapdragon: 0.8.2
7885 to-regex: 3.0.2
7886 transitivePeerDependencies:
7887 - supports-color
7888 dev: true
7889
7890 /natural-compare-lite@1.4.0:
7891 resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
7892 dev: true
7893 4389
7894 /natural-compare@1.4.0: 4390 /natural-compare@1.4.0:
7895 resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 4391 resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
@@ -7899,33 +4395,20 @@ packages:
7899 resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} 4395 resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
7900 engines: {node: '>= 0.6'} 4396 engines: {node: '>= 0.6'}
7901 4397
7902 /neo-async@2.6.2: 4398 /node-abi@3.54.0:
7903 resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} 4399 resolution: {integrity: sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==}
7904 dev: true 4400 engines: {node: '>=10'}
7905
7906 /nested-error-stacks@2.1.1:
7907 resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==}
7908 dev: true
7909
7910 /no-case@3.0.4:
7911 resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
7912 dependencies: 4401 dependencies:
7913 lower-case: 2.0.2 4402 semver: 7.6.0
7914 tslib: 2.6.2
7915
7916 /node-addon-api@4.3.0:
7917 resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==}
7918 dev: false 4403 dev: false
7919 4404
7920 /node-addon-api@5.1.0: 4405 /node-addon-api@5.1.0:
7921 resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} 4406 resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==}
7922 dev: false
7923 4407
7924 /node-emoji@1.11.0: 4408 /node-addon-api@7.1.0:
7925 resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} 4409 resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==}
7926 dependencies: 4410 engines: {node: ^16 || ^18 || >= 20}
7927 lodash: 4.17.21 4411 dev: false
7928 dev: true
7929 4412
7930 /node-fetch@2.7.0: 4413 /node-fetch@2.7.0:
7931 resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} 4414 resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
@@ -7937,12 +4420,6 @@ packages:
7937 optional: true 4420 optional: true
7938 dependencies: 4421 dependencies:
7939 whatwg-url: 5.0.0 4422 whatwg-url: 5.0.0
7940 dev: false
7941
7942 /node-forge@1.3.1:
7943 resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
7944 engines: {node: '>= 6.13.0'}
7945 dev: true
7946 4423
7947 /node-gyp@8.4.1: 4424 /node-gyp@8.4.1:
7948 resolution: {integrity: sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==} 4425 resolution: {integrity: sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==}
@@ -7966,26 +4443,12 @@ packages:
7966 dev: false 4443 dev: false
7967 optional: true 4444 optional: true
7968 4445
7969 /node-releases@2.0.13:
7970 resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
7971 dev: true
7972
7973 /node-releases@2.0.14: 4446 /node-releases@2.0.14:
7974 resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} 4447 resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
7975 dev: true 4448 dev: true
7976 4449
7977 /node-repl-await@0.1.2: 4450 /nodemailer@6.9.9:
7978 resolution: {integrity: sha512-e03zlI31RjF6Ks9+/ju0gY55dZSm21XXMSzy85FGZtDxuAZCa/iQwzWoQjmZvaolQCrIjzs0e4shxZs1bxbpUg==} 4451 resolution: {integrity: sha512-dexTll8zqQoVJEZPwQAKzxxtFn0qTnjdQTchoU6Re9BUUGBJiOy3YMn/0ShTW6J5M0dfQ1NeDeRTTl4oIWgQMA==}
7979 dependencies:
7980 acorn: 8.10.0
7981 acorn-class-fields: 1.0.0(acorn@8.10.0)
7982 acorn-private-methods: 1.0.0(acorn@8.10.0)
7983 acorn-static-class-features: 1.0.0(acorn@8.10.0)
7984 acorn-walk: 8.2.0
7985 dev: false
7986
7987 /nodemailer@6.9.5:
7988 resolution: {integrity: sha512-/dmdWo62XjumuLc5+AYQZeiRj+PRR8y8qKtFCOyuOl1k/hckZd8durUUHs/ucKx6/8kN+wFxqKJlQ/LK/qR5FA==}
7989 engines: {node: '>=6.0.0'} 4452 engines: {node: '>=6.0.0'}
7990 dev: false 4453 dev: false
7991 4454
@@ -7995,7 +4458,6 @@ packages:
7995 hasBin: true 4458 hasBin: true
7996 dependencies: 4459 dependencies:
7997 abbrev: 1.1.1 4460 abbrev: 1.1.1
7998 dev: false
7999 4461
8000 /normalize-package-data@2.5.0: 4462 /normalize-package-data@2.5.0:
8001 resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} 4463 resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
@@ -8009,18 +4471,17 @@ packages:
8009 /normalize-path@3.0.0: 4471 /normalize-path@3.0.0:
8010 resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 4472 resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
8011 engines: {node: '>=0.10.0'} 4473 engines: {node: '>=0.10.0'}
8012 dev: true
8013 4474
8014 /normalize-url@6.1.0: 4475 /normalize-url@8.0.0:
8015 resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} 4476 resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==}
8016 engines: {node: '>=10'} 4477 engines: {node: '>=14.16'}
4478 dev: false
8017 4479
8018 /npm-run-path@4.0.1: 4480 /npm-run-path@5.2.0:
8019 resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 4481 resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==}
8020 engines: {node: '>=8'} 4482 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
8021 dependencies: 4483 dependencies:
8022 path-key: 3.1.1 4484 path-key: 4.0.0
8023 dev: true
8024 4485
8025 /npmlog@5.0.1: 4486 /npmlog@5.0.1:
8026 resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} 4487 resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==}
@@ -8029,7 +4490,6 @@ packages:
8029 console-control-strings: 1.1.0 4490 console-control-strings: 1.1.0
8030 gauge: 3.0.2 4491 gauge: 3.0.2
8031 set-blocking: 2.0.0 4492 set-blocking: 2.0.0
8032 dev: false
8033 4493
8034 /npmlog@6.0.2: 4494 /npmlog@6.0.2:
8035 resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} 4495 resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==}
@@ -8043,25 +4503,10 @@ packages:
8043 dev: false 4503 dev: false
8044 optional: true 4504 optional: true
8045 4505
8046 /nth-check@2.1.1:
8047 resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
8048 dependencies:
8049 boolbase: 1.0.0
8050 dev: true
8051
8052 /object-assign@4.1.1: 4506 /object-assign@4.1.1:
8053 resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 4507 resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
8054 engines: {node: '>=0.10.0'} 4508 engines: {node: '>=0.10.0'}
8055 4509
8056 /object-copy@0.1.0:
8057 resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==}
8058 engines: {node: '>=0.10.0'}
8059 dependencies:
8060 copy-descriptor: 0.1.1
8061 define-property: 0.2.5
8062 kind-of: 3.2.2
8063 dev: true
8064
8065 /object-inspect@1.12.3: 4510 /object-inspect@1.12.3:
8066 resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} 4511 resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
8067 4512
@@ -8070,13 +4515,6 @@ packages:
8070 engines: {node: '>= 0.4'} 4515 engines: {node: '>= 0.4'}
8071 dev: true 4516 dev: true
8072 4517
8073 /object-visit@1.0.1:
8074 resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==}
8075 engines: {node: '>=0.10.0'}
8076 dependencies:
8077 isobject: 3.0.1
8078 dev: true
8079
8080 /object.assign@4.1.4: 4518 /object.assign@4.1.4:
8081 resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} 4519 resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==}
8082 engines: {node: '>= 0.4'} 4520 engines: {node: '>= 0.4'}
@@ -8105,13 +4543,6 @@ packages:
8105 get-intrinsic: 1.2.1 4543 get-intrinsic: 1.2.1
8106 dev: true 4544 dev: true
8107 4545
8108 /object.pick@1.3.0:
8109 resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==}
8110 engines: {node: '>=0.10.0'}
8111 dependencies:
8112 isobject: 3.0.1
8113 dev: true
8114
8115 /object.values@1.1.7: 4546 /object.values@1.1.7:
8116 resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} 4547 resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==}
8117 engines: {node: '>= 0.4'} 4548 engines: {node: '>= 0.4'}
@@ -8121,10 +4552,6 @@ packages:
8121 es-abstract: 1.22.2 4552 es-abstract: 1.22.2
8122 dev: true 4553 dev: true
8123 4554
8124 /obuf@1.1.2:
8125 resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==}
8126 dev: true
8127
8128 /on-exit-leak-free@2.1.0: 4555 /on-exit-leak-free@2.1.0:
8129 resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} 4556 resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==}
8130 4557
@@ -8134,11 +4561,6 @@ packages:
8134 dependencies: 4561 dependencies:
8135 ee-first: 1.1.1 4562 ee-first: 1.1.1
8136 4563
8137 /on-headers@1.0.2:
8138 resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==}
8139 engines: {node: '>= 0.8'}
8140 dev: true
8141
8142 /once@1.4.0: 4564 /once@1.4.0:
8143 resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 4565 resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
8144 dependencies: 4566 dependencies:
@@ -8150,31 +4572,11 @@ packages:
8150 dependencies: 4572 dependencies:
8151 mimic-fn: 2.1.0 4573 mimic-fn: 2.1.0
8152 4574
8153 /open@8.4.2: 4575 /onetime@6.0.0:
8154 resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} 4576 resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
8155 engines: {node: '>=12'} 4577 engines: {node: '>=12'}
8156 dependencies: 4578 dependencies:
8157 define-lazy-prop: 2.0.0 4579 mimic-fn: 4.0.0
8158 is-docker: 2.2.1
8159 is-wsl: 2.2.0
8160 dev: true
8161
8162 /openapi-schema-validator@3.0.3:
8163 resolution: {integrity: sha512-KKpeNEvAmpy6B2JCfyrM4yWjL6vggDCVbBoR8Yfkj0Jltc6PCW+dBbcg+1yrTCuDv80qBQJ6w0ejA71DlOFegA==}
8164 dependencies:
8165 ajv: 6.12.6
8166 lodash.merge: 4.6.2
8167 openapi-types: 1.3.4
8168 swagger-schema-official: 2.0.0-bab6bed
8169 dev: true
8170
8171 /openapi-types@1.3.4:
8172 resolution: {integrity: sha512-h8rADpW3k/wepLdERKF0VKMAPdoFYNQCLGPmc/f8sgQ2dxUy+7sY4WAX2XDUDjhKTjbJVbxxofLkzy7f1/tE4g==}
8173 dev: true
8174
8175 /openapi-types@12.1.3:
8176 resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==}
8177 dev: true
8178 4580
8179 /optionator@0.9.3: 4581 /optionator@0.9.3:
8180 resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} 4582 resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
@@ -8188,41 +4590,22 @@ packages:
8188 type-check: 0.4.0 4590 type-check: 0.4.0
8189 dev: true 4591 dev: true
8190 4592
8191 /p-all@2.1.0: 4593 /p-cancelable@4.0.1:
8192 resolution: {integrity: sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA==} 4594 resolution: {integrity: sha512-wBowNApzd45EIKdO1LaU+LrMBwAcjfPaYtVzV3lmfM3gf8Z4CHZsiIqlM8TZZ8okYvh5A1cP6gTfCRQtwUpaUg==}
8193 engines: {node: '>=6'} 4595 engines: {node: '>=14.16'}
8194 dependencies:
8195 p-map: 2.1.0
8196 dev: true
8197
8198 /p-cancelable@2.1.1:
8199 resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==}
8200 engines: {node: '>=8'}
8201 dev: false 4596 dev: false
8202 4597
8203 /p-defer@1.0.0: 4598 /p-event@6.0.0:
8204 resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} 4599 resolution: {integrity: sha512-Xbfxd0CfZmHLGKXH32k1JKjQYX6Rkv0UtQdaFJ8OyNcf+c0oWCeXHc1C4CX/IESZLmcvfPa5aFIO/vCr5gqtag==}
8205 engines: {node: '>=4'} 4600 engines: {node: '>=16.17'}
8206 dev: true
8207
8208 /p-event@4.2.0:
8209 resolution: {integrity: sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==}
8210 engines: {node: '>=8'}
8211 dependencies: 4601 dependencies:
8212 p-timeout: 3.2.0 4602 p-timeout: 6.1.2
8213 dev: true
8214 4603
8215 /p-filter@2.1.0: 4604 /p-filter@3.0.0:
8216 resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} 4605 resolution: {integrity: sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==}
8217 engines: {node: '>=8'} 4606 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
8218 dependencies: 4607 dependencies:
8219 p-map: 2.1.0 4608 p-map: 5.5.0
8220 dev: true
8221
8222 /p-finally@1.0.0:
8223 resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
8224 engines: {node: '>=4'}
8225 dev: true
8226 4609
8227 /p-limit@2.3.0: 4610 /p-limit@2.3.0:
8228 resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 4611 resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
@@ -8243,14 +4626,6 @@ packages:
8243 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 4626 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
8244 dependencies: 4627 dependencies:
8245 yocto-queue: 1.0.0 4628 yocto-queue: 1.0.0
8246 dev: true
8247
8248 /p-locate@3.0.0:
8249 resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==}
8250 engines: {node: '>=6'}
8251 dependencies:
8252 p-limit: 2.3.0
8253 dev: true
8254 4629
8255 /p-locate@4.1.0: 4630 /p-locate@4.1.0:
8256 resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 4631 resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
@@ -8271,19 +4646,6 @@ packages:
8271 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 4646 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
8272 dependencies: 4647 dependencies:
8273 p-limit: 4.0.0 4648 p-limit: 4.0.0
8274 dev: true
8275
8276 /p-map@2.1.0:
8277 resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==}
8278 engines: {node: '>=6'}
8279 dev: true
8280
8281 /p-map@3.0.0:
8282 resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==}
8283 engines: {node: '>=8'}
8284 dependencies:
8285 aggregate-error: 3.1.0
8286 dev: true
8287 4649
8288 /p-map@4.0.0: 4650 /p-map@4.0.0:
8289 resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} 4651 resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
@@ -8294,20 +4656,19 @@ packages:
8294 dev: false 4656 dev: false
8295 optional: true 4657 optional: true
8296 4658
8297 /p-retry@4.6.2: 4659 /p-map@5.5.0:
8298 resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} 4660 resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==}
8299 engines: {node: '>=8'} 4661 engines: {node: '>=12'}
8300 dependencies: 4662 dependencies:
8301 '@types/retry': 0.12.0 4663 aggregate-error: 4.0.1
8302 retry: 0.13.1
8303 dev: true
8304 4664
8305 /p-timeout@3.2.0: 4665 /p-map@6.0.0:
8306 resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} 4666 resolution: {integrity: sha512-T8BatKGY+k5rU+Q/GTYgrEf2r4xRMevAN5mtXc2aPc4rS1j3s+vWTaO2Wag94neXuCAUAs8cxBL9EeB5EA6diw==}
8307 engines: {node: '>=8'} 4667 engines: {node: '>=16'}
8308 dependencies: 4668
8309 p-finally: 1.0.0 4669 /p-timeout@6.1.2:
8310 dev: true 4670 resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==}
4671 engines: {node: '>=14.16'}
8311 4672
8312 /p-try@2.2.0: 4673 /p-try@2.2.0:
8313 resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 4674 resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
@@ -8318,12 +4679,6 @@ packages:
8318 resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} 4679 resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==}
8319 dev: false 4680 dev: false
8320 4681
8321 /param-case@3.0.4:
8322 resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==}
8323 dependencies:
8324 dot-case: 3.0.4
8325 tslib: 2.6.2
8326
8327 /parent-module@1.0.1: 4682 /parent-module@1.0.1:
8328 resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 4683 resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
8329 engines: {node: '>=6'} 4684 engines: {node: '>=6'}
@@ -8331,20 +4686,12 @@ packages:
8331 callsites: 3.1.0 4686 callsites: 3.1.0
8332 dev: true 4687 dev: true
8333 4688
8334 /parent-module@2.0.0: 4689 /parse-imports@1.1.2:
8335 resolution: {integrity: sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==} 4690 resolution: {integrity: sha512-UgTSNWlBvx+f4nxVSH3fOyJPJKol8GkFuG8mN8q9FqtmJgwaEx0azPRlXXX0klNlRxoP2gwme00TPDSm6rm/IA==}
8336 engines: {node: '>=8'} 4691 engines: {node: '>= 12.17'}
8337 dependencies: 4692 dependencies:
8338 callsites: 3.1.0 4693 es-module-lexer: 1.3.1
8339 dev: true 4694 slashes: 3.0.12
8340
8341 /parse-imports@0.0.5:
8342 resolution: {integrity: sha512-yA6mDNotJmyAXcEdi2AjiHfI8Llk+/uv/jgBgvzFVP8iGaHC5L3rR6VQk/1qEE3SvLUsDQ2GdQMfPTi0qrmt8Q==}
8343 engines: {node: '>= 10'}
8344 dependencies:
8345 es-module-lexer: 0.3.26
8346 slashes: 2.0.2
8347 dev: false
8348 4695
8349 /parse-json@5.2.0: 4696 /parse-json@5.2.0:
8350 resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 4697 resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
@@ -8359,36 +4706,10 @@ packages:
8359 /parseurl@1.3.3: 4706 /parseurl@1.3.3:
8360 resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 4707 resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
8361 engines: {node: '>= 0.8'} 4708 engines: {node: '>= 0.8'}
8362 4709 dev: false
8363 /pascal-case@3.1.2:
8364 resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
8365 dependencies:
8366 no-case: 3.0.4
8367 tslib: 2.6.2
8368
8369 /pascalcase@0.1.1:
8370 resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==}
8371 engines: {node: '>=0.10.0'}
8372 dev: true
8373 4710
8374 /path-browserify@1.0.1: 4711 /path-browserify@1.0.1:
8375 resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} 4712 resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
8376 dev: false
8377
8378 /path-case@3.0.4:
8379 resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==}
8380 dependencies:
8381 dot-case: 3.0.4
8382 tslib: 2.6.2
8383
8384 /path-dirname@1.0.2:
8385 resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==}
8386 dev: true
8387
8388 /path-exists@3.0.0:
8389 resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==}
8390 engines: {node: '>=4'}
8391 dev: true
8392 4713
8393 /path-exists@4.0.0: 4714 /path-exists@4.0.0:
8394 resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 4715 resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
@@ -8398,48 +4719,30 @@ packages:
8398 /path-exists@5.0.0: 4719 /path-exists@5.0.0:
8399 resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} 4720 resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==}
8400 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 4721 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
8401 dev: true
8402 4722
8403 /path-is-absolute@1.0.1: 4723 /path-is-absolute@1.0.1:
8404 resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 4724 resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
8405 engines: {node: '>=0.10.0'} 4725 engines: {node: '>=0.10.0'}
8406 requiresBuild: true 4726 requiresBuild: true
8407 4727
8408 /path-is-inside@1.0.2:
8409 resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==}
8410 dev: true
8411
8412 /path-key@3.1.1: 4728 /path-key@3.1.1:
8413 resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 4729 resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
8414 engines: {node: '>=8'} 4730 engines: {node: '>=8'}
8415 dev: true 4731
4732 /path-key@4.0.0:
4733 resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
4734 engines: {node: '>=12'}
8416 4735
8417 /path-parse@1.0.7: 4736 /path-parse@1.0.7:
8418 resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 4737 resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
8419 4738
8420 /path-to-regexp@0.1.7:
8421 resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
8422 dev: true
8423
8424 /path-type@3.0.0:
8425 resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==}
8426 engines: {node: '>=4'}
8427 dependencies:
8428 pify: 3.0.0
8429 dev: true
8430
8431 /path-type@4.0.0: 4739 /path-type@4.0.0:
8432 resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 4740 resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
8433 engines: {node: '>=8'} 4741 engines: {node: '>=8'}
8434 dev: true
8435
8436 /pathval@1.1.1:
8437 resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
8438 dev: true
8439 4742
8440 /peek-readable@4.1.0: 4743 /peek-readable@5.0.0:
8441 resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==} 4744 resolution: {integrity: sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==}
8442 engines: {node: '>=8'} 4745 engines: {node: '>=14.16'}
8443 4746
8444 /pg-cloudflare@1.1.1: 4747 /pg-cloudflare@1.1.1:
8445 resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} 4748 resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==}
@@ -8447,10 +4750,6 @@ packages:
8447 dev: false 4750 dev: false
8448 optional: true 4751 optional: true
8449 4752
8450 /pg-connection-string@2.6.1:
8451 resolution: {integrity: sha512-w6ZzNu6oMmIzEAYVw+RLK0+nqHPt8K3ZnknKi+g48Ak2pr3dtljJW3o+D/n2zzCG07Zoe9VOX3aiKpj+BN0pjg==}
8452 dev: false
8453
8454 /pg-connection-string@2.6.2: 4753 /pg-connection-string@2.6.2:
8455 resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==} 4754 resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==}
8456 dev: false 4755 dev: false
@@ -8509,19 +4808,6 @@ packages:
8509 split2: 4.2.0 4808 split2: 4.2.0
8510 dev: false 4809 dev: false
8511 4810
8512 /phc-bcrypt@1.0.8:
8513 resolution: {integrity: sha512-k2Q1J+K4KOf47Uee7fqGFiu1nWKCqd17ks44U/WUHOZ4UvR2iRvkPpZtMQBLGbD82Ows/s+DiNhAMBOj7jPnrQ==}
8514 engines: {node: '>=12'}
8515 dependencies:
8516 '@kdf/salt': 2.0.1
8517 '@phc/format': 1.0.0
8518 bcrypt: 5.1.1
8519 tsse: 2.1.0
8520 transitivePeerDependencies:
8521 - encoding
8522 - supports-color
8523 dev: false
8524
8525 /picocolors@1.0.0: 4811 /picocolors@1.0.0:
8526 resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 4812 resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
8527 dev: true 4813 dev: true
@@ -8530,32 +4816,9 @@ packages:
8530 resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 4816 resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
8531 engines: {node: '>=8.6'} 4817 engines: {node: '>=8.6'}
8532 4818
8533 /pify@2.3.0: 4819 /picomatch@3.0.1:
8534 resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 4820 resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==}
8535 engines: {node: '>=0.10.0'} 4821 engines: {node: '>=10'}
8536 dev: true
8537
8538 /pify@3.0.0:
8539 resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
8540 engines: {node: '>=4'}
8541 dev: true
8542
8543 /pify@4.0.1:
8544 resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
8545 engines: {node: '>=6'}
8546 dev: true
8547
8548 /pinkie-promise@2.0.1:
8549 resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==}
8550 engines: {node: '>=0.10.0'}
8551 dependencies:
8552 pinkie: 2.0.4
8553 dev: true
8554
8555 /pinkie@2.0.4:
8556 resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==}
8557 engines: {node: '>=0.10.0'}
8558 dev: true
8559 4822
8560 /pino-abstract-transport@1.1.0: 4823 /pino-abstract-transport@1.1.0:
8561 resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==} 4824 resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==}
@@ -8563,418 +4826,40 @@ packages:
8563 readable-stream: 4.4.2 4826 readable-stream: 4.4.2
8564 split2: 4.2.0 4827 split2: 4.2.0
8565 4828
8566 /pino-pretty@10.3.1:
8567 resolution: {integrity: sha512-az8JbIYeN/1iLj2t0jR9DV48/LQ3RC6hZPpapKPkb84Q+yTidMCpgWxIT3N0flnBDilyBQ1luWNpOeJptjdp/g==}
8568 hasBin: true
8569 dependencies:
8570 colorette: 2.0.20
8571 dateformat: 4.6.3
8572 fast-copy: 3.0.1
8573 fast-safe-stringify: 2.1.1
8574 help-me: 5.0.0
8575 joycon: 3.1.1
8576 minimist: 1.2.8
8577 on-exit-leak-free: 2.1.0
8578 pino-abstract-transport: 1.1.0
8579 pump: 3.0.0
8580 readable-stream: 4.4.2
8581 secure-json-parse: 2.7.0
8582 sonic-boom: 3.4.0
8583 strip-json-comments: 3.1.1
8584
8585 /pino-std-serializers@3.2.0:
8586 resolution: {integrity: sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==}
8587
8588 /pino-std-serializers@6.2.2: 4829 /pino-std-serializers@6.2.2:
8589 resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} 4830 resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==}
8590 4831
8591 /pino@6.14.0: 4832 /pino@8.18.0:
8592 resolution: {integrity: sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg==} 4833 resolution: {integrity: sha512-Mz/gKiRyuXu4HnpHgi1YWdHQCoWMufapzooisvFn78zl4dZciAxS+YeRkUxXl1ee/SzU80YCz1zpECCh4oC6Aw==}
8593 hasBin: true 4834 hasBin: true
8594 dependencies: 4835 dependencies:
4836 atomic-sleep: 1.0.0
8595 fast-redact: 3.3.0 4837 fast-redact: 3.3.0
8596 fast-safe-stringify: 2.1.1 4838 on-exit-leak-free: 2.1.0
8597 flatstr: 1.0.12 4839 pino-abstract-transport: 1.1.0
8598 pino-std-serializers: 3.2.0 4840 pino-std-serializers: 6.2.2
8599 process-warning: 1.0.0 4841 process-warning: 3.0.0
8600 quick-format-unescaped: 4.0.4 4842 quick-format-unescaped: 4.0.4
8601 sonic-boom: 1.4.1 4843 real-require: 0.2.0
8602 4844 safe-stable-stringify: 2.4.3
8603 /pirates@4.0.6: 4845 sonic-boom: 3.8.0
8604 resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 4846 thread-stream: 2.4.1
8605 engines: {node: '>= 6'}
8606 dev: true
8607
8608 /pkg-dir@4.2.0:
8609 resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
8610 engines: {node: '>=8'}
8611 dependencies:
8612 find-up: 4.1.0
8613 dev: true
8614 4847
8615 /pkg-dir@7.0.0: 4848 /pkg-dir@7.0.0:
8616 resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} 4849 resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==}
8617 engines: {node: '>=14.16'} 4850 engines: {node: '>=14.16'}
8618 dependencies: 4851 dependencies:
8619 find-up: 6.3.0 4852 find-up: 6.3.0
8620 dev: true
8621
8622 /pkg-up@3.1.0:
8623 resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==}
8624 engines: {node: '>=8'}
8625 dependencies:
8626 find-up: 3.0.0
8627 dev: true
8628 4853
8629 /pluralize@8.0.0: 4854 /pluralize@8.0.0:
8630 resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} 4855 resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
8631 engines: {node: '>=4'} 4856 engines: {node: '>=4'}
8632 4857
8633 /posix-character-classes@0.1.1: 4858 /postcss@8.4.35:
8634 resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} 4859 resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==}
8635 engines: {node: '>=0.10.0'}
8636 dev: true
8637
8638 /postcss-calc@9.0.1(postcss@8.4.31):
8639 resolution: {integrity: sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==}
8640 engines: {node: ^14 || ^16 || >=18.0}
8641 peerDependencies:
8642 postcss: ^8.2.2
8643 dependencies:
8644 postcss: 8.4.31
8645 postcss-selector-parser: 6.0.13
8646 postcss-value-parser: 4.2.0
8647 dev: true
8648
8649 /postcss-colormin@6.0.0(postcss@8.4.31):
8650 resolution: {integrity: sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw==}
8651 engines: {node: ^14 || ^16 || >=18.0}
8652 peerDependencies:
8653 postcss: ^8.2.15
8654 dependencies:
8655 browserslist: 4.22.1
8656 caniuse-api: 3.0.0
8657 colord: 2.9.3
8658 postcss: 8.4.31
8659 postcss-value-parser: 4.2.0
8660 dev: true
8661
8662 /postcss-convert-values@6.0.0(postcss@8.4.31):
8663 resolution: {integrity: sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw==}
8664 engines: {node: ^14 || ^16 || >=18.0}
8665 peerDependencies:
8666 postcss: ^8.2.15
8667 dependencies:
8668 browserslist: 4.22.1
8669 postcss: 8.4.31
8670 postcss-value-parser: 4.2.0
8671 dev: true
8672
8673 /postcss-discard-comments@6.0.0(postcss@8.4.31):
8674 resolution: {integrity: sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw==}
8675 engines: {node: ^14 || ^16 || >=18.0}
8676 peerDependencies:
8677 postcss: ^8.2.15
8678 dependencies:
8679 postcss: 8.4.31
8680 dev: true
8681
8682 /postcss-discard-duplicates@6.0.0(postcss@8.4.31):
8683 resolution: {integrity: sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA==}
8684 engines: {node: ^14 || ^16 || >=18.0}
8685 peerDependencies:
8686 postcss: ^8.2.15
8687 dependencies:
8688 postcss: 8.4.31
8689 dev: true
8690
8691 /postcss-discard-empty@6.0.0(postcss@8.4.31):
8692 resolution: {integrity: sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ==}
8693 engines: {node: ^14 || ^16 || >=18.0}
8694 peerDependencies:
8695 postcss: ^8.2.15
8696 dependencies:
8697 postcss: 8.4.31
8698 dev: true
8699
8700 /postcss-discard-overridden@6.0.0(postcss@8.4.31):
8701 resolution: {integrity: sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw==}
8702 engines: {node: ^14 || ^16 || >=18.0}
8703 peerDependencies:
8704 postcss: ^8.2.15
8705 dependencies:
8706 postcss: 8.4.31
8707 dev: true
8708
8709 /postcss-merge-longhand@6.0.0(postcss@8.4.31):
8710 resolution: {integrity: sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg==}
8711 engines: {node: ^14 || ^16 || >=18.0}
8712 peerDependencies:
8713 postcss: ^8.2.15
8714 dependencies:
8715 postcss: 8.4.31
8716 postcss-value-parser: 4.2.0
8717 stylehacks: 6.0.0(postcss@8.4.31)
8718 dev: true
8719
8720 /postcss-merge-rules@6.0.1(postcss@8.4.31):
8721 resolution: {integrity: sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw==}
8722 engines: {node: ^14 || ^16 || >=18.0}
8723 peerDependencies:
8724 postcss: ^8.2.15
8725 dependencies:
8726 browserslist: 4.22.1
8727 caniuse-api: 3.0.0
8728 cssnano-utils: 4.0.0(postcss@8.4.31)
8729 postcss: 8.4.31
8730 postcss-selector-parser: 6.0.13
8731 dev: true
8732
8733 /postcss-minify-font-values@6.0.0(postcss@8.4.31):
8734 resolution: {integrity: sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA==}
8735 engines: {node: ^14 || ^16 || >=18.0}
8736 peerDependencies:
8737 postcss: ^8.2.15
8738 dependencies:
8739 postcss: 8.4.31
8740 postcss-value-parser: 4.2.0
8741 dev: true
8742
8743 /postcss-minify-gradients@6.0.0(postcss@8.4.31):
8744 resolution: {integrity: sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA==}
8745 engines: {node: ^14 || ^16 || >=18.0}
8746 peerDependencies:
8747 postcss: ^8.2.15
8748 dependencies:
8749 colord: 2.9.3
8750 cssnano-utils: 4.0.0(postcss@8.4.31)
8751 postcss: 8.4.31
8752 postcss-value-parser: 4.2.0
8753 dev: true
8754
8755 /postcss-minify-params@6.0.0(postcss@8.4.31):
8756 resolution: {integrity: sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ==}
8757 engines: {node: ^14 || ^16 || >=18.0}
8758 peerDependencies:
8759 postcss: ^8.2.15
8760 dependencies:
8761 browserslist: 4.22.1
8762 cssnano-utils: 4.0.0(postcss@8.4.31)
8763 postcss: 8.4.31
8764 postcss-value-parser: 4.2.0
8765 dev: true
8766
8767 /postcss-minify-selectors@6.0.0(postcss@8.4.31):
8768 resolution: {integrity: sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g==}
8769 engines: {node: ^14 || ^16 || >=18.0}
8770 peerDependencies:
8771 postcss: ^8.2.15
8772 dependencies:
8773 postcss: 8.4.31
8774 postcss-selector-parser: 6.0.13
8775 dev: true
8776
8777 /postcss-modules-extract-imports@3.0.0(postcss@8.4.31):
8778 resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==}
8779 engines: {node: ^10 || ^12 || >= 14}
8780 peerDependencies:
8781 postcss: ^8.1.0
8782 dependencies:
8783 postcss: 8.4.31
8784 dev: true
8785
8786 /postcss-modules-local-by-default@4.0.3(postcss@8.4.31):
8787 resolution: {integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==}
8788 engines: {node: ^10 || ^12 || >= 14}
8789 peerDependencies:
8790 postcss: ^8.1.0
8791 dependencies:
8792 icss-utils: 5.1.0(postcss@8.4.31)
8793 postcss: 8.4.31
8794 postcss-selector-parser: 6.0.13
8795 postcss-value-parser: 4.2.0
8796 dev: true
8797
8798 /postcss-modules-scope@3.0.0(postcss@8.4.31):
8799 resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==}
8800 engines: {node: ^10 || ^12 || >= 14}
8801 peerDependencies:
8802 postcss: ^8.1.0
8803 dependencies:
8804 postcss: 8.4.31
8805 postcss-selector-parser: 6.0.13
8806 dev: true
8807
8808 /postcss-modules-values@4.0.0(postcss@8.4.31):
8809 resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==}
8810 engines: {node: ^10 || ^12 || >= 14}
8811 peerDependencies:
8812 postcss: ^8.1.0
8813 dependencies:
8814 icss-utils: 5.1.0(postcss@8.4.31)
8815 postcss: 8.4.31
8816 dev: true
8817
8818 /postcss-normalize-charset@6.0.0(postcss@8.4.31):
8819 resolution: {integrity: sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ==}
8820 engines: {node: ^14 || ^16 || >=18.0}
8821 peerDependencies:
8822 postcss: ^8.2.15
8823 dependencies:
8824 postcss: 8.4.31
8825 dev: true
8826
8827 /postcss-normalize-display-values@6.0.0(postcss@8.4.31):
8828 resolution: {integrity: sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw==}
8829 engines: {node: ^14 || ^16 || >=18.0}
8830 peerDependencies:
8831 postcss: ^8.2.15
8832 dependencies:
8833 postcss: 8.4.31
8834 postcss-value-parser: 4.2.0
8835 dev: true
8836
8837 /postcss-normalize-positions@6.0.0(postcss@8.4.31):
8838 resolution: {integrity: sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg==}
8839 engines: {node: ^14 || ^16 || >=18.0}
8840 peerDependencies:
8841 postcss: ^8.2.15
8842 dependencies:
8843 postcss: 8.4.31
8844 postcss-value-parser: 4.2.0
8845 dev: true
8846
8847 /postcss-normalize-repeat-style@6.0.0(postcss@8.4.31):
8848 resolution: {integrity: sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A==}
8849 engines: {node: ^14 || ^16 || >=18.0}
8850 peerDependencies:
8851 postcss: ^8.2.15
8852 dependencies:
8853 postcss: 8.4.31
8854 postcss-value-parser: 4.2.0
8855 dev: true
8856
8857 /postcss-normalize-string@6.0.0(postcss@8.4.31):
8858 resolution: {integrity: sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w==}
8859 engines: {node: ^14 || ^16 || >=18.0}
8860 peerDependencies:
8861 postcss: ^8.2.15
8862 dependencies:
8863 postcss: 8.4.31
8864 postcss-value-parser: 4.2.0
8865 dev: true
8866
8867 /postcss-normalize-timing-functions@6.0.0(postcss@8.4.31):
8868 resolution: {integrity: sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg==}
8869 engines: {node: ^14 || ^16 || >=18.0}
8870 peerDependencies:
8871 postcss: ^8.2.15
8872 dependencies:
8873 postcss: 8.4.31
8874 postcss-value-parser: 4.2.0
8875 dev: true
8876
8877 /postcss-normalize-unicode@6.0.0(postcss@8.4.31):
8878 resolution: {integrity: sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg==}
8879 engines: {node: ^14 || ^16 || >=18.0}
8880 peerDependencies:
8881 postcss: ^8.2.15
8882 dependencies:
8883 browserslist: 4.22.1
8884 postcss: 8.4.31
8885 postcss-value-parser: 4.2.0
8886 dev: true
8887
8888 /postcss-normalize-url@6.0.0(postcss@8.4.31):
8889 resolution: {integrity: sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw==}
8890 engines: {node: ^14 || ^16 || >=18.0}
8891 peerDependencies:
8892 postcss: ^8.2.15
8893 dependencies:
8894 postcss: 8.4.31
8895 postcss-value-parser: 4.2.0
8896 dev: true
8897
8898 /postcss-normalize-whitespace@6.0.0(postcss@8.4.31):
8899 resolution: {integrity: sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw==}
8900 engines: {node: ^14 || ^16 || >=18.0}
8901 peerDependencies:
8902 postcss: ^8.2.15
8903 dependencies:
8904 postcss: 8.4.31
8905 postcss-value-parser: 4.2.0
8906 dev: true
8907
8908 /postcss-ordered-values@6.0.0(postcss@8.4.31):
8909 resolution: {integrity: sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg==}
8910 engines: {node: ^14 || ^16 || >=18.0}
8911 peerDependencies:
8912 postcss: ^8.2.15
8913 dependencies:
8914 cssnano-utils: 4.0.0(postcss@8.4.31)
8915 postcss: 8.4.31
8916 postcss-value-parser: 4.2.0
8917 dev: true
8918
8919 /postcss-reduce-initial@6.0.0(postcss@8.4.31):
8920 resolution: {integrity: sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA==}
8921 engines: {node: ^14 || ^16 || >=18.0}
8922 peerDependencies:
8923 postcss: ^8.2.15
8924 dependencies:
8925 browserslist: 4.22.1
8926 caniuse-api: 3.0.0
8927 postcss: 8.4.31
8928 dev: true
8929
8930 /postcss-reduce-transforms@6.0.0(postcss@8.4.31):
8931 resolution: {integrity: sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w==}
8932 engines: {node: ^14 || ^16 || >=18.0}
8933 peerDependencies:
8934 postcss: ^8.2.15
8935 dependencies:
8936 postcss: 8.4.31
8937 postcss-value-parser: 4.2.0
8938 dev: true
8939
8940 /postcss-selector-parser@6.0.13:
8941 resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
8942 engines: {node: '>=4'}
8943 dependencies:
8944 cssesc: 3.0.0
8945 util-deprecate: 1.0.2
8946 dev: true
8947
8948 /postcss-svgo@6.0.0(postcss@8.4.31):
8949 resolution: {integrity: sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw==}
8950 engines: {node: ^14 || ^16 || >= 18}
8951 peerDependencies:
8952 postcss: ^8.2.15
8953 dependencies:
8954 postcss: 8.4.31
8955 postcss-value-parser: 4.2.0
8956 svgo: 3.0.2
8957 dev: true
8958
8959 /postcss-unique-selectors@6.0.0(postcss@8.4.31):
8960 resolution: {integrity: sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw==}
8961 engines: {node: ^14 || ^16 || >=18.0}
8962 peerDependencies:
8963 postcss: ^8.2.15
8964 dependencies:
8965 postcss: 8.4.31
8966 postcss-selector-parser: 6.0.13
8967 dev: true
8968
8969 /postcss-value-parser@4.2.0:
8970 resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
8971 dev: true
8972
8973 /postcss@8.4.31:
8974 resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
8975 engines: {node: ^10 || ^12 || >=14} 4860 engines: {node: ^10 || ^12 || >=14}
8976 dependencies: 4861 dependencies:
8977 nanoid: 3.3.6 4862 nanoid: 3.3.7
8978 picocolors: 1.0.0 4863 picocolors: 1.0.0
8979 source-map-js: 1.0.2 4864 source-map-js: 1.0.2
8980 dev: true 4865 dev: true
@@ -9001,6 +4886,25 @@ packages:
9001 xtend: 4.0.2 4886 xtend: 4.0.2
9002 dev: false 4887 dev: false
9003 4888
4889 /prebuild-install@7.1.1:
4890 resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==}
4891 engines: {node: '>=10'}
4892 hasBin: true
4893 dependencies:
4894 detect-libc: 2.0.2
4895 expand-template: 2.0.3
4896 github-from-package: 0.0.0
4897 minimist: 1.2.8
4898 mkdirp-classic: 0.5.3
4899 napi-build-utils: 1.0.2
4900 node-abi: 3.54.0
4901 pump: 3.0.0
4902 rc: 1.2.8
4903 simple-get: 4.0.1
4904 tar-fs: 2.1.1
4905 tunnel-agent: 0.6.0
4906 dev: false
4907
9004 /prelude-ls@1.2.1: 4908 /prelude-ls@1.2.1:
9005 resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 4909 resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
9006 engines: {node: '>= 0.8.0'} 4910 engines: {node: '>= 0.8.0'}
@@ -9019,23 +4923,6 @@ packages:
9019 hasBin: true 4923 hasBin: true
9020 dev: true 4924 dev: true
9021 4925
9022 /pretty-error@4.0.0:
9023 resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==}
9024 dependencies:
9025 lodash: 4.17.21
9026 renderkid: 3.0.0
9027 dev: true
9028
9029 /pretty-format@25.5.0:
9030 resolution: {integrity: sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==}
9031 engines: {node: '>= 8.3'}
9032 dependencies:
9033 '@jest/types': 25.5.0
9034 ansi-regex: 5.0.1
9035 ansi-styles: 4.3.0
9036 react-is: 16.13.1
9037 dev: true
9038
9039 /pretty-format@29.7.0: 4926 /pretty-format@29.7.0:
9040 resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} 4927 resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
9041 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 4928 engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -9043,7 +4930,6 @@ packages:
9043 '@jest/schemas': 29.6.3 4930 '@jest/schemas': 29.6.3
9044 ansi-styles: 5.2.0 4931 ansi-styles: 5.2.0
9045 react-is: 18.2.0 4932 react-is: 18.2.0
9046 dev: true
9047 4933
9048 /pretty-hrtime@1.0.3: 4934 /pretty-hrtime@1.0.3:
9049 resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} 4935 resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==}
@@ -9051,13 +4937,13 @@ packages:
9051 4937
9052 /printable-characters@1.0.42: 4938 /printable-characters@1.0.42:
9053 resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} 4939 resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==}
9054 dev: true
9055 4940
9056 /process-nextick-args@2.0.1: 4941 /process-nextick-args@2.0.1:
9057 resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} 4942 resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
4943 dev: false
9058 4944
9059 /process-warning@1.0.0: 4945 /process-warning@3.0.0:
9060 resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} 4946 resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==}
9061 4947
9062 /process@0.11.10: 4948 /process@0.11.10:
9063 resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} 4949 resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
@@ -9084,11 +4970,8 @@ packages:
9084 dev: false 4970 dev: false
9085 optional: true 4971 optional: true
9086 4972
9087 /prop-ini@0.0.2: 4973 /property-information@6.4.1:
9088 resolution: {integrity: sha512-qyU57WvAvZDbzmRy9xDbJGVwrGJhmA+rYnVjy4xtX4Ny9c7gzvpmf/j7A3oq9ChbPh15MZQKjPep2mNdnAhtig==} 4974 resolution: {integrity: sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==}
9089 dependencies:
9090 extend: 3.0.2
9091 dev: true
9092 4975
9093 /proxy-addr@2.0.7: 4976 /proxy-addr@2.0.7:
9094 resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 4977 resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
@@ -9097,10 +4980,6 @@ packages:
9097 forwarded: 0.2.0 4980 forwarded: 0.2.0
9098 ipaddr.js: 1.9.1 4981 ipaddr.js: 1.9.1
9099 4982
9100 /pseudomap@1.0.2:
9101 resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==}
9102 dev: true
9103
9104 /pump@1.0.3: 4983 /pump@1.0.3:
9105 resolution: {integrity: sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==} 4984 resolution: {integrity: sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==}
9106 dependencies: 4985 dependencies:
@@ -9113,9 +4992,6 @@ packages:
9113 dependencies: 4992 dependencies:
9114 end-of-stream: 1.4.4 4993 end-of-stream: 1.4.4
9115 once: 1.4.0 4994 once: 1.4.0
9116
9117 /punycode@1.3.2:
9118 resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==}
9119 dev: false 4995 dev: false
9120 4996
9121 /punycode@2.3.0: 4997 /punycode@2.3.0:
@@ -9123,25 +4999,12 @@ packages:
9123 engines: {node: '>=6'} 4999 engines: {node: '>=6'}
9124 dev: true 5000 dev: true
9125 5001
9126 /qs@6.11.0:
9127 resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==}
9128 engines: {node: '>=0.6'}
9129 dependencies:
9130 side-channel: 1.0.4
9131 dev: true
9132
9133 /qs@6.11.2: 5002 /qs@6.11.2:
9134 resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} 5003 resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==}
9135 engines: {node: '>=0.6'} 5004 engines: {node: '>=0.6'}
9136 dependencies: 5005 dependencies:
9137 side-channel: 1.0.4 5006 side-channel: 1.0.4
9138 5007
9139 /querystring@0.2.0:
9140 resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==}
9141 engines: {node: '>=0.4.x'}
9142 deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
9143 dev: false
9144
9145 /queue-microtask@1.2.3: 5008 /queue-microtask@1.2.3:
9146 resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 5009 resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
9147 5010
@@ -9162,25 +5025,10 @@ packages:
9162 resolution: {integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==} 5025 resolution: {integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==}
9163 engines: {node: '>= 0.8'} 5026 engines: {node: '>= 0.8'}
9164 5027
9165 /randombytes@2.1.0:
9166 resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
9167 dependencies:
9168 safe-buffer: 5.2.1
9169 dev: true
9170
9171 /range-parser@1.2.1: 5028 /range-parser@1.2.1:
9172 resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 5029 resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
9173 engines: {node: '>= 0.6'} 5030 engines: {node: '>= 0.6'}
9174 5031 dev: false
9175 /raw-body@2.5.1:
9176 resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==}
9177 engines: {node: '>= 0.8'}
9178 dependencies:
9179 bytes: 3.1.2
9180 http-errors: 2.0.0
9181 iconv-lite: 0.4.24
9182 unpipe: 1.0.0
9183 dev: true
9184 5032
9185 /raw-body@2.5.2: 5033 /raw-body@2.5.2:
9186 resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} 5034 resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
@@ -9199,15 +5047,10 @@ packages:
9199 ini: 1.3.8 5047 ini: 1.3.8
9200 minimist: 1.2.8 5048 minimist: 1.2.8
9201 strip-json-comments: 2.0.1 5049 strip-json-comments: 2.0.1
9202 dev: true 5050 dev: false
9203
9204 /react-is@16.13.1:
9205 resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
9206 dev: true
9207 5051
9208 /react-is@18.2.0: 5052 /react-is@18.2.0:
9209 resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} 5053 resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
9210 dev: true
9211 5054
9212 /read-pkg-up@7.0.1: 5055 /read-pkg-up@7.0.1:
9213 resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} 5056 resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
@@ -9250,6 +5093,7 @@ packages:
9250 safe-buffer: 5.1.2 5093 safe-buffer: 5.1.2
9251 string_decoder: 1.1.1 5094 string_decoder: 1.1.1
9252 util-deprecate: 1.0.2 5095 util-deprecate: 1.0.2
5096 dev: false
9253 5097
9254 /readable-stream@3.6.2: 5098 /readable-stream@3.6.2:
9255 resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} 5099 resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
@@ -9280,62 +5124,21 @@ packages:
9280 engines: {node: '>=8.10.0'} 5124 engines: {node: '>=8.10.0'}
9281 dependencies: 5125 dependencies:
9282 picomatch: 2.3.1 5126 picomatch: 2.3.1
9283 dev: true
9284 5127
9285 /readme-badger@0.3.0: 5128 /real-require@0.2.0:
9286 resolution: {integrity: sha512-+sMOLSs1imZUISZ2Rhz7qqVd77QtpcAPbGeIraFdgJmijb04YtdlPjGNBvDChTNtLbeQ6JNGQy3pOgslWfaP3g==} 5129 resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
9287 dependencies: 5130 engines: {node: '>= 12.13.0'}
9288 balanced-match: 1.0.2
9289 dev: true
9290 5131
9291 /rechoir@0.8.0: 5132 /rechoir@0.8.0:
9292 resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} 5133 resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==}
9293 engines: {node: '>= 10.13.0'} 5134 engines: {node: '>= 10.13.0'}
9294 dependencies: 5135 dependencies:
9295 resolve: 1.22.6 5136 resolve: 1.22.6
9296
9297 /redeyed@2.1.1:
9298 resolution: {integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==}
9299 dependencies:
9300 esprima: 4.0.1
9301 dev: true
9302
9303 /reflect-metadata@0.1.13:
9304 resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==}
9305 dev: false 5137 dev: false
9306 5138
9307 /regenerate-unicode-properties@10.1.1: 5139 /reflect-metadata@0.2.1:
9308 resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} 5140 resolution: {integrity: sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw==}
9309 engines: {node: '>=4'} 5141 dev: false
9310 dependencies:
9311 regenerate: 1.4.2
9312 dev: true
9313
9314 /regenerate@1.4.2:
9315 resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==}
9316 dev: true
9317
9318 /regenerator-runtime@0.14.0:
9319 resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==}
9320 dev: true
9321
9322 /regenerator-transform@0.15.2:
9323 resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==}
9324 dependencies:
9325 '@babel/runtime': 7.23.1
9326 dev: true
9327
9328 /regex-not@1.0.2:
9329 resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==}
9330 engines: {node: '>=0.10.0'}
9331 dependencies:
9332 extend-shallow: 3.0.2
9333 safe-regex: 1.1.0
9334 dev: true
9335
9336 /regex-parser@2.2.11:
9337 resolution: {integrity: sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==}
9338 dev: true
9339 5142
9340 /regexp-tree@0.1.27: 5143 /regexp-tree@0.1.27:
9341 resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} 5144 resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==}
@@ -9351,18 +5154,6 @@ packages:
9351 set-function-name: 2.0.1 5154 set-function-name: 2.0.1
9352 dev: true 5155 dev: true
9353 5156
9354 /regexpu-core@5.3.2:
9355 resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==}
9356 engines: {node: '>=4'}
9357 dependencies:
9358 '@babel/regjsgen': 0.8.0
9359 regenerate: 1.4.2
9360 regenerate-unicode-properties: 10.1.1
9361 regjsparser: 0.9.1
9362 unicode-match-property-ecmascript: 2.0.0
9363 unicode-match-property-value-ecmascript: 2.1.0
9364 dev: true
9365
9366 /regjsparser@0.10.0: 5157 /regjsparser@0.10.0:
9367 resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} 5158 resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==}
9368 hasBin: true 5159 hasBin: true
@@ -9370,57 +5161,10 @@ packages:
9370 jsesc: 0.5.0 5161 jsesc: 0.5.0
9371 dev: true 5162 dev: true
9372 5163
9373 /regjsparser@0.9.1:
9374 resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==}
9375 hasBin: true
9376 dependencies:
9377 jsesc: 0.5.0
9378 dev: true
9379
9380 /renderkid@3.0.0:
9381 resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==}
9382 dependencies:
9383 css-select: 4.3.0
9384 dom-converter: 0.2.0
9385 htmlparser2: 6.1.0
9386 lodash: 4.17.21
9387 strip-ansi: 6.0.1
9388 dev: true
9389
9390 /repeat-element@1.1.4:
9391 resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==}
9392 engines: {node: '>=0.10.0'}
9393 dev: true
9394
9395 /repeat-string@1.6.1:
9396 resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
9397 engines: {node: '>=0.10'}
9398 dev: true
9399
9400 /require-all@3.0.0:
9401 resolution: {integrity: sha512-jPGN876lc5exWYrMcgZSd7U42P0PmVQzxnQB13fCSzmyGnqQWW4WUz5DosZ/qe24hz+5o9lSvW2epBNZ1xa6Fw==}
9402 engines: {node: '>= 0.8'}
9403
9404 /require-from-string@2.0.2:
9405 resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
9406 engines: {node: '>=0.10.0'}
9407 dev: true
9408
9409 /requires-port@1.0.0:
9410 resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
9411 dev: true
9412
9413 /resolve-alpn@1.2.1: 5164 /resolve-alpn@1.2.1:
9414 resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} 5165 resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
9415 dev: false 5166 dev: false
9416 5167
9417 /resolve-cwd@3.0.0:
9418 resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
9419 engines: {node: '>=8'}
9420 dependencies:
9421 resolve-from: 5.0.0
9422 dev: true
9423
9424 /resolve-from@4.0.0: 5168 /resolve-from@4.0.0:
9425 resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 5169 resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
9426 engines: {node: '>=4'} 5170 engines: {node: '>=4'}
@@ -9429,22 +5173,7 @@ packages:
9429 /resolve-from@5.0.0: 5173 /resolve-from@5.0.0:
9430 resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 5174 resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
9431 engines: {node: '>=8'} 5175 engines: {node: '>=8'}
9432 5176 dev: false
9433 /resolve-url-loader@5.0.0:
9434 resolution: {integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==}
9435 engines: {node: '>=12'}
9436 dependencies:
9437 adjust-sourcemap-loader: 4.0.0
9438 convert-source-map: 1.9.0
9439 loader-utils: 2.0.4
9440 postcss: 8.4.31
9441 source-map: 0.6.1
9442 dev: true
9443
9444 /resolve-url@0.2.1:
9445 resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==}
9446 deprecated: https://github.com/lydell/resolve-url#deprecated
9447 dev: true
9448 5177
9449 /resolve@1.22.6: 5178 /resolve@1.22.6:
9450 resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==} 5179 resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==}
@@ -9454,24 +5183,20 @@ packages:
9454 path-parse: 1.0.7 5183 path-parse: 1.0.7
9455 supports-preserve-symlinks-flag: 1.0.0 5184 supports-preserve-symlinks-flag: 1.0.0
9456 5185
9457 /responselike@2.0.1: 5186 /responselike@3.0.0:
9458 resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} 5187 resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==}
5188 engines: {node: '>=14.16'}
9459 dependencies: 5189 dependencies:
9460 lowercase-keys: 2.0.0 5190 lowercase-keys: 3.0.0
9461 dev: false 5191 dev: false
9462 5192
9463 /restore-cursor@3.1.0: 5193 /restore-cursor@4.0.0:
9464 resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} 5194 resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==}
9465 engines: {node: '>=8'} 5195 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
9466 dependencies: 5196 dependencies:
9467 onetime: 5.1.2 5197 onetime: 5.1.2
9468 signal-exit: 3.0.7 5198 signal-exit: 3.0.7
9469 5199
9470 /ret@0.1.15:
9471 resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==}
9472 engines: {node: '>=0.12'}
9473 dev: true
9474
9475 /retry@0.12.0: 5200 /retry@0.12.0:
9476 resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} 5201 resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==}
9477 engines: {node: '>= 4'} 5202 engines: {node: '>= 4'}
@@ -9482,24 +5207,11 @@ packages:
9482 /retry@0.13.1: 5207 /retry@0.13.1:
9483 resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} 5208 resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==}
9484 engines: {node: '>= 4'} 5209 engines: {node: '>= 4'}
9485 dev: true
9486 5210
9487 /reusify@1.0.4: 5211 /reusify@1.0.4:
9488 resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 5212 resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
9489 engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 5213 engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
9490 5214
9491 /rev-hash@3.0.0:
9492 resolution: {integrity: sha512-s+87HfEKAu95TaTxnbCobn0/BkbzR23LHSwVdYvr8mn5+PPjzy+hTWyh92b5oaLgig9TKPe5d6ZcubsVBtUrZg==}
9493 engines: {node: '>=8'}
9494 dev: true
9495
9496 /rimraf@2.7.1:
9497 resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
9498 hasBin: true
9499 dependencies:
9500 glob: 7.2.3
9501 dev: true
9502
9503 /rimraf@3.0.2: 5215 /rimraf@3.0.2:
9504 resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 5216 resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
9505 hasBin: true 5217 hasBin: true
@@ -9508,7 +5220,29 @@ packages:
9508 5220
9509 /rndm@1.2.0: 5221 /rndm@1.2.0:
9510 resolution: {integrity: sha512-fJhQQI5tLrQvYIYFpOnFinzv9dwmR7hRnUz1XqP3OJ1jIweTNOd6aTO4jwQSgcBSFUB+/KHJxuGneime+FdzOw==} 5222 resolution: {integrity: sha512-fJhQQI5tLrQvYIYFpOnFinzv9dwmR7hRnUz1XqP3OJ1jIweTNOd6aTO4jwQSgcBSFUB+/KHJxuGneime+FdzOw==}
9511 dev: false 5223
5224 /rollup@4.10.0:
5225 resolution: {integrity: sha512-t2v9G2AKxcQ8yrG+WGxctBes1AomT0M4ND7jTFBCVPXQ/WFTvNSefIrNSmLKhIKBrvN8SG+CZslimJcT3W2u2g==}
5226 engines: {node: '>=18.0.0', npm: '>=8.0.0'}
5227 hasBin: true
5228 dependencies:
5229 '@types/estree': 1.0.5
5230 optionalDependencies:
5231 '@rollup/rollup-android-arm-eabi': 4.10.0
5232 '@rollup/rollup-android-arm64': 4.10.0
5233 '@rollup/rollup-darwin-arm64': 4.10.0
5234 '@rollup/rollup-darwin-x64': 4.10.0
5235 '@rollup/rollup-linux-arm-gnueabihf': 4.10.0
5236 '@rollup/rollup-linux-arm64-gnu': 4.10.0
5237 '@rollup/rollup-linux-arm64-musl': 4.10.0
5238 '@rollup/rollup-linux-riscv64-gnu': 4.10.0
5239 '@rollup/rollup-linux-x64-gnu': 4.10.0
5240 '@rollup/rollup-linux-x64-musl': 4.10.0
5241 '@rollup/rollup-win32-arm64-msvc': 4.10.0
5242 '@rollup/rollup-win32-ia32-msvc': 4.10.0
5243 '@rollup/rollup-win32-x64-msvc': 4.10.0
5244 fsevents: 2.3.3
5245 dev: true
9512 5246
9513 /run-parallel@1.2.0: 5247 /run-parallel@1.2.0:
9514 resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 5248 resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
@@ -9527,6 +5261,7 @@ packages:
9527 5261
9528 /safe-buffer@5.1.2: 5262 /safe-buffer@5.1.2:
9529 resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 5263 resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
5264 dev: false
9530 5265
9531 /safe-buffer@5.2.1: 5266 /safe-buffer@5.2.1:
9532 resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 5267 resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
@@ -9539,12 +5274,16 @@ packages:
9539 is-regex: 1.1.4 5274 is-regex: 1.1.4
9540 dev: true 5275 dev: true
9541 5276
9542 /safe-regex@1.1.0: 5277 /safe-regex@2.1.1:
9543 resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} 5278 resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==}
9544 dependencies: 5279 dependencies:
9545 ret: 0.1.15 5280 regexp-tree: 0.1.27
9546 dev: true 5281 dev: true
9547 5282
5283 /safe-stable-stringify@2.4.3:
5284 resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==}
5285 engines: {node: '>=10'}
5286
9548 /safer-buffer@2.1.2: 5287 /safer-buffer@2.1.2:
9549 resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 5288 resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
9550 5289
@@ -9554,43 +5293,9 @@ packages:
9554 truncate-utf8-bytes: 1.0.2 5293 truncate-utf8-bytes: 1.0.2
9555 dev: false 5294 dev: false
9556 5295
9557 /sax@1.2.1:
9558 resolution: {integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==}
9559 dev: false
9560
9561 /schema-utils@3.3.0:
9562 resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==}
9563 engines: {node: '>= 10.13.0'}
9564 dependencies:
9565 '@types/json-schema': 7.0.13
9566 ajv: 6.12.6
9567 ajv-keywords: 3.5.2(ajv@6.12.6)
9568 dev: true
9569
9570 /schema-utils@4.2.0:
9571 resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==}
9572 engines: {node: '>= 12.13.0'}
9573 dependencies:
9574 '@types/json-schema': 7.0.13
9575 ajv: 8.12.0
9576 ajv-formats: 2.1.1(ajv@8.12.0)
9577 ajv-keywords: 5.1.0(ajv@8.12.0)
9578 dev: true
9579
9580 /secure-json-parse@2.7.0: 5296 /secure-json-parse@2.7.0:
9581 resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} 5297 resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==}
9582 5298
9583 /select-hose@2.0.0:
9584 resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==}
9585 dev: true
9586
9587 /selfsigned@2.1.1:
9588 resolution: {integrity: sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==}
9589 engines: {node: '>=10'}
9590 dependencies:
9591 node-forge: 1.3.1
9592 dev: true
9593
9594 /semver@5.7.2: 5299 /semver@5.7.2:
9595 resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} 5300 resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
9596 hasBin: true 5301 hasBin: true
@@ -9626,34 +5331,13 @@ packages:
9626 statuses: 2.0.1 5331 statuses: 2.0.1
9627 transitivePeerDependencies: 5332 transitivePeerDependencies:
9628 - supports-color 5333 - supports-color
5334 dev: false
9629 5335
9630 /sentence-case@3.0.4: 5336 /serialize-error@11.0.3:
9631 resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} 5337 resolution: {integrity: sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g==}
9632 dependencies: 5338 engines: {node: '>=14.16'}
9633 no-case: 3.0.4
9634 tslib: 2.6.2
9635 upper-case-first: 2.0.2
9636
9637 /serialize-javascript@6.0.1:
9638 resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==}
9639 dependencies:
9640 randombytes: 2.1.0
9641 dev: true
9642
9643 /serve-index@1.9.1:
9644 resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==}
9645 engines: {node: '>= 0.8.0'}
9646 dependencies: 5339 dependencies:
9647 accepts: 1.3.8 5340 type-fest: 2.19.0
9648 batch: 0.6.1
9649 debug: 2.6.9
9650 escape-html: 1.0.3
9651 http-errors: 1.6.3
9652 mime-types: 2.1.35
9653 parseurl: 1.3.3
9654 transitivePeerDependencies:
9655 - supports-color
9656 dev: true
9657 5341
9658 /serve-static@1.15.0: 5342 /serve-static@1.15.0:
9659 resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} 5343 resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==}
@@ -9665,14 +5349,10 @@ packages:
9665 send: 0.18.0 5349 send: 0.18.0
9666 transitivePeerDependencies: 5350 transitivePeerDependencies:
9667 - supports-color 5351 - supports-color
5352 dev: false
9668 5353
9669 /set-blocking@2.0.0: 5354 /set-blocking@2.0.0:
9670 resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} 5355 resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
9671 dev: false
9672
9673 /set-cookie-parser@2.6.0:
9674 resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==}
9675 dev: true
9676 5356
9677 /set-function-name@2.0.1: 5357 /set-function-name@2.0.1:
9678 resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} 5358 resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==}
@@ -9683,45 +5363,18 @@ packages:
9683 has-property-descriptors: 1.0.0 5363 has-property-descriptors: 1.0.0
9684 dev: true 5364 dev: true
9685 5365
9686 /set-value@2.0.1:
9687 resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==}
9688 engines: {node: '>=0.10.0'}
9689 dependencies:
9690 extend-shallow: 2.0.1
9691 is-extendable: 0.1.1
9692 is-plain-object: 2.0.4
9693 split-string: 3.1.0
9694 dev: true
9695
9696 /setprototypeof@1.1.0:
9697 resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==}
9698 dev: true
9699
9700 /setprototypeof@1.2.0: 5366 /setprototypeof@1.2.0:
9701 resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 5367 resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
9702 5368
9703 /shallow-clone@3.0.1:
9704 resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==}
9705 engines: {node: '>=8'}
9706 dependencies:
9707 kind-of: 6.0.3
9708 dev: true
9709
9710 /shebang-command@2.0.0: 5369 /shebang-command@2.0.0:
9711 resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 5370 resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
9712 engines: {node: '>=8'} 5371 engines: {node: '>=8'}
9713 dependencies: 5372 dependencies:
9714 shebang-regex: 3.0.0 5373 shebang-regex: 3.0.0
9715 dev: true
9716 5374
9717 /shebang-regex@3.0.0: 5375 /shebang-regex@3.0.0:
9718 resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 5376 resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
9719 engines: {node: '>=8'} 5377 engines: {node: '>=8'}
9720 dev: true
9721
9722 /shell-quote@1.8.1:
9723 resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==}
9724 dev: true
9725 5378
9726 /side-channel@1.0.4: 5379 /side-channel@1.0.4:
9727 resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 5380 resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
@@ -9730,33 +5383,54 @@ packages:
9730 get-intrinsic: 1.2.1 5383 get-intrinsic: 1.2.1
9731 object-inspect: 1.12.3 5384 object-inspect: 1.12.3
9732 5385
9733 /sigmund@1.0.1:
9734 resolution: {integrity: sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==}
9735 dev: true
9736
9737 /signal-exit@3.0.7: 5386 /signal-exit@3.0.7:
9738 resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 5387 resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
9739 5388
9740 /slash@2.0.0: 5389 /signal-exit@4.1.0:
9741 resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} 5390 resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
9742 engines: {node: '>=6'} 5391 engines: {node: '>=14'}
9743 dev: true 5392
5393 /simple-concat@1.0.1:
5394 resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==}
5395 dev: false
5396
5397 /simple-get@4.0.1:
5398 resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==}
5399 dependencies:
5400 decompress-response: 6.0.0
5401 once: 1.4.0
5402 simple-concat: 1.0.1
5403 dev: false
9744 5404
9745 /slash@3.0.0: 5405 /slash@3.0.0:
9746 resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 5406 resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
9747 engines: {node: '>=8'} 5407 engines: {node: '>=8'}
5408 dev: true
9748 5409
9749 /slashes@2.0.2: 5410 /slash@4.0.0:
9750 resolution: {integrity: sha512-68p+QkFAQQRetIUzNXAdktNJr8AYLxJukjBegYQz8F7VATsBJG621UYtY/vS2j9jerxdJ1k6Tc25K4DXEw1d5w==} 5411 resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
9751 dev: false 5412 engines: {node: '>=12'}
9752 5413
9753 /slice-ansi@4.0.0: 5414 /slash@5.1.0:
9754 resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} 5415 resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==}
9755 engines: {node: '>=10'} 5416 engines: {node: '>=14.16'}
5417
5418 /slashes@3.0.12:
5419 resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==}
5420
5421 /slice-ansi@5.0.0:
5422 resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==}
5423 engines: {node: '>=12'}
9756 dependencies: 5424 dependencies:
9757 ansi-styles: 4.3.0 5425 ansi-styles: 6.2.1
9758 astral-regex: 2.0.0 5426 is-fullwidth-code-point: 4.0.0
9759 is-fullwidth-code-point: 3.0.0 5427
5428 /slice-ansi@7.1.0:
5429 resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==}
5430 engines: {node: '>=18'}
5431 dependencies:
5432 ansi-styles: 6.2.1
5433 is-fullwidth-code-point: 5.0.0
9760 5434
9761 /slugify@1.6.6: 5435 /slugify@1.6.6:
9762 resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} 5436 resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==}
@@ -9769,59 +5443,6 @@ packages:
9769 dev: false 5443 dev: false
9770 optional: true 5444 optional: true
9771 5445
9772 /smpltmpl@1.0.2:
9773 resolution: {integrity: sha512-Hq23NNgeZigOzIiX1dkb6W3gFn2/XQj43KhPxu65IMieG/gIwf/lQb1IudjYv0c/5LwJeS/mPayYzyo+8WJMxQ==}
9774 engines: {node: '>=4'}
9775 dependencies:
9776 babel-code-frame: 6.26.0
9777 dev: true
9778
9779 /snake-case@3.0.4:
9780 resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==}
9781 dependencies:
9782 dot-case: 3.0.4
9783 tslib: 2.6.2
9784
9785 /snapdragon-node@2.1.1:
9786 resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==}
9787 engines: {node: '>=0.10.0'}
9788 dependencies:
9789 define-property: 1.0.0
9790 isobject: 3.0.1
9791 snapdragon-util: 3.0.1
9792 dev: true
9793
9794 /snapdragon-util@3.0.1:
9795 resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==}
9796 engines: {node: '>=0.10.0'}
9797 dependencies:
9798 kind-of: 3.2.2
9799 dev: true
9800
9801 /snapdragon@0.8.2:
9802 resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==}
9803 engines: {node: '>=0.10.0'}
9804 dependencies:
9805 base: 0.11.2
9806 debug: 2.6.9
9807 define-property: 0.2.5
9808 extend-shallow: 2.0.1
9809 map-cache: 0.2.2
9810 source-map: 0.5.7
9811 source-map-resolve: 0.5.3
9812 use: 3.1.1
9813 transitivePeerDependencies:
9814 - supports-color
9815 dev: true
9816
9817 /sockjs@0.3.24:
9818 resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==}
9819 dependencies:
9820 faye-websocket: 0.11.4
9821 uuid: 8.3.2
9822 websocket-driver: 0.7.4
9823 dev: true
9824
9825 /socks-proxy-agent@6.2.1: 5446 /socks-proxy-agent@6.2.1:
9826 resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==} 5447 resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==}
9827 engines: {node: '>= 10'} 5448 engines: {node: '>= 10'}
@@ -9845,19 +5466,8 @@ packages:
9845 dev: false 5466 dev: false
9846 optional: true 5467 optional: true
9847 5468
9848 /sonic-boom@1.4.1: 5469 /sonic-boom@3.8.0:
9849 resolution: {integrity: sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==} 5470 resolution: {integrity: sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==}
9850 dependencies:
9851 atomic-sleep: 1.0.0
9852 flatstr: 1.0.12
9853
9854 /sonic-boom@2.8.0:
9855 resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==}
9856 dependencies:
9857 atomic-sleep: 1.0.0
9858
9859 /sonic-boom@3.4.0:
9860 resolution: {integrity: sha512-zSe9QQW30nPzjkSJ0glFQO5T9lHsk39tz+2bAAwCj8CNgEG8ItZiX7Wb2ZgA8I04dwRGCcf1m3ABJa8AYm12Fw==}
9861 dependencies: 5471 dependencies:
9862 atomic-sleep: 1.0.0 5472 atomic-sleep: 1.0.0
9863 5473
@@ -9866,33 +5476,6 @@ packages:
9866 engines: {node: '>=0.10.0'} 5476 engines: {node: '>=0.10.0'}
9867 dev: true 5477 dev: true
9868 5478
9869 /source-map-resolve@0.5.3:
9870 resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==}
9871 deprecated: See https://github.com/lydell/source-map-resolve#deprecated
9872 dependencies:
9873 atob: 2.1.2
9874 decode-uri-component: 0.2.2
9875 resolve-url: 0.2.1
9876 source-map-url: 0.4.1
9877 urix: 0.1.0
9878 dev: true
9879
9880 /source-map-support@0.5.21:
9881 resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
9882 dependencies:
9883 buffer-from: 1.1.2
9884 source-map: 0.6.1
9885
9886 /source-map-url@0.4.1:
9887 resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==}
9888 deprecated: See https://github.com/lydell/source-map-url#deprecated
9889 dev: true
9890
9891 /source-map@0.5.7:
9892 resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
9893 engines: {node: '>=0.10.0'}
9894 dev: true
9895
9896 /source-map@0.6.1: 5479 /source-map@0.6.1:
9897 resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 5480 resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
9898 engines: {node: '>=0.10.0'} 5481 engines: {node: '>=0.10.0'}
@@ -9919,67 +5502,29 @@ packages:
9919 resolution: {integrity: sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==} 5502 resolution: {integrity: sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==}
9920 dev: true 5503 dev: true
9921 5504
9922 /spdy-transport@3.0.0: 5505 /split-lines@3.0.0:
9923 resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} 5506 resolution: {integrity: sha512-d0TpRBL/VfKDXsk8JxPF7zgF5pCUDdBMSlEL36xBgVeaX448t+yGXcJaikUyzkoKOJ0l6KpMfygzJU9naIuivw==}
9924 dependencies: 5507 engines: {node: '>=12'}
9925 debug: 4.3.4
9926 detect-node: 2.1.0
9927 hpack.js: 2.1.6
9928 obuf: 1.1.2
9929 readable-stream: 3.6.2
9930 wbuf: 1.7.3
9931 transitivePeerDependencies:
9932 - supports-color
9933 dev: true
9934
9935 /spdy@4.0.2:
9936 resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==}
9937 engines: {node: '>=6.0.0'}
9938 dependencies:
9939 debug: 4.3.4
9940 handle-thing: 2.0.1
9941 http-deceiver: 1.2.7
9942 select-hose: 2.0.0
9943 spdy-transport: 3.0.0
9944 transitivePeerDependencies:
9945 - supports-color
9946 dev: true
9947
9948 /split-lines@2.1.0:
9949 resolution: {integrity: sha512-8dv+1zKgTpfTkOy8XZLFyWrfxO0NV/bj/3EaQ+hBrBxGv2DwiroljPjU8NlCr+59nLnsVm9WYT7lXKwe4TC6bw==}
9950 engines: {node: '>=6'}
9951 dev: true
9952
9953 /split-string@3.1.0:
9954 resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==}
9955 engines: {node: '>=0.10.0'}
9956 dependencies:
9957 extend-shallow: 3.0.2
9958 dev: true
9959 5508
9960 /split2@4.2.0: 5509 /split2@4.2.0:
9961 resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} 5510 resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
9962 engines: {node: '>= 10.x'} 5511 engines: {node: '>= 10.x'}
9963 5512
9964 /sprintf-js@1.0.3: 5513 /sqlite3@5.1.7:
9965 resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 5514 resolution: {integrity: sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==}
9966 dev: true
9967
9968 /sqlite3@5.1.6:
9969 resolution: {integrity: sha512-olYkWoKFVNSSSQNvxVUfjiVbz3YtBwTJj+mfV5zpHmqW3sELx2Cf4QCdirMelhM5Zh+KDVaKgQHqCxrqiWHybw==}
9970 requiresBuild: true 5515 requiresBuild: true
9971 peerDependenciesMeta: 5516 peerDependenciesMeta:
9972 node-gyp: 5517 node-gyp:
9973 optional: true 5518 optional: true
9974 dependencies: 5519 dependencies:
9975 '@mapbox/node-pre-gyp': 1.0.11 5520 bindings: 1.5.0
9976 node-addon-api: 4.3.0 5521 node-addon-api: 7.1.0
5522 prebuild-install: 7.1.1
9977 tar: 6.2.0 5523 tar: 6.2.0
9978 optionalDependencies: 5524 optionalDependencies:
9979 node-gyp: 8.4.1 5525 node-gyp: 8.4.1
9980 transitivePeerDependencies: 5526 transitivePeerDependencies:
9981 - bluebird 5527 - bluebird
9982 - encoding
9983 - supports-color 5528 - supports-color
9984 dev: false 5529 dev: false
9985 5530
@@ -9997,29 +5542,11 @@ packages:
9997 dev: false 5542 dev: false
9998 optional: true 5543 optional: true
9999 5544
10000 /stackframe@1.3.4:
10001 resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==}
10002 dev: true
10003
10004 /stacktracey@2.1.8: 5545 /stacktracey@2.1.8:
10005 resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} 5546 resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==}
10006 dependencies: 5547 dependencies:
10007 as-table: 1.0.55 5548 as-table: 1.0.55
10008 get-source: 2.0.12 5549 get-source: 2.0.12
10009 dev: true
10010
10011 /static-extend@0.1.2:
10012 resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==}
10013 engines: {node: '>=0.10.0'}
10014 dependencies:
10015 define-property: 0.2.5
10016 object-copy: 0.1.0
10017 dev: true
10018
10019 /statuses@1.5.0:
10020 resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
10021 engines: {node: '>= 0.6'}
10022 dev: true
10023 5550
10024 /statuses@2.0.1: 5551 /statuses@2.0.1:
10025 resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} 5552 resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
@@ -10033,6 +5560,14 @@ packages:
10033 is-fullwidth-code-point: 3.0.0 5560 is-fullwidth-code-point: 3.0.0
10034 strip-ansi: 6.0.1 5561 strip-ansi: 6.0.1
10035 5562
5563 /string-width@7.1.0:
5564 resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==}
5565 engines: {node: '>=18'}
5566 dependencies:
5567 emoji-regex: 10.3.0
5568 get-east-asian-width: 1.2.0
5569 strip-ansi: 7.1.0
5570
10036 /string.prototype.trim@1.2.8: 5571 /string.prototype.trim@1.2.8:
10037 resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} 5572 resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==}
10038 engines: {node: '>= 0.4'} 5573 engines: {node: '>= 0.4'}
@@ -10062,24 +5597,18 @@ packages:
10062 resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} 5597 resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
10063 dependencies: 5598 dependencies:
10064 safe-buffer: 5.1.2 5599 safe-buffer: 5.1.2
5600 dev: false
10065 5601
10066 /string_decoder@1.3.0: 5602 /string_decoder@1.3.0:
10067 resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 5603 resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
10068 dependencies: 5604 dependencies:
10069 safe-buffer: 5.2.1 5605 safe-buffer: 5.2.1
10070 5606
10071 /stringify-attributes@2.0.0: 5607 /stringify-attributes@4.0.0:
10072 resolution: {integrity: sha512-wrVfRV6sCCB6wr3gx8OgKsp/9dSWWbKr8ifLfOxEcd/BBoa8d5pAf4BZb/jQW1JZnoZImjvUdxdo3ikYHZmYiw==} 5608 resolution: {integrity: sha512-6Hq3K153wTTfhEHb4V/viuqmb0DRn08JCrRnmqc4Q/tmoNuvd4DEyqkiiJXtvVz8ZSUhlCQr7zCpCVTgrelesg==}
10073 engines: {node: '>=8'} 5609 engines: {node: '>=14.16'}
10074 dependencies:
10075 escape-goat: 2.1.1
10076
10077 /strip-ansi@3.0.1:
10078 resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==}
10079 engines: {node: '>=0.10.0'}
10080 dependencies: 5610 dependencies:
10081 ansi-regex: 2.1.1 5611 escape-goat: 4.0.0
10082 dev: true
10083 5612
10084 /strip-ansi@6.0.1: 5613 /strip-ansi@6.0.1:
10085 resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 5614 resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
@@ -10087,20 +5616,20 @@ packages:
10087 dependencies: 5616 dependencies:
10088 ansi-regex: 5.0.1 5617 ansi-regex: 5.0.1
10089 5618
5619 /strip-ansi@7.1.0:
5620 resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
5621 engines: {node: '>=12'}
5622 dependencies:
5623 ansi-regex: 6.0.1
5624
10090 /strip-bom@3.0.0: 5625 /strip-bom@3.0.0:
10091 resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 5626 resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
10092 engines: {node: '>=4'} 5627 engines: {node: '>=4'}
10093 dev: true 5628 dev: true
10094 5629
10095 /strip-bom@4.0.0: 5630 /strip-final-newline@3.0.0:
10096 resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} 5631 resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
10097 engines: {node: '>=8'} 5632 engines: {node: '>=12'}
10098 dev: true
10099
10100 /strip-final-newline@2.0.0:
10101 resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
10102 engines: {node: '>=6'}
10103 dev: true
10104 5633
10105 /strip-indent@3.0.0: 5634 /strip-indent@3.0.0:
10106 resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 5635 resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
@@ -10112,61 +5641,19 @@ packages:
10112 /strip-json-comments@2.0.1: 5641 /strip-json-comments@2.0.1:
10113 resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} 5642 resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
10114 engines: {node: '>=0.10.0'} 5643 engines: {node: '>=0.10.0'}
10115 dev: true 5644 dev: false
10116 5645
10117 /strip-json-comments@3.1.1: 5646 /strip-json-comments@3.1.1:
10118 resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 5647 resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
10119 engines: {node: '>=8'} 5648 engines: {node: '>=8'}
10120
10121 /strtok3@6.3.0:
10122 resolution: {integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==}
10123 engines: {node: '>=10'}
10124 dependencies:
10125 '@tokenizer/token': 0.3.0
10126 peek-readable: 4.1.0
10127
10128 /style-loader@3.3.3(webpack@5.88.2):
10129 resolution: {integrity: sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==}
10130 engines: {node: '>= 12.13.0'}
10131 peerDependencies:
10132 webpack: ^5.0.0
10133 dependencies:
10134 webpack: 5.88.2(webpack-cli@5.1.4)
10135 dev: true
10136
10137 /stylehacks@6.0.0(postcss@8.4.31):
10138 resolution: {integrity: sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw==}
10139 engines: {node: ^14 || ^16 || >=18.0}
10140 peerDependencies:
10141 postcss: ^8.2.15
10142 dependencies:
10143 browserslist: 4.22.1
10144 postcss: 8.4.31
10145 postcss-selector-parser: 6.0.13
10146 dev: true 5649 dev: true
10147 5650
10148 /superagent@8.1.2: 5651 /strtok3@7.0.0:
10149 resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==} 5652 resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==}
10150 engines: {node: '>=6.4.0 <13 || >=14'} 5653 engines: {node: '>=14.16'}
10151 dependencies: 5654 dependencies:
10152 component-emitter: 1.3.0 5655 '@tokenizer/token': 0.3.0
10153 cookiejar: 2.1.4 5656 peek-readable: 5.0.0
10154 debug: 4.3.4
10155 fast-safe-stringify: 2.1.1
10156 form-data: 4.0.0
10157 formidable: 2.1.2
10158 methods: 1.1.2
10159 mime: 2.6.0
10160 qs: 6.11.2
10161 semver: 7.6.0
10162 transitivePeerDependencies:
10163 - supports-color
10164 dev: true
10165
10166 /supports-color@2.0.0:
10167 resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==}
10168 engines: {node: '>=0.8.0'}
10169 dev: true
10170 5657
10171 /supports-color@5.5.0: 5658 /supports-color@5.5.0:
10172 resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 5659 resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
@@ -10180,56 +5667,20 @@ packages:
10180 engines: {node: '>=8'} 5667 engines: {node: '>=8'}
10181 dependencies: 5668 dependencies:
10182 has-flag: 4.0.0 5669 has-flag: 4.0.0
10183 dev: true
10184
10185 /supports-color@8.1.1:
10186 resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
10187 engines: {node: '>=10'}
10188 dependencies:
10189 has-flag: 4.0.0
10190 5670
10191 /supports-hyperlinks@2.3.0: 5671 /supports-color@9.4.0:
10192 resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} 5672 resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==}
10193 engines: {node: '>=8'} 5673 engines: {node: '>=12'}
10194 dependencies:
10195 has-flag: 4.0.0
10196 supports-color: 7.2.0
10197 dev: true
10198 5674
10199 /supports-preserve-symlinks-flag@1.0.0: 5675 /supports-preserve-symlinks-flag@1.0.0:
10200 resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 5676 resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
10201 engines: {node: '>= 0.4'} 5677 engines: {node: '>= 0.4'}
10202 5678
10203 /svgo@3.0.2: 5679 /synckit@0.6.2:
10204 resolution: {integrity: sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==} 5680 resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==}
10205 engines: {node: '>=14.0.0'} 5681 engines: {node: '>=12.20'}
10206 hasBin: true
10207 dependencies:
10208 '@trysound/sax': 0.2.0
10209 commander: 7.2.0
10210 css-select: 5.1.0
10211 css-tree: 2.3.1
10212 csso: 5.0.5
10213 picocolors: 1.0.0
10214 dev: true
10215
10216 /swagger-parser@10.0.3(openapi-types@12.1.3):
10217 resolution: {integrity: sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg==}
10218 engines: {node: '>=10'}
10219 dependencies:
10220 '@apidevtools/swagger-parser': 10.0.3(openapi-types@12.1.3)
10221 transitivePeerDependencies:
10222 - openapi-types
10223 dev: true
10224
10225 /swagger-schema-official@2.0.0-bab6bed:
10226 resolution: {integrity: sha512-rCC0NWGKr/IJhtRuPq/t37qvZHI/mH4I4sxflVM+qgVe5Z2uOCivzWaVbuioJaB61kvm5UvB7b49E+oBY0M8jA==}
10227 dev: true
10228
10229 /sync-rpc@1.3.6:
10230 resolution: {integrity: sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==}
10231 dependencies: 5682 dependencies:
10232 get-port: 3.2.0 5683 tslib: 2.6.2
10233 dev: true 5684 dev: true
10234 5685
10235 /synckit@0.8.8: 5686 /synckit@0.8.8:
@@ -10240,11 +5691,6 @@ packages:
10240 tslib: 2.6.2 5691 tslib: 2.6.2
10241 dev: true 5692 dev: true
10242 5693
10243 /tapable@2.2.1:
10244 resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
10245 engines: {node: '>=6'}
10246 dev: true
10247
10248 /tar-fs@1.16.3: 5694 /tar-fs@1.16.3:
10249 resolution: {integrity: sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==} 5695 resolution: {integrity: sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==}
10250 dependencies: 5696 dependencies:
@@ -10254,6 +5700,15 @@ packages:
10254 tar-stream: 1.6.2 5700 tar-stream: 1.6.2
10255 dev: false 5701 dev: false
10256 5702
5703 /tar-fs@2.1.1:
5704 resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==}
5705 dependencies:
5706 chownr: 1.1.4
5707 mkdirp-classic: 0.5.3
5708 pump: 3.0.0
5709 tar-stream: 2.2.0
5710 dev: false
5711
10257 /tar-stream@1.6.2: 5712 /tar-stream@1.6.2:
10258 resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} 5713 resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==}
10259 engines: {node: '>= 0.8.0'} 5714 engines: {node: '>= 0.8.0'}
@@ -10267,6 +5722,17 @@ packages:
10267 xtend: 4.0.2 5722 xtend: 4.0.2
10268 dev: false 5723 dev: false
10269 5724
5725 /tar-stream@2.2.0:
5726 resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
5727 engines: {node: '>=6'}
5728 dependencies:
5729 bl: 4.1.0
5730 end-of-stream: 1.4.4
5731 fs-constants: 1.0.0
5732 inherits: 2.0.4
5733 readable-stream: 3.6.2
5734 dev: false
5735
10270 /tar@6.2.0: 5736 /tar@6.2.0:
10271 resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} 5737 resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==}
10272 engines: {node: '>=10'} 5738 engines: {node: '>=10'}
@@ -10277,7 +5743,6 @@ packages:
10277 minizlib: 2.1.2 5743 minizlib: 2.1.2
10278 mkdirp: 1.0.4 5744 mkdirp: 1.0.4
10279 yallist: 4.0.0 5745 yallist: 4.0.0
10280 dev: false
10281 5746
10282 /targz@1.0.1: 5747 /targz@1.0.1:
10283 resolution: {integrity: sha512-6q4tP9U55mZnRuMTBqnqc3nwYQY3kv+QthCFZuMk+Tn1qYUnMPmL/JZ/mzgXINzFpSqfU+242IFmFU9VPvqaQw==} 5748 resolution: {integrity: sha512-6q4tP9U55mZnRuMTBqnqc3nwYQY3kv+QthCFZuMk+Tn1qYUnMPmL/JZ/mzgXINzFpSqfU+242IFmFU9VPvqaQw==}
@@ -10290,134 +5755,61 @@ packages:
10290 engines: {node: '>=8.0.0'} 5755 engines: {node: '>=8.0.0'}
10291 dev: false 5756 dev: false
10292 5757
10293 /term-size@2.2.1: 5758 /tempura@0.4.0:
10294 resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} 5759 resolution: {integrity: sha512-ghCAK7t3Yuy40NUA/pmS1aDY8M5MfZT4+S465S8YvwwDdgk3jLm/5BGwtMG/rMICDYY8T7Owe1qm91ArBOKd6w==}
10295 engines: {node: '>=8'}
10296
10297 /terser-webpack-plugin@5.3.9(webpack@5.88.2):
10298 resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==}
10299 engines: {node: '>= 10.13.0'}
10300 peerDependencies:
10301 '@swc/core': '*'
10302 esbuild: '*'
10303 uglify-js: '*'
10304 webpack: ^5.1.0
10305 peerDependenciesMeta:
10306 '@swc/core':
10307 optional: true
10308 esbuild:
10309 optional: true
10310 uglify-js:
10311 optional: true
10312 dependencies:
10313 '@jridgewell/trace-mapping': 0.3.19
10314 jest-worker: 27.5.1
10315 schema-utils: 3.3.0
10316 serialize-javascript: 6.0.1
10317 terser: 5.20.0
10318 webpack: 5.88.2(webpack-cli@5.1.4)
10319 dev: true
10320
10321 /terser@5.20.0:
10322 resolution: {integrity: sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==}
10323 engines: {node: '>=10'} 5760 engines: {node: '>=10'}
10324 hasBin: true 5761
10325 dependencies: 5762 /terminal-size@4.0.0:
10326 '@jridgewell/source-map': 0.3.5 5763 resolution: {integrity: sha512-rcdty1xZ2/BkWa4ANjWRp4JGpda2quksXIHgn5TMjNBPZfwzJIgR68DKfSYiTL+CZWowDX/sbOo5ME/FRURvYQ==}
10327 acorn: 8.10.0 5764 engines: {node: '>=18'}
10328 commander: 2.20.3
10329 source-map-support: 0.5.21
10330 dev: true
10331 5765
10332 /text-table@0.2.0: 5766 /text-table@0.2.0:
10333 resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 5767 resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
10334 dev: true 5768 dev: true
10335 5769
10336 /thunky@1.1.0: 5770 /thread-stream@2.4.1:
10337 resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} 5771 resolution: {integrity: sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==}
10338 dev: true 5772 dependencies:
5773 real-require: 0.2.0
10339 5774
10340 /tildify@2.0.0: 5775 /tildify@2.0.0:
10341 resolution: {integrity: sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==} 5776 resolution: {integrity: sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==}
10342 engines: {node: '>=8'} 5777 engines: {node: '>=8'}
10343 dev: false 5778 dev: false
10344 5779
10345 /time-span@4.0.0: 5780 /time-span@5.1.0:
10346 resolution: {integrity: sha512-MyqZCTGLDZ77u4k+jqg4UlrzPTPZ49NDlaekU6uuFaJLzPIN1woaRXCbGeqOfxwc3Y37ZROGAJ614Rdv7Olt+g==} 5781 resolution: {integrity: sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==}
10347 engines: {node: '>=10'} 5782 engines: {node: '>=12'}
10348 dependencies: 5783 dependencies:
10349 convert-hrtime: 3.0.0 5784 convert-hrtime: 5.0.0
10350 dev: true
10351 5785
10352 /tmp-cache@1.1.0: 5786 /tmp-cache@1.1.0:
10353 resolution: {integrity: sha512-j040fkL/x+XAZQ9K3bKGEPwgYhOZNBQLa3NXEADUiuno9C+3N2JJA4bVPDREixp604G3/vTXWA3DIPpA9lu1RQ==} 5787 resolution: {integrity: sha512-j040fkL/x+XAZQ9K3bKGEPwgYhOZNBQLa3NXEADUiuno9C+3N2JJA4bVPDREixp604G3/vTXWA3DIPpA9lu1RQ==}
10354 engines: {node: '>=6'} 5788 engines: {node: '>=6'}
10355 5789
10356 /tmp@0.2.1:
10357 resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==}
10358 engines: {node: '>=8.17.0'}
10359 dependencies:
10360 rimraf: 3.0.2
10361 dev: true
10362
10363 /to-buffer@1.1.1: 5790 /to-buffer@1.1.1:
10364 resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==} 5791 resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==}
10365 dev: false 5792 dev: false
10366 5793
10367 /to-fast-properties@2.0.0:
10368 resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
10369 engines: {node: '>=4'}
10370 dev: true
10371
10372 /to-object-path@0.3.0:
10373 resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==}
10374 engines: {node: '>=0.10.0'}
10375 dependencies:
10376 kind-of: 3.2.2
10377 dev: true
10378
10379 /to-regex-range@2.1.1:
10380 resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==}
10381 engines: {node: '>=0.10.0'}
10382 dependencies:
10383 is-number: 3.0.0
10384 repeat-string: 1.6.1
10385 dev: true
10386
10387 /to-regex-range@5.0.1: 5794 /to-regex-range@5.0.1:
10388 resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 5795 resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
10389 engines: {node: '>=8.0'} 5796 engines: {node: '>=8.0'}
10390 dependencies: 5797 dependencies:
10391 is-number: 7.0.0 5798 is-number: 7.0.0
10392 5799
10393 /to-regex@3.0.2:
10394 resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==}
10395 engines: {node: '>=0.10.0'}
10396 dependencies:
10397 define-property: 2.0.2
10398 extend-shallow: 3.0.2
10399 regex-not: 1.0.2
10400 safe-regex: 1.1.0
10401 dev: true
10402
10403 /toidentifier@1.0.1: 5800 /toidentifier@1.0.1:
10404 resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 5801 resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
10405 engines: {node: '>=0.6'} 5802 engines: {node: '>=0.6'}
10406 5803
10407 /token-types@4.2.1: 5804 /token-types@5.0.1:
10408 resolution: {integrity: sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==} 5805 resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==}
10409 engines: {node: '>=10'} 5806 engines: {node: '>=14.16'}
10410 dependencies: 5807 dependencies:
10411 '@tokenizer/token': 0.3.0 5808 '@tokenizer/token': 0.3.0
10412 ieee754: 1.2.1 5809 ieee754: 1.2.1
10413 5810
10414 /tr46@0.0.3: 5811 /tr46@0.0.3:
10415 resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 5812 resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
10416 dev: false
10417
10418 /traverse@0.6.7:
10419 resolution: {integrity: sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==}
10420 dev: true
10421 5813
10422 /truncate-utf8-bytes@1.0.2: 5814 /truncate-utf8-bytes@1.0.2:
10423 resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} 5815 resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==}
@@ -10444,6 +5836,44 @@ packages:
10444 code-block-writer: 11.0.3 5836 code-block-writer: 11.0.3
10445 dev: false 5837 dev: false
10446 5838
5839 /ts-morph@21.0.1:
5840 resolution: {integrity: sha512-dbDtVdEAncKctzrVZ+Nr7kHpHkv+0JDJb2MjjpBaj8bFeCkePU9rHfMklmhuLFnpeq/EJZk2IhStY6NzqgjOkg==}
5841 dependencies:
5842 '@ts-morph/common': 0.22.0
5843 code-block-writer: 12.0.0
5844
5845 /ts-node@10.9.2(@swc/core@1.4.0)(@types/node@20.7.2)(typescript@5.3.3):
5846 resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
5847 hasBin: true
5848 peerDependencies:
5849 '@swc/core': '>=1.2.50'
5850 '@swc/wasm': '>=1.2.50'
5851 '@types/node': '*'
5852 typescript: '>=2.7'
5853 peerDependenciesMeta:
5854 '@swc/core':
5855 optional: true
5856 '@swc/wasm':
5857 optional: true
5858 dependencies:
5859 '@cspotcode/source-map-support': 0.8.1
5860 '@swc/core': 1.4.0
5861 '@tsconfig/node10': 1.0.9
5862 '@tsconfig/node12': 1.0.11
5863 '@tsconfig/node14': 1.0.3
5864 '@tsconfig/node16': 1.0.4
5865 '@types/node': 20.7.2
5866 acorn: 8.10.0
5867 acorn-walk: 8.2.0
5868 arg: 4.1.3
5869 create-require: 1.1.1
5870 diff: 4.0.2
5871 make-error: 1.3.6
5872 typescript: 5.3.3
5873 v8-compile-cache-lib: 3.0.1
5874 yn: 3.1.1
5875 dev: true
5876
10447 /tsconfig-paths@3.15.0: 5877 /tsconfig-paths@3.15.0:
10448 resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} 5878 resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
10449 dependencies: 5879 dependencies:
@@ -10453,35 +5883,20 @@ packages:
10453 strip-bom: 3.0.0 5883 strip-bom: 3.0.0
10454 dev: true 5884 dev: true
10455 5885
10456 /tslib@1.14.1:
10457 resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
10458 dev: true
10459
10460 /tslib@2.6.2: 5886 /tslib@2.6.2:
10461 resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} 5887 resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
5888 dev: true
10462 5889
10463 /tsscmp@1.0.6: 5890 /tsscmp@1.0.6:
10464 resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} 5891 resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==}
10465 engines: {node: '>=0.6.x'} 5892 engines: {node: '>=0.6.x'}
10466 dev: false
10467 5893
10468 /tsse@2.1.0: 5894 /tunnel-agent@0.6.0:
10469 resolution: {integrity: sha512-rYyp1CO0VcKCIoAlMKAaLEb/1v5arucsRWSc+kkz9k2/GQN7rVMUH5Dmc7l3ZuiJGZ7jwEDO9Z0Qv6LkAqCdDA==} 5895 resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
10470 engines: {node: '>=4'}
10471 dependencies: 5896 dependencies:
10472 safe-buffer: 5.2.1 5897 safe-buffer: 5.2.1
10473 dev: false 5898 dev: false
10474 5899
10475 /tsutils@3.21.0(typescript@5.3.3):
10476 resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
10477 engines: {node: '>= 6'}
10478 peerDependencies:
10479 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'
10480 dependencies:
10481 tslib: 1.14.1
10482 typescript: 5.3.3
10483 dev: true
10484
10485 /type-check@0.4.0: 5900 /type-check@0.4.0:
10486 resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 5901 resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
10487 engines: {node: '>= 0.8.0'} 5902 engines: {node: '>= 0.8.0'}
@@ -10489,20 +5904,11 @@ packages:
10489 prelude-ls: 1.2.1 5904 prelude-ls: 1.2.1
10490 dev: true 5905 dev: true
10491 5906
10492 /type-detect@4.0.8:
10493 resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
10494 engines: {node: '>=4'}
10495 dev: true
10496
10497 /type-fest@0.20.2: 5907 /type-fest@0.20.2:
10498 resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 5908 resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
10499 engines: {node: '>=10'} 5909 engines: {node: '>=10'}
10500 dev: true 5910 dev: true
10501 5911
10502 /type-fest@0.21.3:
10503 resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
10504 engines: {node: '>=10'}
10505
10506 /type-fest@0.6.0: 5912 /type-fest@0.6.0:
10507 resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} 5913 resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
10508 engines: {node: '>=8'} 5914 engines: {node: '>=8'}
@@ -10513,10 +5919,13 @@ packages:
10513 engines: {node: '>=8'} 5919 engines: {node: '>=8'}
10514 dev: true 5920 dev: true
10515 5921
5922 /type-fest@2.19.0:
5923 resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
5924 engines: {node: '>=12.20'}
5925
10516 /type-fest@3.13.1: 5926 /type-fest@3.13.1:
10517 resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} 5927 resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==}
10518 engines: {node: '>=14.16'} 5928 engines: {node: '>=14.16'}
10519 dev: true
10520 5929
10521 /type-is@1.6.18: 5930 /type-is@1.6.18:
10522 resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} 5931 resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
@@ -10567,7 +5976,6 @@ packages:
10567 resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} 5976 resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==}
10568 engines: {node: '>=14.17'} 5977 engines: {node: '>=14.17'}
10569 hasBin: true 5978 hasBin: true
10570 dev: true
10571 5979
10572 /uid-safe@2.1.5: 5980 /uid-safe@2.1.5:
10573 resolution: {integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==} 5981 resolution: {integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==}
@@ -10584,39 +5992,6 @@ packages:
10584 which-boxed-primitive: 1.0.2 5992 which-boxed-primitive: 1.0.2
10585 dev: true 5993 dev: true
10586 5994
10587 /unicode-canonical-property-names-ecmascript@2.0.0:
10588 resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==}
10589 engines: {node: '>=4'}
10590 dev: true
10591
10592 /unicode-match-property-ecmascript@2.0.0:
10593 resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==}
10594 engines: {node: '>=4'}
10595 dependencies:
10596 unicode-canonical-property-names-ecmascript: 2.0.0
10597 unicode-property-aliases-ecmascript: 2.1.0
10598 dev: true
10599
10600 /unicode-match-property-value-ecmascript@2.1.0:
10601 resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==}
10602 engines: {node: '>=4'}
10603 dev: true
10604
10605 /unicode-property-aliases-ecmascript@2.1.0:
10606 resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==}
10607 engines: {node: '>=4'}
10608 dev: true
10609
10610 /union-value@1.0.1:
10611 resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==}
10612 engines: {node: '>=0.10.0'}
10613 dependencies:
10614 arr-union: 3.1.0
10615 get-value: 2.0.6
10616 is-extendable: 0.1.1
10617 set-value: 2.0.1
10618 dev: true
10619
10620 /unique-filename@1.1.1: 5995 /unique-filename@1.1.1:
10621 resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} 5996 resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==}
10622 requiresBuild: true 5997 requiresBuild: true
@@ -10633,38 +6008,15 @@ packages:
10633 dev: false 6008 dev: false
10634 optional: true 6009 optional: true
10635 6010
10636 /universalify@0.1.2:
10637 resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
10638 engines: {node: '>= 4.0.0'}
10639 dev: true
10640
10641 /universalify@2.0.0: 6011 /universalify@2.0.0:
10642 resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} 6012 resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
10643 engines: {node: '>= 10.0.0'} 6013 engines: {node: '>= 10.0.0'}
6014 dev: false
10644 6015
10645 /unpipe@1.0.0: 6016 /unpipe@1.0.0:
10646 resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 6017 resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
10647 engines: {node: '>= 0.8'} 6018 engines: {node: '>= 0.8'}
10648 6019
10649 /unset-value@1.0.0:
10650 resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==}
10651 engines: {node: '>=0.10.0'}
10652 dependencies:
10653 has-value: 0.3.1
10654 isobject: 3.0.1
10655 dev: true
10656
10657 /update-browserslist-db@1.0.13(browserslist@4.22.1):
10658 resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
10659 hasBin: true
10660 peerDependencies:
10661 browserslist: '>= 4.21.0'
10662 dependencies:
10663 browserslist: 4.22.1
10664 escalade: 3.1.1
10665 picocolors: 1.0.0
10666 dev: true
10667
10668 /update-browserslist-db@1.0.13(browserslist@4.22.3): 6020 /update-browserslist-db@1.0.13(browserslist@4.22.3):
10669 resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} 6021 resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
10670 hasBin: true 6022 hasBin: true
@@ -10676,39 +6028,12 @@ packages:
10676 picocolors: 1.0.0 6028 picocolors: 1.0.0
10677 dev: true 6029 dev: true
10678 6030
10679 /upper-case-first@2.0.2:
10680 resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==}
10681 dependencies:
10682 tslib: 2.6.2
10683
10684 /upper-case@2.0.2:
10685 resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==}
10686 dependencies:
10687 tslib: 2.6.2
10688
10689 /uri-js@4.4.1: 6031 /uri-js@4.4.1:
10690 resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 6032 resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
10691 dependencies: 6033 dependencies:
10692 punycode: 2.3.0 6034 punycode: 2.3.0
10693 dev: true 6035 dev: true
10694 6036
10695 /urix@0.1.0:
10696 resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==}
10697 deprecated: Please see https://github.com/lydell/urix#deprecated
10698 dev: true
10699
10700 /url@0.10.3:
10701 resolution: {integrity: sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==}
10702 dependencies:
10703 punycode: 1.3.2
10704 querystring: 0.2.0
10705 dev: false
10706
10707 /use@3.1.1:
10708 resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==}
10709 engines: {node: '>=0.10.0'}
10710 dev: true
10711
10712 /utf8-byte-length@1.0.4: 6037 /utf8-byte-length@1.0.4:
10713 resolution: {integrity: sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==} 6038 resolution: {integrity: sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==}
10714 dev: false 6039 dev: false
@@ -10716,46 +6041,17 @@ packages:
10716 /util-deprecate@1.0.2: 6041 /util-deprecate@1.0.2:
10717 resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 6042 resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
10718 6043
10719 /util@0.12.5:
10720 resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==}
10721 dependencies:
10722 inherits: 2.0.4
10723 is-arguments: 1.1.1
10724 is-generator-function: 1.0.10
10725 is-typed-array: 1.1.12
10726 which-typed-array: 1.1.11
10727 dev: false
10728
10729 /utila@0.4.0:
10730 resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==}
10731 dev: true
10732
10733 /utils-merge@1.0.1:
10734 resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
10735 engines: {node: '>= 0.4.0'}
10736 dev: true
10737
10738 /uuid-random@1.3.2: 6044 /uuid-random@1.3.2:
10739 resolution: {integrity: sha512-UOzej0Le/UgkbWEO8flm+0y+G+ljUon1QWTEZOq1rnMAsxo2+SckbiZdKzAHHlVh6gJqI1TjC/xwgR50MuCrBQ==} 6045 resolution: {integrity: sha512-UOzej0Le/UgkbWEO8flm+0y+G+ljUon1QWTEZOq1rnMAsxo2+SckbiZdKzAHHlVh6gJqI1TjC/xwgR50MuCrBQ==}
10740 dev: false 6046 dev: false
10741 6047
10742 /uuid@8.0.0:
10743 resolution: {integrity: sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==}
10744 hasBin: true
10745 dev: false
10746
10747 /uuid@8.3.2:
10748 resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
10749 hasBin: true
10750 dev: true
10751
10752 /uuid@9.0.1: 6048 /uuid@9.0.1:
10753 resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} 6049 resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
10754 hasBin: true 6050 hasBin: true
10755 dev: false 6051 dev: false
10756 6052
10757 /valid-url@1.0.9: 6053 /v8-compile-cache-lib@3.0.1:
10758 resolution: {integrity: sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==} 6054 resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
10759 dev: true 6055 dev: true
10760 6056
10761 /validate-npm-package-license@3.0.4: 6057 /validate-npm-package-license@3.0.4:
@@ -10765,12 +6061,6 @@ packages:
10765 spdx-expression-parse: 3.0.1 6061 spdx-expression-parse: 3.0.1
10766 dev: true 6062 dev: true
10767 6063
10768 /validate-npm-package-name@3.0.0:
10769 resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==}
10770 dependencies:
10771 builtins: 1.0.3
10772 dev: true
10773
10774 /validator@13.11.0: 6064 /validator@13.11.0:
10775 resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==} 6065 resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==}
10776 engines: {node: '>= 0.10'} 6066 engines: {node: '>= 0.10'}
@@ -10779,209 +6069,59 @@ packages:
10779 resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 6069 resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
10780 engines: {node: '>= 0.8'} 6070 engines: {node: '>= 0.8'}
10781 6071
10782 /watchpack@2.4.0: 6072 /vite-plugin-restart@0.4.0(vite@5.1.1):
10783 resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} 6073 resolution: {integrity: sha512-SXeyKQAzRFmEmEyGP2DjaTbx22D1K5MapyNiAP7Xa14UyFgNSDjZ86bfjWksA0pqn+bZyxnVLJpCiqDuG+tOcg==}
10784 engines: {node: '>=10.13.0'} 6074 peerDependencies:
10785 dependencies: 6075 vite: ^2.9.0 || ^3.0.0 || ^4.0.0 || ^5.0.0
10786 glob-to-regexp: 0.4.1
10787 graceful-fs: 4.2.11
10788 dev: true
10789
10790 /wbuf@1.7.3:
10791 resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==}
10792 dependencies:
10793 minimalistic-assert: 1.0.1
10794 dev: true
10795
10796 /wcwidth@1.0.1:
10797 resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
10798 dependencies: 6076 dependencies:
10799 defaults: 1.0.4 6077 micromatch: 4.0.5
6078 vite: 5.1.1(@types/node@20.7.2)
10800 dev: true 6079 dev: true
10801 6080
10802 /webidl-conversions@3.0.1: 6081 /vite@5.1.1(@types/node@20.7.2):
10803 resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 6082 resolution: {integrity: sha512-wclpAgY3F1tR7t9LL5CcHC41YPkQIpKUGeIuT8MdNwNZr6OqOTLs7JX5vIHAtzqLWXts0T+GDrh9pN2arneKqg==}
10804 dev: false 6083 engines: {node: ^18.0.0 || >=20.0.0}
10805
10806 /webpack-cli@5.1.4(webpack@5.88.2):
10807 resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==}
10808 engines: {node: '>=14.15.0'}
10809 hasBin: true 6084 hasBin: true
10810 peerDependencies: 6085 peerDependencies:
10811 '@webpack-cli/generators': '*' 6086 '@types/node': ^18.0.0 || >=20.0.0
10812 webpack: 5.x.x 6087 less: '*'
10813 webpack-bundle-analyzer: '*' 6088 lightningcss: ^1.21.0
10814 webpack-dev-server: '*' 6089 sass: '*'
6090 stylus: '*'
6091 sugarss: '*'
6092 terser: ^5.4.0
10815 peerDependenciesMeta: 6093 peerDependenciesMeta:
10816 '@webpack-cli/generators': 6094 '@types/node':
10817 optional: true 6095 optional: true
10818 webpack-bundle-analyzer: 6096 less:
10819 optional: true 6097 optional: true
10820 webpack-dev-server: 6098 lightningcss:
10821 optional: true 6099 optional: true
10822 dependencies: 6100 sass:
10823 '@discoveryjs/json-ext': 0.5.7
10824 '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.88.2)
10825 '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.88.2)
10826 '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.88.2)
10827 colorette: 2.0.20
10828 commander: 10.0.1
10829 cross-spawn: 7.0.3
10830 envinfo: 7.10.0
10831 fastest-levenshtein: 1.0.16
10832 import-local: 3.1.0
10833 interpret: 3.1.1
10834 rechoir: 0.8.0
10835 webpack: 5.88.2(webpack-cli@5.1.4)
10836 webpack-merge: 5.9.0
10837 dev: true
10838
10839 /webpack-dev-middleware@5.3.3(webpack@5.88.2):
10840 resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==}
10841 engines: {node: '>= 12.13.0'}
10842 peerDependencies:
10843 webpack: ^4.0.0 || ^5.0.0
10844 dependencies:
10845 colorette: 2.0.20
10846 memfs: 3.5.3
10847 mime-types: 2.1.35
10848 range-parser: 1.2.1
10849 schema-utils: 4.2.0
10850 webpack: 5.88.2(webpack-cli@5.1.4)
10851 dev: true
10852
10853 /webpack-dev-server@4.15.1(webpack-cli@5.1.4)(webpack@5.88.2):
10854 resolution: {integrity: sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==}
10855 engines: {node: '>= 12.13.0'}
10856 hasBin: true
10857 peerDependencies:
10858 webpack: ^4.37.0 || ^5.0.0
10859 webpack-cli: '*'
10860 peerDependenciesMeta:
10861 webpack:
10862 optional: true 6101 optional: true
10863 webpack-cli: 6102 stylus:
10864 optional: true 6103 optional: true
10865 dependencies: 6104 sugarss:
10866 '@types/bonjour': 3.5.11 6105 optional: true
10867 '@types/connect-history-api-fallback': 1.5.1 6106 terser:
10868 '@types/express': 4.17.18
10869 '@types/serve-index': 1.9.2
10870 '@types/serve-static': 1.15.3
10871 '@types/sockjs': 0.3.34
10872 '@types/ws': 8.5.6
10873 ansi-html-community: 0.0.8
10874 bonjour-service: 1.1.1
10875 chokidar: 3.5.3
10876 colorette: 2.0.20
10877 compression: 1.7.4
10878 connect-history-api-fallback: 2.0.0
10879 default-gateway: 6.0.3
10880 express: 4.18.2
10881 graceful-fs: 4.2.11
10882 html-entities: 2.4.0
10883 http-proxy-middleware: 2.0.6(@types/express@4.17.18)
10884 ipaddr.js: 2.1.0
10885 launch-editor: 2.6.0
10886 open: 8.4.2
10887 p-retry: 4.6.2
10888 rimraf: 3.0.2
10889 schema-utils: 4.2.0
10890 selfsigned: 2.1.1
10891 serve-index: 1.9.1
10892 sockjs: 0.3.24
10893 spdy: 4.0.2
10894 webpack: 5.88.2(webpack-cli@5.1.4)
10895 webpack-cli: 5.1.4(webpack@5.88.2)
10896 webpack-dev-middleware: 5.3.3(webpack@5.88.2)
10897 ws: 8.14.2
10898 transitivePeerDependencies:
10899 - bufferutil
10900 - debug
10901 - supports-color
10902 - utf-8-validate
10903 dev: true
10904
10905 /webpack-merge@4.2.2:
10906 resolution: {integrity: sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==}
10907 dependencies:
10908 lodash: 4.17.21
10909 dev: true
10910
10911 /webpack-merge@5.9.0:
10912 resolution: {integrity: sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==}
10913 engines: {node: '>=10.0.0'}
10914 dependencies:
10915 clone-deep: 4.0.1
10916 wildcard: 2.0.1
10917 dev: true
10918
10919 /webpack-sources@3.2.3:
10920 resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
10921 engines: {node: '>=10.13.0'}
10922 dev: true
10923
10924 /webpack@5.88.2(webpack-cli@5.1.4):
10925 resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==}
10926 engines: {node: '>=10.13.0'}
10927 hasBin: true
10928 peerDependencies:
10929 webpack-cli: '*'
10930 peerDependenciesMeta:
10931 webpack-cli:
10932 optional: true 6107 optional: true
10933 dependencies: 6108 dependencies:
10934 '@types/eslint-scope': 3.7.5 6109 '@types/node': 20.7.2
10935 '@types/estree': 1.0.2 6110 esbuild: 0.19.12
10936 '@webassemblyjs/ast': 1.11.6 6111 postcss: 8.4.35
10937 '@webassemblyjs/wasm-edit': 1.11.6 6112 rollup: 4.10.0
10938 '@webassemblyjs/wasm-parser': 1.11.6 6113 optionalDependencies:
10939 acorn: 8.10.0 6114 fsevents: 2.3.3
10940 acorn-import-assertions: 1.9.0(acorn@8.10.0)
10941 browserslist: 4.22.1
10942 chrome-trace-event: 1.0.3
10943 enhanced-resolve: 5.15.0
10944 es-module-lexer: 1.3.1
10945 eslint-scope: 5.1.1
10946 events: 3.3.0
10947 glob-to-regexp: 0.4.1
10948 graceful-fs: 4.2.11
10949 json-parse-even-better-errors: 2.3.1
10950 loader-runner: 4.3.0
10951 mime-types: 2.1.35
10952 neo-async: 2.6.2
10953 schema-utils: 3.3.0
10954 tapable: 2.2.1
10955 terser-webpack-plugin: 5.3.9(webpack@5.88.2)
10956 watchpack: 2.4.0
10957 webpack-cli: 5.1.4(webpack@5.88.2)
10958 webpack-sources: 3.2.3
10959 transitivePeerDependencies:
10960 - '@swc/core'
10961 - esbuild
10962 - uglify-js
10963 dev: true
10964
10965 /websocket-driver@0.7.4:
10966 resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==}
10967 engines: {node: '>=0.8.0'}
10968 dependencies:
10969 http-parser-js: 0.5.8
10970 safe-buffer: 5.2.1
10971 websocket-extensions: 0.1.4
10972 dev: true 6115 dev: true
10973 6116
10974 /websocket-extensions@0.1.4: 6117 /webidl-conversions@3.0.1:
10975 resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} 6118 resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
10976 engines: {node: '>=0.8.0'}
10977 dev: true
10978 6119
10979 /whatwg-url@5.0.0: 6120 /whatwg-url@5.0.0:
10980 resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 6121 resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
10981 dependencies: 6122 dependencies:
10982 tr46: 0.0.3 6123 tr46: 0.0.3
10983 webidl-conversions: 3.0.1 6124 webidl-conversions: 3.0.1
10984 dev: false
10985 6125
10986 /which-boxed-primitive@1.0.2: 6126 /which-boxed-primitive@1.0.2:
10987 resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 6127 resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
@@ -11002,6 +6142,7 @@ packages:
11002 for-each: 0.3.3 6142 for-each: 0.3.3
11003 gopd: 1.0.1 6143 gopd: 1.0.1
11004 has-tostringtag: 1.0.0 6144 has-tostringtag: 1.0.0
6145 dev: true
11005 6146
11006 /which@2.0.2: 6147 /which@2.0.2:
11007 resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 6148 resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
@@ -11014,77 +6155,36 @@ packages:
11014 resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} 6155 resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
11015 dependencies: 6156 dependencies:
11016 string-width: 4.2.3 6157 string-width: 4.2.3
11017 dev: false
11018
11019 /wildcard@2.0.1:
11020 resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==}
11021 dev: true
11022 6158
11023 /wordwrap@1.0.0: 6159 /wordwrap@1.0.0:
11024 resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} 6160 resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
11025 dev: true
11026 6161
11027 /wrap-ansi@6.2.0: 6162 /wrap-ansi@9.0.0:
11028 resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} 6163 resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==}
11029 engines: {node: '>=8'} 6164 engines: {node: '>=18'}
11030 dependencies: 6165 dependencies:
11031 ansi-styles: 4.3.0 6166 ansi-styles: 6.2.1
11032 string-width: 4.2.3 6167 string-width: 7.1.0
11033 strip-ansi: 6.0.1 6168 strip-ansi: 7.1.0
11034 6169
11035 /wrappy@1.0.2: 6170 /wrappy@1.0.2:
11036 resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 6171 resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
11037 6172
11038 /ws@8.14.2:
11039 resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==}
11040 engines: {node: '>=10.0.0'}
11041 peerDependencies:
11042 bufferutil: ^4.0.1
11043 utf-8-validate: '>=5.0.2'
11044 peerDependenciesMeta:
11045 bufferutil:
11046 optional: true
11047 utf-8-validate:
11048 optional: true
11049 dev: true
11050
11051 /xml2js@0.6.2:
11052 resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==}
11053 engines: {node: '>=4.0.0'}
11054 dependencies:
11055 sax: 1.2.1
11056 xmlbuilder: 11.0.1
11057 dev: false
11058
11059 /xmlbuilder@11.0.1:
11060 resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==}
11061 engines: {node: '>=4.0'}
11062 dev: false
11063
11064 /xtend@4.0.2: 6173 /xtend@4.0.2:
11065 resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 6174 resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
11066 engines: {node: '>=0.4'} 6175 engines: {node: '>=0.4'}
11067 dev: false 6176 dev: false
11068 6177
11069 /yallist@2.1.2:
11070 resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==}
11071 dev: true
11072
11073 /yallist@3.1.1:
11074 resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
11075 dev: true
11076
11077 /yallist@4.0.0: 6178 /yallist@4.0.0:
11078 resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 6179 resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
11079 6180
11080 /yaml@2.3.2:
11081 resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==}
11082 engines: {node: '>= 14'}
11083 dev: true
11084
11085 /yargs-parser@21.1.1: 6181 /yargs-parser@21.1.1:
11086 resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 6182 resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
11087 engines: {node: '>=12'} 6183 engines: {node: '>=12'}
6184
6185 /yn@3.1.1:
6186 resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
6187 engines: {node: '>=6'}
11088 dev: true 6188 dev: true
11089 6189
11090 /yocto-queue@0.1.0: 6190 /yocto-queue@0.1.0:
@@ -11095,7 +6195,6 @@ packages:
11095 /yocto-queue@1.0.0: 6195 /yocto-queue@1.0.0:
11096 resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} 6196 resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
11097 engines: {node: '>=12.20'} 6197 engines: {node: '>=12.20'}
11098 dev: true
11099 6198
11100 /youch-terminal@2.2.3: 6199 /youch-terminal@2.2.3:
11101 resolution: {integrity: sha512-/PE77ZwG072tXBvF47S9RL9/G80u86icZ5QwyjblyM67L4n/T5qQeM3Xrecbu8kkDDr/9T/PTj/X+6G/OSRQug==} 6200 resolution: {integrity: sha512-/PE77ZwG072tXBvF47S9RL9/G80u86icZ5QwyjblyM67L4n/T5qQeM3Xrecbu8kkDDr/9T/PTj/X+6G/OSRQug==}
@@ -11103,7 +6202,6 @@ packages:
11103 kleur: 4.1.5 6202 kleur: 4.1.5
11104 string-width: 4.2.3 6203 string-width: 4.2.3
11105 wordwrap: 1.0.0 6204 wordwrap: 1.0.0
11106 dev: true
11107 6205
11108 /youch@3.3.3: 6206 /youch@3.3.3:
11109 resolution: {integrity: sha512-qSFXUk3UZBLfggAW3dJKg0BMblG5biqSF8M34E06o5CSsZtH92u9Hqmj2RzGiHDi64fhe83+4tENFP2DB6t6ZA==} 6207 resolution: {integrity: sha512-qSFXUk3UZBLfggAW3dJKg0BMblG5biqSF8M34E06o5CSsZtH92u9Hqmj2RzGiHDi64fhe83+4tENFP2DB6t6ZA==}
@@ -11111,19 +6209,6 @@ packages:
11111 cookie: 0.5.0 6209 cookie: 0.5.0
11112 mustache: 4.2.0 6210 mustache: 4.2.0
11113 stacktracey: 2.1.8 6211 stacktracey: 2.1.8
11114 dev: true
11115
11116 /z-schema@5.0.5:
11117 resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==}
11118 engines: {node: '>=8.0.0'}
11119 hasBin: true
11120 dependencies:
11121 lodash.get: 4.4.2
11122 lodash.isequal: 4.5.0
11123 validator: 13.11.0
11124 optionalDependencies:
11125 commander: 9.5.0
11126 dev: true
11127 6212
11128 github.com/SpecialAro/adonis5-jwt/34941c10adcf89583a40767552b994ea499b92e3: 6213 github.com/SpecialAro/adonis5-jwt/34941c10adcf89583a40767552b994ea499b92e3:
11129 resolution: {tarball: https://codeload.github.com/SpecialAro/adonis5-jwt/tar.gz/34941c10adcf89583a40767552b994ea499b92e3} 6214 resolution: {tarball: https://codeload.github.com/SpecialAro/adonis5-jwt/tar.gz/34941c10adcf89583a40767552b994ea499b92e3}
diff --git a/providers/AppProvider.ts b/providers/AppProvider.ts
index 8d64412..c84c0e6 100644
--- a/providers/AppProvider.ts
+++ b/providers/AppProvider.ts
@@ -1,7 +1,7 @@
1import { ApplicationContract } from '@ioc:Adonis/Core/Application'; 1import { ApplicationService } from '@adonisjs/core/types'
2 2
3export default class AppProvider { 3export default class AppProvider {
4 constructor(protected app: ApplicationContract) {} 4 constructor(protected app: ApplicationService) {}
5 5
6 public register() { 6 public register() {
7 // Register your own bindings 7 // Register your own bindings
diff --git a/providers/LegacyHashDriver.ts b/providers/LegacyHashDriver.ts
index 22f9de1..eb2a263 100644
--- a/providers/LegacyHashDriver.ts
+++ b/providers/LegacyHashDriver.ts
@@ -1,5 +1,6 @@
1import bcrypt from 'bcrypt'; 1import bcrypt from 'bcrypt'
2import { HashDriverContract } from '@ioc:Adonis/Core/Hash'; 2import { HashDriverContract } from '@adonisjs/core/hash'
3
3/** 4/**
4 * Implementation of custom bcrypt driver 5 * Implementation of custom bcrypt driver
5 */ 6 */
@@ -8,12 +9,12 @@ export class LegacyHashDriver implements HashDriverContract {
8 * Hash value 9 * Hash value
9 */ 10 */
10 public async make(value: string) { 11 public async make(value: string) {
11 return bcrypt.hash(value, 10); 12 return bcrypt.hash(value, 10)
12 } 13 }
13 /** 14 /**
14 * Verify value 15 * Verify value
15 */ 16 */
16 public async verify(hashedValue: string, plainValue: string) { 17 public async verify(hashedValue: string, plainValue: string) {
17 return bcrypt.compare(plainValue, hashedValue); 18 return bcrypt.compare(plainValue, hashedValue)
18 } 19 }
19} 20}
diff --git a/providers/LegacyHasherProvider.ts b/providers/LegacyHasherProvider.ts
index 05b2d27..a4a25d9 100644
--- a/providers/LegacyHasherProvider.ts
+++ b/providers/LegacyHasherProvider.ts
@@ -1,14 +1,14 @@
1import { ApplicationContract } from '@ioc:Adonis/Core/Application'; 1import { LegacyHashDriver } from './LegacyHashDriver.js'
2import { LegacyHashDriver } from './LegacyHashDriver'; 2import { ApplicationService } from '@adonisjs/core/types'
3 3
4export default class LegacyHasherProvider { 4export default class LegacyHasherProvider {
5 constructor(protected app: ApplicationContract) {} 5 constructor(protected app: ApplicationService) {}
6 6
7 public async boot() { 7 public async boot() {
8 const Hash = this.app.container.use('Adonis/Core/Hash'); 8 const Hash = this.app.container.use('Adonis/Core/Hash')
9 9
10 Hash.extend('legacy', () => { 10 Hash.extend('legacy', () => {
11 return new LegacyHashDriver(); 11 return new LegacyHashDriver()
12 }); 12 })
13 } 13 }
14} 14}
diff --git a/public/js/new.js b/public/js/new.js
index 62c2e4b..593258e 100644
--- a/public/js/new.js
+++ b/public/js/new.js
@@ -1,24 +1,24 @@
1/* eslint-env browser */ 1/* eslint-env browser */
2const elDrop = document.querySelector('#dropzone'); 2const elDrop = document.querySelector('#dropzone')
3const submitBtn = document.querySelector('#submitbutton'); 3const submitBtn = document.querySelector('#submitbutton')
4const fileInput = document.querySelector('#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.textContent = `✓ ${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
21}); 21})
22elDrop.addEventListener('click', () => { 22elDrop.addEventListener('click', () => {
23 fileInput.click(); 23 fileInput.click()
24}); 24})
diff --git a/public/js/transfer.js b/public/js/transfer.js
index b4ba14c..4bf46fa 100644
--- a/public/js/transfer.js
+++ b/public/js/transfer.js
@@ -1,15 +1,15 @@
1/* eslint-env browser */ 1/* eslint-env browser */
2const submitBtn = document.querySelector('#submit'); 2const submitBtn = document.querySelector('#submit')
3const fileInput = document.querySelector('#file'); 3const fileInput = document.querySelector('#file')
4const fileOutput = document.querySelector('#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.addEventListener('load', () => { 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 // eslint-disable-next-line unicorn/prefer-blob-reading-methods
14 reader.readAsText(fileInput.files[0]); 14 reader.readAsText(fileInput.files[0])
15}); 15})
diff --git a/server.ts b/server.ts
deleted file mode 100644
index f334636..0000000
--- a/server.ts
+++ /dev/null
@@ -1,19 +0,0 @@
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/env.ts b/start/env.ts
index 1f163b0..3e1702e 100644
--- a/env.ts
+++ b/start/env.ts
@@ -11,10 +11,9 @@
11| and hence do not rename or move this file to a different location. 11| and hence do not rename or move this file to a different location.
12| 12|
13*/ 13*/
14import { Env } from '@adonisjs/core/env'
14 15
15import Env from '@ioc:Adonis/Core/Env'; 16export default await Env.create(new URL('../', import.meta.url), {
16
17export default Env.rules({
18 HOST: Env.schema.string({ format: 'host' }), 17 HOST: Env.schema.string({ format: 'host' }),
19 PORT: Env.schema.number(), 18 PORT: Env.schema.number(),
20 19
@@ -22,4 +21,4 @@ export default Env.rules({
22 APP_NAME: Env.schema.string(), 21 APP_NAME: Env.schema.string(),
23 22
24 NODE_ENV: Env.schema.enum(['development', 'production', 'test'] as const), 23 NODE_ENV: Env.schema.enum(['development', 'production', 'test'] as const),
25}); 24})
diff --git a/start/events.ts b/start/events.ts
index 11e63e5..faedc29 100644
--- a/start/events.ts
+++ b/start/events.ts
@@ -1,6 +1,6 @@
1import Config from '@ioc:Adonis/Core/Config'; 1import { Config } from '@adonisjs/core/config'
2import Event from '@ioc:Adonis/Core/Event'; 2import emitter from '@adonisjs/core/services/emitter'
3import Mail from '@ioc:Adonis/Addons/Mail'; 3import mail from '@adonisjs/mail/services/main'
4 4
5/* 5/*
6|-------------------------------------------------------------------------- 6|--------------------------------------------------------------------------
@@ -11,11 +11,11 @@ import Mail from '@ioc:Adonis/Addons/Mail';
11| boot. 11| boot.
12| 12|
13*/ 13*/
14Event.on('forgot::password', async ({ user, token }) => { 14emitter.on('forgot::password', async ({ user, token }) => {
15 try { 15 try {
16 // eslint-disable-next-line no-console 16 // eslint-disable-next-line no-console
17 console.log('Sending message'); 17 console.log('Sending message')
18 await Mail.send(message => { 18 await mail.send((message) => {
19 message 19 message
20 .subject('[Ferdium] Forgot Password') 20 .subject('[Ferdium] Forgot Password')
21 .to(user.email) 21 .to(user.email)
@@ -24,10 +24,10 @@ Event.on('forgot::password', async ({ user, token }) => {
24 appUrl: Config.get('app.url'), 24 appUrl: Config.get('app.url'),
25 username: user.username, 25 username: user.username,
26 token, 26 token,
27 }); 27 })
28 }); 28 })
29 } catch (error) { 29 } catch (error) {
30 // eslint-disable-next-line no-console 30 // eslint-disable-next-line no-console
31 console.log(`Couldn't send mail: ${error}`); 31 console.log(`Couldn't send mail: ${error}`)
32 } 32 }
33}); 33})
diff --git a/start/kernel.ts b/start/kernel.ts
index 1c5c92b..99a0820 100644
--- a/start/kernel.ts
+++ b/start/kernel.ts
@@ -9,7 +9,7 @@
9| 9|
10*/ 10*/
11 11
12import Server from '@ioc:Adonis/Core/Server'; 12import { server } from '@adonisjs/core/services/server'
13 13
14/* 14/*
15|-------------------------------------------------------------------------- 15|--------------------------------------------------------------------------
@@ -20,10 +20,10 @@ import Server from '@ioc:Adonis/Core/Server';
20| are defined for every HTTP requests. 20| are defined for every HTTP requests.
21| 21|
22*/ 22*/
23Server.middleware.register([ 23server.middleware.register([
24 () => import('@ioc:Adonis/Core/BodyParser'), 24 () => import('@ioc:Adonis/Core/BodyParser'),
25 () => import('@ioc:Adonis/Addons/Shield'), 25 () => import('@ioc:Adonis/Addons/Shield'),
26]); 26])
27 27
28/* 28/*
29|-------------------------------------------------------------------------- 29|--------------------------------------------------------------------------
@@ -41,9 +41,9 @@ Server.middleware.register([
41| Route.get('dashboard', 'UserController.dashboard').middleware('auth') 41| Route.get('dashboard', 'UserController.dashboard').middleware('auth')
42| 42|
43*/ 43*/
44Server.middleware.registerNamed({ 44server.middleware.registerNamed({
45 auth: () => import('App/Middleware/Auth'), 45 auth: () => import('App/Middleware/Auth'),
46 dashboard: () => import('App/Middleware/Dashboard'), 46 dashboard: () => import('App/Middleware/Dashboard'),
47 guest: () => import('App/Middleware/AllowGuestOnly'), 47 guest: () => import('App/Middleware/AllowGuestOnly'),
48 shield: () => import('@ioc:Adonis/Addons/Shield'), 48 shield: () => import('@ioc:Adonis/Addons/Shield'),
49}); 49})
diff --git a/start/routes.ts b/start/routes.ts
index 75cef72..7c62909 100644
--- a/start/routes.ts
+++ b/start/routes.ts
@@ -18,5 +18,5 @@
18| 18|
19*/ 19*/
20 20
21import './routes/api'; 21import './routes/api.js'
22import './routes/web'; 22import './routes/web.js'
diff --git a/start/routes/api.ts b/start/routes/api.ts
index 78282f0..8992154 100644
--- a/start/routes/api.ts
+++ b/start/routes/api.ts
@@ -1,51 +1,47 @@
1// As this is currently a rebuild of the initial API we it is grouped in /v2/ 1// As this is currently a rebuild of the initial API we it is grouped in /v2/
2 2
3import Route from '@ioc:Adonis/Core/Route'; 3import router from '@adonisjs/core/services/router'
4const UserController = () => import('#controllers/Http/UserController')
5const ServiceController = () => import('#controllers/Http/ServiceController')
6const RecipeController = () => import('#controllers/Http/RecipeController')
4 7
5Route.group(() => { 8router
6 // User authentification 9 .group(() => {
7 Route.post('auth/signup', 'UserController.signup').middleware('guest'); 10 // User authentification
8 Route.post('auth/login', 'UserController.login').middleware('guest'); 11 router.post('auth/signup', [UserController, 'signup']).middleware('guest')
12 router.post('auth/login', [UserController, 'login']).middleware('guest')
9 13
10 // User info 14 // User info
11 Route.get('me', 'UserController.me').middleware('auth:jwt'); 15 router.get('me', [UserController, 'me']).middleware('auth:jwt')
12 Route.put('me', 'UserController.updateMe').middleware('auth:jwt'); 16 router.put('me', [UserController, 'updateMe']).middleware('auth:jwt')
13 Route.get('me/newtoken', 'UserController.newToken').middleware('auth:jwt'); 17 router.get('me/newtoken', [UserController, 'newToken']).middleware('auth:jwt')
14 18
15 // // Service info 19 // // Service info
16 Route.post('service', 'ServiceController.create').middleware('auth:jwt'); 20 router.post('service', [ServiceController, 'create']).middleware('auth:jwt')
17 Route.put('service/reorder', 'ServiceController.reorder').middleware( 21 router.put('service/reorder', [ServiceController, 'reorder']).middleware('auth:jwt')
18 'auth:jwt', 22 router.put('service/:id', [ServiceController, 'edit']).middleware('auth:jwt')
19 ); 23 router.delete('service/:id', [ServiceController, 'delete']).middleware('auth:jwt')
20 Route.put('service/:id', 'ServiceController.edit').middleware('auth:jwt'); 24 router.get('me/services', [ServiceController, 'list']).middleware('auth:jwt')
21 Route.delete('service/:id', 'ServiceController.delete').middleware( 25 router.get('recipe', [ServiceController, 'list']).middleware('auth:jwt')
22 'auth:jwt', 26 router.get('icon/:id', [ServiceController, 'icon'])
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 27
28 // Recipe store 28 // Recipe store
29 Route.get('recipes', 'RecipeController.list'); 29 router.get('recipes', [RecipeController, 'list'])
30 Route.get('recipes/search', 'RecipeController.search'); 30 router.get('recipes/search', [RecipeController, 'search'])
31 Route.get('recipes/popular', 'RecipeController.popularRecipes'); 31 router.get('recipes/popular', [RecipeController, 'popularRecipes'])
32 Route.get('recipes/download/:recipe', 'RecipeController.download'); 32 router.get('recipes/download/:recipe', [RecipeController, 'download'])
33 Route.post('recipes/update', 'RecipeController.update'); 33 router.post('recipes/update', [RecipeController, 'update'])
34 34
35 // // Workspaces 35 // // Workspaces
36 Route.put('workspace/:id', 'WorkspaceController.edit').middleware('auth:jwt'); 36 router.put('workspace/:id', 'WorkspaceController.edit').middleware('auth:jwt')
37 Route.delete('workspace/:id', 'WorkspaceController.delete').middleware( 37 router.delete('workspace/:id', 'WorkspaceController.delete').middleware('auth:jwt')
38 'auth:jwt', 38 router.post('workspace', 'WorkspaceController.create').middleware('auth:jwt')
39 ); 39 router.get('workspace', 'WorkspaceController.list').middleware('auth:jwt')
40 Route.post('workspace', 'WorkspaceController.create').middleware('auth:jwt');
41 Route.get('workspace', 'WorkspaceController.list').middleware('auth:jwt');
42 40
43 // Static responses 41 // Static responses
44 Route.get('features/:mode?', 'Api/Static/FeaturesController.show'); 42 router.get('features/:mode?', 'Api/Static/FeaturesController.show')
45 Route.get('services', 'Api/Static/EmptyController.show'); 43 router.get('services', 'Api/Static/EmptyController.show')
46 Route.get('news', 'Api/Static/EmptyController.show'); 44 router.get('news', 'Api/Static/EmptyController.show')
47 Route.get( 45 router.get('announcements/:version', 'Api/Static/AnnouncementsController.show')
48 'announcements/:version', 46 })
49 'Api/Static/AnnouncementsController.show', 47 .prefix('/v1')
50 );
51}).prefix('/v1');
diff --git a/start/routes/web.ts b/start/routes/web.ts
index 308abec..fd12bf2 100644
--- a/start/routes/web.ts
+++ b/start/routes/web.ts
@@ -1,54 +1,62 @@
1import Route from '@ioc:Adonis/Core/Route'; 1import router from '@adonisjs/core/services/router'
2 2
3// Health check 3// Health check
4Route.get('health', 'HealthController.index'); 4router.get('health', 'HealthController.index')
5 5
6// Legal documents 6// Legal documents
7Route.get('terms', ({ response }) => response.redirect('/terms.html')); 7router.get('terms', ({ response }) => response.redirect('/terms.html'))
8Route.get('privacy', ({ response }) => response.redirect('/privacy.html')); 8router.get('privacy', ({ response }) => response.redirect('/privacy.html'))
9 9
10// Index 10// Index
11Route.get('/', ({ view }) => view.render('others/index')); 11router.get('/', ({ view }) => view.render('others/index'))
12 12
13Route.group(() => { 13router
14 Route.group(() => { 14 .group(() => {
15 // Guest troutes 15 router
16 Route.group(() => { 16 .group(() => {
17 Route.get('login', 'Dashboard/LoginController.show'); 17 // Guest troutes
18 Route.post('login', 'Dashboard/LoginController.login').as('login'); 18 router
19 19 .group(() => {
20 // Reset password 20 router.get('login', 'Dashboard/LoginController.show')
21 Route.get('forgot', 'Dashboard/ForgotPasswordController.show'); 21 router.post('login', 'Dashboard/LoginController.login').as('login')
22 Route.post('forgot', 'Dashboard/ForgotPasswordController.forgotPassword'); 22
23 23 // Reset password
24 Route.get('reset', 'Dashboard/ResetPasswordController.show'); 24 router.get('forgot', 'Dashboard/ForgotPasswordController.show')
25 Route.post('reset', 'Dashboard/ResetPasswordController.resetPassword'); 25 router.post('forgot', 'Dashboard/ForgotPasswordController.forgotPassword')
26 }).middleware(['dashboard', 'guest']); 26
27 27 router.get('reset', 'Dashboard/ResetPasswordController.show')
28 // Authenticated routes 28 router.post('reset', 'Dashboard/ResetPasswordController.resetPassword')
29 Route.group(() => { 29 })
30 Route.get('account', 'Dashboard/AccountController.show'); 30 .middleware(['dashboard', 'guest'])
31 Route.post('account', 'Dashboard/AccountController.store'); 31
32 32 // Authenticated routes
33 Route.get('data', 'Dashboard/DataController.show'); 33 router
34 Route.get('export', 'Dashboard/ExportController.show'); 34 .group(() => {
35 35 router.get('account', 'Dashboard/AccountController.show')
36 Route.get('transfer', 'Dashboard/TransferController.show'); 36 router.post('account', 'Dashboard/AccountController.store')
37 Route.post('transfer', 'Dashboard/TransferController.import'); 37
38 38 router.get('data', 'Dashboard/DataController.show')
39 Route.get('delete', 'Dashboard/DeleteController.show'); 39 router.get('export', 'Dashboard/ExportController.show')
40 Route.post('delete', 'Dashboard/DeleteController.delete'); 40
41 41 router.get('transfer', 'Dashboard/TransferController.show')
42 Route.get('logout', 'Dashboard/LogOutController.logout'); 42 router.post('transfer', 'Dashboard/TransferController.import')
43 43
44 Route.get('*', ({ response }) => response.redirect('/user/account')); 44 router.get('delete', 'Dashboard/DeleteController.show')
45 }).middleware(['dashboard', 'auth:web']); 45 router.post('delete', 'Dashboard/DeleteController.delete')
46 }).prefix('user'); 46
47 47 router.get('logout', 'Dashboard/LogOutController.logout')
48 // Franz/Ferdi account import 48
49 Route.get('import', ({ view }) => view.render('others/import')); 49 router.get('*', ({ response }) => response.redirect('/user/account'))
50 Route.post('import', 'UserController.import'); 50 })
51 51 .middleware(['dashboard', 'auth:web'])
52 // 404 handler 52 })
53 Route.get('/*', ({ response }) => response.redirect('/')); 53 .prefix('user')
54}).middleware(['dashboard']); 54
55 // Franz/Ferdi account import
56 router.get('import', ({ view }) => view.render('others/import'))
57 router.post('import', 'UserController.import')
58
59 // 404 handler
60 router.get('/*', ({ response }) => response.redirect('/'))
61 })
62 .middleware(['dashboard'])
diff --git a/test.ts b/test.ts
deleted file mode 100644
index 65f1348..0000000
--- a/test.ts
+++ /dev/null
@@ -1,49 +0,0 @@
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
index efd1d1f..1c6bea1 100644
--- a/tests/bootstrap.ts
+++ b/tests/bootstrap.ts
@@ -5,15 +5,10 @@
5 * file. 5 * file.
6 */ 6 */
7 7
8import type { Config } from '@japa/runner'; 8import type { Config } from '@japa/runner'
9import TestUtils from '@ioc:Adonis/Core/TestUtils'; 9import TestUtils from '@ioc:Adonis/Core/TestUtils'
10import { 10import { assert, runFailedTests, specReporter, apiClient } from '@japa/preset-adonis'
11 assert, 11import { fakeCsrfField } from './utils.js'
12 runFailedTests,
13 specReporter,
14 apiClient,
15} from '@japa/preset-adonis';
16import { fakeCsrfField } from './utils';
17 12
18/* 13/*
19|-------------------------------------------------------------------------- 14|--------------------------------------------------------------------------
@@ -26,11 +21,7 @@ import { fakeCsrfField } from './utils';
26| Feel free to remove existing plugins or add more. 21| Feel free to remove existing plugins or add more.
27| 22|
28*/ 23*/
29export const plugins: Config['plugins'] = [ 24export const plugins: Config['plugins'] = [assert(), runFailedTests(), apiClient()]
30 assert(),
31 runFailedTests(),
32 apiClient(),
33];
34 25
35/* 26/*
36|-------------------------------------------------------------------------- 27|--------------------------------------------------------------------------
@@ -42,7 +33,7 @@ export const plugins: Config['plugins'] = [
42| of tests on the terminal. 33| of tests on the terminal.
43| 34|
44*/ 35*/
45export const reporters: Config['reporters'] = [specReporter()]; 36export const reporters: Config['reporters'] = [specReporter()]
46 37
47/* 38/*
48|-------------------------------------------------------------------------- 39|--------------------------------------------------------------------------
@@ -63,7 +54,7 @@ export const runnerHooks: Required<Pick<Config, 'setup' | 'teardown'>> = {
63 () => fakeCsrfField(), 54 () => fakeCsrfField(),
64 ], 55 ],
65 teardown: [], 56 teardown: [],
66}; 57}
67 58
68/* 59/*
69|-------------------------------------------------------------------------- 60|--------------------------------------------------------------------------
@@ -76,8 +67,8 @@ export const runnerHooks: Required<Pick<Config, 'setup' | 'teardown'>> = {
76| You can use this method to configure suites. For example: Only start 67| You can use this method to configure suites. For example: Only start
77| the HTTP server when it is a functional suite. 68| the HTTP server when it is a functional suite.
78*/ 69*/
79export const configureSuite: Config['configureSuite'] = suite => { 70export const configureSuite: Config['configureSuite'] = (suite) => {
80 if (suite.name === 'functional') { 71 if (suite.name === 'functional') {
81 suite.setup(() => TestUtils.httpServer().start()); 72 suite.setup(() => TestUtils.httpServer().start())
82 } 73 }
83}; 74}
diff --git a/tests/config.ts b/tests/config.ts
index 8cd3511..f40284e 100644
--- a/tests/config.ts
+++ b/tests/config.ts
@@ -1 +1 @@
export const apiVersion = 'v1'; export const apiVersion = 'v1'
diff --git a/tests/functional/api/static/announcements.spec.ts b/tests/functional/api/static/announcements.spec.ts
index ac933fe..45881ec 100644
--- a/tests/functional/api/static/announcements.spec.ts
+++ b/tests/functional/api/static/announcements.spec.ts
@@ -1,22 +1,20 @@
1import { test } from '@japa/runner'; 1import { test } from '@japa/runner'
2import { apiVersion } from '../../../config'; 2import { apiVersion } from '../../../config.js'
3 3
4test.group('API / Static / News', () => { 4test.group('API / Static / News', () => {
5 test('returns a 404 response when the requested versions does not exist', async ({ 5 test('returns a 404 response when the requested versions does not exist', async ({ client }) => {
6 client, 6 const response = await client.get(`/${apiVersion}/announcements/illegal`)
7 }) => {
8 const response = await client.get(`/${apiVersion}/announcements/illegal`);
9 7
10 response.assertStatus(404); 8 response.assertStatus(404)
11 response.assertTextIncludes('No announcement found.'); 9 response.assertTextIncludes('No announcement found.')
12 }); 10 })
13 11
14 test('returns a 200 response with default version file when specifying version as input', async ({ 12 test('returns a 200 response with default version file when specifying version as input', async ({
15 client, 13 client,
16 }) => { 14 }) => {
17 const response = await client.get(`/${apiVersion}/announcements/version`); 15 const response = await client.get(`/${apiVersion}/announcements/version`)
18 16
19 response.assertStatus(200); 17 response.assertStatus(200)
20 response.assertBody({ 18 response.assertBody({
21 main: { 19 main: {
22 headline: 'Example Announcement', 20 headline: 'Example Announcement',
@@ -50,6 +48,6 @@ test.group('API / Static / News', () => {
50 }, 48 },
51 }, 49 },
52 }, 50 },
53 }); 51 })
54 }); 52 })
55}); 53})
diff --git a/tests/functional/api/static/features.spec.ts b/tests/functional/api/static/features.spec.ts
index 1050fcf..c31e25f 100644
--- a/tests/functional/api/static/features.spec.ts
+++ b/tests/functional/api/static/features.spec.ts
@@ -1,5 +1,5 @@
1import { test } from '@japa/runner'; 1import { test } from '@japa/runner'
2import { apiVersion } from '../../../config'; 2import { apiVersion } from '../../../config.js'
3 3
4const defaultResponse = { 4const defaultResponse = {
5 isServiceProxyEnabled: true, 5 isServiceProxyEnabled: true,
@@ -8,22 +8,22 @@ const defaultResponse = {
8 isSettingsWSEnabled: false, 8 isSettingsWSEnabled: false,
9 isMagicBarEnabled: true, 9 isMagicBarEnabled: true,
10 isTodosEnabled: true, 10 isTodosEnabled: true,
11}; 11}
12 12
13test.group('API / Static / Features', () => { 13test.group('API / Static / Features', () => {
14 test('returns a 200 response with empty array', async ({ client }) => { 14 test('returns a 200 response with empty array', async ({ client }) => {
15 const response = await client.get(`/${apiVersion}/features`); 15 const response = await client.get(`/${apiVersion}/features`)
16 16
17 response.assertStatus(200); 17 response.assertStatus(200)
18 response.assertBody(defaultResponse); 18 response.assertBody(defaultResponse)
19 }); 19 })
20 20
21 test('returns a 200 response with expected object when calling with :mode', async ({ 21 test('returns a 200 response with expected object when calling with :mode', async ({
22 client, 22 client,
23 }) => { 23 }) => {
24 const response = await client.get(`/${apiVersion}/features/random`); 24 const response = await client.get(`/${apiVersion}/features/random`)
25 25
26 response.assertStatus(200); 26 response.assertStatus(200)
27 response.assertBody(defaultResponse); 27 response.assertBody(defaultResponse)
28 }); 28 })
29}); 29})
diff --git a/tests/functional/api/static/news.spec.ts b/tests/functional/api/static/news.spec.ts
index 8f3818f..71b5797 100644
--- a/tests/functional/api/static/news.spec.ts
+++ b/tests/functional/api/static/news.spec.ts
@@ -1,11 +1,11 @@
1import { test } from '@japa/runner'; 1import { test } from '@japa/runner'
2import { apiVersion } from '../../../config'; 2import { apiVersion } from '../../../config.js'
3 3
4test.group('API / Static / News', () => { 4test.group('API / Static / News', () => {
5 test('returns a 200 response with empty array', async ({ client }) => { 5 test('returns a 200 response with empty array', async ({ client }) => {
6 const response = await client.get(`/${apiVersion}/news`); 6 const response = await client.get(`/${apiVersion}/news`)
7 7
8 response.assertStatus(200); 8 response.assertStatus(200)
9 response.assertBody([]); 9 response.assertBody([])
10 }); 10 })
11}); 11})
diff --git a/tests/functional/api/static/services.spec.ts b/tests/functional/api/static/services.spec.ts
index 55eef37..595b8dc 100644
--- a/tests/functional/api/static/services.spec.ts
+++ b/tests/functional/api/static/services.spec.ts
@@ -1,11 +1,11 @@
1import { test } from '@japa/runner'; 1import { test } from '@japa/runner'
2import { apiVersion } from '../../../config'; 2import { apiVersion } from '../../../config.js'
3 3
4test.group('API / Static / Services', () => { 4test.group('API / Static / Services', () => {
5 test('returns a 200 response with empty array', async ({ client }) => { 5 test('returns a 200 response with empty array', async ({ client }) => {
6 const response = await client.get(`/${apiVersion}/services`); 6 const response = await client.get(`/${apiVersion}/services`)
7 7
8 response.assertStatus(200); 8 response.assertStatus(200)
9 response.assertBody([]); 9 response.assertBody([])
10 }); 10 })
11}); 11})
diff --git a/tests/functional/dashboard/account.spec.ts b/tests/functional/dashboard/account.spec.ts
index bee9d6a..25de22c 100644
--- a/tests/functional/dashboard/account.spec.ts
+++ b/tests/functional/dashboard/account.spec.ts
@@ -1,124 +1,109 @@
1import { test } from '@japa/runner'; 1import { test } from '@japa/runner'
2import User from 'App/Models/User'; 2import User from '#app/Models/User'
3import UserFactory from 'Database/factories/UserFactory'; 3import UserFactory from '#database/factories/UserFactory'
4 4
5test.group('Dashboard / Account page', () => { 5test.group('Dashboard / Account page', () => {
6 test('redirects to /user/login when accessing /user/account as guest', async ({ 6 test('redirects to /user/login when accessing /user/account as guest', async ({ client }) => {
7 client, 7 const response = await client.get('/user/account')
8 }) => {
9 const response = await client.get('/user/account');
10 8
11 response.assertRedirectsTo('/user/login'); // Check if it redirects to the expected URL 9 response.assertRedirectsTo('/user/login') // Check if it redirects to the expected URL
12 }); 10 })
13 11
14 test('returns a 200 opening the account route while logged in', async ({ 12 test('returns a 200 opening the account route while logged in', async ({ client }) => {
15 client, 13 const user = await UserFactory.create()
16 }) => { 14 const response = await client.get('/user/account').loginAs(user)
17 const user = await UserFactory.create();
18 const response = await client.get('/user/account').loginAs(user);
19 15
20 response.assertStatus(200); 16 response.assertStatus(200)
21 response.assertTextIncludes('Your Ferdium account'); 17 response.assertTextIncludes('Your Ferdium account')
22 18
23 response.assertTextIncludes(user.email); 19 response.assertTextIncludes(user.email)
24 response.assertTextIncludes(user.username); 20 response.assertTextIncludes(user.username)
25 response.assertTextIncludes(user.lastname); 21 response.assertTextIncludes(user.lastname)
26 }); 22 })
27 23
28 test('returns a validation error for all fields when missing', async ({ 24 test('returns a validation error for all fields when missing', async ({ client }) => {
29 client, 25 const user = await UserFactory.create()
30 }) => { 26 const response = await client.post('/user/account').loginAs(user)
31 const user = await UserFactory.create();
32 const response = await client.post('/user/account').loginAs(user);
33 27
34 response.assertTextIncludes( 28 response.assertTextIncludes(
35 'value="required validation failed,required validation failed" placeholder="E-Mail"', 29 'value="required validation failed,required validation failed" placeholder="E-Mail"'
36 ); 30 )
37 response.assertTextIncludes( 31 response.assertTextIncludes(
38 'value="required validation failed,required validation failed" placeholder="Name"', 32 'value="required validation failed,required validation failed" placeholder="Name"'
39 ); 33 )
40 response.assertTextIncludes( 34 response.assertTextIncludes(
41 'value="required validation failed,required validation failed" placeholder="Last Name"', 35 'value="required validation failed,required validation failed" placeholder="Last Name"'
42 ); 36 )
43 }); 37 })
44 38
45 test('returns a validation error for username when there is another user with same username', async ({ 39 test('returns a validation error for username when there is another user with same username', async ({
46 client, 40 client,
47 }) => { 41 }) => {
48 const user = await UserFactory.create(); 42 const user = await UserFactory.create()
49 const existingUser = await UserFactory.create(); 43 const existingUser = await UserFactory.create()
50 44
51 const response = await client.post('/user/account').loginAs(user).form({ 45 const response = await client.post('/user/account').loginAs(user).form({
52 username: existingUser.username, 46 username: existingUser.username,
53 email: user.email, 47 email: user.email,
54 lastname: user.lastname, 48 lastname: user.lastname,
55 }); 49 })
56 50
57 response.assertTextIncludes( 51 response.assertTextIncludes('value="unique validation failure" placeholder="Name"')
58 'value="unique validation failure" placeholder="Name"', 52 })
59 );
60 });
61 53
62 test('returns a validation error for email when there is another user with same email', async ({ 54 test('returns a validation error for email when there is another user with same email', async ({
63 client, 55 client,
64 }) => { 56 }) => {
65 const user = await UserFactory.create(); 57 const user = await UserFactory.create()
66 const existingUser = await UserFactory.create(); 58 const existingUser = await UserFactory.create()
67 59
68 const response = await client.post('/user/account').loginAs(user).form({ 60 const response = await client.post('/user/account').loginAs(user).form({
69 username: user.username, 61 username: user.username,
70 email: existingUser.email, 62 email: existingUser.email,
71 lastname: user.lastname, 63 lastname: user.lastname,
72 }); 64 })
73 65
74 response.assertTextIncludes( 66 response.assertTextIncludes('value="unique validation failure" placeholder="E-Mail"')
75 'value="unique validation failure" placeholder="E-Mail"', 67 })
76 );
77 });
78 68
79 test('updates user data and ensures the data is persisted', async ({ 69 test('updates user data and ensures the data is persisted', async ({ client, assert }) => {
80 client, 70 const user = await UserFactory.create()
81 assert,
82 }) => {
83 const user = await UserFactory.create();
84 const response = await client.post('/user/account').loginAs(user).form({ 71 const response = await client.post('/user/account').loginAs(user).form({
85 username: 'edited-username', 72 username: 'edited-username',
86 email: 'edited-email', 73 email: 'edited-email',
87 lastname: 'edited-lastname', 74 lastname: 'edited-lastname',
88 }); 75 })
89 76
90 response.assertStatus(200); 77 response.assertStatus(200)
91 78
92 // Ensure updated data is displayed on account page 79 // Ensure updated data is displayed on account page
93 response.assertTextIncludes('edited-username'); 80 response.assertTextIncludes('edited-username')
94 response.assertTextIncludes('edited-email'); 81 response.assertTextIncludes('edited-email')
95 response.assertTextIncludes('edited-lastname'); 82 response.assertTextIncludes('edited-lastname')
96 83
97 // Ensure updated data is persisted in database 84 // Ensure updated data is persisted in database
98 const updatedUser = await User.findBy('id', user.id); 85 const updatedUser = await User.findBy('id', user.id)
99 assert.equal(updatedUser?.username, 'edited-username'); 86 assert.equal(updatedUser?.username, 'edited-username')
100 assert.equal(updatedUser?.email, 'edited-email'); 87 assert.equal(updatedUser?.email, 'edited-email')
101 assert.equal(updatedUser?.lastname, 'edited-lastname'); 88 assert.equal(updatedUser?.lastname, 'edited-lastname')
102 }); 89 })
103 90
104 test('updates user password and ensures the user can still login', async ({ 91 test('updates user password and ensures the user can still login', async ({ client }) => {
105 client, 92 const user = await UserFactory.create()
106 }) => {
107 const user = await UserFactory.create();
108 const response = await client.post('/user/account').loginAs(user).form({ 93 const response = await client.post('/user/account').loginAs(user).form({
109 username: user.username, 94 username: user.username,
110 email: user.email, 95 email: user.email,
111 lastname: user.lastname, 96 lastname: user.lastname,
112 password: 'modified-password-account-page', 97 password: 'modified-password-account-page',
113 }); 98 })
114 99
115 response.assertStatus(200); 100 response.assertStatus(200)
116 101
117 const loginResponse = await client.post('/user/login').fields({ 102 const loginResponse = await client.post('/user/login').fields({
118 mail: user.email, 103 mail: user.email,
119 password: 'modified-password-account-page', 104 password: 'modified-password-account-page',
120 }); 105 })
121 106
122 loginResponse.assertRedirectsTo('/user/account'); 107 loginResponse.assertRedirectsTo('/user/account')
123 }); 108 })
124}); 109})
diff --git a/tests/functional/dashboard/data.spec.ts b/tests/functional/dashboard/data.spec.ts
index 1a0e7ad..150229a 100644
--- a/tests/functional/dashboard/data.spec.ts
+++ b/tests/functional/dashboard/data.spec.ts
@@ -1,31 +1,25 @@
1import { test } from '@japa/runner'; 1import { test } from '@japa/runner'
2import UserFactory from 'Database/factories/UserFactory'; 2import UserFactory from '#database/factories/UserFactory'
3 3
4test.group('Dashboard / Data page', () => { 4test.group('Dashboard / Data page', () => {
5 test('redirects to /user/login when accessing /user/data as guest', async ({ 5 test('redirects to /user/login when accessing /user/data as guest', async ({ client }) => {
6 client, 6 const response = await client.get('/user/data')
7 }) => {
8 const response = await client.get('/user/data');
9 7
10 response.assertRedirectsTo('/user/login'); // Check if it redirects to the expected URL 8 response.assertRedirectsTo('/user/login') // Check if it redirects to the expected URL
11 }); 9 })
12 10
13 test('ensure the correct data is shown on the page', async ({ client }) => { 11 test('ensure the correct data is shown on the page', async ({ client }) => {
14 const user = await UserFactory.create(); 12 const user = await UserFactory.create()
15 const response = await client.get('/user/data').loginAs(user); 13 const response = await client.get('/user/data').loginAs(user)
16 14
17 response.assertStatus(200); 15 response.assertStatus(200)
18 response.assertTextIncludes(user.email); 16 response.assertTextIncludes(user.email)
19 response.assertTextIncludes(user.username); 17 response.assertTextIncludes(user.username)
20 response.assertTextIncludes(user.lastname); 18 response.assertTextIncludes(user.lastname)
21 response.assertTextIncludes( 19 response.assertTextIncludes(user.created_at.toFormat('yyyy-MM-dd HH:mm:ss'))
22 user.created_at.toFormat('yyyy-MM-dd HH:mm:ss'), 20 response.assertTextIncludes(user.updated_at.toFormat('yyyy-MM-dd HH:mm:ss'))
23 ); 21 })
24 response.assertTextIncludes(
25 user.updated_at.toFormat('yyyy-MM-dd HH:mm:ss'),
26 );
27 });
28 22
29 // TODO: Add test to include services. 23 // TODO: Add test to include services.
30 // TODO: Add test to include workspaces. 24 // TODO: Add test to include workspaces.
31}); 25})
diff --git a/tests/functional/dashboard/delete.spec.ts b/tests/functional/dashboard/delete.spec.ts
index ae3f0e6..9bb9f6a 100644
--- a/tests/functional/dashboard/delete.spec.ts
+++ b/tests/functional/dashboard/delete.spec.ts
@@ -1,37 +1,30 @@
1import { test } from '@japa/runner'; 1import { test } from '@japa/runner'
2import User from 'App/Models/User'; 2import User from '#app/Models/User'
3import UserFactory from 'Database/factories/UserFactory'; 3import UserFactory from '#database/factories/UserFactory'
4 4
5test.group('Dashboard / Delete account page', () => { 5test.group('Dashboard / Delete account page', () => {
6 test('redirects to /user/login when accessing /user/delete as guest', async ({ 6 test('redirects to /user/login when accessing /user/delete as guest', async ({ client }) => {
7 client, 7 const response = await client.get('/user/delete')
8 }) => {
9 const response = await client.get('/user/delete');
10 8
11 response.assertRedirectsTo('/user/login'); // Check if it redirects to the expected URL 9 response.assertRedirectsTo('/user/login') // Check if it redirects to the expected URL
12 }); 10 })
13 11
14 test('returns a 200 opening the delete route while logged in', async ({ 12 test('returns a 200 opening the delete route while logged in', async ({ client }) => {
15 client, 13 const user = await UserFactory.create()
16 }) => { 14 const response = await client.get('/user/delete').loginAs(user)
17 const user = await UserFactory.create();
18 const response = await client.get('/user/delete').loginAs(user);
19 15
20 response.assertStatus(200); 16 response.assertStatus(200)
21 response.assertTextIncludes('Delete your account'); 17 response.assertTextIncludes('Delete your account')
22 }); 18 })
23 19
24 test('returns a 200 opening the delete route while logged in', async ({ 20 test('returns a 200 opening the delete route while logged in', async ({ client, assert }) => {
25 client, 21 const user = await UserFactory.create()
26 assert, 22 const response = await client.post('/user/delete').loginAs(user)
27 }) => {
28 const user = await UserFactory.create();
29 const response = await client.post('/user/delete').loginAs(user);
30 23
31 response.assertRedirectsTo('/user/login'); 24 response.assertRedirectsTo('/user/login')
32 // This asserts the session is deleted as well 25 // This asserts the session is deleted as well
33 response.assertSessionMissing('auth_web'); 26 response.assertSessionMissing('auth_web')
34 27
35 assert.isNull(await User.find(user.id)); 28 assert.isNull(await User.find(user.id))
36 }); 29 })
37}); 30})
diff --git a/tests/functional/dashboard/disabled-dashboard.spec.ts b/tests/functional/dashboard/disabled-dashboard.spec.ts
index cc9052c..fd9600f 100644
--- a/tests/functional/dashboard/disabled-dashboard.spec.ts
+++ b/tests/functional/dashboard/disabled-dashboard.spec.ts
@@ -1,71 +1,63 @@
1import { test } from '@japa/runner'; 1import { test } from '@japa/runner'
2import Config from '@ioc:Adonis/Core/Config'; 2import Config from '@ioc:Adonis/Core/Config'
3 3
4const disabledDashboardMessage = 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.'; 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 6
7test.group('Dashboard / Disabled dashboard', group => { 7test.group('Dashboard / Disabled dashboard', (group) => {
8 group.setup(() => { 8 group.setup(() => {
9 Config.set('dashboard.enabled', false); 9 Config.set('dashboard.enabled', false)
10 }); 10 })
11 11
12 group.teardown(() => { 12 group.teardown(() => {
13 Config.set('dashboard.enabled', true); 13 Config.set('dashboard.enabled', true)
14 }); 14 })
15 15
16 test('Login page returns disabled dashboard message', async ({ client }) => { 16 test('Login page returns disabled dashboard message', async ({ client }) => {
17 const response = await client.get('/user/login'); 17 const response = await client.get('/user/login')
18 18
19 response.assertTextIncludes(disabledDashboardMessage); 19 response.assertTextIncludes(disabledDashboardMessage)
20 }); 20 })
21 21
22 test('Forgot password page returns disabled dashboard message', async ({ 22 test('Forgot password page returns disabled dashboard message', async ({ client }) => {
23 client, 23 const response = await client.get('/user/forgot')
24 }) => {
25 const response = await client.get('/user/forgot');
26 24
27 response.assertTextIncludes(disabledDashboardMessage); 25 response.assertTextIncludes(disabledDashboardMessage)
28 }); 26 })
29 27
30 test('Reset password page returns disabled dashboard message', async ({ 28 test('Reset password page returns disabled dashboard message', async ({ client }) => {
31 client, 29 const response = await client.get('/user/reset')
32 }) => {
33 const response = await client.get('/user/reset');
34 30
35 response.assertTextIncludes(disabledDashboardMessage); 31 response.assertTextIncludes(disabledDashboardMessage)
36 }); 32 })
37 33
38 test('Account page returns disabled dashboard message', async ({ 34 test('Account page returns disabled dashboard message', async ({ client }) => {
39 client, 35 const response = await client.get('/user/account')
40 }) => {
41 const response = await client.get('/user/account');
42 36
43 response.assertTextIncludes(disabledDashboardMessage); 37 response.assertTextIncludes(disabledDashboardMessage)
44 }); 38 })
45 39
46 test('Data page returns disabled dashboard message', async ({ client }) => { 40 test('Data page returns disabled dashboard message', async ({ client }) => {
47 const response = await client.get('/user/data'); 41 const response = await client.get('/user/data')
48 42
49 response.assertTextIncludes(disabledDashboardMessage); 43 response.assertTextIncludes(disabledDashboardMessage)
50 }); 44 })
51 45
52 test('Export page returns disabled dashboard message', async ({ client }) => { 46 test('Export page returns disabled dashboard message', async ({ client }) => {
53 const response = await client.get('/user/export'); 47 const response = await client.get('/user/export')
54 48
55 response.assertTextIncludes(disabledDashboardMessage); 49 response.assertTextIncludes(disabledDashboardMessage)
56 }); 50 })
57 51
58 test('Transfer page returns disabled dashboard message', async ({ 52 test('Transfer page returns disabled dashboard message', async ({ client }) => {
59 client, 53 const response = await client.get('/user/transfer')
60 }) => {
61 const response = await client.get('/user/transfer');
62 54
63 response.assertTextIncludes(disabledDashboardMessage); 55 response.assertTextIncludes(disabledDashboardMessage)
64 }); 56 })
65 57
66 test('Logout page returns disabled dashboard message', async ({ client }) => { 58 test('Logout page returns disabled dashboard message', async ({ client }) => {
67 const response = await client.get('/user/logout'); 59 const response = await client.get('/user/logout')
68 60
69 response.assertTextIncludes(disabledDashboardMessage); 61 response.assertTextIncludes(disabledDashboardMessage)
70 }); 62 })
71}); 63})
diff --git a/tests/functional/dashboard/export.spec.ts b/tests/functional/dashboard/export.spec.ts
index 4250622..f85673e 100644
--- a/tests/functional/dashboard/export.spec.ts
+++ b/tests/functional/dashboard/export.spec.ts
@@ -1,61 +1,50 @@
1import { test } from '@japa/runner'; 1import { test } from '@japa/runner'
2import UserFactory from 'Database/factories/UserFactory'; 2import UserFactory from '#database/factories/UserFactory'
3 3
4test.group('Dashboard / Export page', () => { 4test.group('Dashboard / Export page', () => {
5 test('redirects to /user/login when accessing /user/transfer as guest', async ({ 5 test('redirects to /user/login when accessing /user/transfer as guest', async ({ client }) => {
6 client, 6 const response = await client.get('/user/transfer')
7 }) => {
8 const response = await client.get('/user/transfer');
9 7
10 response.assertRedirectsTo('/user/login'); // Check if it redirects to the expected URL 8 response.assertRedirectsTo('/user/login') // Check if it redirects to the expected URL
11 }); 9 })
12 10
13 test('returns a correct export with user data', async ({ 11 test('returns a correct export with user data', async ({ assert, client }) => {
14 assert, 12 const user = await UserFactory.create()
15 client, 13 const response = await client.get('/user/export').loginAs(user)
16 }) => {
17 const user = await UserFactory.create();
18 const response = await client.get('/user/export').loginAs(user);
19 14
20 response.assertStatus(200); 15 response.assertStatus(200)
21 const exportData = JSON.parse(response.text()); 16 const exportData = JSON.parse(response.text())
22 17
23 assert.equal(exportData.username, user.username); 18 assert.equal(exportData.username, user.username)
24 assert.equal(exportData.lastname, user.lastname); 19 assert.equal(exportData.lastname, user.lastname)
25 assert.equal(exportData.mail, user.email); 20 assert.equal(exportData.mail, user.email)
26 }); 21 })
27 22
28 // TODO: We can improve this test by hard checking the export data 23 // TODO: We can improve this test by hard checking the export data
29 test('returns a correct export with service data', async ({ 24 test('returns a correct export with service data', async ({ assert, client }) => {
30 assert, 25 const user = await UserFactory.with('services', 5).create()
31 client, 26 const response = await client.get('/user/export').loginAs(user)
32 }) => { 27
33 const user = await UserFactory.with('services', 5).create(); 28 response.assertStatus(200)
34 const response = await client.get('/user/export').loginAs(user); 29 const exportData = JSON.parse(response.text())
35 30
36 response.assertStatus(200); 31 assert.equal(exportData.username, user.username)
37 const exportData = JSON.parse(response.text()); 32 assert.equal(exportData.lastname, user.lastname)
38 33 assert.equal(exportData.mail, user.email)
39 assert.equal(exportData.username, user.username); 34 assert.equal(exportData.services.length, user.services.length)
40 assert.equal(exportData.lastname, user.lastname); 35 })
41 assert.equal(exportData.mail, user.email);
42 assert.equal(exportData.services.length, user.services.length);
43 });
44 36
45 // TODO: We can improve this test by hard checking the export data 37 // TODO: We can improve this test by hard checking the export data
46 test('returns a correct export with workspace data', async ({ 38 test('returns a correct export with workspace data', async ({ assert, client }) => {
47 assert, 39 const user = await UserFactory.with('workspaces', 5).create()
48 client, 40 const response = await client.get('/user/export').loginAs(user)
49 }) => { 41
50 const user = await UserFactory.with('workspaces', 5).create(); 42 response.assertStatus(200)
51 const response = await client.get('/user/export').loginAs(user); 43 const exportData = JSON.parse(response.text())
52 44
53 response.assertStatus(200); 45 assert.equal(exportData.username, user.username)
54 const exportData = JSON.parse(response.text()); 46 assert.equal(exportData.lastname, user.lastname)
55 47 assert.equal(exportData.mail, user.email)
56 assert.equal(exportData.username, user.username); 48 assert.equal(exportData.workspaces.length, user.workspaces.length)
57 assert.equal(exportData.lastname, user.lastname); 49 })
58 assert.equal(exportData.mail, user.email); 50})
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
index 9dcec5a..7c356c8 100644
--- a/tests/functional/dashboard/forgot-password.spec.ts
+++ b/tests/functional/dashboard/forgot-password.spec.ts
@@ -1,70 +1,66 @@
1import { test } from '@japa/runner'; 1import { test } from '@japa/runner'
2import Event from '@ioc:Adonis/Core/Event'; 2import emitter from '@adonisjs/core/services/emitter'
3import UserFactory from 'Database/factories/UserFactory'; 3import UserFactory from '#database/factories/UserFactory'
4 4
5test.group('Dashboard / Forgot password page', () => { 5test.group('Dashboard / Forgot password page', () => {
6 test('returns a 200 opening the forgot password route', async ({ 6 test('returns a 200 opening the forgot password route', async ({ client }) => {
7 client, 7 const response = await client.get('/user/forgot')
8 }) => {
9 const response = await client.get('/user/forgot');
10 8
11 response.assertStatus(200); 9 response.assertStatus(200)
12 response.assertTextIncludes('Forgot Password?'); 10 response.assertTextIncludes('Forgot Password?')
13 }); 11 })
14 12
15 test('returns `Please enter a valid email address` when providing invalid email', async ({ 13 test('returns `Please enter a valid email address` when providing invalid email', async ({
16 client, 14 client,
17 }) => { 15 }) => {
18 const response = await client.post('/user/forgot').fields({ 16 const response = await client.post('/user/forgot').fields({
19 mail: 'invalid', 17 mail: 'invalid',
20 }); 18 })
21 19
22 response.assertStatus(200); 20 response.assertStatus(200)
23 response.assertTextIncludes('Please enter a valid email address'); 21 response.assertTextIncludes('Please enter a valid email address')
24 }); 22 })
25 23
26 test('returns `email send when exists` without forgot:password event', async ({ 24 test('returns `email send when exists` without forgot:password event', async ({
27 client, 25 client,
28 assert, 26 assert,
29 }) => { 27 }) => {
30 const emitter = Event.fake(); 28 const emitterService = emitter.fake()
31 29
32 const response = await client.post('/user/forgot').fields({ 30 const response = await client.post('/user/forgot').fields({
33 mail: 'test@ferdium.org', 31 mail: 'test@ferdium.org',
34 }); 32 })
35 33
36 response.assertStatus(200); 34 response.assertStatus(200)
37 response.assertTextIncludes( 35 response.assertTextIncludes(
38 'If your provided E-Mail address is linked to an account, we have just sent an E-Mail to that address.', 36 'If your provided E-Mail address is linked to an account, we have just sent an E-Mail to that address.'
39 ); 37 )
40 38
41 assert.isFalse(emitter.exists('forgot:password')); 39 assert.isFalse(emitterService.exists('forgot:password'))
42 }); 40 })
43 41
44 test('returns `email send when exists` and trigger forgot:password event', async ({ 42 test('returns `email send when exists` and trigger forgot:password event', async ({
45 client, 43 client,
46 assert, 44 assert,
47 }) => { 45 }) => {
48 const emitter = Event.fake(); 46 const emitterService = emitter.fake()
49 const user = await UserFactory.merge({ 47 const user = await UserFactory.merge({
50 email: 'test+forgot_password@ferdium.org', 48 email: 'test+forgot_password@ferdium.org',
51 }).create(); 49 }).create()
52 50
53 const response = await client.post('/user/forgot').fields({ 51 const response = await client.post('/user/forgot').fields({
54 mail: 'test+forgot_password@ferdium.org', 52 mail: 'test+forgot_password@ferdium.org',
55 }); 53 })
56 54
57 response.assertStatus(200); 55 response.assertStatus(200)
58 response.assertTextIncludes( 56 response.assertTextIncludes(
59 'If your provided E-Mail address is linked to an account, we have just sent an E-Mail to that address.', 57 'If your provided E-Mail address is linked to an account, we have just sent an E-Mail to that address.'
60 ); 58 )
61 59
62 assert.isTrue( 60 assert.isTrue(
63 emitter.exists( 61 emitterService.exists(
64 event => 62 (event) => event.name === 'forgot:password' && event.data.user.email === user.email
65 event.name === 'forgot:password' && 63 )
66 event.data.user.email === user.email, 64 )
67 ), 65 })
68 ); 66})
69 });
70});
diff --git a/tests/functional/dashboard/import-stubs/services-workspaces.json b/tests/functional/dashboard/import-stubs/services-workspaces.json
index 139b32c..d1ad0dd 100644
--- a/tests/functional/dashboard/import-stubs/services-workspaces.json
+++ b/tests/functional/dashboard/import-stubs/services-workspaces.json
@@ -44,10 +44,7 @@
44 { 44 {
45 "name": "workspace2", 45 "name": "workspace2",
46 "order": 0, 46 "order": 0,
47 "services": [ 47 "services": ["d6901fff-ec44-4251-93de-d7103ed9c44b", "79769de5-a998-4af1-b7d0-89956a15b0ed"],
48 "d6901fff-ec44-4251-93de-d7103ed9c44b",
49 "79769de5-a998-4af1-b7d0-89956a15b0ed"
50 ],
51 "data": "{\"name\":\"workspace2\"}" 48 "data": "{\"name\":\"workspace2\"}"
52 }, 49 },
53 { 50 {
diff --git a/tests/functional/dashboard/login.spec.ts b/tests/functional/dashboard/login.spec.ts
index adae66a..cf482cd 100644
--- a/tests/functional/dashboard/login.spec.ts
+++ b/tests/functional/dashboard/login.spec.ts
@@ -1,65 +1,57 @@
1import { test } from '@japa/runner'; 1import { test } from '@japa/runner'
2import UserFactory from 'Database/factories/UserFactory'; 2import UserFactory from '#database/factories/UserFactory'
3 3
4test.group('Dashboard / Login page', () => { 4test.group('Dashboard / Login page', () => {
5 test('returns a 200 opening the login route', async ({ client }) => { 5 test('returns a 200 opening the login route', async ({ client }) => {
6 const response = await client.get('/user/login'); 6 const response = await client.get('/user/login')
7 7
8 response.assertStatus(200); 8 response.assertStatus(200)
9 }); 9 })
10 10
11 test('returns `invalid mail or password` when validation fails', async ({ 11 test('returns `invalid mail or password` when validation fails', async ({ client }) => {
12 client,
13 }) => {
14 const response = await client.post('/user/login').fields({ 12 const response = await client.post('/user/login').fields({
15 mail: 'invalid', 13 mail: 'invalid',
16 password: 'invalid', 14 password: 'invalid',
17 }); 15 })
18 16
19 response.assertRedirectsTo('/user/login'); 17 response.assertRedirectsTo('/user/login')
20 response.assertTextIncludes('Invalid mail or password'); 18 response.assertTextIncludes('Invalid mail or password')
21 }); 19 })
22 20
23 test('returns `invalid mail or password` when account is not found', async ({ 21 test('returns `invalid mail or password` when account is not found', async ({ client }) => {
24 client,
25 }) => {
26 const response = await client.post('/user/login').fields({ 22 const response = await client.post('/user/login').fields({
27 mail: 'test+notexistingpassword@ferdium.org', 23 mail: 'test+notexistingpassword@ferdium.org',
28 password: 'notexistingpassword', 24 password: 'notexistingpassword',
29 }); 25 })
30 26
31 response.assertRedirectsTo('/user/login'); 27 response.assertRedirectsTo('/user/login')
32 response.assertTextIncludes('Invalid mail or password'); 28 response.assertTextIncludes('Invalid mail or password')
33 }); 29 })
34 30
35 test('returns `invalid mail or password` when password is not valid', async ({ 31 test('returns `invalid mail or password` when password is not valid', async ({ client }) => {
36 client,
37 }) => {
38 await UserFactory.merge({ 32 await UserFactory.merge({
39 email: 'test@ferdium.org', 33 email: 'test@ferdium.org',
40 }).create(); 34 }).create()
41 35
42 const response = await client.post('/user/login').fields({ 36 const response = await client.post('/user/login').fields({
43 mail: 'test+invalid_password@ferdium.org', 37 mail: 'test+invalid_password@ferdium.org',
44 password: 'invalid_password', 38 password: 'invalid_password',
45 }); 39 })
46 40
47 response.assertRedirectsTo('/user/login'); 41 response.assertRedirectsTo('/user/login')
48 response.assertTextIncludes('Invalid mail or password'); 42 response.assertTextIncludes('Invalid mail or password')
49 }); 43 })
50 44
51 test('redirects to account page when user is able to login', async ({ 45 test('redirects to account page when user is able to login', async ({ client }) => {
52 client,
53 }) => {
54 await UserFactory.merge({ 46 await UserFactory.merge({
55 email: 'test+password@ferdium.org', 47 email: 'test+password@ferdium.org',
56 }).create(); 48 }).create()
57 49
58 const response = await client.post('/user/login').fields({ 50 const response = await client.post('/user/login').fields({
59 mail: 'test+password@ferdium.org', 51 mail: 'test+password@ferdium.org',
60 password: 'password', 52 password: 'password',
61 }); 53 })
62 54
63 response.assertRedirectsTo('/user/account'); 55 response.assertRedirectsTo('/user/account')
64 }); 56 })
65}); 57})
diff --git a/tests/functional/dashboard/logout.spec.ts b/tests/functional/dashboard/logout.spec.ts
index a45ee72..ad117da 100644
--- a/tests/functional/dashboard/logout.spec.ts
+++ b/tests/functional/dashboard/logout.spec.ts
@@ -1,21 +1,19 @@
1import { test } from '@japa/runner'; 1import { test } from '@japa/runner'
2import UserFactory from 'Database/factories/UserFactory'; 2import UserFactory from '#database/factories/UserFactory'
3 3
4test.group('Dashboard / Log out page', () => { 4test.group('Dashboard / Log out page', () => {
5 test('redirects to /user/login when accessing /user/logout as guest', async ({ 5 test('redirects to /user/login when accessing /user/logout as guest', async ({ client }) => {
6 client, 6 const response = await client.get('/user/logout')
7 }) => {
8 const response = await client.get('/user/logout');
9 7
10 response.assertRedirectsTo('/user/login'); // Check if it redirects to the expected URL 8 response.assertRedirectsTo('/user/login') // Check if it redirects to the expected URL
11 }); 9 })
12 10
13 test('logs the user out when opening the page', async ({ client }) => { 11 test('logs the user out when opening the page', async ({ client }) => {
14 const user = await UserFactory.create(); 12 const user = await UserFactory.create()
15 const response = await client.get('/user/logout').loginAs(user); 13 const response = await client.get('/user/logout').loginAs(user)
16 14
17 response.assertRedirectsTo('/user/login'); 15 response.assertRedirectsTo('/user/login')
18 // This asserts the session is deleted as well 16 // This asserts the session is deleted as well
19 response.assertSessionMissing('auth_web'); 17 response.assertSessionMissing('auth_web')
20 }); 18 })
21}); 19})
diff --git a/tests/functional/dashboard/reset-password.spec.ts b/tests/functional/dashboard/reset-password.spec.ts
index e488482..8883665 100644
--- a/tests/functional/dashboard/reset-password.spec.ts
+++ b/tests/functional/dashboard/reset-password.spec.ts
@@ -1,26 +1,22 @@
1import { test } from '@japa/runner'; 1import { test } from '@japa/runner'
2import Token from 'App/Models/Token'; 2import Token from '#app/Models/Token'
3import UserFactory from 'Database/factories/UserFactory'; 3import UserFactory from '#database/factories/UserFactory'
4import TokenFactory from 'Database/factories/TokenFactory'; 4import TokenFactory from '#database/factories/TokenFactory'
5 5
6test.group('Dashboard / Reset password page', () => { 6test.group('Dashboard / Reset password page', () => {
7 test('returns a `Invalid token` message when opening without a token', async ({ 7 test('returns a `Invalid token` message when opening without a token', async ({ client }) => {
8 client, 8 const response = await client.get('/user/reset')
9 }) => {
10 const response = await client.get('/user/reset');
11 9
12 response.assertStatus(200); 10 response.assertStatus(200)
13 response.assertTextIncludes('Invalid token'); 11 response.assertTextIncludes('Invalid token')
14 }); 12 })
15 13
16 test('displays the form when a token is provided', async ({ client }) => { 14 test('displays the form when a token is provided', async ({ client }) => {
17 const response = await client.get( 15 const response = await client.get('/user/reset?token=randomtokenbutitworks')
18 '/user/reset?token=randomtokenbutitworks',
19 );
20 16
21 response.assertStatus(200); 17 response.assertStatus(200)
22 response.assertTextIncludes('Reset Your Password'); 18 response.assertTextIncludes('Reset Your Password')
23 }); 19 })
24 20
25 test('returns `passwords do not match` message when passwords do not match', async ({ 21 test('returns `passwords do not match` message when passwords do not match', async ({
26 client, 22 client,
@@ -29,22 +25,20 @@ test.group('Dashboard / Reset password page', () => {
29 token: 'randomnotworkingtoken', 25 token: 'randomnotworkingtoken',
30 password: 'password', 26 password: 'password',
31 password_confirmation: 'not_matching', 27 password_confirmation: 'not_matching',
32 }); 28 })
33 29
34 response.assertTextIncludes('Passwords do not match'); 30 response.assertTextIncludes('Passwords do not match')
35 }); 31 })
36 32
37 test('returns `Cannot reset your password` when token does not exist', async ({ 33 test('returns `Cannot reset your password` when token does not exist', async ({ client }) => {
38 client,
39 }) => {
40 const response = await client.post('/user/reset').fields({ 34 const response = await client.post('/user/reset').fields({
41 token: 'randomnotworkingtoken', 35 token: 'randomnotworkingtoken',
42 password: 'password', 36 password: 'password',
43 password_confirmation: 'password', 37 password_confirmation: 'password',
44 }); 38 })
45 39
46 response.assertTextIncludes('Cannot reset your password'); 40 response.assertTextIncludes('Cannot reset your password')
47 }); 41 })
48 42
49 test('returns `Cannot reset your password` when token is older than 24 hours', async ({ 43 test('returns `Cannot reset your password` when token is older than 24 hours', async ({
50 client, 44 client,
@@ -54,41 +48,39 @@ test.group('Dashboard / Reset password page', () => {
54 user_id: (await UserFactory.create()).id, 48 user_id: (await UserFactory.create()).id,
55 }) 49 })
56 .apply('old_token') 50 .apply('old_token')
57 .create(); 51 .create()
58 52
59 const response = await client.post('/user/reset').fields({ 53 const response = await client.post('/user/reset').fields({
60 token: token.token, 54 token: token.token,
61 password: 'password', 55 password: 'password',
62 password_confirmation: 'password', 56 password_confirmation: 'password',
63 }); 57 })
64 58
65 response.assertTextIncludes('Cannot reset your password'); 59 response.assertTextIncludes('Cannot reset your password')
66 }); 60 })
67 61
68 test('returns `Cannot reset your password` when token is revoked', async ({ 62 test('returns `Cannot reset your password` when token is revoked', async ({ client }) => {
69 client,
70 }) => {
71 const token = await TokenFactory.merge({ 63 const token = await TokenFactory.merge({
72 // eslint-disable-next-line unicorn/no-await-expression-member 64 // eslint-disable-next-line unicorn/no-await-expression-member
73 user_id: (await UserFactory.create()).id, 65 user_id: (await UserFactory.create()).id,
74 }) 66 })
75 .apply('revoked') 67 .apply('revoked')
76 .create(); 68 .create()
77 69
78 const response = await client.post('/user/reset').fields({ 70 const response = await client.post('/user/reset').fields({
79 token: token.token, 71 token: token.token,
80 password: 'password', 72 password: 'password',
81 password_confirmation: 'password', 73 password_confirmation: 'password',
82 }); 74 })
83 75
84 response.assertTextIncludes('Cannot reset your password'); 76 response.assertTextIncludes('Cannot reset your password')
85 }); 77 })
86 78
87 test('correctly resets password and deletes token and able to login with new password', async ({ 79 test('correctly resets password and deletes token and able to login with new password', async ({
88 client, 80 client,
89 assert, 81 assert,
90 }) => { 82 }) => {
91 const userEmail = 'working-reset-password-login@ferdium.org'; 83 const userEmail = 'working-reset-password-login@ferdium.org'
92 const token = await TokenFactory.merge({ 84 const token = await TokenFactory.merge({
93 user_id: 85 user_id:
94 ( 86 (
@@ -98,25 +90,25 @@ test.group('Dashboard / Reset password page', () => {
98 // prettier-ignore 90 // prettier-ignore
99 // eslint-disable-next-line unicorn/no-await-expression-member 91 // eslint-disable-next-line unicorn/no-await-expression-member
100 ).id, 92 ).id,
101 }).create(); 93 }).create()
102 94
103 const response = await client.post('/user/reset').fields({ 95 const response = await client.post('/user/reset').fields({
104 token: token.token, 96 token: token.token,
105 password: 'new_password', 97 password: 'new_password',
106 password_confirmation: 'new_password', 98 password_confirmation: 'new_password',
107 }); 99 })
108 100
109 // Assert response is as expected 101 // Assert response is as expected
110 response.assertTextIncludes('Successfully reset your password'); 102 response.assertTextIncludes('Successfully reset your password')
111 103
112 // Token should be deleted from database 104 // Token should be deleted from database
113 assert.isNull(await Token.query().where('token', token.token).first()); 105 assert.isNull(await Token.query().where('token', token.token).first())
114 106
115 const loginResponse = await client.post('/user/login').fields({ 107 const loginResponse = await client.post('/user/login').fields({
116 mail: userEmail, 108 mail: userEmail,
117 password: 'new_password', 109 password: 'new_password',
118 }); 110 })
119 111
120 loginResponse.assertRedirectsTo('/user/account'); 112 loginResponse.assertRedirectsTo('/user/account')
121 }); 113 })
122}); 114})
diff --git a/tests/functional/dashboard/transfer.spec.ts b/tests/functional/dashboard/transfer.spec.ts
index e40fca2..41a6709 100644
--- a/tests/functional/dashboard/transfer.spec.ts
+++ b/tests/functional/dashboard/transfer.spec.ts
@@ -1,80 +1,59 @@
1import { test } from '@japa/runner'; 1import { test } from '@japa/runner'
2import { readFileSync } from 'node:fs'; 2import { readFileSync } from 'node:fs'
3import UserFactory from 'Database/factories/UserFactory'; 3import UserFactory from '#database/factories/UserFactory'
4 4
5test.group('Dashboard / Transfer page', () => { 5test.group('Dashboard / Transfer page', () => {
6 test('redirects to /user/login when accessing /user/transfer as guest', async ({ 6 test('redirects to /user/login when accessing /user/transfer as guest', async ({ client }) => {
7 client, 7 const response = await client.get('/user/transfer')
8 }) => {
9 const response = await client.get('/user/transfer');
10 8
11 response.assertRedirectsTo('/user/login'); // Check if it redirects to the expected URL 9 response.assertRedirectsTo('/user/login') // Check if it redirects to the expected URL
12 }); 10 })
13 11
14 test('returns a 200 opening the transfer route while being logged in', async ({ 12 test('returns a 200 opening the transfer route while being logged in', async ({ client }) => {
15 client, 13 const user = await UserFactory.create()
16 }) => { 14 const response = await client.get('/user/transfer').loginAs(user)
17 const user = await UserFactory.create();
18 const response = await client.get('/user/transfer').loginAs(user);
19 15
20 response.assertStatus(200); 16 response.assertStatus(200)
21 }); 17 })
22 18
23 test('returns a validation error when not uploading a file', async ({ 19 test('returns a validation error when not uploading a file', async ({ client }) => {
24 client, 20 const user = await UserFactory.create()
25 }) => { 21 const response = await client.post('/user/transfer').loginAs(user)
26 const user = await UserFactory.create();
27 const response = await client.post('/user/transfer').loginAs(user);
28 22
29 response.assertTextIncludes('Invalid Ferdium account file'); 23 response.assertTextIncludes('Invalid Ferdium account file')
30 }); 24 })
31 25
32 test('returns a validation error when trying to use anything but json', async ({ 26 test('returns a validation error when trying to use anything but json', async ({ client }) => {
33 client, 27 const user = await UserFactory.create()
34 }) => {
35 const user = await UserFactory.create();
36 const response = await client 28 const response = await client
37 .post('/user/transfer') 29 .post('/user/transfer')
38 .loginAs(user) 30 .loginAs(user)
39 .field( 31 .field('file', readFileSync('tests/functional/dashboard/import-stubs/random-file.txt'))
40 'file',
41 readFileSync('tests/functional/dashboard/import-stubs/random-file.txt'),
42 );
43 32
44 response.assertTextIncludes('Invalid Ferdium account file'); 33 response.assertTextIncludes('Invalid Ferdium account file')
45 }); 34 })
46 35
47 test('returns a validation error when trying to use anything valid json', async ({ 36 test('returns a validation error when trying to use anything valid json', async ({ client }) => {
48 client, 37 const user = await UserFactory.create()
49 }) => {
50 const user = await UserFactory.create();
51 const response = await client 38 const response = await client
52 .post('/user/transfer') 39 .post('/user/transfer')
53 .loginAs(user) 40 .loginAs(user)
54 .field( 41 .field('file', readFileSync('tests/functional/dashboard/import-stubs/invalid.json'))
55 'file',
56 readFileSync('tests/functional/dashboard/import-stubs/invalid.json'),
57 );
58 42
59 response.assertTextIncludes('Invalid Ferdium account file'); 43 response.assertTextIncludes('Invalid Ferdium account file')
60 }); 44 })
61 45
62 test('returns a validation error when trying to use a json file with no ferdium structure', async ({ 46 test('returns a validation error when trying to use a json file with no ferdium structure', async ({
63 client, 47 client,
64 }) => { 48 }) => {
65 const user = await UserFactory.create(); 49 const user = await UserFactory.create()
66 const response = await client 50 const response = await client
67 .post('/user/transfer') 51 .post('/user/transfer')
68 .loginAs(user) 52 .loginAs(user)
69 .field( 53 .field('file', readFileSync('tests/functional/dashboard/import-stubs/valid-no-data.json'))
70 'file',
71 readFileSync(
72 'tests/functional/dashboard/import-stubs/valid-no-data.json',
73 ),
74 );
75 54
76 response.assertTextIncludes('Invalid Ferdium account file'); 55 response.assertTextIncludes('Invalid Ferdium account file')
77 }); 56 })
78 57
79 test('correctly transfers data from json/ferdi-data and ferdium-data file with only workspaces', async ({ 58 test('correctly transfers data from json/ferdi-data and ferdium-data file with only workspaces', async ({
80 client, 59 client,
@@ -85,76 +64,62 @@ test.group('Dashboard / Transfer page', () => {
85 'workspaces-only.json', 64 'workspaces-only.json',
86 'workspaces-only.ferdi-data', 65 'workspaces-only.ferdi-data',
87 'workspaces-only.ferdium-data', 66 'workspaces-only.ferdium-data',
88 ]; 67 ]
89 68
90 for (const file of files) { 69 for (const file of files) {
91 // eslint-disable-next-line no-await-in-loop 70 // eslint-disable-next-line no-await-in-loop
92 const user = await UserFactory.create(); 71 const user = await UserFactory.create()
93 // eslint-disable-next-line no-await-in-loop 72 // eslint-disable-next-line no-await-in-loop
94 const response = await client 73 const response = await client
95 .post('/user/transfer') 74 .post('/user/transfer')
96 .loginAs(user) 75 .loginAs(user)
97 .field( 76 .field('file', readFileSync(`tests/functional/dashboard/import-stubs/${file}`))
98 'file', 77
99 readFileSync(`tests/functional/dashboard/import-stubs/${file}`), 78 response.assertTextIncludes('Your account has been imported, you can now login as usual!')
100 );
101
102 response.assertTextIncludes(
103 'Your account has been imported, you can now login as usual!',
104 );
105 // eslint-disable-next-line no-await-in-loop 79 // eslint-disable-next-line no-await-in-loop
106 await user.refresh(); 80 await user.refresh()
107 81
108 // eslint-disable-next-line no-await-in-loop 82 // eslint-disable-next-line no-await-in-loop
109 const workspacesForUser = await user.related('workspaces').query(); 83 const workspacesForUser = await user.related('workspaces').query()
110 assert.equal(workspacesForUser.length, 3, file); 84 assert.equal(workspacesForUser.length, 3, file)
111 85
112 // ensure not JSON encoded twice 86 // ensure not JSON encoded twice
113 for (const workspace of workspacesForUser) { 87 for (const workspace of workspacesForUser) {
114 assert.isNull(workspace.data.match(/\\"/), file); 88 assert.isNull(workspace.data.match(/\\"/), file)
115 } 89 }
116 } 90 }
117 }); 91 })
118 92
119 test('correctly transfers data from json/ferdi-data and ferdium-data file with only services', async ({ 93 test('correctly transfers data from json/ferdi-data and ferdium-data file with only services', async ({
120 client, 94 client,
121 assert, 95 assert,
122 }) => { 96 }) => {
123 // Repeat for all 3 file extension 97 // Repeat for all 3 file extension
124 const files = [ 98 const files = ['services-only.json', 'services-only.ferdi-data', 'services-only.ferdium-data']
125 'services-only.json',
126 'services-only.ferdi-data',
127 'services-only.ferdium-data',
128 ];
129 99
130 for (const file of files) { 100 for (const file of files) {
131 // eslint-disable-next-line no-await-in-loop 101 // eslint-disable-next-line no-await-in-loop
132 const user = await UserFactory.create(); 102 const user = await UserFactory.create()
133 // eslint-disable-next-line no-await-in-loop 103 // eslint-disable-next-line no-await-in-loop
134 const response = await client 104 const response = await client
135 .post('/user/transfer') 105 .post('/user/transfer')
136 .loginAs(user) 106 .loginAs(user)
137 .field( 107 .field('file', readFileSync(`tests/functional/dashboard/import-stubs/${file}`))
138 'file', 108
139 readFileSync(`tests/functional/dashboard/import-stubs/${file}`), 109 response.assertTextIncludes('Your account has been imported, you can now login as usual!')
140 );
141
142 response.assertTextIncludes(
143 'Your account has been imported, you can now login as usual!',
144 );
145 // eslint-disable-next-line no-await-in-loop 110 // eslint-disable-next-line no-await-in-loop
146 await user.refresh(); 111 await user.refresh()
147 112
148 // eslint-disable-next-line no-await-in-loop 113 // eslint-disable-next-line no-await-in-loop
149 const servicesForUser = await user.related('services').query(); 114 const servicesForUser = await user.related('services').query()
150 assert.equal(servicesForUser.length, 3, file); 115 assert.equal(servicesForUser.length, 3, file)
151 116
152 // ensure not JSON encoded twice 117 // ensure not JSON encoded twice
153 for (const service of servicesForUser) { 118 for (const service of servicesForUser) {
154 assert.isNull(service.settings.match(/\\"/), file); 119 assert.isNull(service.settings.match(/\\"/), file)
155 } 120 }
156 } 121 }
157 }); 122 })
158 123
159 test('correctly transfers data from json/ferdi-data and ferdium-data file with workspaces and services', async ({ 124 test('correctly transfers data from json/ferdi-data and ferdium-data file with workspaces and services', async ({
160 client, 125 client,
@@ -165,72 +130,57 @@ test.group('Dashboard / Transfer page', () => {
165 'services-workspaces.json', 130 'services-workspaces.json',
166 'services-workspaces.ferdi-data', 131 'services-workspaces.ferdi-data',
167 'services-workspaces.ferdium-data', 132 'services-workspaces.ferdium-data',
168 ]; 133 ]
169 134
170 for (const file of files) { 135 for (const file of files) {
171 // eslint-disable-next-line no-await-in-loop 136 // eslint-disable-next-line no-await-in-loop
172 const user = await UserFactory.create(); 137 const user = await UserFactory.create()
173 // eslint-disable-next-line no-await-in-loop 138 // eslint-disable-next-line no-await-in-loop
174 const response = await client 139 const response = await client
175 .post('/user/transfer') 140 .post('/user/transfer')
176 .loginAs(user) 141 .loginAs(user)
177 .field( 142 .field('file', readFileSync(`tests/functional/dashboard/import-stubs/${file}`))
178 'file', 143
179 readFileSync(`tests/functional/dashboard/import-stubs/${file}`), 144 response.assertTextIncludes('Your account has been imported, you can now login as usual!')
180 );
181
182 response.assertTextIncludes(
183 'Your account has been imported, you can now login as usual!',
184 );
185 // eslint-disable-next-line no-await-in-loop 145 // eslint-disable-next-line no-await-in-loop
186 await user.refresh(); 146 await user.refresh()
187 147
188 // eslint-disable-next-line no-await-in-loop 148 // eslint-disable-next-line no-await-in-loop
189 const servicesForUser = await user.related('services').query(); 149 const servicesForUser = await user.related('services').query()
190 // eslint-disable-next-line no-await-in-loop 150 // eslint-disable-next-line no-await-in-loop
191 const workspacesForUser = await user.related('workspaces').query(); 151 const workspacesForUser = await user.related('workspaces').query()
192 assert.equal(servicesForUser.length, 3, file); 152 assert.equal(servicesForUser.length, 3, file)
193 assert.equal(workspacesForUser.length, 3, file); 153 assert.equal(workspacesForUser.length, 3, file)
194 154
195 const firstServiceUuid = servicesForUser.find( 155 const firstServiceUuid = servicesForUser.find((s) => s.name === 'random-service-1')?.serviceId
196 s => s.name === 'random-service-1',
197 )?.serviceId;
198 const secondServiceUuid = servicesForUser.find( 156 const secondServiceUuid = servicesForUser.find(
199 s => s.name === 'random-service-2', 157 (s) => s.name === 'random-service-2'
200 )?.serviceId; 158 )?.serviceId
201 const thirdServiceUUid = servicesForUser.find( 159 const thirdServiceUUid = servicesForUser.find((s) => s.name === 'random-service-3')?.serviceId
202 s => s.name === 'random-service-3',
203 )?.serviceId;
204 160
205 // Assert the first workspace to not have any services 161 // Assert the first workspace to not have any services
206 const firstWorkspace = workspacesForUser.find( 162 const firstWorkspace = workspacesForUser.find((w) => w.name === 'workspace1')
207 w => w.name === 'workspace1',
208 );
209 if (firstWorkspace?.services) { 163 if (firstWorkspace?.services) {
210 assert.empty(JSON.parse(firstWorkspace.services), file); 164 assert.empty(JSON.parse(firstWorkspace.services), file)
211 } 165 }
212 166
213 const secondWorkspace = workspacesForUser.find( 167 const secondWorkspace = workspacesForUser.find((w) => w.name === 'workspace2')
214 w => w.name === 'workspace2',
215 );
216 if (secondWorkspace?.services) { 168 if (secondWorkspace?.services) {
217 assert.deepEqual( 169 assert.deepEqual(
218 JSON.parse(secondWorkspace.services), 170 JSON.parse(secondWorkspace.services),
219 [firstServiceUuid, secondServiceUuid], 171 [firstServiceUuid, secondServiceUuid],
220 file, 172 file
221 ); 173 )
222 } 174 }
223 175
224 const thirdWorkspace = workspacesForUser.find( 176 const thirdWorkspace = workspacesForUser.find((w) => w.name === 'workspace3')
225 w => w.name === 'workspace3',
226 );
227 if (thirdWorkspace?.services) { 177 if (thirdWorkspace?.services) {
228 assert.deepEqual( 178 assert.deepEqual(
229 JSON.parse(thirdWorkspace.services), 179 JSON.parse(thirdWorkspace.services),
230 [firstServiceUuid, secondServiceUuid, thirdServiceUUid], 180 [firstServiceUuid, secondServiceUuid, thirdServiceUUid],
231 file, 181 file
232 ); 182 )
233 } 183 }
234 } 184 }
235 }); 185 })
236}); 186})
diff --git a/tests/functional/health.spec.ts b/tests/functional/health.spec.ts
index 2f7e074..50bf46c 100644
--- a/tests/functional/health.spec.ts
+++ b/tests/functional/health.spec.ts
@@ -1,13 +1,13 @@
1import { test } from '@japa/runner'; 1import { test } from '@japa/runner'
2 2
3test.group('health page', () => { 3test.group('health page', () => {
4 test('returns a 200 response', async ({ client }) => { 4 test('returns a 200 response', async ({ client }) => {
5 const response = await client.get('/health'); 5 const response = await client.get('/health')
6 6
7 response.assertStatus(200); 7 response.assertStatus(200)
8 response.assertBodyContains({ 8 response.assertBodyContains({
9 api: 'success', 9 api: 'success',
10 db: 'success', 10 db: 'success',
11 }); 11 })
12 }); 12 })
13}); 13})
diff --git a/tests/functional/static-pages/home.spec.ts b/tests/functional/static-pages/home.spec.ts
index 5054e05..20d02db 100644
--- a/tests/functional/static-pages/home.spec.ts
+++ b/tests/functional/static-pages/home.spec.ts
@@ -1,10 +1,10 @@
1import { test } from '@japa/runner'; 1import { test } from '@japa/runner'
2 2
3test.group('home page', () => { 3test.group('home page', () => {
4 test('returns a 200 response', async ({ client }) => { 4 test('returns a 200 response', async ({ client }) => {
5 const response = await client.get('/'); 5 const response = await client.get('/')
6 6
7 response.assertStatus(200); 7 response.assertStatus(200)
8 response.assertTextIncludes('Go to account dashboard'); 8 response.assertTextIncludes('Go to account dashboard')
9 }); 9 })
10}); 10})
diff --git a/tests/functional/static-pages/privacy.spec.ts b/tests/functional/static-pages/privacy.spec.ts
index f1d5bec..b79f580 100644
--- a/tests/functional/static-pages/privacy.spec.ts
+++ b/tests/functional/static-pages/privacy.spec.ts
@@ -1,10 +1,10 @@
1import { test } from '@japa/runner'; 1import { test } from '@japa/runner'
2 2
3test.group('privacy page', () => { 3test.group('privacy page', () => {
4 test('returns a 200 response', async ({ client }) => { 4 test('returns a 200 response', async ({ client }) => {
5 const response = await client.get('/privacy'); 5 const response = await client.get('/privacy')
6 6
7 response.assertStatus(200); 7 response.assertStatus(200)
8 response.assertTextIncludes('PRIVACY POLICY'); 8 response.assertTextIncludes('PRIVACY POLICY')
9 }); 9 })
10}); 10})
diff --git a/tests/functional/static-pages/terms.spec.ts b/tests/functional/static-pages/terms.spec.ts
index de990e4..9c22257 100644
--- a/tests/functional/static-pages/terms.spec.ts
+++ b/tests/functional/static-pages/terms.spec.ts
@@ -1,10 +1,10 @@
1import { test } from '@japa/runner'; 1import { test } from '@japa/runner'
2 2
3test.group('terms page', () => { 3test.group('terms page', () => {
4 test('returns a 200 response', async ({ client }) => { 4 test('returns a 200 response', async ({ client }) => {
5 const response = await client.get('/terms'); 5 const response = await client.get('/terms')
6 6
7 response.assertStatus(200); 7 response.assertStatus(200)
8 response.assertTextIncludes('Terms of Service'); 8 response.assertTextIncludes('Terms of Service')
9 }); 9 })
10}); 10})
diff --git a/tests/utils.ts b/tests/utils.ts
index 14460b9..b60b867 100644
--- a/tests/utils.ts
+++ b/tests/utils.ts
@@ -1,6 +1,6 @@
1import View from '@ioc:Adonis/Core/View'; 1import edge from 'edge.js'
2 2
3export function fakeCsrfField(): void { 3export function fakeCsrfField(): void {
4 // Create fake csrField function in the view 4 // Create fake csrField function in the view
5 View.global('csrfField', () => ''); 5 edge.global('csrfField', () => '')
6} 6}
diff --git a/tsconfig.json b/tsconfig.json
index aee7acd..54d4a5e 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,5 +1,5 @@
1{ 1{
2 "extends": "./node_modules/adonis-preset-ts/tsconfig.json", 2 "extends": "@adonisjs/tsconfig/tsconfig.app.json",
3 "include": ["**/*"], 3 "include": ["**/*"],
4 "exclude": ["node_modules", "build", "recipes"], 4 "exclude": ["node_modules", "build", "recipes"],
5 "compilerOptions": { 5 "compilerOptions": {
@@ -8,25 +8,21 @@
8 "strict": true, 8 "strict": true,
9 "incremental": true, 9 "incremental": true,
10 "paths": { 10 "paths": {
11 "App/*": ["./app/*"], 11 "#controllers/*": ["./app/controllers/*.js"],
12 "Config/*": ["./config/*"], 12 "#exceptions/*": ["./app/exceptions/*.js"],
13 "Contracts/*": ["./contracts/*"], 13 "#models/*": ["./app/models/*.js"],
14 "Database/*": ["./database/*"] 14 "#services/*": ["./app/services/*.js"],
15 "#listeners/*": ["./app/listeners/*.js"],
16 "#events/*": ["./app/events/*.js"],
17 "#middleware/*": ["./app/middleware/*.js"],
18 "#validators/*": ["./app/validators/*.js"],
19 "#start/*": ["./start/*.js"],
20 "#config/*": ["./config/*.js"],
21 "#app/*": ["./app/*.js"],
22 "#database/*": ["./database/*.js"],
23 "#types/*": ["./types/*.js"]
15 }, 24 },
16 "types": [ 25 "types": ["fs-extra", "adonis5-jwt"],
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, 26 "noFallthroughCasesInSwitch": true,
31 "resolveJsonModule": true, 27 "resolveJsonModule": true,
32 "forceConsistentCasingInFileNames": true, 28 "forceConsistentCasingInFileNames": true,
diff --git a/contracts/auth.ts b/types/auth.ts
index 1625116..9761ea5 100644
--- a/contracts/auth.ts
+++ b/types/auth.ts
@@ -5,8 +5,8 @@
5 * file. 5 * file.
6 */ 6 */
7 7
8import User from 'App/Models/User'; 8import User from '#app/Models/User'
9import { JWTGuardConfig, JWTGuardContract } from '@ioc:Adonis/Addons/Jwt'; 9import { JWTGuardConfig, JWTGuardContract } from '@ioc:Adonis/Addons/Jwt'
10 10
11declare module '@ioc:Adonis/Addons/Auth' { 11declare module '@ioc:Adonis/Addons/Auth' {
12 /* 12 /*
@@ -35,9 +35,9 @@ declare module '@ioc:Adonis/Addons/Auth' {
35 | 35 |
36 */ 36 */
37 user: { 37 user: {
38 implementation: LucidProviderContract<typeof User>; 38 implementation: LucidProviderContract<typeof User>
39 config: LucidProviderConfig<typeof User>; 39 config: LucidProviderConfig<typeof User>
40 }; 40 }
41 } 41 }
42 42
43 /* 43 /*
@@ -66,9 +66,9 @@ declare module '@ioc:Adonis/Addons/Auth' {
66 | 66 |
67 */ 67 */
68 web: { 68 web: {
69 implementation: SessionGuardContract<'user', 'web'>; 69 implementation: SessionGuardContract<'user', 'web'>
70 config: SessionGuardConfig<'user'>; 70 config: SessionGuardConfig<'user'>
71 }; 71 }
72 /* 72 /*
73 |-------------------------------------------------------------------------- 73 |--------------------------------------------------------------------------
74 | OAT Guard 74 | OAT Guard
@@ -79,9 +79,9 @@ declare module '@ioc:Adonis/Addons/Auth' {
79 | 79 |
80 */ 80 */
81 api: { 81 api: {
82 implementation: OATGuardContract<'user', 'api'>; 82 implementation: OATGuardContract<'user', 'api'>
83 config: OATGuardConfig<'user'>; 83 config: OATGuardConfig<'user'>
84 }; 84 }
85 /* 85 /*
86 |-------------------------------------------------------------------------- 86 |--------------------------------------------------------------------------
87 | Basic Auth Guard 87 | Basic Auth Guard
@@ -92,12 +92,12 @@ declare module '@ioc:Adonis/Addons/Auth' {
92 | 92 |
93 */ 93 */
94 basic: { 94 basic: {
95 implementation: BasicAuthGuardContract<'user', 'basic'>; 95 implementation: BasicAuthGuardContract<'user', 'basic'>
96 config: BasicAuthGuardConfig<'user'>; 96 config: BasicAuthGuardConfig<'user'>
97 }; 97 }
98 jwt: { 98 jwt: {
99 implementation: JWTGuardContract<'user', 'api'>; 99 implementation: JWTGuardContract<'user', 'api'>
100 config: JWTGuardConfig<'user'>; 100 config: JWTGuardConfig<'user'>
101 }; 101 }
102 } 102 }
103} 103}
diff --git a/contracts/drive.ts b/types/drive.ts
index 47b70f3..0ad668e 100644
--- a/contracts/drive.ts
+++ b/types/drive.ts
@@ -5,8 +5,8 @@
5 * file. 5 * file.
6 */ 6 */
7 7
8import { InferDisksFromConfig } from '@adonisjs/core/build/config'; 8import { InferDisksFromConfig } from '@adonisjs/core/build/config'
9import driveConfig from '../config/drive'; 9import driveConfig from '../config/drive.js'
10 10
11declare module '@ioc:Adonis/Core/Drive' { 11declare module '@ioc:Adonis/Core/Drive' {
12 interface DisksList extends InferDisksFromConfig<typeof driveConfig> {} 12 interface DisksList extends InferDisksFromConfig<typeof driveConfig> {}
diff --git a/contracts/events.ts b/types/events.ts
index 541bdc2..91be5b4 100644
--- a/contracts/events.ts
+++ b/types/events.ts
@@ -5,7 +5,7 @@
5 * file. 5 * file.
6 */ 6 */
7 7
8import User from 'App/Models/User'; 8import User from '#app/Models/User'
9 9
10declare module '@ioc:Adonis/Core/Event' { 10declare module '@ioc:Adonis/Core/Event' {
11 /* 11 /*
@@ -28,6 +28,6 @@ declare module '@ioc:Adonis/Core/Event' {
28 | 28 |
29 */ 29 */
30 interface EventsList { 30 interface EventsList {
31 'forgot:password': { user: User; token: string }; 31 'forgot:password': { user: User; token: string }
32 } 32 }
33} 33}
diff --git a/contracts/tests.ts b/types/tests.ts
index fec995d..9be30fc 100644
--- a/contracts/tests.ts
+++ b/types/tests.ts
@@ -5,7 +5,7 @@
5 * file. 5 * file.
6 */ 6 */
7 7
8import '@japa/runner'; 8import '@japa/runner'
9 9
10declare module '@japa/runner' { 10declare module '@japa/runner' {
11 interface TestContext { 11 interface TestContext {
diff --git a/vite.config.ts b/vite.config.ts
new file mode 100644
index 0000000..fb09564
--- /dev/null
+++ b/vite.config.ts
@@ -0,0 +1,19 @@
1import { defineConfig } from 'vite'
2import adonisjs from '@adonisjs/vite/client'
3
4export default defineConfig({
5 plugins: [
6 adonisjs({
7 /**
8 * Entrypoints of your application. Each entrypoint will
9 * result in a separate bundle.
10 */
11 entrypoints: ['resources/js/app.js'],
12
13 /**
14 * Paths to watch and reload the browser on file change
15 */
16 reload: ['resources/views/**/*.edge'],
17 }),
18 ],
19})
diff --git a/webpack.config.js b/webpack.config.js
deleted file mode 100644
index 9743941..0000000
--- a/webpack.config.js
+++ /dev/null
@@ -1,213 +0,0 @@
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;