From 8fec21d6bccfa778c14c1714d6444312e36fc3f1 Mon Sep 17 00:00:00 2001 From: MCMXC <16797721+mcmxcdev@users.noreply.github.com> Date: Sun, 11 Feb 2024 19:15:20 +0530 Subject: more updates --- .env.example | 8 + .eslintrc.cjs | 2 +- .github/workflows/build.yml | 2 +- Dockerfile | 2 +- adonisrc.ts | 6 +- .../Http/Api/Static/AnnouncementsController.ts | 2 +- app/Controllers/Http/RecipeController.ts | 2 +- app/Controllers/Http/ServiceController.ts | 2 +- app/Exceptions/Handler.ts | 23 - app/Middleware/Auth.ts | 3 +- app/Middleware/Dashboard.ts | 4 +- app/Models/User.ts | 2 +- config/app.ts | 84 +- config/auth.ts | 9 +- config/bodyparser.ts | 2 - config/dashboard.ts | 2 +- config/database.ts | 8 +- config/drive.ts | 149 -- config/hash.ts | 7 +- config/logger.ts | 14 + config/mail.ts | 111 +- config/session.ts | 4 +- package.json | 38 +- pnpm-lock.yaml | 1522 +++++++++++++++++++- providers/AppProvider.ts | 21 - providers/LegacyHashDriver.ts | 20 - providers/LegacyHasherProvider.ts | 14 - start/env.ts | 27 +- start/kernel.ts | 55 +- tests/bootstrap.ts | 42 +- tsconfig.json | 12 +- types/drive.ts | 13 - types/events.ts | 2 +- 33 files changed, 1609 insertions(+), 605 deletions(-) delete mode 100644 app/Exceptions/Handler.ts delete mode 100644 config/drive.ts create mode 100644 config/logger.ts delete mode 100644 providers/AppProvider.ts delete mode 100644 providers/LegacyHashDriver.ts delete mode 100644 providers/LegacyHasherProvider.ts delete mode 100644 types/drive.ts diff --git a/.env.example b/.env.example index a288fde..d2fc36b 100644 --- a/.env.example +++ b/.env.example @@ -26,6 +26,14 @@ DATA_DIR=data APP_KEY= # Need to set some value HOST=127.0.0.1 PORT=3333 +LOG_LEVEL=info # These have defaults hard-coded, but are being overridden CACHE_VIEWS=false +SESSION_DRIVER=cookie +SES_ACCESS_KEY= +SES_ACCESS_SECRET= +SES_REGION= +MAILGUN_API_KEY= +MAILGUN_DOMAIN= +SPARKPOST_API_KEY= diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 3dd08e2..f970936 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -71,7 +71,7 @@ module.exports = { }, ], 'no-param-reassign': 1, - 'prefer-destructuring': 1, + 'prefer-destructuring': 0, // eslint-plugin-unicorn 'unicorn/filename-case': 0, 'unicorn/prefer-module': 0, diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e9c92ec..9c23c7e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,7 @@ jobs: - name: Use Node.js specified in the '.nvmrc' file uses: actions/setup-node@v4 with: - node-version-file: ".nvmrc" + node-version-file: '.nvmrc' cache: 'pnpm' - name: Install node dependencies recursively diff --git a/Dockerfile b/Dockerfile index d865ce1..842d320 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:20.11.0-alpine as builder +FROM node:20.11.0-alpine AS builder WORKDIR /server-build diff --git a/adonisrc.ts b/adonisrc.ts index 0e092b0..3d9dfae 100644 --- a/adonisrc.ts +++ b/adonisrc.ts @@ -14,7 +14,7 @@ export default defineConfig({ () => import('@adonisjs/core/commands'), () => import('@adonisjs/lucid/commands'), () => import('@adonisjs/mail/commands'), - () => import('adonis5-jwt/build/commands'), + // () => import('adonis5-jwt/build/commands'), ], /* |-------------------------------------------------------------------------- @@ -39,7 +39,6 @@ export default defineConfig({ | */ providers: [ - () => import('./providers/AppProvider.js'), () => import('@adonisjs/core/providers/app_provider'), () => import('@adonisjs/core/providers/hash_provider'), { @@ -52,8 +51,7 @@ export default defineConfig({ () => import('@adonisjs/shield/shield_provider'), () => import('@adonisjs/session/session_provider'), () => import('@adonisjs/mail/mail_provider'), - () => import('adonis5-jwt'), - () => import('./providers/LegacyHasherProvider.js'), + // () => import('adonis5-jwt'), ], metaFiles: [ { diff --git a/app/Controllers/Http/Api/Static/AnnouncementsController.ts b/app/Controllers/Http/Api/Static/AnnouncementsController.ts index 090ee1c..565df5e 100644 --- a/app/Controllers/Http/Api/Static/AnnouncementsController.ts +++ b/app/Controllers/Http/Api/Static/AnnouncementsController.ts @@ -1,5 +1,5 @@ import type { HttpContext } from '@adonisjs/core/http'; -import { app } from '@adonisjs/core/services/app'; +import app from '@adonisjs/core/services/app'; import path from 'node:path'; import fs from 'fs-extra'; diff --git a/app/Controllers/Http/RecipeController.ts b/app/Controllers/Http/RecipeController.ts index d30c59f..4d01a02 100644 --- a/app/Controllers/Http/RecipeController.ts +++ b/app/Controllers/Http/RecipeController.ts @@ -1,6 +1,6 @@ import type { HttpContext } from '@adonisjs/core/http'; import fs from 'fs-extra'; -import { app } from '@adonisjs/core/services/app'; +import app from '@adonisjs/core/services/app'; import path from 'node:path'; import Recipe from '#app/Models/Recipe'; import { isCreationEnabled } from '#config/app'; diff --git a/app/Controllers/Http/ServiceController.ts b/app/Controllers/Http/ServiceController.ts index 8fec844..df5f623 100644 --- a/app/Controllers/Http/ServiceController.ts +++ b/app/Controllers/Http/ServiceController.ts @@ -5,7 +5,7 @@ import { url } from '#config/app'; import { v4 as uuid } from 'uuid'; import * as fs from 'fs-extra'; import path from 'node:path'; -import { app } from '@adonisjs/core/services/app'; +import app from '@adonisjs/core/services/app'; import sanitize from 'sanitize-filename'; const createSchema = schema.create({ diff --git a/app/Exceptions/Handler.ts b/app/Exceptions/Handler.ts deleted file mode 100644 index 51764bc..0000000 --- a/app/Exceptions/Handler.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* -|-------------------------------------------------------------------------- -| Http Exception Handler -|-------------------------------------------------------------------------- -| -| AdonisJs will forward all exceptions occurred during an HTTP request to -| the following class. You can learn more about exception handling by -| reading docs. -| -| The exception handler extends a base `HttpExceptionHandler` which is not -| mandatory, however it can do lot of heavy lifting to handle the errors -| properly. -| -*/ - -import logger from '@adonisjs/core/services/logger'; -import { ExceptionHandler as AdonisExceptionHandler } from '@adonisjs/core/http'; - -export default class ExceptionHandler extends AdonisExceptionHandler { - constructor() { - super(logger); - } -} diff --git a/app/Middleware/Auth.ts b/app/Middleware/Auth.ts index b6ff446..58d5b76 100644 --- a/app/Middleware/Auth.ts +++ b/app/Middleware/Auth.ts @@ -3,7 +3,7 @@ import { HttpContext } from '@adonisjs/core/http'; import { AuthenticationException } from '@adonisjs/auth/build/standalone'; import * as jose from 'jose'; import { appKey } from '#config/app'; -import User from '#app/Models/User'; +import User from '#models/User'; /** * Auth middleware is meant to restrict un-authenticated access to a given route @@ -94,6 +94,7 @@ export default class AuthMiddleware { /** * Handle request */ + // eslint-disable-next-line consistent-return public async handle( { request, auth, response }: HttpContext, next: () => Promise, diff --git a/app/Middleware/Dashboard.ts b/app/Middleware/Dashboard.ts index 19c8cfc..20113b7 100644 --- a/app/Middleware/Dashboard.ts +++ b/app/Middleware/Dashboard.ts @@ -1,9 +1,9 @@ import type { HttpContext } from '@adonisjs/core/http'; -import { Config } from '@adonisjs/core/config'; +import config from '@adonisjs/core/services/config'; export default class Dashboard { public async handle({ response }: HttpContext, next: () => Promise) { - if (Config.get('dashboard.enabled') === false) { + if (config.get('dashboard.enabled') === false) { response.send( 'The user dashboard is disabled on this server\n\nIf you are the server owner, please set IS_DASHBOARD_ENABLED to true to enable the dashboard.', ); diff --git a/app/Models/User.ts b/app/Models/User.ts index d292b3a..f744588 100644 --- a/app/Models/User.ts +++ b/app/Models/User.ts @@ -3,7 +3,7 @@ import { BaseModel, beforeSave, column, hasMany } from '@adonisjs/lucid/orm'; import hash from '@adonisjs/core/services/hash'; import emitter from '@adonisjs/core/services/emitter'; import moment from 'moment'; -import Encryption from '@ioc:Adonis/Core/Encryption'; +import { Encryption } from '@adonisjs/core/encryption'; import randtoken from 'rand-token'; import Token from './Token.js'; import Workspace from './Workspace.js'; diff --git a/config/app.ts b/config/app.ts index 5575bc1..278a6f8 100644 --- a/config/app.ts +++ b/config/app.ts @@ -7,8 +7,6 @@ import proxyAddr from 'proxy-addr'; import env from '#start/env'; -import { ProfilerConfig } from '@ioc:Adonis/Core/Profiler'; -import { LoggerConfig } from '@adonisjs/core/types/logger'; import { ValidatorConfig } from '@adonisjs/validator/types'; import { defineConfig } from '@adonisjs/core/http'; @@ -27,12 +25,12 @@ import { defineConfig } from '@adonisjs/core/http'; */ export const appKey: string = env.get('APP_KEY'); -export const url: string = env.get('APP_URL'); +export const url = env.get('APP_URL'); // TODO: this is parsed as string to be coherent with the previous version of the code we add (before migrating to AdonisJS 5) -export const isRegistrationEnabled: string = env.get('IS_REGISTRATION_ENABLED'); -export const connectWithFranz: string = env.get('CONNECT_WITH_FRANZ'); -export const isCreationEnabled: string = env.get('IS_CREATION_ENABLED'); +export const isRegistrationEnabled = env.get('IS_REGISTRATION_ENABLED'); +export const connectWithFranz = env.get('CONNECT_WITH_FRANZ'); +export const isCreationEnabled = env.get('IS_CREATION_ENABLED'); export const jwtUsePEM: boolean = env.get('JWT_USE_PEM', false) || (env.get('JWT_PUBLIC_KEY', '') !== '' && @@ -119,86 +117,14 @@ export const http = defineConfig({ secure: false, sameSite: false, }, - - /* - |-------------------------------------------------------------------------- - | Force Content Negotiation - |-------------------------------------------------------------------------- - | - | The internals of the framework relies on the content negotiation to - | detect the best possible response type for a given HTTP request. - | - | However, it is a very common these days that API servers always wants to - | make response in JSON regardless of the existence of the `Accept` header. - | - | By setting `forceContentNegotiationTo = 'application/json'`, you negotiate - | with the server in advance to always return JSON without relying on the - | client to set the header explicitly. - | - */ - forceContentNegotiationTo: 'application/json', }); -/* -|-------------------------------------------------------------------------- -| Logger -|-------------------------------------------------------------------------- -*/ -export const logger: LoggerConfig = { - /* - |-------------------------------------------------------------------------- - | Application name - |-------------------------------------------------------------------------- - | - | The name of the application you want to add to the log. It is recommended - | to always have app name in every log line. - | - | The `APP_NAME` environment variable is automatically set by AdonisJS by - | reading the `name` property from the `package.json` file. - | - */ - name: env.get('APP_NAME', 'Ferdium-server'), - - /* - |-------------------------------------------------------------------------- - | Toggle logger - |-------------------------------------------------------------------------- - | - | Enable or disable logger application wide - | - */ - enabled: true, - - /* - |-------------------------------------------------------------------------- - | Logging level - |-------------------------------------------------------------------------- - | - | The level from which you want the logger to flush logs. It is recommended - | to make use of the environment variable, so that you can define log levels - | at deployment level and not code level. - | - */ - level: env.get('LOG_LEVEL', 'info'), - - /* - |-------------------------------------------------------------------------- - | Pretty print - |-------------------------------------------------------------------------- - | - | It is highly advised NOT to use `prettyPrint` in production, since it - | can have huge impact on performance. - | - */ - prettyPrint: env.get('NODE_ENV') === 'development', -}; - /* |-------------------------------------------------------------------------- | Profiler |-------------------------------------------------------------------------- */ -export const profiler: ProfilerConfig = { +export const profiler = { /* |-------------------------------------------------------------------------- | Toggle profiler diff --git a/config/auth.ts b/config/auth.ts index a3fcc45..976aa19 100644 --- a/config/auth.ts +++ b/config/auth.ts @@ -79,7 +79,7 @@ const authConfig: AuthConfig = { | that time. | */ - model: () => import('App/Models/User'), + model: () => import('#app/Models/User'), }, }, /* @@ -163,7 +163,7 @@ const authConfig: AuthConfig = { | that time. | */ - model: () => import('App/Models/User'), + model: () => import('#app/Models/User'), }, }, /* @@ -226,7 +226,7 @@ const authConfig: AuthConfig = { | that time. | */ - model: () => import('App/Models/User'), + model: () => import('#app/Models/User'), }, }, jwt: { @@ -242,7 +242,6 @@ const authConfig: AuthConfig = { persistJwt: true, // TODO: We should improve the following implementation as this is a security concern. // The following ts-expect-error is to set exp to undefined (JWT with no expiration) - // @ts-expect-error jwtDefaultExpire: undefined, refreshTokenDefaultExpire: '10d', tokenProvider: { @@ -254,7 +253,7 @@ const authConfig: AuthConfig = { driver: 'lucid', identifierKey: 'id', uids: [], - model: () => import('App/Models/User'), + model: () => import('#app/Models/User'), }, }, }, diff --git a/config/bodyparser.ts b/config/bodyparser.ts index b8e6ed6..63fc03c 100644 --- a/config/bodyparser.ts +++ b/config/bodyparser.ts @@ -5,7 +5,6 @@ * file. */ -import { BodyParserConfig } from '@adonisjs/core/bodyparser'; import { defineConfig } from '@adonisjs/core/bodyparser'; const bodyParserConfig = defineConfig({ @@ -83,7 +82,6 @@ const bodyParserConfig = defineConfig({ raw: { encoding: 'utf8', limit: '1mb', - queryString: {}, types: ['text/*'], }, diff --git a/config/dashboard.ts b/config/dashboard.ts index bbf7a71..5d3afbb 100644 --- a/config/dashboard.ts +++ b/config/dashboard.ts @@ -2,4 +2,4 @@ import env from '#start/env'; export const enabled: boolean = env.get('IS_DASHBOARD_ENABLED') !== 'false'; -export const mailFrom: string = env.get('MAIL_SENDER'); +export const mailFrom: string = env.get('MAIL_SENDER')!; diff --git a/config/database.ts b/config/database.ts index 7e3774d..d2fabe1 100644 --- a/config/database.ts +++ b/config/database.ts @@ -7,7 +7,6 @@ import path from 'node:path'; import env from '#start/env'; -import { DatabaseConfig } from '@adonisjs/lucid/database'; import { defineConfig } from '@adonisjs/lucid'; const databaseConfig = defineConfig({ @@ -53,7 +52,6 @@ const databaseConfig = defineConfig({ }, useNullAsDefault: true, healthCheck: false, - debug: env.get('DB_DEBUG', false), }, /* @@ -71,7 +69,7 @@ const databaseConfig = defineConfig({ client: 'mysql', connection: { host: env.get('DB_HOST', 'localhost'), - port: env.get('DB_PORT', ''), + port: Number(env.get('DB_PORT')), user: env.get('DB_USER', 'root'), password: env.get('DB_PASSWORD', ''), database: env.get('DB_DATABASE', 'ferdium'), @@ -80,7 +78,6 @@ const databaseConfig = defineConfig({ naturalSort: true, }, healthCheck: false, - debug: env.get('DB_DEBUG', false), }, /* @@ -98,7 +95,7 @@ const databaseConfig = defineConfig({ client: 'pg', connection: { host: env.get('DB_HOST', 'localhost'), - port: env.get('DB_PORT', ''), + port: Number(env.get('DB_PORT')), user: env.get('DB_USER', 'root'), password: env.get('DB_PASSWORD', ''), database: env.get('DB_DATABASE', 'ferdium'), @@ -113,7 +110,6 @@ const databaseConfig = defineConfig({ naturalSort: true, }, healthCheck: false, - debug: env.get('DB_DEBUG', false), }, }, }); diff --git a/config/drive.ts b/config/drive.ts deleted file mode 100644 index 98cc905..0000000 --- a/config/drive.ts +++ /dev/null @@ -1,149 +0,0 @@ -/** - * Config source: https://git.io/JBt3o - * - * Feel free to let us know via PR, if you find something broken in this config - * file. - */ - -import env from '#start/env'; -import { driveConfig } from '@adonisjs/core/build/config'; -import { app } from '@adonisjs/core/services/app'; - -/* -|-------------------------------------------------------------------------- -| Drive Config -|-------------------------------------------------------------------------- -| -| The `DriveConfig` relies on the `DisksList` interface which is -| defined inside the `contracts` directory. -| -*/ -export default driveConfig({ - /* - |-------------------------------------------------------------------------- - | Default disk - |-------------------------------------------------------------------------- - | - | The default disk to use for managing file uploads. The value is driven by - | the `DRIVE_DISK` environment variable. - | - */ - disk: env.get('DRIVE_DISK', 'local'), - - disks: { - /* - |-------------------------------------------------------------------------- - | Local - |-------------------------------------------------------------------------- - | - | Uses the local file system to manage files. Make sure to turn off serving - | files when not using this disk. - | - */ - local: { - driver: 'local', - visibility: 'public', - - /* - |-------------------------------------------------------------------------- - | Storage root - Local driver only - |-------------------------------------------------------------------------- - | - | Define an absolute path to the storage directory from where to read the - | files. - | - */ - root: app.tmpPath('uploads'), - - /* - |-------------------------------------------------------------------------- - | Serve files - Local driver only - |-------------------------------------------------------------------------- - | - | When this is set to true, AdonisJS will configure a files server to serve - | files from the disk root. This is done to mimic the behavior of cloud - | storage services that has inbuilt capabilities to serve files. - | - */ - serveFiles: true, - - /* - |-------------------------------------------------------------------------- - | Base path - Local driver only - |-------------------------------------------------------------------------- - | - | Base path is always required when "serveFiles = true". Also make sure - | the `basePath` is unique across all the disks using "local" driver and - | you are not registering routes with this prefix. - | - */ - basePath: '/uploads', - }, - - /* - |-------------------------------------------------------------------------- - | S3 Driver - |-------------------------------------------------------------------------- - | - | Uses the S3 cloud storage to manage files. Make sure to install the s3 - | drive separately when using it. - | - |************************************************************************** - | npm i @adonisjs/drive-s3 - |************************************************************************** - | - */ - // s3: { - // driver: 's3', - // visibility: 'public', - // key: Env.get('S3_KEY'), - // secret: Env.get('S3_SECRET'), - // region: Env.get('S3_REGION'), - // bucket: Env.get('S3_BUCKET'), - // endpoint: Env.get('S3_ENDPOINT'), - // - // // For minio to work - // // forcePathStyle: true, - // }, - - /* - |-------------------------------------------------------------------------- - | GCS Driver - |-------------------------------------------------------------------------- - | - | Uses the Google cloud storage to manage files. Make sure to install the GCS - | drive separately when using it. - | - |************************************************************************** - | npm i @adonisjs/drive-gcs - |************************************************************************** - | - */ - // gcs: { - // driver: 'gcs', - // visibility: 'public', - // keyFilename: Env.get('GCS_KEY_FILENAME'), - // bucket: Env.get('GCS_BUCKET'), - - /* - |-------------------------------------------------------------------------- - | Uniform ACL - Google cloud storage only - |-------------------------------------------------------------------------- - | - | When using the Uniform ACL on the bucket, the "visibility" option is - | ignored. Since, the files ACL is managed by the google bucket policies - | directly. - | - |************************************************************************** - | Learn more: https://cloud.google.com/storage/docs/uniform-bucket-level-access - |************************************************************************** - | - | The following option just informs drive whether your bucket is using uniform - | ACL or not. The actual setting needs to be toggled within the Google cloud - | console. - | - */ - // usingUniformAcl: false, - // }, - }, -}); diff --git a/config/hash.ts b/config/hash.ts index 38c8784..891833c 100644 --- a/config/hash.ts +++ b/config/hash.ts @@ -6,8 +6,7 @@ */ import env from '#start/env'; -import { defineConfig } from '@adonisjs/core/hash'; -import { drivers } from '@adonisjs/core/hash'; +import { defineConfig, drivers } from '@adonisjs/core/hash'; /* |-------------------------------------------------------------------------- @@ -84,7 +83,3 @@ export default defineConfig({ }, }, }); - -declare module '@adonisjs/core/types' { - export interface HashersList extends InferHashers {} -} diff --git a/config/logger.ts b/config/logger.ts new file mode 100644 index 0000000..a9078b6 --- /dev/null +++ b/config/logger.ts @@ -0,0 +1,14 @@ +import env from '#start/env'; +import { defineConfig } from '@adonisjs/core/logger'; + +export default defineConfig({ + default: 'app', + + loggers: { + app: { + enabled: true, + name: env.get('APP_NAME', 'Ferdium-server'), + level: env.get('LOG_LEVEL', 'info'), + }, + }, +}); diff --git a/config/mail.ts b/config/mail.ts index ac67231..dbe4bdf 100644 --- a/config/mail.ts +++ b/config/mail.ts @@ -1,118 +1,55 @@ -/** - * Config source: https://git.io/JvgAf - * - * Feel free to let us know via PR, if you find something broken in this contract - * file. - */ - import env from '#start/env'; -import { defineConfig } from '@adonisjs/mail'; +import { defineConfig, transports } from '@adonisjs/mail'; -export default defineConfig({ - /* - |-------------------------------------------------------------------------- - | Default mailer - |-------------------------------------------------------------------------- - | - | The following mailer will be used to send emails, when you don't specify - | a mailer - | - */ - mailer: env.get('MAIL_CONNECTION', 'smtp'), +const mailConfig = defineConfig({ + default: 'smtp', - /* - |-------------------------------------------------------------------------- - | Mailers - |-------------------------------------------------------------------------- - | - | You can define or more mailers to send emails from your application. A - | single `driver` can be used to define multiple mailers with different - | config. - | - | For example: Postmark driver can be used to have different mailers for - | sending transactional and promotional emails - | - */ + /** + * The mailers object can be used to configure multiple mailers + * each using a different transport or same transport with different + * options. + */ mailers: { - /* - |-------------------------------------------------------------------------- - | Smtp - |-------------------------------------------------------------------------- - | - | Uses SMTP protocol for sending email - | - */ - smtp: drivers.smtp({ - name: env.get('APP_URL'), + smtp: transports.smtp({ port: env.get('SMTP_PORT', '2525'), host: env.get('SMTP_HOST', 'localhost'), secure: JSON.parse(env.get('MAIL_SSL', 'false')), requireTLS: JSON.parse(env.get('MAIL_REQUIRE_TLS', 'false')), auth: { - user: env.get('MAIL_USERNAME'), - pass: env.get('MAIL_PASSWORD'), + user: env.get('MAIL_USERNAME')!, + pass: env.get('MAIL_PASSWORD')!, type: 'login', }, maxConnections: 5, maxMessages: 100, - rateLimit: 10, }), - /* - |-------------------------------------------------------------------------- - | SES - |-------------------------------------------------------------------------- - | - | Uses Amazon SES for sending emails. You will have to install the aws-sdk - | when using this driver. - | - | ``` - | npm i aws-sdk - | ``` - | - */ - ses: drivers.ses({ + ses: transports.ses({ apiVersion: '2010-12-01', - key: env.get('SES_ACCESS_KEY'), - secret: env.get('SES_ACCESS_SECRET'), - region: env.get('SES_REGION'), - sslEnabled: true, + credentials: { + accessKeyId: env.get('SES_ACCESS_KEY')!, + secretAccessKey: env.get('SES_ACCESS_SECRET')!, + }, + region: process.env.SES_REGION!, sendingRate: 10, maxConnections: 5, }), - /* - |-------------------------------------------------------------------------- - | Mailgun - |-------------------------------------------------------------------------- - | - | Uses Mailgun service for sending emails. - | - | If you are using an EU domain. Ensure to change the baseUrl to hit the - | europe endpoint (https://api.eu.mailgun.net/v3). - | - */ - mailgun: drivers.mailgun({ + mailgun: transports.mailgun({ baseUrl: 'https://api.mailgun.net/v3', - key: env.get('MAILGUN_API_KEY'), - domain: env.get('MAILGUN_DOMAIN'), + key: env.get('MAILGUN_API_KEY')!, + domain: env.get('MAILGUN_DOMAIN')!, }), - /* - |-------------------------------------------------------------------------- - | SparkPost - |-------------------------------------------------------------------------- - | - | Uses Sparkpost service for sending emails. - | - */ - sparkpost: drivers.sparkpost({ + sparkpost: transports.sparkpost({ baseUrl: 'https://api.sparkpost.com/api/v1', - key: env.get('SPARKPOST_API_KEY'), + key: env.get('SPARKPOST_API_KEY')!, }), }, }); +export default mailConfig; + declare module '@adonisjs/mail/types' { export interface MailersList extends InferMailers {} } diff --git a/config/session.ts b/config/session.ts index d3f5642..3f193dd 100644 --- a/config/session.ts +++ b/config/session.ts @@ -6,7 +6,7 @@ */ import env from '#start/env'; -import { app } from '@adonisjs/core/services/app'; +import app from '@adonisjs/core/services/app'; import { defineConfig } from '@adonisjs/session'; export default defineConfig({ @@ -36,7 +36,7 @@ export default defineConfig({ | Note: Switching drivers will make existing sessions invalid. | */ - driver: env.get('SESSION_DRIVER', 'cookie'), + store: env.get('SESSION_DRIVER', 'cookie'), /* |-------------------------------------------------------------------------- diff --git a/package.json b/package.json index bd43690..41e31e7 100644 --- a/package.json +++ b/package.json @@ -18,29 +18,33 @@ "license": "MIT License", "scripts": { "prepare": "is-ci || husky", - "dev": "cross-env-shell ENV_PATH=.env.development node ace serve --watch", - "migrate": "cross-env-shell ENV_PATH=.env.development node ace migration:run", - "refresh": "cross-env-shell ENV_PATH=.env.development node ace migration:refresh", - "status": "cross-env-shell ENV_PATH=.env.development node ace migration:status", - "build": "node ace build --production", - "start": "cross-env-shell ENV_PATH=.env node bin/server.js", - "test": "cross-env-shell ENV_PATH=.env.test node ace test", + "dev": "node ace serve --watch", + "migrate": "node ace migration:run", + "refresh": "node ace migration:refresh", + "status": "node ace migration:status", + "build": "node ace build", + "start": "node bin/server.js", + "test": "node ace test", "typecheck": "tsc --noEmit", - "lint": "eslint \"**/*.{js,ts}\"", + "lint": "eslint .", "lint:fix": "pnpm lint --fix", "reformat-files": "prettier --write .", "prepare-code": "pnpm typecheck && pnpm lint:fix && pnpm reformat-files && pnpm test" }, "imports": { + "#app/*": "./app/*.js", "#controllers/*": "./app/Controllers/*.js", - "#exceptions/*": "./app/Exceptions/*.js", "#models/*": "./app/Models/*.js", + "#services/*": "./app/services/*.js", + "#listeners/*": "./app/listeners/*.js", + "#events/*": "./app/events/*.js", "#middleware/*": "./app/Middleware/*.js", + "#validators/*": "./app/validators/*.js", "#database/*": "./database/*.js", - "#types/*": "./types/*.js", - "#start/*": "./start/*.js", "#tests/*": "./tests/*.js", - "#config/*": "./config/*.js" + "#start/*": "./start/*.js", + "#config/*": "./config/*.js", + "#types/*": "./types/*.js" }, "devDependencies": { "@adonisjs/assembler": "7.1.1", @@ -49,6 +53,8 @@ "@adonisjs/prettier-config": "1.2.1", "@adonisjs/tsconfig": "1.2.1", "@adonisjs/vite": "2.0.2", + "@japa/api-client": "2.0.2", + "@japa/assert": "2.1.0", "@japa/plugin-adonisjs": "3.0.0", "@japa/runner": "3.1.1", "@swc/core": "1.4.0", @@ -62,7 +68,6 @@ "@types/uuid": "9.0.8", "@typescript-eslint/eslint-plugin": "6.21.0", "@typescript-eslint/parser": "6.21.0", - "cross-env": "7.0.3", "eslint": "8.56.0", "eslint-plugin-import": "2.29.1", "eslint-plugin-unicorn": "51.0.1", @@ -83,6 +88,7 @@ "@adonisjs/shield": "8.1.1", "@adonisjs/static": "1.1.1", "@adonisjs/validator": "13.0.2", + "@aws-sdk/client-ses": "3.511.0", "adonis5-jwt": "github:SpecialAro/adonis5-jwt#34941c10adcf89583a40767552b994ea499b92e3", "bcrypt": "5.1.1", "edge.js": "6.0.1", @@ -103,11 +109,7 @@ }, "pnpm": { "allowedDeprecatedVersions": { - "@npmcli/move-file": "1.1.2", - "@types/pino-pretty": "5.0.0", - "@types/pino-std-serializers": "4.0.0", - "cuid": "2.1.8", - "querystring": "0.2.0" + "@npmcli/move-file": "1.1.2" } }, "type": "module" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2f40f25..90c0d55 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,7 +7,7 @@ settings: dependencies: '@adonisjs/auth': specifier: 9.1.1 - 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) + 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/api-client@2.0.2)(@japa/plugin-adonisjs@3.0.0) '@adonisjs/core': specifier: 6.2.3 version: 6.2.3(@adonisjs/assembler@7.1.1)(bcrypt@5.1.1)(edge.js@6.0.1) @@ -19,19 +19,22 @@ dependencies: 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) '@adonisjs/mail': specifier: 9.2.0 - 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) + version: 9.2.0(@adonisjs/core@6.2.3)(@aws-sdk/client-ses@3.511.0)(@types/luxon@3.4.2)(@types/node@20.7.2)(edge.js@6.0.1)(luxon@3.4.4)(moment@2.30.1) '@adonisjs/session': specifier: 7.1.1 - version: 7.1.1(@adonisjs/core@6.2.3)(edge.js@6.0.1) + version: 7.1.1(@adonisjs/core@6.2.3)(@japa/api-client@2.0.2)(edge.js@6.0.1) '@adonisjs/shield': specifier: 8.1.1 - version: 8.1.1(@adonisjs/core@6.2.3)(@adonisjs/session@7.1.1)(edge.js@6.0.1) + version: 8.1.1(@adonisjs/core@6.2.3)(@adonisjs/session@7.1.1)(@japa/api-client@2.0.2)(edge.js@6.0.1) '@adonisjs/static': specifier: 1.1.1 version: 1.1.1(@adonisjs/core@6.2.3) '@adonisjs/validator': specifier: 13.0.2 version: 13.0.2(@adonisjs/core@6.2.3) + '@aws-sdk/client-ses': + specifier: 3.511.0 + version: 3.511.0 adonis5-jwt: specifier: github:SpecialAro/adonis5-jwt#34941c10adcf89583a40767552b994ea499b92e3 version: github.com/SpecialAro/adonis5-jwt/34941c10adcf89583a40767552b994ea499b92e3 @@ -103,9 +106,15 @@ devDependencies: '@adonisjs/vite': specifier: 2.0.2 version: 2.0.2(@adonisjs/core@6.2.3)(@adonisjs/shield@8.1.1)(edge.js@6.0.1)(vite@5.1.1) + '@japa/api-client': + specifier: 2.0.2 + version: 2.0.2(@japa/assert@2.1.0)(@japa/runner@3.1.1) + '@japa/assert': + specifier: 2.1.0 + version: 2.1.0(@japa/runner@3.1.1)(openapi-types@12.1.3) '@japa/plugin-adonisjs': specifier: 3.0.0 - version: 3.0.0(@adonisjs/core@6.2.3)(@japa/runner@3.1.1) + version: 3.0.0(@adonisjs/core@6.2.3)(@japa/api-client@2.0.2)(@japa/runner@3.1.1) '@japa/runner': specifier: 3.1.1 version: 3.1.1 @@ -142,9 +151,6 @@ devDependencies: '@typescript-eslint/parser': specifier: 6.21.0 version: 6.21.0(eslint@8.56.0)(typescript@5.3.3) - cross-env: - specifier: 7.0.3 - version: 7.0.3 eslint: specifier: 8.56.0 version: 8.56.0 @@ -235,7 +241,7 @@ packages: transitivePeerDependencies: - babel-plugin-macros - /@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): + /@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/api-client@2.0.2)(@japa/plugin-adonisjs@3.0.0): resolution: {integrity: sha512-gusUQT/9xWYZvdOzHQeqFlI1WDsxi0DIHxjkCNcExwLHpCwBvJ2+VItQ5+dBx5Aryi7Szm2C4od/vg08f//A5g==} engines: {node: '>=18.16.0'} peerDependencies: @@ -260,8 +266,9 @@ packages: '@adonisjs/core': 6.2.3(@adonisjs/assembler@7.1.1)(bcrypt@5.1.1)(edge.js@6.0.1) '@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) '@adonisjs/presets': 2.2.4(@adonisjs/assembler@7.1.1)(@adonisjs/core@6.2.3) - '@adonisjs/session': 7.1.1(@adonisjs/core@6.2.3)(edge.js@6.0.1) - '@japa/plugin-adonisjs': 3.0.0(@adonisjs/core@6.2.3)(@japa/runner@3.1.1) + '@adonisjs/session': 7.1.1(@adonisjs/core@6.2.3)(@japa/api-client@2.0.2)(edge.js@6.0.1) + '@japa/api-client': 2.0.2(@japa/assert@2.1.0)(@japa/runner@3.1.1) + '@japa/plugin-adonisjs': 3.0.0(@adonisjs/core@6.2.3)(@japa/api-client@2.0.2)(@japa/runner@3.1.1) basic-auth: 2.0.1 transitivePeerDependencies: - '@adonisjs/assembler' @@ -518,7 +525,7 @@ packages: - tedious dev: false - /@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): + /@adonisjs/mail@9.2.0(@adonisjs/core@6.2.3)(@aws-sdk/client-ses@3.511.0)(@types/luxon@3.4.2)(@types/node@20.7.2)(edge.js@6.0.1)(luxon@3.4.4)(moment@2.30.1): resolution: {integrity: sha512-TeZuB0VV3dDh4lPdHxvR9nxWFYkgjtRCURCT4mBMpa3Pxu0XtLwCs8s6jLYvt8k+L4pG2zHJttCrKNpM6hsrlw==} engines: {node: '>=18.16.0'} peerDependencies: @@ -530,6 +537,7 @@ packages: optional: true dependencies: '@adonisjs/core': 6.2.3(@adonisjs/assembler@7.1.1)(bcrypt@5.1.1)(edge.js@6.0.1) + '@aws-sdk/client-ses': 3.511.0 '@poppinss/colors': 4.1.2 '@poppinss/macroable': 1.0.1 '@poppinss/utils': 6.7.2 @@ -577,7 +585,7 @@ packages: '@poppinss/colors': 4.1.2 string-width: 7.1.0 - /@adonisjs/session@7.1.1(@adonisjs/core@6.2.3)(edge.js@6.0.1): + /@adonisjs/session@7.1.1(@adonisjs/core@6.2.3)(@japa/api-client@2.0.2)(edge.js@6.0.1): resolution: {integrity: sha512-rv5lF6uEaAT3kujAEbwpVJuTfPcskjXlM8bt8OV2V6eGMQHGVczV3bErvQjW5ouHqyZiotKkCV2+7roGJdDaWw==} engines: {node: '>=18.16.0'} peerDependencies: @@ -597,10 +605,11 @@ packages: optional: true dependencies: '@adonisjs/core': 6.2.3(@adonisjs/assembler@7.1.1)(bcrypt@5.1.1)(edge.js@6.0.1) + '@japa/api-client': 2.0.2(@japa/assert@2.1.0)(@japa/runner@3.1.1) '@poppinss/utils': 6.7.2 edge.js: 6.0.1 - /@adonisjs/shield@8.1.1(@adonisjs/core@6.2.3)(@adonisjs/session@7.1.1)(edge.js@6.0.1): + /@adonisjs/shield@8.1.1(@adonisjs/core@6.2.3)(@adonisjs/session@7.1.1)(@japa/api-client@2.0.2)(edge.js@6.0.1): resolution: {integrity: sha512-b/rIypxfG8HKPRvWYJo7qhvAlvYCFXn7/A7eb/QI/PQV4fMmW4iF9tAykxl5peu4WJCHCwXwR3Y6/j0VerQcmQ==} engines: {node: '>=18.16.0'} peerDependencies: @@ -618,7 +627,8 @@ packages: optional: true dependencies: '@adonisjs/core': 6.2.3(@adonisjs/assembler@7.1.1)(bcrypt@5.1.1)(edge.js@6.0.1) - '@adonisjs/session': 7.1.1(@adonisjs/core@6.2.3)(edge.js@6.0.1) + '@adonisjs/session': 7.1.1(@adonisjs/core@6.2.3)(@japa/api-client@2.0.2)(edge.js@6.0.1) + '@japa/api-client': 2.0.2(@japa/assert@2.1.0)(@japa/runner@3.1.1) '@poppinss/utils': 6.7.2 csrf: 3.1.0 edge.js: 6.0.1 @@ -673,7 +683,7 @@ packages: optional: true dependencies: '@adonisjs/core': 6.2.3(@adonisjs/assembler@7.1.1)(bcrypt@5.1.1)(edge.js@6.0.1) - '@adonisjs/shield': 8.1.1(@adonisjs/core@6.2.3)(@adonisjs/session@7.1.1)(edge.js@6.0.1) + '@adonisjs/shield': 8.1.1(@adonisjs/core@6.2.3)(@adonisjs/session@7.1.1)(@japa/api-client@2.0.2)(edge.js@6.0.1) defu: 6.1.4 edge-error: 4.0.1 edge.js: 6.0.1 @@ -686,10 +696,535 @@ packages: dependencies: execa: 8.0.1 + /@apidevtools/json-schema-ref-parser@9.1.2: + resolution: {integrity: sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==} + dependencies: + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.13 + call-me-maybe: 1.0.2 + js-yaml: 4.1.0 + + /@apidevtools/openapi-schemas@2.1.0: + resolution: {integrity: sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==} + engines: {node: '>=10'} + + /@apidevtools/swagger-methods@3.0.2: + resolution: {integrity: sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==} + + /@apidevtools/swagger-parser@10.0.3(openapi-types@12.1.3): + resolution: {integrity: sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==} + peerDependencies: + openapi-types: '>=7' + dependencies: + '@apidevtools/json-schema-ref-parser': 9.1.2 + '@apidevtools/openapi-schemas': 2.1.0 + '@apidevtools/swagger-methods': 3.0.2 + '@jsdevtools/ono': 7.1.3 + call-me-maybe: 1.0.2 + openapi-types: 12.1.3 + z-schema: 5.0.5 + /@arr/every@1.0.1: resolution: {integrity: sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg==} engines: {node: '>=4'} + /@aws-crypto/crc32@3.0.0: + resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} + dependencies: + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.511.0 + tslib: 1.14.1 + dev: false + + /@aws-crypto/ie11-detection@3.0.0: + resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} + dependencies: + tslib: 1.14.1 + dev: false + + /@aws-crypto/sha256-browser@3.0.0: + resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} + dependencies: + '@aws-crypto/ie11-detection': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-crypto/supports-web-crypto': 3.0.0 + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.511.0 + '@aws-sdk/util-locate-window': 3.495.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + dev: false + + /@aws-crypto/sha256-js@3.0.0: + resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} + dependencies: + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.511.0 + tslib: 1.14.1 + dev: false + + /@aws-crypto/supports-web-crypto@3.0.0: + resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} + dependencies: + tslib: 1.14.1 + dev: false + + /@aws-crypto/util@3.0.0: + resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} + dependencies: + '@aws-sdk/types': 3.511.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + dev: false + + /@aws-sdk/client-ses@3.511.0: + resolution: {integrity: sha512-+TuXj0Y/mEWVozQRbF5RoWBzC2RLxf3TKiRw9hmN9D7+/bQIqiqq2lWztG7XVohqwPDW2BOEJ/f9j5tCQhKajw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) + '@aws-sdk/core': 3.511.0 + '@aws-sdk/credential-provider-node': 3.511.0 + '@aws-sdk/middleware-host-header': 3.511.0 + '@aws-sdk/middleware-logger': 3.511.0 + '@aws-sdk/middleware-recursion-detection': 3.511.0 + '@aws-sdk/middleware-signing': 3.511.0 + '@aws-sdk/middleware-user-agent': 3.511.0 + '@aws-sdk/region-config-resolver': 3.511.0 + '@aws-sdk/types': 3.511.0 + '@aws-sdk/util-endpoints': 3.511.0 + '@aws-sdk/util-user-agent-browser': 3.511.0 + '@aws-sdk/util-user-agent-node': 3.511.0 + '@smithy/config-resolver': 2.1.1 + '@smithy/core': 1.3.2 + '@smithy/fetch-http-handler': 2.4.1 + '@smithy/hash-node': 2.1.1 + '@smithy/invalid-dependency': 2.1.1 + '@smithy/middleware-content-length': 2.1.1 + '@smithy/middleware-endpoint': 2.4.1 + '@smithy/middleware-retry': 2.1.1 + '@smithy/middleware-serde': 2.1.1 + '@smithy/middleware-stack': 2.1.1 + '@smithy/node-config-provider': 2.2.1 + '@smithy/node-http-handler': 2.3.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + '@smithy/url-parser': 2.1.1 + '@smithy/util-base64': 2.1.1 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.1 + '@smithy/util-defaults-mode-node': 2.2.0 + '@smithy/util-endpoints': 1.1.1 + '@smithy/util-retry': 2.1.1 + '@smithy/util-utf8': 2.1.1 + '@smithy/util-waiter': 2.1.1 + fast-xml-parser: 4.2.5 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/client-sso-oidc@3.511.0(@aws-sdk/credential-provider-node@3.511.0): + resolution: {integrity: sha512-cITRRq54eTrq7ll9li+yYnLbNHKXG2P+ovdZSDiQ6LjCYBdcD4ela30qbs87Yye9YsopdslDzBhHHtrf5oiuMw==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@aws-sdk/credential-provider-node': ^3.511.0 + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) + '@aws-sdk/core': 3.511.0 + '@aws-sdk/credential-provider-node': 3.511.0 + '@aws-sdk/middleware-host-header': 3.511.0 + '@aws-sdk/middleware-logger': 3.511.0 + '@aws-sdk/middleware-recursion-detection': 3.511.0 + '@aws-sdk/middleware-signing': 3.511.0 + '@aws-sdk/middleware-user-agent': 3.511.0 + '@aws-sdk/region-config-resolver': 3.511.0 + '@aws-sdk/types': 3.511.0 + '@aws-sdk/util-endpoints': 3.511.0 + '@aws-sdk/util-user-agent-browser': 3.511.0 + '@aws-sdk/util-user-agent-node': 3.511.0 + '@smithy/config-resolver': 2.1.1 + '@smithy/core': 1.3.2 + '@smithy/fetch-http-handler': 2.4.1 + '@smithy/hash-node': 2.1.1 + '@smithy/invalid-dependency': 2.1.1 + '@smithy/middleware-content-length': 2.1.1 + '@smithy/middleware-endpoint': 2.4.1 + '@smithy/middleware-retry': 2.1.1 + '@smithy/middleware-serde': 2.1.1 + '@smithy/middleware-stack': 2.1.1 + '@smithy/node-config-provider': 2.2.1 + '@smithy/node-http-handler': 2.3.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + '@smithy/url-parser': 2.1.1 + '@smithy/util-base64': 2.1.1 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.1 + '@smithy/util-defaults-mode-node': 2.2.0 + '@smithy/util-endpoints': 1.1.1 + '@smithy/util-retry': 2.1.1 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/client-sso@3.511.0: + resolution: {integrity: sha512-v1f5ZbuZWpad+fgTOpgFyIZT3A37wdqoSPh0hl+cKRu5kPsz96xCe9+UvLx+HdN2yJ/mV0UZcMq6ysj4xAGIEg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/core': 3.511.0 + '@aws-sdk/middleware-host-header': 3.511.0 + '@aws-sdk/middleware-logger': 3.511.0 + '@aws-sdk/middleware-recursion-detection': 3.511.0 + '@aws-sdk/middleware-user-agent': 3.511.0 + '@aws-sdk/region-config-resolver': 3.511.0 + '@aws-sdk/types': 3.511.0 + '@aws-sdk/util-endpoints': 3.511.0 + '@aws-sdk/util-user-agent-browser': 3.511.0 + '@aws-sdk/util-user-agent-node': 3.511.0 + '@smithy/config-resolver': 2.1.1 + '@smithy/core': 1.3.2 + '@smithy/fetch-http-handler': 2.4.1 + '@smithy/hash-node': 2.1.1 + '@smithy/invalid-dependency': 2.1.1 + '@smithy/middleware-content-length': 2.1.1 + '@smithy/middleware-endpoint': 2.4.1 + '@smithy/middleware-retry': 2.1.1 + '@smithy/middleware-serde': 2.1.1 + '@smithy/middleware-stack': 2.1.1 + '@smithy/node-config-provider': 2.2.1 + '@smithy/node-http-handler': 2.3.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + '@smithy/url-parser': 2.1.1 + '@smithy/util-base64': 2.1.1 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.1 + '@smithy/util-defaults-mode-node': 2.2.0 + '@smithy/util-endpoints': 1.1.1 + '@smithy/util-retry': 2.1.1 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/client-sts@3.511.0(@aws-sdk/credential-provider-node@3.511.0): + resolution: {integrity: sha512-lwVEEXK+1auEwmBuTv35m2GvbxPthi8SjNUpU4pRetZPVbGhnhCN6H7JqeMDP6GLf81Io2eySXRsmLMt7l/fjg==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@aws-sdk/credential-provider-node': ^3.511.0 + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/core': 3.511.0 + '@aws-sdk/credential-provider-node': 3.511.0 + '@aws-sdk/middleware-host-header': 3.511.0 + '@aws-sdk/middleware-logger': 3.511.0 + '@aws-sdk/middleware-recursion-detection': 3.511.0 + '@aws-sdk/middleware-user-agent': 3.511.0 + '@aws-sdk/region-config-resolver': 3.511.0 + '@aws-sdk/types': 3.511.0 + '@aws-sdk/util-endpoints': 3.511.0 + '@aws-sdk/util-user-agent-browser': 3.511.0 + '@aws-sdk/util-user-agent-node': 3.511.0 + '@smithy/config-resolver': 2.1.1 + '@smithy/core': 1.3.2 + '@smithy/fetch-http-handler': 2.4.1 + '@smithy/hash-node': 2.1.1 + '@smithy/invalid-dependency': 2.1.1 + '@smithy/middleware-content-length': 2.1.1 + '@smithy/middleware-endpoint': 2.4.1 + '@smithy/middleware-retry': 2.1.1 + '@smithy/middleware-serde': 2.1.1 + '@smithy/middleware-stack': 2.1.1 + '@smithy/node-config-provider': 2.2.1 + '@smithy/node-http-handler': 2.3.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + '@smithy/url-parser': 2.1.1 + '@smithy/util-base64': 2.1.1 + '@smithy/util-body-length-browser': 2.1.1 + '@smithy/util-body-length-node': 2.2.1 + '@smithy/util-defaults-mode-browser': 2.1.1 + '@smithy/util-defaults-mode-node': 2.2.0 + '@smithy/util-endpoints': 1.1.1 + '@smithy/util-middleware': 2.1.1 + '@smithy/util-retry': 2.1.1 + '@smithy/util-utf8': 2.1.1 + fast-xml-parser: 4.2.5 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/core@3.511.0: + resolution: {integrity: sha512-0gbDvQhToyLxPyr/7KP6uavrBYKh7exld2lju1Lp65U61XgEjTVP/thJmHTvH4BAKGSqeIz/rrwJ0KrC8nwBtw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/core': 1.3.2 + '@smithy/protocol-http': 3.1.1 + '@smithy/signature-v4': 2.1.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@aws-sdk/credential-provider-env@3.511.0: + resolution: {integrity: sha512-4VUsnLRox8YzxnZwnFrfZM4bL5KKLhsjjjX7oiuLyzFkhauI4HFYt7rTB8YNGphpqAg/Wzw5DBZfO3Bw1iR1HA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.511.0 + '@smithy/property-provider': 2.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@aws-sdk/credential-provider-http@3.511.0: + resolution: {integrity: sha512-y83Gt8GPpgMe/lMFxIq+0G2rbzLTC6lhrDocHUzqcApLD6wet8Esy2iYckSRlJgYY+qsVAzpLrSMtt85DwRPTw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.511.0 + '@smithy/fetch-http-handler': 2.4.1 + '@smithy/node-http-handler': 2.3.1 + '@smithy/property-provider': 2.1.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + '@smithy/util-stream': 2.1.1 + tslib: 2.6.2 + dev: false + + /@aws-sdk/credential-provider-ini@3.511.0(@aws-sdk/credential-provider-node@3.511.0): + resolution: {integrity: sha512-AgIOCtYzm61jbTQCY/2Vf/yu7DeLG0TLZa05a3VVRN9XE4ERtEnMn7TdbxM+hS24MTX8xI0HbMcWxCBkXRIg9w==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/client-sts': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) + '@aws-sdk/credential-provider-env': 3.511.0 + '@aws-sdk/credential-provider-process': 3.511.0 + '@aws-sdk/credential-provider-sso': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) + '@aws-sdk/credential-provider-web-identity': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) + '@aws-sdk/types': 3.511.0 + '@smithy/credential-provider-imds': 2.2.1 + '@smithy/property-provider': 2.1.1 + '@smithy/shared-ini-file-loader': 2.3.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt + dev: false + + /@aws-sdk/credential-provider-node@3.511.0: + resolution: {integrity: sha512-5JDZXsSluliJmxOF+lYYFgJdSKQfVLQyic5NxScHULTERGoEwEHMgucFGwJ9MV9FoINjNTQLfAiWlJL/kGkCEQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/credential-provider-env': 3.511.0 + '@aws-sdk/credential-provider-http': 3.511.0 + '@aws-sdk/credential-provider-ini': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) + '@aws-sdk/credential-provider-process': 3.511.0 + '@aws-sdk/credential-provider-sso': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) + '@aws-sdk/credential-provider-web-identity': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) + '@aws-sdk/types': 3.511.0 + '@smithy/credential-provider-imds': 2.2.1 + '@smithy/property-provider': 2.1.1 + '@smithy/shared-ini-file-loader': 2.3.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/credential-provider-process@3.511.0: + resolution: {integrity: sha512-88hLUPqcTwjSubPS+34ZfmglnKeLny8GbmZsyllk96l26PmDTAqo5RScSA8BWxL0l5pRRWGtcrFyts+oibHIuQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.511.0 + '@smithy/property-provider': 2.1.1 + '@smithy/shared-ini-file-loader': 2.3.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@aws-sdk/credential-provider-sso@3.511.0(@aws-sdk/credential-provider-node@3.511.0): + resolution: {integrity: sha512-aEei9UdXYEE2e0Htf28/IcuHcWk3VkUkpcg3KDR/AyzXA3i/kxmixtAgRmHOForC5CMqoJjzVPFUITNkAscyag==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/client-sso': 3.511.0 + '@aws-sdk/token-providers': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) + '@aws-sdk/types': 3.511.0 + '@smithy/property-provider': 2.1.1 + '@smithy/shared-ini-file-loader': 2.3.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt + dev: false + + /@aws-sdk/credential-provider-web-identity@3.511.0(@aws-sdk/credential-provider-node@3.511.0): + resolution: {integrity: sha512-/3XMyN7YYefAsES/sMMY5zZGRmZ5QJisJw798DdMYmYMsb1dt0Qy8kZTu+59ZzOiVIcznsjSTCEB81QmGtDKcA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/client-sts': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) + '@aws-sdk/types': 3.511.0 + '@smithy/property-provider': 2.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt + dev: false + + /@aws-sdk/middleware-host-header@3.511.0: + resolution: {integrity: sha512-DbBzQP/6woSHR/+g9dHN3YiYaLIqFw9u8lQFMxi3rT3hqITFVYLzzXtEaHjDD6/is56pNT84CIKbyJ6/gY5d1Q==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.511.0 + '@smithy/protocol-http': 3.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@aws-sdk/middleware-logger@3.511.0: + resolution: {integrity: sha512-EYU9dBlJXvQcCsM2Tfgi0NQoXrqovfDv/fDy8oGJgZFrgNuHDti8tdVVxeJTUJNEAF67xlDl5o+rWEkKthkYGQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.511.0 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@aws-sdk/middleware-recursion-detection@3.511.0: + resolution: {integrity: sha512-PlNPCV/6zpDVdNx1K69xDTh/wPNU4WyP4qa6hUo2/+4/PNG5HI9xbCWtpb4RjhdTRw6qDtkBNcPICHbtWx5aHg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.511.0 + '@smithy/protocol-http': 3.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@aws-sdk/middleware-signing@3.511.0: + resolution: {integrity: sha512-IMijFLfm+QQHD6NNDX9k3op9dpBSlWKnqjcMU38Tytl2nbqV4gktkarOK1exHAmH7CdoYR5BufVtBzbASNSF/A==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.511.0 + '@smithy/property-provider': 2.1.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/signature-v4': 2.1.1 + '@smithy/types': 2.9.1 + '@smithy/util-middleware': 2.1.1 + tslib: 2.6.2 + dev: false + + /@aws-sdk/middleware-user-agent@3.511.0: + resolution: {integrity: sha512-eLs+CxP2QCXh3tCGYCdAml3oyWj8MSIwKbH+8rKw0k/5vmY1YJDBy526whOxx61ivhz2e0muuijN4X5EZZ2Pnw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.511.0 + '@aws-sdk/util-endpoints': 3.511.0 + '@smithy/protocol-http': 3.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@aws-sdk/region-config-resolver@3.511.0: + resolution: {integrity: sha512-RzBLSNaRd4iEkQyEGfiSNvSnWU/x23rsiFgA9tqYFA0Vqx7YmzSWC8QBUxpwybB8HkbbL9wNVKQqTbhI3mYneQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.511.0 + '@smithy/node-config-provider': 2.2.1 + '@smithy/types': 2.9.1 + '@smithy/util-config-provider': 2.2.1 + '@smithy/util-middleware': 2.1.1 + tslib: 2.6.2 + dev: false + + /@aws-sdk/token-providers@3.511.0(@aws-sdk/credential-provider-node@3.511.0): + resolution: {integrity: sha512-92dXjMHBJcRoUkJHc0Bvtsz7Sal8t6VASRJ5vfs5c2ZpTVgLpVnM4dBmwUgGUdnvHov0cZTXbbadTJ/qOWx5Zw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/client-sso-oidc': 3.511.0(@aws-sdk/credential-provider-node@3.511.0) + '@aws-sdk/types': 3.511.0 + '@smithy/property-provider': 2.1.1 + '@smithy/shared-ini-file-loader': 2.3.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + transitivePeerDependencies: + - '@aws-sdk/credential-provider-node' + - aws-crt + dev: false + + /@aws-sdk/types@3.511.0: + resolution: {integrity: sha512-P03ufufxmkvd7nO46oOeEqYIMPJ8qMCKxAsfJk1JBVPQ1XctVntbail4/UFnrnzij8DTl4Mk/D62uGo7+RolXA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@aws-sdk/util-endpoints@3.511.0: + resolution: {integrity: sha512-J/5hsscJkg2pAOdLx1YKlyMCk5lFRxRxEtup9xipzOxVBlqOIE72Tuu31fbxSlF8XzO/AuCJcZL4m1v098K9oA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.511.0 + '@smithy/types': 2.9.1 + '@smithy/util-endpoints': 1.1.1 + tslib: 2.6.2 + dev: false + + /@aws-sdk/util-locate-window@3.495.0: + resolution: {integrity: sha512-MfaPXT0kLX2tQaR90saBT9fWQq2DHqSSJRzW+MZWsmF+y5LGCOhO22ac/2o6TKSQm7h0HRc2GaADqYYYor62yg==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + dev: false + + /@aws-sdk/util-user-agent-browser@3.511.0: + resolution: {integrity: sha512-5LuESdwtIcA10aHcX7pde7aCIijcyTPBXFuXmFlDTgm/naAayQxelQDpvgbzuzGLgePf8eTyyhDKhzwPZ2EqiQ==} + dependencies: + '@aws-sdk/types': 3.511.0 + '@smithy/types': 2.9.1 + bowser: 2.11.0 + tslib: 2.6.2 + dev: false + + /@aws-sdk/util-user-agent-node@3.511.0: + resolution: {integrity: sha512-UopdlRvYY5mxlS4wwFv+QAWL6/T302wmoQj7i+RY+c/D3Ej3PKBb/mW3r2wEOgZLJmPpeeM1SYMk+rVmsW1rqw==} + engines: {node: '>=14.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + dependencies: + '@aws-sdk/types': 3.511.0 + '@smithy/node-config-provider': 2.2.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@aws-sdk/util-utf8-browser@3.259.0: + resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + dependencies: + tslib: 2.6.2 + dev: false + /@babel/code-frame@7.22.13: resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} @@ -1000,6 +1535,41 @@ packages: resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} dev: true + /@japa/api-client@2.0.2(@japa/assert@2.1.0)(@japa/runner@3.1.1): + resolution: {integrity: sha512-wQrmT8Fxdu+2W0NU209zWHXDeX5a+9PKJs5Ux+jd7NR2y2ndFIi1bSAvN/c5N2UtywNFht2gTmQSCFSTC9kVNg==} + engines: {node: '>=18.16.0'} + peerDependencies: + '@japa/assert': ^2.0.0 + '@japa/runner': ^3.0.0 + peerDependenciesMeta: + '@japa/assert': + optional: true + dependencies: + '@japa/assert': 2.1.0(@japa/runner@3.1.1)(openapi-types@12.1.3) + '@japa/runner': 3.1.1 + '@poppinss/hooks': 7.2.2 + '@poppinss/macroable': 1.0.1 + '@types/superagent': 4.1.24 + cookie: 0.6.0 + set-cookie-parser: 2.6.0 + superagent: 8.1.2 + transitivePeerDependencies: + - supports-color + + /@japa/assert@2.1.0(@japa/runner@3.1.1)(openapi-types@12.1.3): + resolution: {integrity: sha512-klSa1nO6VFYJqW9oSeMRZQpTSw01+yZpBDoHNuUse7SqbScau9SvNIvBEYxbdDB2bj9hTXxt/z6cwVWf1UltZg==} + engines: {node: '>=18.16.0'} + peerDependencies: + '@japa/runner': ^3.0.0 + dependencies: + '@japa/runner': 3.1.1 + '@poppinss/macroable': 1.0.1 + '@types/chai': 4.3.11 + api-contract-validator: 2.2.8(openapi-types@12.1.3) + chai: 4.4.1 + transitivePeerDependencies: + - openapi-types + /@japa/core@9.0.0: resolution: {integrity: sha512-BQiS8rd1qiSkz+uTsx+Bfsp+FVeoKpJXMtUse4XDt2cUfDdCnvYkvRnqmR/F/u8ttt71sZ4mHKizGa1Q5MG3DQ==} engines: {node: '>=18.16.0'} @@ -1021,7 +1591,7 @@ packages: youch: 3.3.3 youch-terminal: 2.2.3 - /@japa/plugin-adonisjs@3.0.0(@adonisjs/core@6.2.3)(@japa/runner@3.1.1): + /@japa/plugin-adonisjs@3.0.0(@adonisjs/core@6.2.3)(@japa/api-client@2.0.2)(@japa/runner@3.1.1): resolution: {integrity: sha512-gw92tnOlNeVuZoI/ysX/AW9AZdACd5cm50Jpa+dUPQ7VJU7J7PQCNGhp3FF98h7czdGvw8KJvszr/grr3SENEA==} engines: {node: '>=18.16.0'} peerDependencies: @@ -1039,6 +1609,7 @@ packages: optional: true dependencies: '@adonisjs/core': 6.2.3(@adonisjs/assembler@7.1.1)(bcrypt@5.1.1)(edge.js@6.0.1) + '@japa/api-client': 2.0.2(@japa/assert@2.1.0)(@japa/runner@3.1.1) '@japa/runner': 3.1.1 /@japa/runner@3.1.1: @@ -1062,6 +1633,15 @@ packages: dependencies: '@sinclair/typebox': 0.27.8 + /@jest/types@25.5.0: + resolution: {integrity: sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==} + engines: {node: '>= 8.3'} + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 1.1.2 + '@types/yargs': 15.0.19 + chalk: 3.0.0 + /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} @@ -1078,6 +1658,9 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /@jsdevtools/ono@7.1.3: + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + /@lukeed/ms@2.0.2: resolution: {integrity: sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==} engines: {node: '>=8'} @@ -1326,36 +1909,417 @@ packages: dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.10.0: - resolution: {integrity: sha512-NrR6667wlUfP0BHaEIKgYM/2va+Oj+RjZSASbBMnszM9k+1AmliRjHc3lJIiOehtSSjqYiO7R6KLNrWOX+YNSQ==} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true + /@rollup/rollup-win32-arm64-msvc@4.10.0: + resolution: {integrity: sha512-NrR6667wlUfP0BHaEIKgYM/2va+Oj+RjZSASbBMnszM9k+1AmliRjHc3lJIiOehtSSjqYiO7R6KLNrWOX+YNSQ==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.10.0: + resolution: {integrity: sha512-FV0Tpt84LPYDduIDcXvEC7HKtyXxdvhdAOvOeWMWbQNulxViH2O07QXkT/FffX4FqEI02jEbCJbr+YcuKdyyMg==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.10.0: + resolution: {integrity: sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + /@sindresorhus/is@6.1.0: + resolution: {integrity: sha512-BuvU07zq3tQ/2SIgBsEuxKYDyDjC0n7Zir52bpHy2xnBbW81+po43aLFPLbeV3HRAheFbGud1qgcqSYfhtHMAg==} + engines: {node: '>=16'} + + /@smithy/abort-controller@2.1.1: + resolution: {integrity: sha512-1+qdrUqLhaALYL0iOcN43EP6yAXXQ2wWZ6taf4S2pNGowmOc5gx+iMQv+E42JizNJjB0+gEadOXeV1Bf7JWL1Q==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@smithy/config-resolver@2.1.1: + resolution: {integrity: sha512-lxfLDpZm+AWAHPFZps5JfDoO9Ux1764fOgvRUBpHIO8HWHcSN1dkgsago1qLRVgm1BZ8RCm8cgv99QvtaOWIhw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/node-config-provider': 2.2.1 + '@smithy/types': 2.9.1 + '@smithy/util-config-provider': 2.2.1 + '@smithy/util-middleware': 2.1.1 + tslib: 2.6.2 + dev: false + + /@smithy/core@1.3.2: + resolution: {integrity: sha512-tYDmTp0f2TZVE18jAOH1PnmkngLQ+dOGUlMd1u67s87ieueNeyqhja6z/Z4MxhybEiXKOWFOmGjfTZWFxljwJw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/middleware-endpoint': 2.4.1 + '@smithy/middleware-retry': 2.1.1 + '@smithy/middleware-serde': 2.1.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + '@smithy/util-middleware': 2.1.1 + tslib: 2.6.2 + dev: false + + /@smithy/credential-provider-imds@2.2.1: + resolution: {integrity: sha512-7XHjZUxmZYnONheVQL7j5zvZXga+EWNgwEAP6OPZTi7l8J4JTeNh9aIOfE5fKHZ/ee2IeNOh54ZrSna+Vc6TFA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/node-config-provider': 2.2.1 + '@smithy/property-provider': 2.1.1 + '@smithy/types': 2.9.1 + '@smithy/url-parser': 2.1.1 + tslib: 2.6.2 + dev: false + + /@smithy/eventstream-codec@2.1.1: + resolution: {integrity: sha512-E8KYBxBIuU4c+zrpR22VsVrOPoEDzk35bQR3E+xm4k6Pa6JqzkDOdMyf9Atac5GPNKHJBdVaQ4JtjdWX2rl/nw==} + dependencies: + '@aws-crypto/crc32': 3.0.0 + '@smithy/types': 2.9.1 + '@smithy/util-hex-encoding': 2.1.1 + tslib: 2.6.2 + dev: false + + /@smithy/fetch-http-handler@2.4.1: + resolution: {integrity: sha512-VYGLinPsFqH68lxfRhjQaSkjXM7JysUOJDTNjHBuN/ykyRb2f1gyavN9+VhhPTWCy32L4yZ2fdhpCs/nStEicg==} + dependencies: + '@smithy/protocol-http': 3.1.1 + '@smithy/querystring-builder': 2.1.1 + '@smithy/types': 2.9.1 + '@smithy/util-base64': 2.1.1 + tslib: 2.6.2 + dev: false + + /@smithy/hash-node@2.1.1: + resolution: {integrity: sha512-Qhoq0N8f2OtCnvUpCf+g1vSyhYQrZjhSwvJ9qvR8BUGOtTXiyv2x1OD2e6jVGmlpC4E4ax1USHoyGfV9JFsACg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.9.1 + '@smithy/util-buffer-from': 2.1.1 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + dev: false + + /@smithy/invalid-dependency@2.1.1: + resolution: {integrity: sha512-7WTgnKw+VPg8fxu2v9AlNOQ5yaz6RA54zOVB4f6vQuR0xFKd+RzlCpt0WidYTsye7F+FYDIaS/RnJW4pxjNInw==} + dependencies: + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@smithy/is-array-buffer@2.1.1: + resolution: {integrity: sha512-xozSQrcUinPpNPNPds4S7z/FakDTh1MZWtRP/2vQtYB/u3HYrX2UXuZs+VhaKBd6Vc7g2XPr2ZtwGBNDN6fNKQ==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + dev: false + + /@smithy/middleware-content-length@2.1.1: + resolution: {integrity: sha512-rSr9ezUl9qMgiJR0UVtVOGEZElMdGFyl8FzWEF5iEKTlcWxGr2wTqGfDwtH3LAB7h+FPkxqv4ZU4cpuCN9Kf/g==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/protocol-http': 3.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@smithy/middleware-endpoint@2.4.1: + resolution: {integrity: sha512-XPZTb1E2Oav60Ven3n2PFx+rX9EDsU/jSTA8VDamt7FXks67ekjPY/XrmmPDQaFJOTUHJNKjd8+kZxVO5Ael4Q==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/middleware-serde': 2.1.1 + '@smithy/node-config-provider': 2.2.1 + '@smithy/shared-ini-file-loader': 2.3.1 + '@smithy/types': 2.9.1 + '@smithy/url-parser': 2.1.1 + '@smithy/util-middleware': 2.1.1 + tslib: 2.6.2 + dev: false + + /@smithy/middleware-retry@2.1.1: + resolution: {integrity: sha512-eMIHOBTXro6JZ+WWzZWd/8fS8ht5nS5KDQjzhNMHNRcG5FkNTqcKpYhw7TETMYzbLfhO5FYghHy1vqDWM4FLDA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/node-config-provider': 2.2.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/service-error-classification': 2.1.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + '@smithy/util-middleware': 2.1.1 + '@smithy/util-retry': 2.1.1 + tslib: 2.6.2 + uuid: 8.3.2 + dev: false + + /@smithy/middleware-serde@2.1.1: + resolution: {integrity: sha512-D8Gq0aQBeE1pxf3cjWVkRr2W54t+cdM2zx78tNrVhqrDykRA7asq8yVJij1u5NDtKzKqzBSPYh7iW0svUKg76g==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@smithy/middleware-stack@2.1.1: + resolution: {integrity: sha512-KPJhRlhsl8CjgGXK/DoDcrFGfAqoqvuwlbxy+uOO4g2Azn1dhH+GVfC3RAp+6PoL5PWPb+vt6Z23FP+Mr6qeCw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@smithy/node-config-provider@2.2.1: + resolution: {integrity: sha512-epzK3x1xNxA9oJgHQ5nz+2j6DsJKdHfieb+YgJ7ATWxzNcB7Hc+Uya2TUck5MicOPhDV8HZImND7ZOecVr+OWg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/property-provider': 2.1.1 + '@smithy/shared-ini-file-loader': 2.3.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@smithy/node-http-handler@2.3.1: + resolution: {integrity: sha512-gLA8qK2nL9J0Rk/WEZSvgin4AppvuCYRYg61dcUo/uKxvMZsMInL5I5ZdJTogOvdfVug3N2dgI5ffcUfS4S9PA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/abort-controller': 2.1.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/querystring-builder': 2.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@smithy/property-provider@2.1.1: + resolution: {integrity: sha512-FX7JhhD/o5HwSwg6GLK9zxrMUrGnb3PzNBrcthqHKBc3dH0UfgEAU24xnJ8F0uow5mj17UeBEOI6o3CF2k7Mhw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@smithy/protocol-http@3.1.1: + resolution: {integrity: sha512-6ZRTSsaXuSL9++qEwH851hJjUA0OgXdQFCs+VDw4tGH256jQ3TjYY/i34N4vd24RV3nrjNsgd1yhb57uMoKbzQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@smithy/querystring-builder@2.1.1: + resolution: {integrity: sha512-C/ko/CeEa8jdYE4gt6nHO5XDrlSJ3vdCG0ZAc6nD5ZIE7LBp0jCx4qoqp7eoutBu7VrGMXERSRoPqwi1WjCPbg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.9.1 + '@smithy/util-uri-escape': 2.1.1 + tslib: 2.6.2 + dev: false + + /@smithy/querystring-parser@2.1.1: + resolution: {integrity: sha512-H4+6jKGVhG1W4CIxfBaSsbm98lOO88tpDWmZLgkJpt8Zkk/+uG0FmmqMuCAc3HNM2ZDV+JbErxr0l5BcuIf/XQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@smithy/service-error-classification@2.1.1: + resolution: {integrity: sha512-txEdZxPUgM1PwGvDvHzqhXisrc5LlRWYCf2yyHfvITWioAKat7srQvpjMAvgzf0t6t7j8yHrryXU9xt7RZqFpw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.9.1 + dev: false + + /@smithy/shared-ini-file-loader@2.3.1: + resolution: {integrity: sha512-2E2kh24igmIznHLB6H05Na4OgIEilRu0oQpYXo3LCNRrawHAcfDKq9004zJs+sAMt2X5AbY87CUCJ7IpqpSgdw==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@smithy/signature-v4@2.1.1: + resolution: {integrity: sha512-Hb7xub0NHuvvQD3YwDSdanBmYukoEkhqBjqoxo+bSdC0ryV9cTfgmNjuAQhTPYB6yeU7hTR+sPRiFMlxqv6kmg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/eventstream-codec': 2.1.1 + '@smithy/is-array-buffer': 2.1.1 + '@smithy/types': 2.9.1 + '@smithy/util-hex-encoding': 2.1.1 + '@smithy/util-middleware': 2.1.1 + '@smithy/util-uri-escape': 2.1.1 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + dev: false + + /@smithy/smithy-client@2.3.1: + resolution: {integrity: sha512-YsTdU8xVD64r2pLEwmltrNvZV6XIAC50LN6ivDopdt+YiF/jGH6PY9zUOu0CXD/d8GMB8gbhnpPsdrjAXHS9QA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/middleware-endpoint': 2.4.1 + '@smithy/middleware-stack': 2.1.1 + '@smithy/protocol-http': 3.1.1 + '@smithy/types': 2.9.1 + '@smithy/util-stream': 2.1.1 + tslib: 2.6.2 + dev: false + + /@smithy/types@2.9.1: + resolution: {integrity: sha512-vjXlKNXyprDYDuJ7UW5iobdmyDm6g8dDG+BFUncAg/3XJaN45Gy5RWWWUVgrzIK7S4R1KWgIX5LeJcfvSI24bw==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + dev: false + + /@smithy/url-parser@2.1.1: + resolution: {integrity: sha512-qC9Bv8f/vvFIEkHsiNrUKYNl8uKQnn4BdhXl7VzQRP774AwIjiSMMwkbT+L7Fk8W8rzYVifzJNYxv1HwvfBo3Q==} + dependencies: + '@smithy/querystring-parser': 2.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@smithy/util-base64@2.1.1: + resolution: {integrity: sha512-UfHVpY7qfF/MrgndI5PexSKVTxSZIdz9InghTFa49QOvuu9I52zLPLUHXvHpNuMb1iD2vmc6R+zbv/bdMipR/g==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/util-buffer-from': 2.1.1 + tslib: 2.6.2 + dev: false + + /@smithy/util-body-length-browser@2.1.1: + resolution: {integrity: sha512-ekOGBLvs1VS2d1zM2ER4JEeBWAvIOUKeaFch29UjjJsxmZ/f0L3K3x0dEETgh3Q9bkZNHgT+rkdl/J/VUqSRag==} + dependencies: + tslib: 2.6.2 + dev: false + + /@smithy/util-body-length-node@2.2.1: + resolution: {integrity: sha512-/ggJG+ta3IDtpNVq4ktmEUtOkH1LW64RHB5B0hcr5ZaWBmo96UX2cIOVbjCqqDickTXqBWZ4ZO0APuaPrD7Abg==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + dev: false + + /@smithy/util-buffer-from@2.1.1: + resolution: {integrity: sha512-clhNjbyfqIv9Md2Mg6FffGVrJxw7bgK7s3Iax36xnfVj6cg0fUG7I4RH0XgXJF8bxi+saY5HR21g2UPKSxVCXg==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/is-array-buffer': 2.1.1 + tslib: 2.6.2 + dev: false + + /@smithy/util-config-provider@2.2.1: + resolution: {integrity: sha512-50VL/tx9oYYcjJn/qKqNy7sCtpD0+s8XEBamIFo4mFFTclKMNp+rsnymD796uybjiIquB7VCB/DeafduL0y2kw==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + dev: false + + /@smithy/util-defaults-mode-browser@2.1.1: + resolution: {integrity: sha512-lqLz/9aWRO6mosnXkArtRuQqqZBhNpgI65YDpww4rVQBuUT7qzKbDLG5AmnQTCiU4rOquaZO/Kt0J7q9Uic7MA==} + engines: {node: '>= 10.0.0'} + dependencies: + '@smithy/property-provider': 2.1.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + bowser: 2.11.0 + tslib: 2.6.2 + dev: false + + /@smithy/util-defaults-mode-node@2.2.0: + resolution: {integrity: sha512-iFJp/N4EtkanFpBUtSrrIbtOIBf69KNuve03ic1afhJ9/korDxdM0c6cCH4Ehj/smI9pDCfVv+bqT3xZjF2WaA==} + engines: {node: '>= 10.0.0'} + dependencies: + '@smithy/config-resolver': 2.1.1 + '@smithy/credential-provider-imds': 2.2.1 + '@smithy/node-config-provider': 2.2.1 + '@smithy/property-provider': 2.1.1 + '@smithy/smithy-client': 2.3.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@smithy/util-endpoints@1.1.1: + resolution: {integrity: sha512-sI4d9rjoaekSGEtq3xSb2nMjHMx8QXcz2cexnVyRWsy4yQ9z3kbDpX+7fN0jnbdOp0b3KSTZJZ2Yb92JWSanLw==} + engines: {node: '>= 14.0.0'} + dependencies: + '@smithy/node-config-provider': 2.2.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false + + /@smithy/util-hex-encoding@2.1.1: + resolution: {integrity: sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + dev: false + + /@smithy/util-middleware@2.1.1: + resolution: {integrity: sha512-mKNrk8oz5zqkNcbcgAAepeJbmfUW6ogrT2Z2gDbIUzVzNAHKJQTYmH9jcy0jbWb+m7ubrvXKb6uMjkSgAqqsFA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false - /@rollup/rollup-win32-ia32-msvc@4.10.0: - resolution: {integrity: sha512-FV0Tpt84LPYDduIDcXvEC7HKtyXxdvhdAOvOeWMWbQNulxViH2O07QXkT/FffX4FqEI02jEbCJbr+YcuKdyyMg==} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true + /@smithy/util-retry@2.1.1: + resolution: {integrity: sha512-Mg+xxWPTeSPrthpC5WAamJ6PW4Kbo01Fm7lWM1jmGRvmrRdsd3192Gz2fBXAMURyXpaNxyZf6Hr/nQ4q70oVEA==} + engines: {node: '>= 14.0.0'} + dependencies: + '@smithy/service-error-classification': 2.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false - /@rollup/rollup-win32-x64-msvc@4.10.0: - resolution: {integrity: sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ==} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true + /@smithy/util-stream@2.1.1: + resolution: {integrity: sha512-J7SMIpUYvU4DQN55KmBtvaMc7NM3CZ2iWICdcgaovtLzseVhAqFRYqloT3mh0esrFw+3VEK6nQFteFsTqZSECQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/fetch-http-handler': 2.4.1 + '@smithy/node-http-handler': 2.3.1 + '@smithy/types': 2.9.1 + '@smithy/util-base64': 2.1.1 + '@smithy/util-buffer-from': 2.1.1 + '@smithy/util-hex-encoding': 2.1.1 + '@smithy/util-utf8': 2.1.1 + tslib: 2.6.2 + dev: false - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + /@smithy/util-uri-escape@2.1.1: + resolution: {integrity: sha512-saVzI1h6iRBUVSqtnlOnc9ssU09ypo7n+shdQ8hBTZno/9rZ3AuRYvoHInV57VF7Qn7B+pFJG7qTzFiHxWlWBw==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.6.2 + dev: false - /@sindresorhus/is@6.1.0: - resolution: {integrity: sha512-BuvU07zq3tQ/2SIgBsEuxKYDyDjC0n7Zir52bpHy2xnBbW81+po43aLFPLbeV3HRAheFbGud1qgcqSYfhtHMAg==} - engines: {node: '>=16'} + /@smithy/util-utf8@2.1.1: + resolution: {integrity: sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/util-buffer-from': 2.1.1 + tslib: 2.6.2 + dev: false + + /@smithy/util-waiter@2.1.1: + resolution: {integrity: sha512-kYy6BLJJNif+uqNENtJqWdXcpqo1LS+nj1AfXcDhOpqpSHJSAkVySLyZV9fkmuVO21lzGoxjvd1imGGJHph/IA==} + engines: {node: '>=14.0.0'} + dependencies: + '@smithy/abort-controller': 2.1.1 + '@smithy/types': 2.9.1 + tslib: 2.6.2 + dev: false /@swc/core-darwin-arm64@1.4.0: resolution: {integrity: sha512-UTJ/Vz+s7Pagef6HmufWt6Rs0aUu+EJF4Pzuwvr7JQQ5b1DZeAAUeUtkUTFx/PvCbM8Xfw4XdKBUZfrIKCfW8A==} @@ -1539,6 +2503,12 @@ packages: /@types/bytes@3.1.4: resolution: {integrity: sha512-A0uYgOj3zNc4hNjHc5lYUfJQ/HVyBXiUMKdXd7ysclaE6k9oJdavQzODHuwjpUu2/boCP8afjQYi8z/GtvNCWA==} + /@types/chai@4.3.11: + resolution: {integrity: sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==} + + /@types/cookiejar@2.1.5: + resolution: {integrity: sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==} + /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true @@ -1557,9 +2527,22 @@ packages: resolution: {integrity: sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==} dev: false + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + /@types/istanbul-reports@1.1.2: + resolution: {integrity: sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-lib-report': 3.0.3 + /@types/json-schema@7.0.13: resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} - dev: true /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} @@ -1609,6 +2592,12 @@ packages: source-map: 0.6.1 dev: true + /@types/superagent@4.1.24: + resolution: {integrity: sha512-mEafCgyKiMFin24SDzWN7yAADt4gt6YawFiNMp0QS5ZPboORfyxFt0s3VzJKhTaKg9py/4FUmrHLTNfJKt9Rbw==} + dependencies: + '@types/cookiejar': 2.1.5 + '@types/node': 20.7.2 + /@types/tar-fs@2.0.2: resolution: {integrity: sha512-XuZRAvdo7FbDfgQCNkc8NOdSae5XtG+of2mTSgJ85G4OG0miN4E8BTGT+JBTLO87RQ7iCwsIDCqCsHnf2IaSXA==} dependencies: @@ -1636,6 +2625,14 @@ packages: resolution: {integrity: sha512-FCTsikRozryfayPuiI46QzH3fnrOoctTjvOYZkho9BTFLCOZ2rgZJHMOVgCOfttjPJcgOx52EpkY0CMfy87MIw==} dev: false + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + /@types/yargs@15.0.19: + resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} + dependencies: + '@types/yargs-parser': 21.0.3 + /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} engines: {node: ^16.0.0 || >=18.0.0} @@ -1857,7 +2854,6 @@ packages: fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} @@ -1905,6 +2901,37 @@ packages: normalize-path: 3.0.0 picomatch: 2.3.1 + /api-contract-validator@2.2.8(openapi-types@12.1.3): + resolution: {integrity: sha512-YM3rMcrIp8Thf/WWbVBXBGX793Mm3Phw2pn3VbJpiZkpeTCTtF10huKPrzQ2gSIaK5GjAhTRJMAOyf+rsS7MAw==} + engines: {node: '>=8'} + dependencies: + api-schema-builder: 2.0.11(openapi-types@12.1.3) + chalk: 3.0.0 + columnify: 1.6.0 + jest-diff: 25.5.0 + jest-matcher-utils: 25.5.0 + lodash.flatten: 4.4.0 + lodash.get: 4.4.2 + lodash.set: 4.3.2 + uri-js: 4.4.1 + transitivePeerDependencies: + - openapi-types + + /api-schema-builder@2.0.11(openapi-types@12.1.3): + resolution: {integrity: sha512-85zbwf8MtPWodhfnmQRW5YD/fuGR12FP+8TbcYai5wbRnoUmPYLftLSbp7NB6zQMPb61Gjz+ApPUSyTdcCos7g==} + engines: {node: '>=8'} + dependencies: + ajv: 6.12.6 + clone-deep: 4.0.1 + decimal.js: 10.4.3 + js-yaml: 3.14.1 + json-schema-deref-sync: 0.14.0 + lodash.get: 4.4.2 + openapi-schema-validator: 3.0.3 + swagger-parser: 10.0.3(openapi-types@12.1.3) + transitivePeerDependencies: + - openapi-types + /aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} @@ -1929,9 +2956,13 @@ packages: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: true + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} @@ -2005,6 +3036,12 @@ packages: dependencies: printable-characters: 1.0.42 + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + /astring@1.8.6: resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} hasBin: true @@ -2014,6 +3051,9 @@ packages: dependencies: retry: 0.13.1 + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + /atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} @@ -2076,6 +3116,10 @@ packages: readable-stream: 3.6.2 dev: false + /bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + dev: false + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -2198,6 +3242,9 @@ packages: function-bind: 1.1.1 get-intrinsic: 1.2.1 + /call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -2211,6 +3258,18 @@ packages: resolution: {integrity: sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==} engines: {node: '>=12.13'} + /chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.3 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.0.8 + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -2220,6 +3279,13 @@ packages: supports-color: 5.5.0 dev: true + /chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -2227,6 +3293,14 @@ packages: ansi-styles: 4.3.0 supports-color: 7.2.0 + /charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -2307,6 +3381,22 @@ packages: slice-ansi: 5.0.0 string-width: 7.1.0 + /clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + /clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + /code-block-writer@11.0.3: resolution: {integrity: sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==} dev: false @@ -2341,14 +3431,36 @@ packages: resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} dev: false + /columnify@1.6.0: + resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==} + engines: {node: '>=8.0.0'} + dependencies: + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + /commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} dev: false + /commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + requiresBuild: true + optional: true + /common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + /component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -2373,6 +3485,9 @@ packages: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} + /cookiejar@2.1.4: + resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} + /copy-file@11.0.0: resolution: {integrity: sha512-mFsNh/DIANLqFt5VHZoGirdg7bK5+oTWlhnGu6tgRhzBlnEKWaPX2xrFaLltii/6rmhqFMJqffUgknuRdpYlHw==} engines: {node: '>=18'} @@ -2405,14 +3520,6 @@ packages: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true - /cross-env@7.0.3: - resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} - engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} - hasBin: true - dependencies: - cross-spawn: 7.0.3 - dev: true - /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -2421,6 +3528,9 @@ packages: shebang-command: 2.0.0 which: 2.0.2 + /crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + /csrf@3.1.0: resolution: {integrity: sha512-uTqEnCvWRk042asU6JtapDTcJeeailFy4ydOQS28bj1hcLnYRiqi8SsD2jS412AY1I/4qdOwWZun774iqywf9w==} engines: {node: '>= 0.8'} @@ -2429,6 +3539,9 @@ packages: tsscmp: 1.0.6 uid-safe: 2.1.5 + /dag-map@1.0.2: + resolution: {integrity: sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==} + /data-uri-to-buffer@2.0.2: resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} @@ -2465,6 +3578,9 @@ packages: dependencies: ms: 2.1.2 + /decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} @@ -2480,6 +3596,12 @@ packages: babel-plugin-macros: optional: true + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -2489,6 +3611,11 @@ packages: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dependencies: + clone: 1.0.4 + /defer-to-connect@2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} @@ -2516,6 +3643,10 @@ packages: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} dev: true + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + /delegates@1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} @@ -2531,6 +3662,16 @@ packages: resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} engines: {node: '>=8'} + /dezalgo@1.0.4: + resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + dependencies: + asap: 2.0.6 + wrappy: 1.0.2 + + /diff-sequences@25.2.6: + resolution: {integrity: sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==} + engines: {node: '>= 8.3'} + /diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3047,6 +4188,11 @@ packages: eslint-visitor-keys: 3.4.3 dev: true + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} @@ -3131,7 +4277,6 @@ packages: /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -3141,6 +4286,16 @@ packages: resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} engines: {node: '>=6'} + /fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + /fast-xml-parser@4.2.5: + resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} + hasBin: true + dependencies: + strnum: 1.0.5 + dev: false + /fastest-levenshtein@1.0.16: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} @@ -3239,11 +4394,27 @@ packages: engines: {node: '>= 18'} dev: false + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + /formdata-node@6.0.3: resolution: {integrity: sha512-8e1++BCiTzUno9v5IZ2J6bv4RU+3UKDmqWUQD0MIMVCd9AdhWkO1gw57oo1mNEX1dMq2EGI+FbWz4B92pscSQg==} engines: {node: '>= 18'} dev: false + /formidable@2.1.2: + resolution: {integrity: sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==} + dependencies: + dezalgo: 1.0.4 + hexoid: 1.0.0 + once: 1.4.0 + qs: 6.11.2 + /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -3276,6 +4447,7 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + requiresBuild: true /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} @@ -3338,6 +4510,9 @@ packages: resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} engines: {node: '>=18'} + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + /get-intrinsic@1.2.1: resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: @@ -3530,6 +4705,10 @@ packages: resolution: {integrity: sha512-a+YgzWw6dajqhQfb6ktxil0FsQuWTKzrLSUfy55dxS8fuvl1jidTIMPZ2udN15mjjcpBPgTHNHGF5tyWKYyR8w==} engines: {node: '>=10.0.0'} + /hexoid@1.0.0: + resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} + engines: {node: '>=8'} + /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true @@ -3695,6 +4874,7 @@ packages: /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + requiresBuild: true dependencies: once: 1.4.0 wrappy: 1.0.2 @@ -3762,6 +4942,9 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + /is-builtin-module@3.2.1: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} @@ -3793,6 +4976,10 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-extglob@1.0.0: + resolution: {integrity: sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==} + engines: {node: '>=0.10.0'} + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -3811,12 +4998,24 @@ packages: dependencies: get-east-asian-width: 1.2.0 + /is-glob@2.0.1: + resolution: {integrity: sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 1.0.0 + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 + /is-invalid-path@0.1.0: + resolution: {integrity: sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-glob: 2.0.1 + /is-lambda@1.0.1: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} requiresBuild: true @@ -3844,6 +5043,12 @@ packages: engines: {node: '>=8'} dev: true + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -3883,6 +5088,12 @@ packages: which-typed-array: 1.1.11 dev: true + /is-valid-path@0.1.1: + resolution: {integrity: sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==} + engines: {node: '>=0.10.0'} + dependencies: + is-invalid-path: 0.1.0 + /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: @@ -3900,6 +5111,19 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + /jest-diff@25.5.0: + resolution: {integrity: sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==} + engines: {node: '>= 8.3'} + dependencies: + chalk: 3.0.0 + diff-sequences: 25.2.6 + jest-get-type: 25.2.6 + pretty-format: 25.5.0 + /jest-diff@29.7.0: resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3909,10 +5133,23 @@ packages: jest-get-type: 29.6.3 pretty-format: 29.7.0 + /jest-get-type@25.2.6: + resolution: {integrity: sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==} + engines: {node: '>= 8.3'} + /jest-get-type@29.6.3: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /jest-matcher-utils@25.5.0: + resolution: {integrity: sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw==} + engines: {node: '>= 8.3'} + dependencies: + chalk: 3.0.0 + jest-diff: 25.5.0 + jest-get-type: 25.2.6 + pretty-format: 25.5.0 + /jose@4.14.6: resolution: {integrity: sha512-EqJPEUlZD0/CSUMubKtMaYUOtWe91tZXTWMJZoKSbLk+KtdhNdcvppH8lA9XwVu2V4Ailvsj0GBZJ2ZwDjfesQ==} dev: false @@ -3928,12 +5165,18 @@ packages: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: true + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 - dev: true /jsesc@0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} @@ -3953,9 +5196,21 @@ packages: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true + /json-schema-deref-sync@0.14.0: + resolution: {integrity: sha512-yGR1xmhdiD6R0MSrwWcFxQzAj5b3i5Gb/mt5tvQKgFMMeNe0KZYNEN/jWr7G+xn39Azqgcvk4ZKMs8dQl8e4wA==} + engines: {node: '>=6.0.0'} + dependencies: + clone: 2.1.2 + dag-map: 1.0.2 + is-valid-path: 0.1.1 + lodash: 4.17.21 + md5: 2.2.1 + memory-cache: 0.2.0 + traverse: 0.6.8 + valid-url: 1.0.9 + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -3998,6 +5253,10 @@ packages: dependencies: json-buffer: 3.0.1 + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} @@ -4100,9 +5359,20 @@ packages: dependencies: p-locate: 6.0.0 + /lodash.flatten@4.4.0: + resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} + + /lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + + /lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true + + /lodash.set@4.3.2: + resolution: {integrity: sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==} /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -4117,6 +5387,11 @@ packages: strip-ansi: 7.1.0 wrap-ansi: 9.0.0 + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + dependencies: + get-func-name: 2.0.2 + /lowercase-keys@3.0.0: resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -4170,6 +5445,13 @@ packages: dev: false optional: true + /md5@2.2.1: + resolution: {integrity: sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==} + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: 1.1.6 + /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -4184,6 +5466,9 @@ packages: dependencies: mimic-function: 5.0.0 + /memory-cache@0.2.0: + resolution: {integrity: sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==} + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -4191,6 +5476,10 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -4214,6 +5503,11 @@ packages: hasBin: true dev: false + /mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -4578,6 +5872,20 @@ packages: dependencies: mimic-fn: 4.0.0 + /openapi-schema-validator@3.0.3: + resolution: {integrity: sha512-KKpeNEvAmpy6B2JCfyrM4yWjL6vggDCVbBoR8Yfkj0Jltc6PCW+dBbcg+1yrTCuDv80qBQJ6w0ejA71DlOFegA==} + dependencies: + ajv: 6.12.6 + lodash.merge: 4.6.2 + openapi-types: 1.3.4 + swagger-schema-official: 2.0.0-bab6bed + + /openapi-types@1.3.4: + resolution: {integrity: sha512-h8rADpW3k/wepLdERKF0VKMAPdoFYNQCLGPmc/f8sgQ2dxUy+7sY4WAX2XDUDjhKTjbJVbxxofLkzy7f1/tE4g==} + + /openapi-types@12.1.3: + resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -4740,6 +6048,9 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + /peek-readable@5.0.0: resolution: {integrity: sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==} engines: {node: '>=14.16'} @@ -4923,6 +6234,15 @@ packages: hasBin: true dev: true + /pretty-format@25.5.0: + resolution: {integrity: sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==} + engines: {node: '>= 8.3'} + dependencies: + '@jest/types': 25.5.0 + ansi-regex: 5.0.1 + ansi-styles: 4.3.0 + react-is: 16.13.1 + /pretty-format@29.7.0: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4997,7 +6317,6 @@ packages: /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} - dev: true /qs@6.11.2: resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} @@ -5049,6 +6368,9 @@ packages: strip-json-comments: 2.0.1 dev: false + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} @@ -5354,6 +6676,9 @@ packages: /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + /set-cookie-parser@2.6.0: + resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + /set-function-name@2.0.1: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} engines: {node: '>= 0.4'} @@ -5366,6 +6691,12 @@ packages: /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + dependencies: + kind-of: 6.0.3 + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -5510,6 +6841,9 @@ packages: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + /sqlite3@5.1.7: resolution: {integrity: sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==} requiresBuild: true @@ -5648,6 +6982,10 @@ packages: engines: {node: '>=8'} dev: true + /strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + dev: false + /strtok3@7.0.0: resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==} engines: {node: '>=14.16'} @@ -5655,6 +6993,23 @@ packages: '@tokenizer/token': 0.3.0 peek-readable: 5.0.0 + /superagent@8.1.2: + resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==} + engines: {node: '>=6.4.0 <13 || >=14'} + dependencies: + component-emitter: 1.3.1 + cookiejar: 2.1.4 + debug: 4.3.4 + fast-safe-stringify: 2.1.1 + form-data: 4.0.0 + formidable: 2.1.2 + methods: 1.1.2 + mime: 2.6.0 + qs: 6.11.2 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -5676,6 +7031,17 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + /swagger-parser@10.0.3(openapi-types@12.1.3): + resolution: {integrity: sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg==} + engines: {node: '>=10'} + dependencies: + '@apidevtools/swagger-parser': 10.0.3(openapi-types@12.1.3) + transitivePeerDependencies: + - openapi-types + + /swagger-schema-official@2.0.0-bab6bed: + resolution: {integrity: sha512-rCC0NWGKr/IJhtRuPq/t37qvZHI/mH4I4sxflVM+qgVe5Z2uOCivzWaVbuioJaB61kvm5UvB7b49E+oBY0M8jA==} + /synckit@0.6.2: resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==} engines: {node: '>=12.20'} @@ -5811,6 +7177,10 @@ packages: /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + /traverse@0.6.8: + resolution: {integrity: sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==} + engines: {node: '>= 0.4'} + /truncate-utf8-bytes@1.0.2: resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} dependencies: @@ -5883,9 +7253,12 @@ packages: strip-bom: 3.0.0 dev: true + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: false + /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - dev: true /tsscmp@1.0.6: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} @@ -5904,6 +7277,10 @@ packages: prelude-ls: 1.2.1 dev: true + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} @@ -6032,7 +7409,6 @@ packages: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 - dev: true /utf8-byte-length@1.0.4: resolution: {integrity: sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==} @@ -6045,6 +7421,11 @@ packages: resolution: {integrity: sha512-UOzej0Le/UgkbWEO8flm+0y+G+ljUon1QWTEZOq1rnMAsxo2+SckbiZdKzAHHlVh6gJqI1TjC/xwgR50MuCrBQ==} dev: false + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: false + /uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true @@ -6054,6 +7435,9 @@ packages: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true + /valid-url@1.0.9: + resolution: {integrity: sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==} + /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: @@ -6114,6 +7498,11 @@ packages: fsevents: 2.3.3 dev: true + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -6210,6 +7599,17 @@ packages: mustache: 4.2.0 stacktracey: 2.1.8 + /z-schema@5.0.5: + resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} + engines: {node: '>=8.0.0'} + hasBin: true + dependencies: + lodash.get: 4.4.2 + lodash.isequal: 4.5.0 + validator: 13.11.0 + optionalDependencies: + commander: 9.5.0 + github.com/SpecialAro/adonis5-jwt/34941c10adcf89583a40767552b994ea499b92e3: resolution: {tarball: https://codeload.github.com/SpecialAro/adonis5-jwt/tar.gz/34941c10adcf89583a40767552b994ea499b92e3} name: adonis5-jwt diff --git a/providers/AppProvider.ts b/providers/AppProvider.ts deleted file mode 100644 index 4ee494c..0000000 --- a/providers/AppProvider.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { ApplicationService } from '@adonisjs/core/types'; - -export default class AppProvider { - constructor(protected app: ApplicationService) {} - - public register() { - // Register your own bindings - } - - public async boot() { - // IoC container is ready - } - - public async ready() { - // App is ready - } - - public async shutdown() { - // Cleanup, since app is going down - } -} diff --git a/providers/LegacyHashDriver.ts b/providers/LegacyHashDriver.ts deleted file mode 100644 index d01e3bb..0000000 --- a/providers/LegacyHashDriver.ts +++ /dev/null @@ -1,20 +0,0 @@ -import bcrypt from 'bcrypt'; -import { HashDriverContract } from '@adonisjs/core/hash'; - -/** - * Implementation of custom bcrypt driver - */ -export class LegacyHashDriver implements HashDriverContract { - /** - * Hash value - */ - public async make(value: string) { - return bcrypt.hash(value, 10); - } - /** - * Verify value - */ - public async verify(hashedValue: string, plainValue: string) { - return bcrypt.compare(plainValue, hashedValue); - } -} diff --git a/providers/LegacyHasherProvider.ts b/providers/LegacyHasherProvider.ts deleted file mode 100644 index b3ccd7f..0000000 --- a/providers/LegacyHasherProvider.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { LegacyHashDriver } from './LegacyHashDriver.js'; -import { ApplicationService } from '@adonisjs/core/types'; - -export default class LegacyHasherProvider { - constructor(protected app: ApplicationService) {} - - public async boot() { - const Hash = this.app.container.use('Adonis/Core/Hash'); - - Hash.extend('legacy', () => { - return new LegacyHashDriver(); - }); - } -} diff --git a/start/env.ts b/start/env.ts index c51a472..5b40fd8 100644 --- a/start/env.ts +++ b/start/env.ts @@ -14,11 +14,30 @@ import { Env } from '@adonisjs/core/env'; export default await Env.create(new URL('../', import.meta.url), { - HOST: Env.schema.string({ format: 'host' }), + NODE_ENV: Env.schema.enum(['development', 'production', 'test'] as const), PORT: Env.schema.number(), - APP_KEY: Env.schema.string(), - APP_NAME: Env.schema.string(), + HOST: Env.schema.string({ format: 'host' }), + LOG_LEVEL: Env.schema.string(), - NODE_ENV: Env.schema.enum(['development', 'production', 'test'] as const), + /* + |---------------------------------------------------------- + | Variables for configuring session package + |---------------------------------------------------------- + */ + SESSION_DRIVER: Env.schema.enum(['cookie', 'memory'] as const), + + /* + |---------------------------------------------------------- + | Variables for configuring the mail package + |---------------------------------------------------------- + */ + // SMTP_HOST: Env.schema.string(), + // SMTP_PORT: Env.schema.string(), + // SES_ACCESS_KEY: Env.schema.string(), + // SES_ACCESS_SECRET: Env.schema.string(), + // SES_REGION: Env.schema.string(), + // MAILGUN_API_KEY: Env.schema.string(), + // MAILGUN_DOMAIN: Env.schema.string(), + // SPARKPOST_API_KEY: Env.schema.string(), }); diff --git a/start/kernel.ts b/start/kernel.ts index 0081844..86ec933 100644 --- a/start/kernel.ts +++ b/start/kernel.ts @@ -1,49 +1,14 @@ -/* -|-------------------------------------------------------------------------- -| Application middleware -|-------------------------------------------------------------------------- -| -| This file is used to define middleware for HTTP requests. You can register -| middleware as a `closure` or an IoC container binding. The bindings are -| preferred, since they keep this file clean. -| -*/ +import server from '@adonisjs/core/services/server'; +import router from '@adonisjs/core/services/router'; -import { server } from '@adonisjs/core/services/server'; - -/* -|-------------------------------------------------------------------------- -| Global middleware -|-------------------------------------------------------------------------- -| -| An array of global middleware, that will be executed in the order they -| are defined for every HTTP requests. -| -*/ -server.middleware.register([ - () => import('@ioc:Adonis/Core/BodyParser'), - () => import('@ioc:Adonis/Addons/Shield'), +server.use([ + () => import('@adonisjs/core/bodyparser_middleware'), + () => import('@adonisjs/shield/shield_middleware'), ]); -/* -|-------------------------------------------------------------------------- -| Named middleware -|-------------------------------------------------------------------------- -| -| Named middleware are defined as key-value pair. The value is the namespace -| or middleware function and key is the alias. Later you can use these -| alias on individual routes. For example: -| -| { auth: () => import('App/Middleware/Auth') } -| -| and then use it as follows -| -| Route.get('dashboard', 'UserController.dashboard').middleware('auth') -| -*/ -server.middleware.registerNamed({ - auth: () => import('App/Middleware/Auth'), - dashboard: () => import('App/Middleware/Dashboard'), - guest: () => import('App/Middleware/AllowGuestOnly'), - shield: () => import('@ioc:Adonis/Addons/Shield'), +router.named({ + auth: () => import('#app/Middleware/Auth'), + dashboard: () => import('#app/Middleware/Dashboard'), + guest: () => import('#app/Middleware/AllowGuestOnly'), + shield: () => import('@adonisjs/shield/shield_middleware'), }); diff --git a/tests/bootstrap.ts b/tests/bootstrap.ts index 521f718..d152db0 100644 --- a/tests/bootstrap.ts +++ b/tests/bootstrap.ts @@ -5,14 +5,14 @@ * file. */ -import type { Config } from '@japa/runner'; -import TestUtils from '@ioc:Adonis/Core/TestUtils'; -import { - assert, - runFailedTests, - specReporter, - apiClient, -} from '@japa/preset-adonis'; +import { pluginAdonisJS } from '@japa/plugin-adonisjs'; + +import { assert } from '@japa/assert'; +import { apiClient } from '@japa/api-client'; +import app from '@adonisjs/core/services/app'; +import type { Config } from '@japa/runner/types'; +import testUtils from '@adonisjs/core/services/test_utils'; + import { fakeCsrfField } from './utils.js'; /* @@ -26,24 +26,13 @@ import { fakeCsrfField } from './utils.js'; | Feel free to remove existing plugins or add more. | */ + export const plugins: Config['plugins'] = [ assert(), - runFailedTests(), apiClient(), + pluginAdonisJS(app), ]; -/* -|-------------------------------------------------------------------------- -| Japa Reporters -|-------------------------------------------------------------------------- -| -| Japa reporters displays/saves the progress of tests as they are executed. -| By default, we register the spec reporter to show a detailed report -| of tests on the terminal. -| -*/ -export const reporters: Config['reporters'] = [specReporter()]; - /* |-------------------------------------------------------------------------- | Runner hooks @@ -57,11 +46,7 @@ export const reporters: Config['reporters'] = [specReporter()]; | */ export const runnerHooks: Required> = { - setup: [ - () => TestUtils.ace().loadCommands(), - () => TestUtils.db().migrate(), - () => fakeCsrfField(), - ], + setup: [() => testUtils.db().migrate(), () => fakeCsrfField()], teardown: [], }; @@ -76,8 +61,9 @@ export const runnerHooks: Required> = { | You can use this method to configure suites. For example: Only start | the HTTP server when it is a functional suite. */ +// eslint-disable-next-line consistent-return export const configureSuite: Config['configureSuite'] = suite => { - if (suite.name === 'functional') { - suite.setup(() => TestUtils.httpServer().start()); + if (['browser', 'functional', 'e2e'].includes(suite.name)) { + return suite.setup(() => testUtils.httpServer().start()); } }; diff --git a/tsconfig.json b/tsconfig.json index 54d4a5e..b346259 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,21 +8,21 @@ "strict": true, "incremental": true, "paths": { + "#app/*": ["./app/*.js"], "#controllers/*": ["./app/controllers/*.js"], - "#exceptions/*": ["./app/exceptions/*.js"], - "#models/*": ["./app/models/*.js"], + "#models/*": ["./app/Models/*.js"], "#services/*": ["./app/services/*.js"], "#listeners/*": ["./app/listeners/*.js"], "#events/*": ["./app/events/*.js"], - "#middleware/*": ["./app/middleware/*.js"], + "#middleware/*": ["./app/Middleware/*.js"], "#validators/*": ["./app/validators/*.js"], + "#database/*": ["./database/*.js"], + "#tests/*": ["./tests/*.js"], "#start/*": ["./start/*.js"], "#config/*": ["./config/*.js"], - "#app/*": ["./app/*.js"], - "#database/*": ["./database/*.js"], "#types/*": ["./types/*.js"] }, - "types": ["fs-extra", "adonis5-jwt"], + "types": ["fs-extra"], "noFallthroughCasesInSwitch": true, "resolveJsonModule": true, "forceConsistentCasingInFileNames": true, diff --git a/types/drive.ts b/types/drive.ts deleted file mode 100644 index e8aa2c4..0000000 --- a/types/drive.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Contract source: https://git.io/JBt3I - * - * Feel free to let us know via PR, if you find something broken in this contract - * file. - */ - -import { InferDisksFromConfig } from '@adonisjs/core/build/config'; -import driveConfig from '../config/drive.js'; - -declare module '@ioc:Adonis/Core/Drive' { - interface DisksList extends InferDisksFromConfig {} -} diff --git a/types/events.ts b/types/events.ts index 8bf1adc..54982bb 100644 --- a/types/events.ts +++ b/types/events.ts @@ -7,7 +7,7 @@ import User from '#app/Models/User'; -declare module '@ioc:Adonis/Core/Event' { +declare module '@adonisjs/core/events' { /* |-------------------------------------------------------------------------- | Define typed events -- cgit v1.2.3-54-g00ecf