From 641c765fb921e162c98f09218929348037dd0f88 Mon Sep 17 00:00:00 2001 From: Jarrod Flesch <30633324+JarrodMFlesch@users.noreply.github.com> Date: Fri, 21 Jul 2023 17:20:51 -0400 Subject: [PATCH 01/24] feat: solidifies bundler adapter pattern (#3044) --- jest.components.config.js | 4 +- jest.config.js | 4 +- package.json | 2 +- src/admin/index.html | 4 +- src/auth/defaultUser.ts | 4 +- src/bin/build.ts | 26 +- src/bin/index.ts | 4 +- src/{webpack => bundlers}/mocks/dotENV.js | 0 src/bundlers/mocks/emptyModule.js | 1 + src/{webpack => bundlers}/mocks/fileMock.js | 0 src/bundlers/types.ts | 8 + src/bundlers/webpack/bundler.ts | 11 + .../webpack/components.config.ts | 8 +- .../webpack/configs/base.ts} | 25 +- .../webpack/configs/dev.ts} | 14 +- .../webpack/configs/prod.ts} | 18 +- src/bundlers/webpack/scripts/build.ts | 27 + src/bundlers/webpack/scripts/dev.ts | 31 + src/bundlers/webpack/scripts/serve.ts | 27 + src/config/build.ts | 6 +- src/config/sanitize.ts | 49 +- src/config/schema.ts | 5 + src/config/types.ts | 19 +- src/express/admin.ts | 27 +- src/initHTTP.ts | 2 +- src/utilities/configToJSONSchema.spec.ts | 2 +- src/webpack/init.ts | 23 - src/webpack/mocks/emptyModule.js | 1 - test/_community/config.ts | 4 +- test/access-control/config.ts | 4 +- test/admin/config.ts | 4 +- test/array-update/config.ts | 4 +- test/auth/config.ts | 4 +- test/auth/custom-strategy/config.ts | 4 +- ...ldConfig.ts => buildConfigWithDefaults.ts} | 27 +- test/collections-graphql/config.ts | 4 +- test/collections-rest/config.ts | 4 +- test/config/config.ts | 4 +- test/dataloader/config.ts | 4 +- test/endpoints/config.ts | 4 +- test/field-error-states/config.ts | 4 +- test/field-perf/config.ts | 4 +- test/fields-relationship/config.ts | 4 +- test/fields/config.ts | 4 +- test/globals/config.ts | 4 +- test/graphql-schema-gen/config.ts | 4 +- test/hooks/config.ts | 4 +- test/localization/config.ts | 4 +- test/plugins/config.ts | 4 +- test/refresh-permissions/config.ts | 4 +- test/relationships/config.ts | 4 +- test/uploads/config.ts | 4 +- test/versions/config.ts | 4 +- yarn.lock | 3820 +++++++++-------- 54 files changed, 2265 insertions(+), 2030 deletions(-) rename src/{webpack => bundlers}/mocks/dotENV.js (100%) create mode 100644 src/bundlers/mocks/emptyModule.js rename src/{webpack => bundlers}/mocks/fileMock.js (100%) create mode 100644 src/bundlers/types.ts create mode 100644 src/bundlers/webpack/bundler.ts rename src/{ => bundlers}/webpack/components.config.ts (86%) rename src/{webpack/getBaseConfig.ts => bundlers/webpack/configs/base.ts} (66%) rename src/{webpack/getDevConfig.ts => bundlers/webpack/configs/dev.ts} (81%) rename src/{webpack/getProdConfig.ts => bundlers/webpack/configs/prod.ts} (79%) create mode 100644 src/bundlers/webpack/scripts/build.ts create mode 100644 src/bundlers/webpack/scripts/dev.ts create mode 100644 src/bundlers/webpack/scripts/serve.ts delete mode 100644 src/webpack/init.ts delete mode 100644 src/webpack/mocks/emptyModule.js rename test/{buildConfig.ts => buildConfigWithDefaults.ts} (53%) diff --git a/jest.components.config.js b/jest.components.config.js index 81a07f5169..783e754092 100644 --- a/jest.components.config.js +++ b/jest.components.config.js @@ -12,7 +12,7 @@ module.exports = { 'dist', ], moduleNameMapper: { - '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '/src/webpack/mocks/fileMock.js', - '\\.(css|scss)$': '/src/webpack/mocks/emptyModule.js', + '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '/src/bundlers/mocks/fileMock.js', + '\\.(css|scss)$': '/src/bundlers/mocks/emptyModule.js', }, }; diff --git a/jest.config.js b/jest.config.js index 7b3ce4b2da..127842e151 100644 --- a/jest.config.js +++ b/jest.config.js @@ -11,7 +11,7 @@ module.exports = { globalSetup: './test/jest.setup.ts', testTimeout: 90000, moduleNameMapper: { - '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '/src/webpack/mocks/fileMock.js', - '\\.(css|scss)$': '/src/webpack/mocks/emptyModule.js', + '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '/src/bundlers/mocks/fileMock.js', + '\\.(css|scss)$': '/src/bundlers/mocks/emptyModule.js', }, }; diff --git a/package.json b/package.json index 3ece2fa8cb..c4611ceb26 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "scripts": { "copyfiles": "copyfiles -u 1 \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png}\" dist/", "build:tsc": "tsc", - "build:components": "webpack --config dist/webpack/components.config.js", + "build:components": "webpack --config dist/bundlers/webpack/components.config.js", "build": "yarn copyfiles && yarn build:tsc && yarn build:components", "build:watch": "nodemon --watch 'src/**' --ext 'ts,tsx' --exec \"yarn build:tsc\"", "dev": "nodemon", diff --git a/src/admin/index.html b/src/admin/index.html index 51655b91c6..5af87c0fa4 100644 --- a/src/admin/index.html +++ b/src/admin/index.html @@ -4,7 +4,7 @@ - + @@ -12,4 +12,4 @@
- + \ No newline at end of file diff --git a/src/auth/defaultUser.ts b/src/auth/defaultUser.ts index 515c3027eb..f516844219 100644 --- a/src/auth/defaultUser.ts +++ b/src/auth/defaultUser.ts @@ -3,7 +3,7 @@ import { extractTranslations } from '../translations/extractTranslations'; const labels = extractTranslations(['general:user', 'general:users']); -const defaultUser: CollectionConfig = { +export const defaultUserCollection: CollectionConfig = { slug: 'users', labels: { singular: labels['general:user'], @@ -17,5 +17,3 @@ const defaultUser: CollectionConfig = { }, fields: [], }; - -export default defaultUser; diff --git a/src/bin/build.ts b/src/bin/build.ts index 87508fa089..34fc3cfc5b 100755 --- a/src/bin/build.ts +++ b/src/bin/build.ts @@ -1,33 +1,9 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ -/* eslint-disable global-require */ -import webpack from 'webpack'; -import getWebpackProdConfig from '../webpack/getProdConfig'; import loadConfig from '../config/load'; export const build = async (): Promise => { const config = await loadConfig(); // Will throw its own error if it fails - try { - const webpackProdConfig = getWebpackProdConfig(config); - - webpack(webpackProdConfig, (err, stats) => { // Stats Object - if (err || stats.hasErrors()) { - // Handle errors here - - if (stats) { - console.error(stats.toString({ - chunks: false, - colors: true, - })); - } else { - console.error(err.message); - } - } - }); - } catch (err) { - console.error(err); - throw new Error('Error: there was an error building the webpack config.'); - } + await config.admin.bundler.build(config); }; // when build.js is launched directly diff --git a/src/bin/index.ts b/src/bin/index.ts index 0fb83f3755..692adbb1a8 100755 --- a/src/bin/index.ts +++ b/src/bin/index.ts @@ -26,10 +26,10 @@ const swcOptions = { }; if (tsConfig?.config?.compilerOptions?.paths) { - swcOptions.jsc.paths = tsConfig?.config?.compilerOptions?.paths; + swcOptions.jsc.paths = tsConfig.config.compilerOptions.paths; if (tsConfig?.config?.compilerOptions?.baseUrl) { - swcOptions.jsc.baseUrl = tsConfig?.config?.compilerOptions?.baseUrl; + swcOptions.jsc.baseUrl = tsConfig.config.compilerOptions.baseUrl; } } diff --git a/src/webpack/mocks/dotENV.js b/src/bundlers/mocks/dotENV.js similarity index 100% rename from src/webpack/mocks/dotENV.js rename to src/bundlers/mocks/dotENV.js diff --git a/src/bundlers/mocks/emptyModule.js b/src/bundlers/mocks/emptyModule.js new file mode 100644 index 0000000000..eb6d09f48c --- /dev/null +++ b/src/bundlers/mocks/emptyModule.js @@ -0,0 +1 @@ +export default () => { }; diff --git a/src/webpack/mocks/fileMock.js b/src/bundlers/mocks/fileMock.js similarity index 100% rename from src/webpack/mocks/fileMock.js rename to src/bundlers/mocks/fileMock.js diff --git a/src/bundlers/types.ts b/src/bundlers/types.ts new file mode 100644 index 0000000000..372f604d3c --- /dev/null +++ b/src/bundlers/types.ts @@ -0,0 +1,8 @@ +import type { PayloadHandler, SanitizedConfig } from 'payload/config'; +import type { Payload } from '../payload'; + +export interface PayloadBundler { + dev: (payload: Payload) => Promise, // this would be a typical Express middleware handler + build: (payloadConfig: SanitizedConfig) => Promise // used in `payload build` + serve: (payload: Payload) => Promise // serve built files in production +} diff --git a/src/bundlers/webpack/bundler.ts b/src/bundlers/webpack/bundler.ts new file mode 100644 index 0000000000..8170e79e78 --- /dev/null +++ b/src/bundlers/webpack/bundler.ts @@ -0,0 +1,11 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +import { PayloadBundler } from '../types'; +import { devAdmin } from './scripts/dev'; +import { buildAdmin } from './scripts/build'; +import { serveAdmin } from './scripts/serve'; + +export default (): PayloadBundler => ({ + dev: async (payload) => devAdmin({ payload }), + build: async (payloadConfig) => buildAdmin({ payloadConfig }), + serve: async (payload) => serveAdmin({ payload }), +}); diff --git a/src/webpack/components.config.ts b/src/bundlers/webpack/components.config.ts similarity index 86% rename from src/webpack/components.config.ts rename to src/bundlers/webpack/components.config.ts index 903ec3fb01..cd1858e403 100644 --- a/src/webpack/components.config.ts +++ b/src/bundlers/webpack/components.config.ts @@ -5,13 +5,13 @@ import OptimizeCSSAssetsPlugin from 'css-minimizer-webpack-plugin'; export default { entry: { - main: [path.resolve(__dirname, '../admin/components/index.js')], + main: [path.resolve(__dirname, '../../admin/components/index.js')], }, externals: { react: 'react', }, output: { - path: path.resolve(__dirname, '../../components'), + path: path.resolve(__dirname, '../../../components'), publicPath: '/', filename: 'index.js', libraryTarget: 'commonjs2', @@ -82,8 +82,8 @@ export default { ], resolve: { alias: { - 'payload-scss-overrides': path.resolve(__dirname, '../admin/scss/overrides.scss'), + 'payload-scss-overrides': path.resolve(__dirname, '../../admin/scss/overrides.scss'), }, - modules: ['node_modules', path.resolve(__dirname, '../../node_modules')], + modules: ['node_modules', path.resolve(__dirname, '../../../node_modules')], }, }; diff --git a/src/webpack/getBaseConfig.ts b/src/bundlers/webpack/configs/base.ts similarity index 66% rename from src/webpack/getBaseConfig.ts rename to src/bundlers/webpack/configs/base.ts index 49f25e53f8..5dd37e61c0 100644 --- a/src/webpack/getBaseConfig.ts +++ b/src/bundlers/webpack/configs/base.ts @@ -1,19 +1,23 @@ import path from 'path'; import HtmlWebpackPlugin from 'html-webpack-plugin'; import webpack, { Configuration } from 'webpack'; -import { SanitizedConfig } from '../config/types'; +import type { SanitizedConfig } from '../../../config/types'; -const mockModulePath = path.resolve(__dirname, './mocks/emptyModule.js'); -const mockDotENVPath = path.resolve(__dirname, './mocks/dotENV.js'); +const mockModulePath = path.resolve(__dirname, '../../mocks/emptyModule.js'); +const mockDotENVPath = path.resolve(__dirname, '../../mocks/dotENV.js'); -export default (config: SanitizedConfig): Configuration => ({ +const nodeModulesPath = path.resolve(__dirname, '../../../../node_modules'); +const adminFolderPath = path.resolve(__dirname, '../../../admin'); +const bundlerPath = path.resolve(__dirname, '../bundler'); + +export const getBaseConfig = (payloadConfig: SanitizedConfig): Configuration => ({ entry: { main: [ - path.resolve(__dirname, '../admin'), + adminFolderPath, ], }, resolveLoader: { - modules: ['node_modules', path.join(__dirname, '../../node_modules')], + modules: ['node_modules', path.join(__dirname, nodeModulesPath)], }, module: { rules: [ @@ -51,12 +55,13 @@ export default (config: SanitizedConfig): Configuration => ({ https: false, http: false, }, - modules: ['node_modules', path.resolve(__dirname, '../../node_modules')], + modules: ['node_modules', path.resolve(__dirname, nodeModulesPath)], alias: { - 'payload-config': config.paths.rawConfig, + 'payload-config': payloadConfig.paths.rawConfig, payload$: mockModulePath, - 'payload-user-css': config.admin.css, + 'payload-user-css': payloadConfig.admin.css, dotenv: mockDotENVPath, + [bundlerPath]: mockModulePath, }, extensions: ['.ts', '.tsx', '.js', '.json'], }, @@ -80,7 +85,7 @@ export default (config: SanitizedConfig): Configuration => ({ ), ), new HtmlWebpackPlugin({ - template: config.admin.indexHTML, + template: payloadConfig.admin.indexHTML, filename: path.normalize('./index.html'), }), new webpack.HotModuleReplacementPlugin(), diff --git a/src/webpack/getDevConfig.ts b/src/bundlers/webpack/configs/dev.ts similarity index 81% rename from src/webpack/getDevConfig.ts rename to src/bundlers/webpack/configs/dev.ts index 3406b938cb..5ac46996fe 100644 --- a/src/webpack/getDevConfig.ts +++ b/src/bundlers/webpack/configs/dev.ts @@ -1,12 +1,12 @@ import webpack, { Configuration } from 'webpack'; import md5 from 'md5'; -import { SanitizedConfig } from '../config/types'; -import getBaseConfig from './getBaseConfig'; +import { getBaseConfig } from './base'; +import { SanitizedConfig } from '../../../config/types'; -export default (payloadConfig: SanitizedConfig): Configuration => { +export const getDevConfig = (payloadConfig: SanitizedConfig): Configuration => { const baseConfig = getBaseConfig(payloadConfig) as any; - let config: Configuration = { + let webpackConfig: Configuration = { ...baseConfig, cache: { type: 'filesystem', @@ -37,7 +37,7 @@ export default (payloadConfig: SanitizedConfig): Configuration => { ], }; - config.module.rules.push({ + webpackConfig.module.rules.push({ test: /\.(scss|css)$/, sideEffects: true, use: [ @@ -61,8 +61,8 @@ export default (payloadConfig: SanitizedConfig): Configuration => { }); if (payloadConfig.admin.webpack && typeof payloadConfig.admin.webpack === 'function') { - config = payloadConfig.admin.webpack(config); + webpackConfig = payloadConfig.admin.webpack(webpackConfig); } - return config; + return webpackConfig; }; diff --git a/src/webpack/getProdConfig.ts b/src/bundlers/webpack/configs/prod.ts similarity index 79% rename from src/webpack/getProdConfig.ts rename to src/bundlers/webpack/configs/prod.ts index 866eb84bf4..f567716133 100644 --- a/src/webpack/getProdConfig.ts +++ b/src/bundlers/webpack/configs/prod.ts @@ -1,14 +1,14 @@ +import { Configuration, WebpackPluginInstance } from 'webpack'; import MiniCSSExtractPlugin from 'mini-css-extract-plugin'; import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; -import { Configuration, WebpackPluginInstance } from 'webpack'; import { SwcMinifyWebpackPlugin } from 'swc-minify-webpack-plugin'; -import { SanitizedConfig } from '../config/types'; -import getBaseConfig from './getBaseConfig'; +import { getBaseConfig } from './base'; +import { SanitizedConfig } from '../../../config/types'; -export default (payloadConfig: SanitizedConfig): Configuration => { +export const getProdConfig = (payloadConfig: SanitizedConfig): Configuration => { const baseConfig = getBaseConfig(payloadConfig) as any; - let config: Configuration = { + let webpackConfig: Configuration = { ...baseConfig, output: { publicPath: `${payloadConfig.routes.admin}/`, @@ -40,7 +40,7 @@ export default (payloadConfig: SanitizedConfig): Configuration => { ], }; - config.module.rules.push({ + webpackConfig.module.rules.push({ test: /\.(scss|css)$/, sideEffects: true, use: [ @@ -64,12 +64,12 @@ export default (payloadConfig: SanitizedConfig): Configuration => { }); if (process.env.PAYLOAD_ANALYZE_BUNDLE) { - config.plugins.push(new BundleAnalyzerPlugin() as unknown as WebpackPluginInstance); + webpackConfig.plugins.push(new BundleAnalyzerPlugin() as unknown as WebpackPluginInstance); } if (payloadConfig.admin.webpack && typeof payloadConfig.admin.webpack === 'function') { - config = payloadConfig.admin.webpack(config); + webpackConfig = payloadConfig.admin.webpack(webpackConfig); } - return config; + return webpackConfig; }; diff --git a/src/bundlers/webpack/scripts/build.ts b/src/bundlers/webpack/scripts/build.ts new file mode 100644 index 0000000000..ce9484b6c4 --- /dev/null +++ b/src/bundlers/webpack/scripts/build.ts @@ -0,0 +1,27 @@ +import webpack from 'webpack'; +import { getProdConfig } from '../configs/prod'; +import { SanitizedConfig } from '../../../config/types'; + +type BuildAdminType = (options: { payloadConfig: SanitizedConfig }) => Promise; +export const buildAdmin: BuildAdminType = async ({ payloadConfig }) => { + try { + const webpackConfig = getProdConfig(payloadConfig); + webpack(webpackConfig, (err, stats) => { + if (err || stats.hasErrors()) { + // Handle errors here + + if (stats) { + console.error(stats.toString({ + chunks: false, + colors: true, + })); + } else { + console.error(err.message); + } + } + }); + } catch (err) { + console.error(err); + throw new Error('Error: there was an error building the webpack prod config.'); + } +}; diff --git a/src/bundlers/webpack/scripts/dev.ts b/src/bundlers/webpack/scripts/dev.ts new file mode 100644 index 0000000000..531f31fcd3 --- /dev/null +++ b/src/bundlers/webpack/scripts/dev.ts @@ -0,0 +1,31 @@ +import webpack from 'webpack'; +import express from 'express'; +import webpackDevMiddleware from 'webpack-dev-middleware'; +import webpackHotMiddleware from 'webpack-hot-middleware'; +import history from 'connect-history-api-fallback'; +import type { PayloadHandler } from '../../../config/types'; +import { Payload } from '../../../payload'; +import { getDevConfig } from '../configs/dev'; + +const router = express.Router(); + +type DevAdminType = (options: { payload: Payload }) => Promise; +export const devAdmin: DevAdminType = async ({ payload }) => { + payload.express.use(payload.config.routes.admin, history()); + + try { + const webpackConfig = getDevConfig(payload.config); + const compiler = webpack(webpackConfig); + + router.use(webpackDevMiddleware(compiler, { + publicPath: webpackConfig.output.publicPath as string, + })); + + router.use(webpackHotMiddleware(compiler)); + } catch (err) { + console.error(err); + throw new Error('Error: there was an error creating the webpack dev server.'); + } + + return router; +}; diff --git a/src/bundlers/webpack/scripts/serve.ts b/src/bundlers/webpack/scripts/serve.ts new file mode 100644 index 0000000000..9dfa0cc43f --- /dev/null +++ b/src/bundlers/webpack/scripts/serve.ts @@ -0,0 +1,27 @@ +import express from 'express'; +import compression from 'compression'; +import history from 'connect-history-api-fallback'; +import type { PayloadHandler } from '../../../config/types'; +import { Payload } from '../../../payload'; + +const router = express.Router(); + +type ServeAdminType = (options: { payload: Payload }) => Promise; + +export const serveAdmin: ServeAdminType = async ({ payload }) => { + router.use(payload.config.routes.admin, history()); + + router.get('*', (req, res, next) => { + if (req.path.substr(-1) === '/' && req.path.length > 1) { + const query = req.url.slice(req.path.length); + res.redirect(301, req.path.slice(0, -1) + query); + } else { + next(); + } + }); + + router.use(compression(payload.config.express.compression)); + router.use(express.static(payload.config.admin.buildPath, { redirect: false })); + + return router; +}; diff --git a/src/config/build.ts b/src/config/build.ts index 19576f5ed3..cd7dbbd896 100644 --- a/src/config/build.ts +++ b/src/config/build.ts @@ -1,7 +1,7 @@ /* eslint-disable no-use-before-define */ /* eslint-disable no-nested-ternary */ import { Config, SanitizedConfig } from './types'; -import sanitize from './sanitize'; +import { sanitizeConfig } from './sanitize'; /** * @description Builds and validates Payload configuration @@ -18,10 +18,10 @@ export async function buildConfig(config: Config): Promise { Promise.resolve(config), ); - const sanitizedConfig = sanitize(configAfterPlugins); + const sanitizedConfig = sanitizeConfig(configAfterPlugins); return sanitizedConfig; } - return sanitize(config); + return sanitizeConfig(config); } diff --git a/src/config/sanitize.ts b/src/config/sanitize.ts index ef054e8eac..8272e23629 100644 --- a/src/config/sanitize.ts +++ b/src/config/sanitize.ts @@ -1,30 +1,47 @@ import merge from 'deepmerge'; import { isPlainObject } from 'is-plain-object'; import { Config, SanitizedConfig } from './types'; -import defaultUser from '../auth/defaultUser'; +import { defaultUserCollection } from '../auth/defaultUser'; import sanitizeCollection from '../collections/config/sanitize'; import { InvalidConfiguration } from '../errors'; import sanitizeGlobals from '../globals/config/sanitize'; import checkDuplicateCollections from '../utilities/checkDuplicateCollections'; import { defaults } from './defaults'; +import getDefaultBundler from '../bundlers/webpack/bundler'; -const sanitizeConfig = (config: Config): SanitizedConfig => { - const sanitizedConfig = merge(defaults, config, { +const sanitizeAdmin = (config: SanitizedConfig): SanitizedConfig['admin'] => { + const adminConfig = config.admin; + + // add default user collection if none provided + if (!adminConfig?.user) { + const firstCollectionWithAuth = config.collections.find(({ auth }) => Boolean(auth)); + if (firstCollectionWithAuth) { + adminConfig.user = firstCollectionWithAuth.slug; + } else { + adminConfig.user = 'users'; + const sanitizedDefaultUser = sanitizeCollection(config, defaultUserCollection); + config.collections.push(sanitizedDefaultUser); + } + } + + if (!config.collections.find(({ slug }) => slug === adminConfig.user)) { + throw new InvalidConfiguration(`${config.admin.user} is not a valid admin user collection`); + } + + // add default bundler if none provided + if (!adminConfig.bundler) { + adminConfig.bundler = getDefaultBundler(); + } + + return adminConfig; +}; + +export const sanitizeConfig = (config: Config): SanitizedConfig => { + const sanitizedConfig: Config = merge(defaults, config, { isMergeableObject: isPlainObject, }) as Config; - if (!sanitizedConfig.admin.user) { - const firstCollectionWithAuth = sanitizedConfig.collections.find((c) => c.auth); - if (firstCollectionWithAuth) { - sanitizedConfig.admin.user = firstCollectionWithAuth.slug; - } else { - sanitizedConfig.admin.user = 'users'; - const sanitizedDefaultUser = sanitizeCollection(sanitizedConfig, defaultUser); - sanitizedConfig.collections.push(sanitizedDefaultUser); - } - } else if (!sanitizedConfig.collections.find((c) => c.slug === sanitizedConfig.admin.user)) { - throw new InvalidConfiguration(`${sanitizedConfig.admin.user} is not a valid admin user collection`); - } + sanitizedConfig.admin = sanitizeAdmin(sanitizedConfig as SanitizedConfig); sanitizedConfig.collections = sanitizedConfig.collections.map((collection) => sanitizeCollection(sanitizedConfig, collection)); checkDuplicateCollections(sanitizedConfig.collections); @@ -43,5 +60,3 @@ const sanitizeConfig = (config: Config): SanitizedConfig => { return sanitizedConfig as SanitizedConfig; }; - -export default sanitizeConfig; diff --git a/src/config/schema.ts b/src/config/schema.ts index c068d7db74..7e258d7a48 100644 --- a/src/config/schema.ts +++ b/src/config/schema.ts @@ -107,6 +107,11 @@ export default joi.object({ }), }), webpack: joi.func(), + bundler: { + dev: joi.func(), + build: joi.func(), + serve: joi.func(), + }, }), email: joi.object(), i18n: joi.object(), diff --git a/src/config/types.ts b/src/config/types.ts index fcfc8f3a23..4ae5da342a 100644 --- a/src/config/types.ts +++ b/src/config/types.ts @@ -2,7 +2,7 @@ import { Express, NextFunction, Response } from 'express'; import { DeepRequired } from 'ts-essentials'; import { Transporter } from 'nodemailer'; import { Options as ExpressFileUploadOptions } from 'express-fileupload'; -import { Configuration } from 'webpack'; +import type { Configuration } from 'webpack'; import SMTPConnection from 'nodemailer/lib/smtp-connection'; import GraphQL from 'graphql'; import { ConnectOptions } from 'mongoose'; @@ -19,6 +19,7 @@ import { GlobalConfig, SanitizedGlobalConfig } from '../globals/config/types'; import { PayloadRequest } from '../express/types'; import { Where } from '../types'; import { User } from '../auth/types'; +import type { PayloadBundler } from '../bundlers/types'; type Email = { fromName: string; @@ -266,7 +267,11 @@ export type Config = { */ favicon?: string; }; - /** Specify an absolute path for where to store the built Admin panel bundle used in production. */ + /** + * Specify an absolute path for where to store the built Admin panel bundle used in production. + * + * @default "/build" + * */ buildPath?: string /** If set to true, the entire Admin panel will be disabled. */ disable?: boolean; @@ -353,6 +358,8 @@ export type Config = { }; /** Customize the Webpack config that's used to generate the Admin panel. */ webpack?: (config: Configuration) => Configuration; + /** Customize the bundler used to run your admin panel. */ + bundler?: PayloadBundler; }; /** * Manage the datamodel of your application @@ -407,13 +414,13 @@ export type Config = { cors?: string[] | '*'; /** Control the routing structure that Payload binds itself to. */ routes?: { - /** Defaults to /api */ + /** @default "/api" */ api?: string; - /** Defaults to /admin */ + /** @default "/admin" */ admin?: string; - /** Defaults to /graphql */ + /** @default "/graphql" */ graphQL?: string; - /** Defaults to /playground */ + /** @default "/playground" */ graphQLPlayground?: string; }; /** Control how typescript interfaces are generated from your collections. */ diff --git a/src/express/admin.ts b/src/express/admin.ts index 4af84d3597..9cc0156228 100644 --- a/src/express/admin.ts +++ b/src/express/admin.ts @@ -1,32 +1,11 @@ -import express from 'express'; -import compression from 'compression'; -import history from 'connect-history-api-fallback'; -import initWebpack from '../webpack/init'; import { Payload } from '../payload'; -const router = express.Router(); - -function initAdmin(ctx: Payload): void { +async function initAdmin(ctx: Payload): Promise { if (!ctx.config.admin.disable) { - router.use(history()); - if (process.env.NODE_ENV === 'production') { - router.get('*', (req, res, next) => { - if (req.path.substr(-1) === '/' && req.path.length > 1) { - const query = req.url.slice(req.path.length); - res.redirect(301, req.path.slice(0, -1) + query); - } else { - next(); - } - }); - - router.use(compression(ctx.config.express.compression)); - router.use(express.static(ctx.config.admin.buildPath, { redirect: false })); - - ctx.express.use(ctx.config.routes.admin, router); + ctx.express.use(await ctx.config.admin.bundler.serve(ctx)); } else { - ctx.express.use(ctx.config.routes.admin, history()); - ctx.express.use(initWebpack(ctx.config)); + ctx.express.use(await ctx.config.admin.bundler.dev(ctx)); } } } diff --git a/src/initHTTP.ts b/src/initHTTP.ts index 0872e01aaf..11dc196377 100644 --- a/src/initHTTP.ts +++ b/src/initHTTP.ts @@ -48,7 +48,7 @@ export const initHTTP = async (options: InitOptions): Promise => { payload.express.set('trust proxy', 1); } - initAdmin(payload); + await initAdmin(payload); initPreferences(payload); payload.router.get('/access', access); diff --git a/src/utilities/configToJSONSchema.spec.ts b/src/utilities/configToJSONSchema.spec.ts index 6362a3694d..dabc86eb33 100644 --- a/src/utilities/configToJSONSchema.spec.ts +++ b/src/utilities/configToJSONSchema.spec.ts @@ -1,4 +1,4 @@ -import sanitizeConfig from '../config/sanitize'; +import { sanitizeConfig } from '../config/sanitize'; import { Config } from '../config/types'; import { configToJSONSchema } from './configToJSONSchema'; diff --git a/src/webpack/init.ts b/src/webpack/init.ts deleted file mode 100644 index 81ffbbb3c0..0000000000 --- a/src/webpack/init.ts +++ /dev/null @@ -1,23 +0,0 @@ -import webpack, { Compiler } from 'webpack'; -import express, { Router } from 'express'; -import webpackDevMiddleware from 'webpack-dev-middleware'; -import webpackHotMiddleware from 'webpack-hot-middleware'; -import getWebpackDevConfig from './getDevConfig'; -import { SanitizedConfig } from '../config/types'; - -const router = express.Router(); - -function initWebpack(config: SanitizedConfig): Router { - const webpackDevConfig = getWebpackDevConfig(config); - const compiler = webpack(webpackDevConfig); - - router.use(webpackDevMiddleware(compiler, { - publicPath: webpackDevConfig.output.publicPath as string, - })); - - router.use(webpackHotMiddleware(compiler as any)); - - return router; -} - -export default initWebpack; diff --git a/src/webpack/mocks/emptyModule.js b/src/webpack/mocks/emptyModule.js deleted file mode 100644 index 2d1ec23827..0000000000 --- a/src/webpack/mocks/emptyModule.js +++ /dev/null @@ -1 +0,0 @@ -export default () => {}; diff --git a/test/_community/config.ts b/test/_community/config.ts index 9b132f5897..71fc8137ec 100644 --- a/test/_community/config.ts +++ b/test/_community/config.ts @@ -1,10 +1,10 @@ -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; import { PostsCollection, postsSlug } from './collections/Posts'; import { MenuGlobal } from './globals/Menu'; import { devUser } from '../credentials'; import { MediaCollection } from './collections/Media'; -export default buildConfig({ +export default buildConfigWithDefaults({ // ...extend config here collections: [ PostsCollection, diff --git a/test/access-control/config.ts b/test/access-control/config.ts index 274895b0e8..ae5bdcc244 100644 --- a/test/access-control/config.ts +++ b/test/access-control/config.ts @@ -1,5 +1,5 @@ import { devUser } from '../credentials'; -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; import { FieldAccess } from '../../src/fields/config/types'; import { firstArrayText, secondArrayText } from './shared'; @@ -36,7 +36,7 @@ const UseRequestHeadersAccess: FieldAccess = ({ req: { headers } }) => { return !!headers && headers.authorization === requestHeaders.authorization; }; -export default buildConfig({ +export default buildConfigWithDefaults({ admin: { user: 'users', }, diff --git a/test/admin/config.ts b/test/admin/config.ts index b0c84184b3..018115f1d2 100644 --- a/test/admin/config.ts +++ b/test/admin/config.ts @@ -1,7 +1,7 @@ import path from 'path'; import { mapAsync } from '../../src/utilities/mapAsync'; import { devUser } from '../credentials'; -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; import AfterDashboard from './components/AfterDashboard'; import CustomMinimalRoute from './components/views/CustomMinimal'; import CustomDefaultRoute from './components/views/CustomDefault'; @@ -20,7 +20,7 @@ export interface Post { updatedAt: Date; } -export default buildConfig({ +export default buildConfigWithDefaults({ admin: { css: path.resolve(__dirname, 'styles.scss'), components: { diff --git a/test/array-update/config.ts b/test/array-update/config.ts index 306e054912..03861f6412 100644 --- a/test/array-update/config.ts +++ b/test/array-update/config.ts @@ -1,6 +1,6 @@ -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; -export default buildConfig({ +export default buildConfigWithDefaults({ collections: [ { slug: 'arrays', diff --git a/test/auth/config.ts b/test/auth/config.ts index b98f9cf309..0e396976db 100644 --- a/test/auth/config.ts +++ b/test/auth/config.ts @@ -1,12 +1,12 @@ import { v4 as uuid } from 'uuid'; import { mapAsync } from '../../src/utilities/mapAsync'; -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; import { devUser } from '../credentials'; import { AuthDebug } from './AuthDebug'; export const slug = 'users'; -export default buildConfig({ +export default buildConfigWithDefaults({ admin: { user: 'users', autoLogin: false, diff --git a/test/auth/custom-strategy/config.ts b/test/auth/custom-strategy/config.ts index 8ecf33541d..88547fe62a 100644 --- a/test/auth/custom-strategy/config.ts +++ b/test/auth/custom-strategy/config.ts @@ -1,7 +1,7 @@ import { Request } from 'express'; import { Strategy } from 'passport-strategy'; import { Payload } from '../../../src/payload'; -import { buildConfig } from '../../buildConfig'; +import { buildConfigWithDefaults } from '../../buildConfigWithDefaults'; export const slug = 'users'; export const strategyName = 'test-local'; @@ -41,7 +41,7 @@ export class CustomStrategy extends Strategy { } } -export default buildConfig({ +export default buildConfigWithDefaults({ admin: { user: 'users', }, diff --git a/test/buildConfig.ts b/test/buildConfigWithDefaults.ts similarity index 53% rename from test/buildConfig.ts rename to test/buildConfigWithDefaults.ts index 4ee56812c5..c398c2c69b 100644 --- a/test/buildConfig.ts +++ b/test/buildConfigWithDefaults.ts @@ -1,40 +1,41 @@ import { Config, SanitizedConfig } from '../src/config/types'; import { buildConfig as buildPayloadConfig } from '../src/config/build'; -export function buildConfig(config?: Partial): Promise { +export function buildConfigWithDefaults(testConfig?: Partial): Promise { const [name] = process.argv.slice(2); - const baseConfig: Config = { + const config: Config = { telemetry: false, rateLimit: { window: 15 * 60 * 100, // 15min default, max: 9999999999, }, - ...config, + ...testConfig, }; - baseConfig.admin = { + + config.admin = { autoLogin: process.env.PAYLOAD_PUBLIC_DISABLE_AUTO_LOGIN === 'true' ? false : { email: 'dev@payloadcms.com', password: 'test', }, - ...(baseConfig.admin || {}), + ...(config.admin || {}), webpack: (webpackConfig) => { - const existingConfig = typeof config?.admin?.webpack === 'function' - ? config.admin.webpack(webpackConfig) + const existingConfig = typeof testConfig?.admin?.webpack === 'function' + ? testConfig.admin.webpack(webpackConfig) : webpackConfig; return { ...existingConfig, name, - cache: process.env.NODE_ENV === 'test' ? { - type: 'memory', - } : existingConfig.cache, + cache: process.env.NODE_ENV === 'test' + ? { type: 'memory' } + : existingConfig.cache, }; }, }; if (process.env.PAYLOAD_DISABLE_ADMIN === 'true') { - if (typeof baseConfig.admin !== 'object') baseConfig.admin = {}; - baseConfig.admin.disable = true; + if (typeof config.admin !== 'object') config.admin = {}; + config.admin.disable = true; } - return buildPayloadConfig(baseConfig); + return buildPayloadConfig(config); } diff --git a/test/collections-graphql/config.ts b/test/collections-graphql/config.ts index 7d948ecbba..9ef801927d 100644 --- a/test/collections-graphql/config.ts +++ b/test/collections-graphql/config.ts @@ -1,7 +1,7 @@ import path from 'path'; import type { CollectionConfig } from '../../src/collections/config/types'; import { devUser } from '../credentials'; -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; export interface Relation { id: string; @@ -30,7 +30,7 @@ const collectionWithName = (collectionSlug: string): CollectionConfig => { export const slug = 'posts'; export const relationSlug = 'relation'; -export default buildConfig({ +export default buildConfigWithDefaults({ graphQL: { schemaOutputFile: path.resolve(__dirname, 'schema.graphql'), }, diff --git a/test/collections-rest/config.ts b/test/collections-rest/config.ts index 75dd78bcf6..15dda6d89c 100644 --- a/test/collections-rest/config.ts +++ b/test/collections-rest/config.ts @@ -1,6 +1,6 @@ import type { CollectionConfig } from '../../src/collections/config/types'; import { devUser } from '../credentials'; -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; export interface Relation { id: string; @@ -34,7 +34,7 @@ export const customIdSlug = 'custom-id'; export const customIdNumberSlug = 'custom-id-number'; export const errorOnHookSlug = 'error-on-hooks'; -export default buildConfig({ +export default buildConfigWithDefaults({ endpoints: [ { path: '/send-test-email', diff --git a/test/config/config.ts b/test/config/config.ts index d7d252990f..0f3b86626e 100644 --- a/test/config/config.ts +++ b/test/config/config.ts @@ -1,4 +1,4 @@ -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; import { openAccess } from '../helpers/configHelpers'; import { Config } from '../../src/config/types'; @@ -62,4 +62,4 @@ const config: Config = { custom: { name: 'Customer portal' }, }; -export default buildConfig(config); +export default buildConfigWithDefaults(config); diff --git a/test/dataloader/config.ts b/test/dataloader/config.ts index 74fe922198..4b38761de6 100644 --- a/test/dataloader/config.ts +++ b/test/dataloader/config.ts @@ -1,7 +1,7 @@ -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; import { devUser } from '../credentials'; -export default buildConfig({ +export default buildConfigWithDefaults({ collections: [ { slug: 'posts', diff --git a/test/endpoints/config.ts b/test/endpoints/config.ts index df3e64ad90..3e608b9237 100644 --- a/test/endpoints/config.ts +++ b/test/endpoints/config.ts @@ -1,6 +1,6 @@ import express, { Response } from 'express'; import { devUser } from '../credentials'; -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; import { openAccess } from '../helpers/configHelpers'; import { PayloadRequest } from '../../src/express/types'; import { Config } from '../../src/config/types'; @@ -124,4 +124,4 @@ const MyConfig: Config = { }, }; -export default buildConfig(MyConfig); +export default buildConfigWithDefaults(MyConfig); diff --git a/test/field-error-states/config.ts b/test/field-error-states/config.ts index a79122bbd7..a66aca0aa7 100644 --- a/test/field-error-states/config.ts +++ b/test/field-error-states/config.ts @@ -1,9 +1,9 @@ -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; import { ErrorFieldsCollection } from './collections/ErrorFields'; import { devUser } from '../credentials'; import Uploads from './collections/Upload'; -export default buildConfig({ +export default buildConfigWithDefaults({ collections: [ ErrorFieldsCollection, Uploads, diff --git a/test/field-perf/config.ts b/test/field-perf/config.ts index e37d8c2535..1ef71816c9 100644 --- a/test/field-perf/config.ts +++ b/test/field-perf/config.ts @@ -1,8 +1,8 @@ /* eslint-disable @typescript-eslint/ban-ts-comment */ -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; import { devUser } from '../credentials'; -export default buildConfig({ +export default buildConfigWithDefaults({ collections: [ { slug: 'blocks-collection', diff --git a/test/fields-relationship/config.ts b/test/fields-relationship/config.ts index 65cb4bdffb..7f2d8c0634 100644 --- a/test/fields-relationship/config.ts +++ b/test/fields-relationship/config.ts @@ -1,5 +1,5 @@ import type { CollectionConfig } from '../../src/collections/config/types'; -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; import { devUser } from '../credentials'; import { mapAsync } from '../../src/utilities/mapAsync'; import { FilterOptionsProps } from '../../src/fields/config/types'; @@ -33,7 +33,7 @@ const baseRelationshipFields: CollectionConfig['fields'] = [ }, ]; -export default buildConfig({ +export default buildConfigWithDefaults({ collections: [ { slug, diff --git a/test/fields/config.ts b/test/fields/config.ts index 85aea71011..396e109471 100644 --- a/test/fields/config.ts +++ b/test/fields/config.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/ban-ts-comment */ import path from 'path'; import fs from 'fs'; -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; import { devUser } from '../credentials'; import ArrayFields, { arrayDoc } from './collections/Array'; import BlockFields, { blocksDoc } from './collections/Blocks'; @@ -26,7 +26,7 @@ import Uploads2 from './collections/Upload2'; import Uploads3 from './collections/Uploads3'; import RowFields from './collections/Row'; -export default buildConfig({ +export default buildConfigWithDefaults({ admin: { webpack: (config) => ({ ...config, diff --git a/test/globals/config.ts b/test/globals/config.ts index da911f86eb..113f6103af 100644 --- a/test/globals/config.ts +++ b/test/globals/config.ts @@ -1,5 +1,5 @@ import { devUser } from '../credentials'; -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; export const slug = 'global'; export const arraySlug = 'array'; @@ -16,7 +16,7 @@ const access = { update: () => true, }; -export default buildConfig({ +export default buildConfigWithDefaults({ localization: { locales: [englishLocale, spanishLocale], defaultLocale: englishLocale, diff --git a/test/graphql-schema-gen/config.ts b/test/graphql-schema-gen/config.ts index 497a1ea766..8e620caadf 100644 --- a/test/graphql-schema-gen/config.ts +++ b/test/graphql-schema-gen/config.ts @@ -1,7 +1,7 @@ import path from 'path'; -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; -export default buildConfig({ +export default buildConfigWithDefaults({ graphQL: { schemaOutputFile: path.resolve(__dirname, 'schema.graphql'), }, diff --git a/test/hooks/config.ts b/test/hooks/config.ts index a4bb1c7511..9586c7d3e4 100644 --- a/test/hooks/config.ts +++ b/test/hooks/config.ts @@ -1,4 +1,4 @@ -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; import TransformHooks from './collections/Transform'; import Hooks, { hooksSlug } from './collections/Hook'; import NestedAfterReadHooks from './collections/NestedAfterReadHooks'; @@ -6,7 +6,7 @@ import ChainingHooks from './collections/ChainingHooks'; import Relations from './collections/Relations'; import Users, { seedHooksUsers } from './collections/Users'; -export default buildConfig({ +export default buildConfigWithDefaults({ collections: [ TransformHooks, Hooks, diff --git a/test/localization/config.ts b/test/localization/config.ts index c2502e46da..782b37ced5 100644 --- a/test/localization/config.ts +++ b/test/localization/config.ts @@ -1,4 +1,4 @@ -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; import { devUser } from '../credentials'; import { ArrayCollection } from './collections/Array'; import { LocalizedPost, RelationshipLocalized } from './payload-types'; @@ -32,7 +32,7 @@ const openAccess = { update: () => true, }; -export default buildConfig({ +export default buildConfigWithDefaults({ localization: { locales: [defaultLocale, spanishLocale], defaultLocale, diff --git a/test/plugins/config.ts b/test/plugins/config.ts index 7f0f417d08..01705fd90b 100644 --- a/test/plugins/config.ts +++ b/test/plugins/config.ts @@ -1,9 +1,9 @@ -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; import { devUser } from '../credentials'; export const pagesSlug = 'pages'; -export default buildConfig({ +export default buildConfigWithDefaults({ collections: [ { slug: 'users', diff --git a/test/refresh-permissions/config.ts b/test/refresh-permissions/config.ts index b7a2bb3ce8..2ce5acc8d7 100644 --- a/test/refresh-permissions/config.ts +++ b/test/refresh-permissions/config.ts @@ -1,10 +1,10 @@ -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; import { devUser } from '../credentials'; import GlobalViewWithRefresh from './GlobalViewWithRefresh'; export const pagesSlug = 'pages'; -export default buildConfig({ +export default buildConfigWithDefaults({ globals: [ { slug: 'settings', diff --git a/test/relationships/config.ts b/test/relationships/config.ts index 91869dba9e..231d342118 100644 --- a/test/relationships/config.ts +++ b/test/relationships/config.ts @@ -1,6 +1,6 @@ import type { CollectionConfig } from '../../src/collections/config/types'; import { devUser } from '../credentials'; -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; const openAccess = { create: () => true, @@ -41,7 +41,7 @@ export const defaultAccessRelSlug = 'strict-access'; export const chainedRelSlug = 'chained-relation'; export const customIdSlug = 'custom-id-relation'; export const customIdNumberSlug = 'custom-id-number-relation'; -export default buildConfig({ +export default buildConfigWithDefaults({ collections: [ { slug, diff --git a/test/uploads/config.ts b/test/uploads/config.ts index 34e6a27177..0ae07d5dc7 100644 --- a/test/uploads/config.ts +++ b/test/uploads/config.ts @@ -1,5 +1,5 @@ import path from 'path'; -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; import { devUser } from '../credentials'; import getFileByPath from '../../src/uploads/getFileByPath'; import removeFiles from '../helpers/removeFiles'; @@ -14,7 +14,7 @@ export const audioSlug = 'audio'; const mockModulePath = path.resolve(__dirname, './mocks/mockFSModule.js'); -export default buildConfig({ +export default buildConfigWithDefaults({ admin: { webpack: (config) => ({ ...config, diff --git a/test/versions/config.ts b/test/versions/config.ts index f384fac5c0..2b067224c2 100644 --- a/test/versions/config.ts +++ b/test/versions/config.ts @@ -1,4 +1,4 @@ -import { buildConfig } from '../buildConfig'; +import { buildConfigWithDefaults } from '../buildConfigWithDefaults'; import AutosavePosts from './collections/Autosave'; import DraftPosts from './collections/Drafts'; import AutosaveGlobal from './globals/Autosave'; @@ -7,7 +7,7 @@ import DraftGlobal from './globals/Draft'; import VersionPosts from './collections/Versions'; import { draftSlug } from './shared'; -export default buildConfig({ +export default buildConfigWithDefaults({ collections: [ AutosavePosts, DraftPosts, diff --git a/yarn.lock b/yarn.lock index 3faf398d5a..aaf92a77a2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + "@adobe/css-tools@^4.0.1": version "4.2.0" resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.2.0.tgz#e1a84fca468f4b337816fcb7f0964beb620ba855" @@ -15,6 +20,15 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" +"@aws-crypto/crc32@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-3.0.0.tgz#07300eca214409c33e3ff769cd5697b57fdd38fa" + integrity sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA== + dependencies: + "@aws-crypto/util" "^3.0.0" + "@aws-sdk/types" "^3.222.0" + tslib "^1.11.1" + "@aws-crypto/ie11-detection@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz#640ae66b4ec3395cee6a8e94ebcd9f80c24cd688" @@ -61,624 +75,367 @@ "@aws-sdk/util-utf8-browser" "^3.0.0" tslib "^1.11.1" -"@aws-sdk/abort-controller@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.329.0.tgz#f311f79cad1040b84b853c5e9386ea2e069e571a" - integrity sha512-hzrjPNQcJoSPe0oS20V5i98oiEZSM3mKNiR6P3xHTHTPI/F23lyjGZ+/CSkCmJbSWfGZ5sHZZcU6AWuS7xBdTw== - dependencies: - "@aws-sdk/types" "3.329.0" - tslib "^2.5.0" - -"@aws-sdk/client-cognito-identity@3.332.0": - version "3.332.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.332.0.tgz#9f270b9464b0d373e5e10036358871c6918a5c7d" - integrity sha512-o2G3+w0Qm+jd5fnmG6+FF5KRu90PIv2Kd0mmMJIFmACVd+VtuWqsk85capX21YLcxizKe+okqaaD8/9vV7nvfw== +"@aws-sdk/client-cognito-identity@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.370.0.tgz#cfa6bc1a1b4b3631d0a62cd9861e56a397faba43" + integrity sha512-/dQFXT8y0WUD/731cdLjCrxNxH7Wtg2uZx7PggevTZs9Yr2fdGPSHehIYfvpCvi59yeG9T2Cl8sFnxXL1OEx4A== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/client-sts" "3.332.0" - "@aws-sdk/config-resolver" "3.329.0" - "@aws-sdk/credential-provider-node" "3.332.0" - "@aws-sdk/fetch-http-handler" "3.329.0" - "@aws-sdk/hash-node" "3.329.0" - "@aws-sdk/invalid-dependency" "3.329.0" - "@aws-sdk/middleware-content-length" "3.329.0" - "@aws-sdk/middleware-endpoint" "3.329.0" - "@aws-sdk/middleware-host-header" "3.329.0" - "@aws-sdk/middleware-logger" "3.329.0" - "@aws-sdk/middleware-recursion-detection" "3.329.0" - "@aws-sdk/middleware-retry" "3.329.0" - "@aws-sdk/middleware-serde" "3.329.0" - "@aws-sdk/middleware-signing" "3.329.0" - "@aws-sdk/middleware-stack" "3.329.0" - "@aws-sdk/middleware-user-agent" "3.332.0" - "@aws-sdk/node-config-provider" "3.329.0" - "@aws-sdk/node-http-handler" "3.329.0" - "@aws-sdk/protocol-http" "3.329.0" - "@aws-sdk/smithy-client" "3.329.0" - "@aws-sdk/types" "3.329.0" - "@aws-sdk/url-parser" "3.329.0" - "@aws-sdk/util-base64" "3.310.0" - "@aws-sdk/util-body-length-browser" "3.310.0" - "@aws-sdk/util-body-length-node" "3.310.0" - "@aws-sdk/util-defaults-mode-browser" "3.329.0" - "@aws-sdk/util-defaults-mode-node" "3.329.0" - "@aws-sdk/util-endpoints" "3.332.0" - "@aws-sdk/util-retry" "3.329.0" - "@aws-sdk/util-user-agent-browser" "3.329.0" - "@aws-sdk/util-user-agent-node" "3.329.0" - "@aws-sdk/util-utf8" "3.310.0" + "@aws-sdk/client-sts" "3.370.0" + "@aws-sdk/credential-provider-node" "3.370.0" + "@aws-sdk/middleware-host-header" "3.370.0" + "@aws-sdk/middleware-logger" "3.370.0" + "@aws-sdk/middleware-recursion-detection" "3.370.0" + "@aws-sdk/middleware-signing" "3.370.0" + "@aws-sdk/middleware-user-agent" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@aws-sdk/util-endpoints" "3.370.0" + "@aws-sdk/util-user-agent-browser" "3.370.0" + "@aws-sdk/util-user-agent-node" "3.370.0" + "@smithy/config-resolver" "^1.0.1" + "@smithy/fetch-http-handler" "^1.0.1" + "@smithy/hash-node" "^1.0.1" + "@smithy/invalid-dependency" "^1.0.1" + "@smithy/middleware-content-length" "^1.0.1" + "@smithy/middleware-endpoint" "^1.0.2" + "@smithy/middleware-retry" "^1.0.3" + "@smithy/middleware-serde" "^1.0.1" + "@smithy/middleware-stack" "^1.0.1" + "@smithy/node-config-provider" "^1.0.1" + "@smithy/node-http-handler" "^1.0.2" + "@smithy/protocol-http" "^1.1.0" + "@smithy/smithy-client" "^1.0.3" + "@smithy/types" "^1.1.0" + "@smithy/url-parser" "^1.0.1" + "@smithy/util-base64" "^1.0.1" + "@smithy/util-body-length-browser" "^1.0.1" + "@smithy/util-body-length-node" "^1.0.1" + "@smithy/util-defaults-mode-browser" "^1.0.1" + "@smithy/util-defaults-mode-node" "^1.0.1" + "@smithy/util-retry" "^1.0.3" + "@smithy/util-utf8" "^1.0.1" tslib "^2.5.0" -"@aws-sdk/client-sso-oidc@3.332.0": - version "3.332.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.332.0.tgz#8875ce4834d5d0decefadec828e32cbc0465fc30" - integrity sha512-tz8k8Yqm4TScIfit0Tum2zWAq1md+gZKr747CSixd4Zwcp7Vwh75cRoL7Rz1ZHSEn1Yo983MWREevVez3SubLw== +"@aws-sdk/client-sso-oidc@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.370.0.tgz#db03c04cb6a23888dc60016eb67505a41ede410b" + integrity sha512-jAYOO74lmVXylQylqkPrjLzxvUnMKw476JCUTvCO6Q8nv3LzCWd76Ihgv/m9Q4M2Tbqi1iP2roVK5bstsXzEjA== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/config-resolver" "3.329.0" - "@aws-sdk/fetch-http-handler" "3.329.0" - "@aws-sdk/hash-node" "3.329.0" - "@aws-sdk/invalid-dependency" "3.329.0" - "@aws-sdk/middleware-content-length" "3.329.0" - "@aws-sdk/middleware-endpoint" "3.329.0" - "@aws-sdk/middleware-host-header" "3.329.0" - "@aws-sdk/middleware-logger" "3.329.0" - "@aws-sdk/middleware-recursion-detection" "3.329.0" - "@aws-sdk/middleware-retry" "3.329.0" - "@aws-sdk/middleware-serde" "3.329.0" - "@aws-sdk/middleware-stack" "3.329.0" - "@aws-sdk/middleware-user-agent" "3.332.0" - "@aws-sdk/node-config-provider" "3.329.0" - "@aws-sdk/node-http-handler" "3.329.0" - "@aws-sdk/protocol-http" "3.329.0" - "@aws-sdk/smithy-client" "3.329.0" - "@aws-sdk/types" "3.329.0" - "@aws-sdk/url-parser" "3.329.0" - "@aws-sdk/util-base64" "3.310.0" - "@aws-sdk/util-body-length-browser" "3.310.0" - "@aws-sdk/util-body-length-node" "3.310.0" - "@aws-sdk/util-defaults-mode-browser" "3.329.0" - "@aws-sdk/util-defaults-mode-node" "3.329.0" - "@aws-sdk/util-endpoints" "3.332.0" - "@aws-sdk/util-retry" "3.329.0" - "@aws-sdk/util-user-agent-browser" "3.329.0" - "@aws-sdk/util-user-agent-node" "3.329.0" - "@aws-sdk/util-utf8" "3.310.0" + "@aws-sdk/middleware-host-header" "3.370.0" + "@aws-sdk/middleware-logger" "3.370.0" + "@aws-sdk/middleware-recursion-detection" "3.370.0" + "@aws-sdk/middleware-user-agent" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@aws-sdk/util-endpoints" "3.370.0" + "@aws-sdk/util-user-agent-browser" "3.370.0" + "@aws-sdk/util-user-agent-node" "3.370.0" + "@smithy/config-resolver" "^1.0.1" + "@smithy/fetch-http-handler" "^1.0.1" + "@smithy/hash-node" "^1.0.1" + "@smithy/invalid-dependency" "^1.0.1" + "@smithy/middleware-content-length" "^1.0.1" + "@smithy/middleware-endpoint" "^1.0.2" + "@smithy/middleware-retry" "^1.0.3" + "@smithy/middleware-serde" "^1.0.1" + "@smithy/middleware-stack" "^1.0.1" + "@smithy/node-config-provider" "^1.0.1" + "@smithy/node-http-handler" "^1.0.2" + "@smithy/protocol-http" "^1.1.0" + "@smithy/smithy-client" "^1.0.3" + "@smithy/types" "^1.1.0" + "@smithy/url-parser" "^1.0.1" + "@smithy/util-base64" "^1.0.1" + "@smithy/util-body-length-browser" "^1.0.1" + "@smithy/util-body-length-node" "^1.0.1" + "@smithy/util-defaults-mode-browser" "^1.0.1" + "@smithy/util-defaults-mode-node" "^1.0.1" + "@smithy/util-retry" "^1.0.3" + "@smithy/util-utf8" "^1.0.1" tslib "^2.5.0" -"@aws-sdk/client-sso@3.332.0": - version "3.332.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.332.0.tgz#e22fa9ded125cce75ca2cd63d3f3f9a6b8dfaa77" - integrity sha512-4q1Nko8M6YVANdEiLYvdv1qb00j4xN4ppE/6d4xpGp7DxHYlm0GA762h0/TR2dun+2I+SMnwj4Fv6BxOmzBaEw== +"@aws-sdk/client-sso@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.370.0.tgz#68aea97ecb2e5e6c817dfd3a1dd9fa4e09ff6e1c" + integrity sha512-0Ty1iHuzNxMQtN7nahgkZr4Wcu1XvqGfrQniiGdKKif9jG/4elxsQPiydRuQpFqN6b+bg7wPP7crFP1uTxx2KQ== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/config-resolver" "3.329.0" - "@aws-sdk/fetch-http-handler" "3.329.0" - "@aws-sdk/hash-node" "3.329.0" - "@aws-sdk/invalid-dependency" "3.329.0" - "@aws-sdk/middleware-content-length" "3.329.0" - "@aws-sdk/middleware-endpoint" "3.329.0" - "@aws-sdk/middleware-host-header" "3.329.0" - "@aws-sdk/middleware-logger" "3.329.0" - "@aws-sdk/middleware-recursion-detection" "3.329.0" - "@aws-sdk/middleware-retry" "3.329.0" - "@aws-sdk/middleware-serde" "3.329.0" - "@aws-sdk/middleware-stack" "3.329.0" - "@aws-sdk/middleware-user-agent" "3.332.0" - "@aws-sdk/node-config-provider" "3.329.0" - "@aws-sdk/node-http-handler" "3.329.0" - "@aws-sdk/protocol-http" "3.329.0" - "@aws-sdk/smithy-client" "3.329.0" - "@aws-sdk/types" "3.329.0" - "@aws-sdk/url-parser" "3.329.0" - "@aws-sdk/util-base64" "3.310.0" - "@aws-sdk/util-body-length-browser" "3.310.0" - "@aws-sdk/util-body-length-node" "3.310.0" - "@aws-sdk/util-defaults-mode-browser" "3.329.0" - "@aws-sdk/util-defaults-mode-node" "3.329.0" - "@aws-sdk/util-endpoints" "3.332.0" - "@aws-sdk/util-retry" "3.329.0" - "@aws-sdk/util-user-agent-browser" "3.329.0" - "@aws-sdk/util-user-agent-node" "3.329.0" - "@aws-sdk/util-utf8" "3.310.0" + "@aws-sdk/middleware-host-header" "3.370.0" + "@aws-sdk/middleware-logger" "3.370.0" + "@aws-sdk/middleware-recursion-detection" "3.370.0" + "@aws-sdk/middleware-user-agent" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@aws-sdk/util-endpoints" "3.370.0" + "@aws-sdk/util-user-agent-browser" "3.370.0" + "@aws-sdk/util-user-agent-node" "3.370.0" + "@smithy/config-resolver" "^1.0.1" + "@smithy/fetch-http-handler" "^1.0.1" + "@smithy/hash-node" "^1.0.1" + "@smithy/invalid-dependency" "^1.0.1" + "@smithy/middleware-content-length" "^1.0.1" + "@smithy/middleware-endpoint" "^1.0.2" + "@smithy/middleware-retry" "^1.0.3" + "@smithy/middleware-serde" "^1.0.1" + "@smithy/middleware-stack" "^1.0.1" + "@smithy/node-config-provider" "^1.0.1" + "@smithy/node-http-handler" "^1.0.2" + "@smithy/protocol-http" "^1.1.0" + "@smithy/smithy-client" "^1.0.3" + "@smithy/types" "^1.1.0" + "@smithy/url-parser" "^1.0.1" + "@smithy/util-base64" "^1.0.1" + "@smithy/util-body-length-browser" "^1.0.1" + "@smithy/util-body-length-node" "^1.0.1" + "@smithy/util-defaults-mode-browser" "^1.0.1" + "@smithy/util-defaults-mode-node" "^1.0.1" + "@smithy/util-retry" "^1.0.3" + "@smithy/util-utf8" "^1.0.1" tslib "^2.5.0" -"@aws-sdk/client-sts@3.332.0": - version "3.332.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.332.0.tgz#15bb163319d3da69f152f80fb4583eabe73e0e30" - integrity sha512-uVobnXIzMcEhwBDyk6iOt36N/TRNI8hwq7MQugjYGj7Inma9g4vnR09hXJ24HxyKCoVUoIgMbEguQ43+/+uvDQ== +"@aws-sdk/client-sts@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.370.0.tgz#65879fa35b396035dcab446c782056ef768f48af" + integrity sha512-utFxOPWIzbN+3kc415Je2o4J72hOLNhgR2Gt5EnRSggC3yOnkC4GzauxG8n7n5gZGBX45eyubHyPOXLOIyoqQA== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/config-resolver" "3.329.0" - "@aws-sdk/credential-provider-node" "3.332.0" - "@aws-sdk/fetch-http-handler" "3.329.0" - "@aws-sdk/hash-node" "3.329.0" - "@aws-sdk/invalid-dependency" "3.329.0" - "@aws-sdk/middleware-content-length" "3.329.0" - "@aws-sdk/middleware-endpoint" "3.329.0" - "@aws-sdk/middleware-host-header" "3.329.0" - "@aws-sdk/middleware-logger" "3.329.0" - "@aws-sdk/middleware-recursion-detection" "3.329.0" - "@aws-sdk/middleware-retry" "3.329.0" - "@aws-sdk/middleware-sdk-sts" "3.329.0" - "@aws-sdk/middleware-serde" "3.329.0" - "@aws-sdk/middleware-signing" "3.329.0" - "@aws-sdk/middleware-stack" "3.329.0" - "@aws-sdk/middleware-user-agent" "3.332.0" - "@aws-sdk/node-config-provider" "3.329.0" - "@aws-sdk/node-http-handler" "3.329.0" - "@aws-sdk/protocol-http" "3.329.0" - "@aws-sdk/smithy-client" "3.329.0" - "@aws-sdk/types" "3.329.0" - "@aws-sdk/url-parser" "3.329.0" - "@aws-sdk/util-base64" "3.310.0" - "@aws-sdk/util-body-length-browser" "3.310.0" - "@aws-sdk/util-body-length-node" "3.310.0" - "@aws-sdk/util-defaults-mode-browser" "3.329.0" - "@aws-sdk/util-defaults-mode-node" "3.329.0" - "@aws-sdk/util-endpoints" "3.332.0" - "@aws-sdk/util-retry" "3.329.0" - "@aws-sdk/util-user-agent-browser" "3.329.0" - "@aws-sdk/util-user-agent-node" "3.329.0" - "@aws-sdk/util-utf8" "3.310.0" - fast-xml-parser "4.1.2" + "@aws-sdk/credential-provider-node" "3.370.0" + "@aws-sdk/middleware-host-header" "3.370.0" + "@aws-sdk/middleware-logger" "3.370.0" + "@aws-sdk/middleware-recursion-detection" "3.370.0" + "@aws-sdk/middleware-sdk-sts" "3.370.0" + "@aws-sdk/middleware-signing" "3.370.0" + "@aws-sdk/middleware-user-agent" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@aws-sdk/util-endpoints" "3.370.0" + "@aws-sdk/util-user-agent-browser" "3.370.0" + "@aws-sdk/util-user-agent-node" "3.370.0" + "@smithy/config-resolver" "^1.0.1" + "@smithy/fetch-http-handler" "^1.0.1" + "@smithy/hash-node" "^1.0.1" + "@smithy/invalid-dependency" "^1.0.1" + "@smithy/middleware-content-length" "^1.0.1" + "@smithy/middleware-endpoint" "^1.0.2" + "@smithy/middleware-retry" "^1.0.3" + "@smithy/middleware-serde" "^1.0.1" + "@smithy/middleware-stack" "^1.0.1" + "@smithy/node-config-provider" "^1.0.1" + "@smithy/node-http-handler" "^1.0.2" + "@smithy/protocol-http" "^1.1.0" + "@smithy/smithy-client" "^1.0.3" + "@smithy/types" "^1.1.0" + "@smithy/url-parser" "^1.0.1" + "@smithy/util-base64" "^1.0.1" + "@smithy/util-body-length-browser" "^1.0.1" + "@smithy/util-body-length-node" "^1.0.1" + "@smithy/util-defaults-mode-browser" "^1.0.1" + "@smithy/util-defaults-mode-node" "^1.0.1" + "@smithy/util-retry" "^1.0.3" + "@smithy/util-utf8" "^1.0.1" + fast-xml-parser "4.2.5" tslib "^2.5.0" -"@aws-sdk/config-resolver@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.329.0.tgz#f4283c9c8e61752cecad8cfaebb4db52ac1bbf60" - integrity sha512-Oj6eiT3q+Jn685yvUrfRi8PhB3fb81hasJqdrsEivA8IP8qAgnVUTJzXsh8O2UX8UM2MF6A1gTgToSgneJuw2Q== +"@aws-sdk/credential-provider-cognito-identity@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.370.0.tgz#ba251131db44368473b151178a7c2329058dad39" + integrity sha512-OjNAN72+QoyJAmOayi47AlFzpQc4E59LWRE2GKgH0F1pEgr3t34T0/EHusCoxUjOz5mRRXrKjNlHVC7ezOFEcg== dependencies: - "@aws-sdk/types" "3.329.0" - "@aws-sdk/util-config-provider" "3.310.0" - "@aws-sdk/util-middleware" "3.329.0" + "@aws-sdk/client-cognito-identity" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/credential-provider-cognito-identity@3.332.0": - version "3.332.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.332.0.tgz#ab977d6c572b20c16fcfdede0edd145a28e79c6f" - integrity sha512-FJI936QVSFd49PWOgTlW7e8rKO/6Y8sMnkvTJ/APQ1K8em+jWkaAMFBl15NrpOo/jlZCzhkkQDatDHAlbSUXGw== +"@aws-sdk/credential-provider-env@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.370.0.tgz#edd507a88b36b967da048255f4a478ad92d1c5aa" + integrity sha512-raR3yP/4GGbKFRPP5hUBNkEmTnzxI9mEc2vJAJrcv4G4J4i/UP6ELiLInQ5eO2/VcV/CeKGZA3t7d1tsJ+jhCg== dependencies: - "@aws-sdk/client-cognito-identity" "3.332.0" - "@aws-sdk/property-provider" "3.329.0" - "@aws-sdk/types" "3.329.0" + "@aws-sdk/types" "3.370.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/credential-provider-env@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.329.0.tgz#54bb313de01324e302b5927733083a4c93ed9962" - integrity sha512-B4orC9hMt9hG82vAR0TAnQqjk6cFDbO2S14RdzUj2n2NPlGWW4Blkv3NTo86K0lq011VRhtqaLcuTwn5EJD5Sg== +"@aws-sdk/credential-provider-ini@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.370.0.tgz#4e569b8054b4fba2f0a0a7fa88af84b1f8d78c0b" + integrity sha512-eJyapFKa4NrC9RfTgxlXnXfS9InG/QMEUPPVL+VhG7YS6nKqetC1digOYgivnEeu+XSKE0DJ7uZuXujN2Y7VAQ== dependencies: - "@aws-sdk/property-provider" "3.329.0" - "@aws-sdk/types" "3.329.0" + "@aws-sdk/credential-provider-env" "3.370.0" + "@aws-sdk/credential-provider-process" "3.370.0" + "@aws-sdk/credential-provider-sso" "3.370.0" + "@aws-sdk/credential-provider-web-identity" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@smithy/credential-provider-imds" "^1.0.1" + "@smithy/property-provider" "^1.0.1" + "@smithy/shared-ini-file-loader" "^1.0.1" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/credential-provider-imds@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.329.0.tgz#566b21c37f5e89730ef3b4229f0824b4c455f669" - integrity sha512-ggPlnd7QROPTid0CwT01TYYGvstRRTpzTGsQ/B31wkh30IrRXE81W3S4xrOYuqQD3u0RnflSxnvhs+EayJEYjg== +"@aws-sdk/credential-provider-node@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.370.0.tgz#74605644ccbd9e8237223318a7955f4ab2ff0d86" + integrity sha512-gkFiotBFKE4Fcn8CzQnMeab9TAR06FEAD02T4ZRYW1xGrBJOowmje9dKqdwQFHSPgnWAP+8HoTA8iwbhTLvjNA== dependencies: - "@aws-sdk/node-config-provider" "3.329.0" - "@aws-sdk/property-provider" "3.329.0" - "@aws-sdk/types" "3.329.0" - "@aws-sdk/url-parser" "3.329.0" + "@aws-sdk/credential-provider-env" "3.370.0" + "@aws-sdk/credential-provider-ini" "3.370.0" + "@aws-sdk/credential-provider-process" "3.370.0" + "@aws-sdk/credential-provider-sso" "3.370.0" + "@aws-sdk/credential-provider-web-identity" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@smithy/credential-provider-imds" "^1.0.1" + "@smithy/property-provider" "^1.0.1" + "@smithy/shared-ini-file-loader" "^1.0.1" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/credential-provider-ini@3.332.0": - version "3.332.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.332.0.tgz#03c77480a94d07784c789eeca44ca67c0900ba4a" - integrity sha512-DTW6d6rcqizPVyvcIrwvxecQ7e5GONtVc5Wyf0RTfqf41sDOVZYmn6G+zEFSpBLW0975uZbJS0lyLWtJe2VujQ== +"@aws-sdk/credential-provider-process@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.370.0.tgz#f7b94d2ccfda3b067cb23ea832b10c692c831855" + integrity sha512-0BKFFZmUO779Xdw3u7wWnoWhYA4zygxJbgGVSyjkOGBvdkbPSTTcdwT1KFkaQy2kOXYeZPl+usVVRXs+ph4ejg== dependencies: - "@aws-sdk/credential-provider-env" "3.329.0" - "@aws-sdk/credential-provider-imds" "3.329.0" - "@aws-sdk/credential-provider-process" "3.329.0" - "@aws-sdk/credential-provider-sso" "3.332.0" - "@aws-sdk/credential-provider-web-identity" "3.329.0" - "@aws-sdk/property-provider" "3.329.0" - "@aws-sdk/shared-ini-file-loader" "3.329.0" - "@aws-sdk/types" "3.329.0" + "@aws-sdk/types" "3.370.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/shared-ini-file-loader" "^1.0.1" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/credential-provider-node@3.332.0": - version "3.332.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.332.0.tgz#bfd4fa8855dd3cf80f1e0d8d160966441e44c4a7" - integrity sha512-KkBayS9k4WyJTvC86ngeRM+RmWxNCS1BHvudkR6PLXfnsNPDzxySDVY0UgxVhbNYDYsO561fXZt9ccpKyVWjgg== +"@aws-sdk/credential-provider-sso@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.370.0.tgz#4c57f93d73f198d7e1e53fbfcdf72c053bc9c682" + integrity sha512-PFroYm5hcPSfC/jkZnCI34QFL3I7WVKveVk6/F3fud/cnP8hp6YjA9NiTNbqdFSzsyoiN/+e5fZgNKih8vVPTA== dependencies: - "@aws-sdk/credential-provider-env" "3.329.0" - "@aws-sdk/credential-provider-imds" "3.329.0" - "@aws-sdk/credential-provider-ini" "3.332.0" - "@aws-sdk/credential-provider-process" "3.329.0" - "@aws-sdk/credential-provider-sso" "3.332.0" - "@aws-sdk/credential-provider-web-identity" "3.329.0" - "@aws-sdk/property-provider" "3.329.0" - "@aws-sdk/shared-ini-file-loader" "3.329.0" - "@aws-sdk/types" "3.329.0" + "@aws-sdk/client-sso" "3.370.0" + "@aws-sdk/token-providers" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/shared-ini-file-loader" "^1.0.1" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/credential-provider-process@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.329.0.tgz#5c07b2f4c67cb97190c69d4af5890c9db3f8a31d" - integrity sha512-5oO220qoFc2pMdZDQa6XN/mVhp669I3+LqMbbscGtX/UgLJPSOb7YzPld9Wjv12L5rf+sD3G1PF3LZXO0vKLFA== +"@aws-sdk/credential-provider-web-identity@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.370.0.tgz#c5831bb656bea1fe3b300e495e19a33bc90f4d84" + integrity sha512-CFaBMLRudwhjv1sDzybNV93IaT85IwS+L8Wq6VRMa0mro1q9rrWsIZO811eF+k0NEPfgU1dLH+8Vc2qhw4SARQ== dependencies: - "@aws-sdk/property-provider" "3.329.0" - "@aws-sdk/shared-ini-file-loader" "3.329.0" - "@aws-sdk/types" "3.329.0" - tslib "^2.5.0" - -"@aws-sdk/credential-provider-sso@3.332.0": - version "3.332.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.332.0.tgz#ed12b58d30b6ee359462c7e78672734af22fe713" - integrity sha512-SaKXl48af3n6LRitcaEqbeg1YDXwQ0A5QziC1xQyYPraEIj3IZ/GyTjx04Lo2jxNYHuEOE8u4aTw1+IK1GDKbg== - dependencies: - "@aws-sdk/client-sso" "3.332.0" - "@aws-sdk/property-provider" "3.329.0" - "@aws-sdk/shared-ini-file-loader" "3.329.0" - "@aws-sdk/token-providers" "3.332.0" - "@aws-sdk/types" "3.329.0" - tslib "^2.5.0" - -"@aws-sdk/credential-provider-web-identity@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.329.0.tgz#5610293c03bc4c323dfcae522c545c20e2d8dd86" - integrity sha512-lcEibZD7AlutCacpQ6DyNUqElZJDq+ylaIo5a8MH9jGh7Pg2WpDg0Sy+B6FbGCkVn4eIjdHxeX54JM245nhESg== - dependencies: - "@aws-sdk/property-provider" "3.329.0" - "@aws-sdk/types" "3.329.0" + "@aws-sdk/types" "3.370.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/types" "^1.1.0" tslib "^2.5.0" "@aws-sdk/credential-providers@^3.186.0": - version "3.332.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-providers/-/credential-providers-3.332.0.tgz#1fe8fd07179ce0d39ea63f2213aacac96af3837e" - integrity sha512-UZM8hCJqBBI4yEopVnfQ7HgUCuiYuWJziPFovQpbwvZKadibzo332/n6e5IsQbJxPjymqFLgTn3PQds/+1FOlQ== + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-providers/-/credential-providers-3.370.0.tgz#280878e08298e959e1877a733ed6ead1cb3486d8" + integrity sha512-K5yUHJPB2QJKWzKoz1YCE2xJDvYL6bvCRyoT0mRPWbITrDjFuWxbe1QXWcMymwQIyzOITAnZq5fvj456KhPATg== dependencies: - "@aws-sdk/client-cognito-identity" "3.332.0" - "@aws-sdk/client-sso" "3.332.0" - "@aws-sdk/client-sts" "3.332.0" - "@aws-sdk/credential-provider-cognito-identity" "3.332.0" - "@aws-sdk/credential-provider-env" "3.329.0" - "@aws-sdk/credential-provider-imds" "3.329.0" - "@aws-sdk/credential-provider-ini" "3.332.0" - "@aws-sdk/credential-provider-node" "3.332.0" - "@aws-sdk/credential-provider-process" "3.329.0" - "@aws-sdk/credential-provider-sso" "3.332.0" - "@aws-sdk/credential-provider-web-identity" "3.329.0" - "@aws-sdk/property-provider" "3.329.0" - "@aws-sdk/types" "3.329.0" + "@aws-sdk/client-cognito-identity" "3.370.0" + "@aws-sdk/client-sso" "3.370.0" + "@aws-sdk/client-sts" "3.370.0" + "@aws-sdk/credential-provider-cognito-identity" "3.370.0" + "@aws-sdk/credential-provider-env" "3.370.0" + "@aws-sdk/credential-provider-ini" "3.370.0" + "@aws-sdk/credential-provider-node" "3.370.0" + "@aws-sdk/credential-provider-process" "3.370.0" + "@aws-sdk/credential-provider-sso" "3.370.0" + "@aws-sdk/credential-provider-web-identity" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@smithy/credential-provider-imds" "^1.0.1" + "@smithy/property-provider" "^1.0.1" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/fetch-http-handler@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.329.0.tgz#5aee0c9a32ad8ff4fa96c6869bba68c345818532" - integrity sha512-9jfIeJhYCcTX4ScXOueRTB3S/tVce0bRsKxKDP0PnTxnGYOwKXoM9lAPmiYItzYmQ/+QzjTI8xfkA9Usz2SK/Q== +"@aws-sdk/middleware-host-header@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.370.0.tgz#645472416efd16b22a66b0aa1d52f48cf5699feb" + integrity sha512-CPXOm/TnOFC7KyXcJglICC7OiA7Kj6mT3ChvEijr56TFOueNHvJdV4aNIFEQy0vGHOWtY12qOWLNto/wYR1BAQ== dependencies: - "@aws-sdk/protocol-http" "3.329.0" - "@aws-sdk/querystring-builder" "3.329.0" - "@aws-sdk/types" "3.329.0" - "@aws-sdk/util-base64" "3.310.0" + "@aws-sdk/types" "3.370.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/hash-node@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.329.0.tgz#91ef8b1b55e1a438c367f63747673bf146a00499" - integrity sha512-6RmnWXNWpi7yAs0oRDQlkMn2wfXOStr/8kTCgiAiqrk1KopGSBkC2veKiKRSfv02FTd1yV/ISqYNIRqW1VLyxg== +"@aws-sdk/middleware-logger@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.370.0.tgz#c9f694d7e1dd47b5e6e8eab94793fc1e272b1e26" + integrity sha512-cQMq9SaZ/ORmTJPCT6VzMML7OxFdQzNkhMAgKpTDl+tdPWynlHF29E5xGoSzROnThHlQPCjogU0NZ8AxI0SWPA== dependencies: - "@aws-sdk/types" "3.329.0" - "@aws-sdk/util-buffer-from" "3.310.0" - "@aws-sdk/util-utf8" "3.310.0" + "@aws-sdk/types" "3.370.0" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/invalid-dependency@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.329.0.tgz#83dc33de710f80eba5e084a82aab656c1d240352" - integrity sha512-UXynGusDxN/HxLma5ByJ7u+XnuMd47NbHOjJgYsaAjb1CVZT7hEPXOB+mcZ+Ku7To5SCOKu2QbRn7m4bGespBg== +"@aws-sdk/middleware-recursion-detection@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.370.0.tgz#e5e8fd1d2ff1ade91135295dabcaa81c311ce00b" + integrity sha512-L7ZF/w0lAAY/GK1khT8VdoU0XB7nWHk51rl/ecAg64J70dHnMOAg8n+5FZ9fBu/xH1FwUlHOkwlodJOgzLJjtg== dependencies: - "@aws-sdk/types" "3.329.0" + "@aws-sdk/types" "3.370.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/is-array-buffer@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.310.0.tgz#f87a79f1b858c88744f07e8d8d0a791df204017e" - integrity sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ== +"@aws-sdk/middleware-sdk-sts@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.370.0.tgz#0599a624fe5cabe75cd7d9e7420927b102356fa2" + integrity sha512-ykbsoVy0AJtVbuhAlTAMcaz/tCE3pT8nAp0L7CQQxSoanRCvOux7au0KwMIQVhxgnYid4dWVF6d00SkqU5MXRA== dependencies: + "@aws-sdk/middleware-signing" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/middleware-content-length@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.329.0.tgz#cadd0c3ba7fe3d0b21812523bb7d7f7526c9c700" - integrity sha512-7kCd+CvY/4KbyXB0uyL7jCwPjMi2yERMALFdEH9dsUciwmxIQT6eSc4aF6wImC4UrbafaqmXvvHErABKMVBTKA== +"@aws-sdk/middleware-signing@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.370.0.tgz#c094026251faa17a24f61630d56152f7b073e6cf" + integrity sha512-Dwr/RTCWOXdm394wCwICGT2VNOTMRe4IGPsBRJAsM24pm+EEqQzSS3Xu/U/zF4exuxqpMta4wec4QpSarPNTxA== dependencies: - "@aws-sdk/protocol-http" "3.329.0" - "@aws-sdk/types" "3.329.0" + "@aws-sdk/types" "3.370.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/protocol-http" "^1.1.0" + "@smithy/signature-v4" "^1.0.1" + "@smithy/types" "^1.1.0" + "@smithy/util-middleware" "^1.0.1" tslib "^2.5.0" -"@aws-sdk/middleware-endpoint@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.329.0.tgz#50c5f71afa3b6d3062d3b542279009454898314e" - integrity sha512-hdJRoNdCM0BT4W+rrtee+kfFRgGPGXQDgtbIQlf/FuuuYz2sdef7/SYWr0mxuncnVBW5WkYSPP8h6q07whSKbg== +"@aws-sdk/middleware-user-agent@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.370.0.tgz#a2bf71baf6407654811a02e4d276a2eec3996fdb" + integrity sha512-2+3SB6MtMAq1+gVXhw0Y3ONXuljorh6ijnxgTpv+uQnBW5jHCUiAS8WDYiDEm7i9euJPbvJfM8WUrSMDMU6Cog== dependencies: - "@aws-sdk/middleware-serde" "3.329.0" - "@aws-sdk/types" "3.329.0" - "@aws-sdk/url-parser" "3.329.0" - "@aws-sdk/util-middleware" "3.329.0" + "@aws-sdk/types" "3.370.0" + "@aws-sdk/util-endpoints" "3.370.0" + "@smithy/protocol-http" "^1.1.0" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/middleware-host-header@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.329.0.tgz#22b1a6d91f3f281ef802f21f2ab0b426526d6066" - integrity sha512-JrHeUdTIpTCfXDo9JpbAbZTS1x4mt63CCytJRq0mpWp+FlP9hjckBcNxWdR/wSKEzP9pDRnTri638BOwWH7O8w== +"@aws-sdk/token-providers@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.370.0.tgz#e5229f2d116887c90ec103e024583be05c1f506c" + integrity sha512-EyR2ZYr+lJeRiZU2/eLR+mlYU9RXLQvNyGFSAekJKgN13Rpq/h0syzXVFLP/RSod/oZenh/fhVZ2HwlZxuGBtQ== dependencies: - "@aws-sdk/protocol-http" "3.329.0" - "@aws-sdk/types" "3.329.0" + "@aws-sdk/client-sso-oidc" "3.370.0" + "@aws-sdk/types" "3.370.0" + "@smithy/property-provider" "^1.0.1" + "@smithy/shared-ini-file-loader" "^1.0.1" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/middleware-logger@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.329.0.tgz#fa8adc07928da24e713e384d4a32c8d0e36f96ee" - integrity sha512-lKeeTXsYC1NiwmxrXsZepcwNXPoQxTNNbeD1qaCELPGK2cJlrGoeAP2YRWzpwO2kNZWrDLaGAPT/EUEhqw+d1w== +"@aws-sdk/types@3.370.0", "@aws-sdk/types@^3.222.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.370.0.tgz#79e0e4927529c957b5c5c2a00f7590a76784a5e4" + integrity sha512-8PGMKklSkRKjunFhzM2y5Jm0H2TBu7YRNISdYzXLUHKSP9zlMEYagseKVdmox0zKHf1LXVNuSlUV2b6SRrieCQ== dependencies: - "@aws-sdk/types" "3.329.0" + "@smithy/types" "^1.1.0" tslib "^2.5.0" -"@aws-sdk/middleware-recursion-detection@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.329.0.tgz#afa676f26f9a050cd3d57a2efa2b0247a6e1d614" - integrity sha512-0/TYOJwrj1Z8s+Y7thibD23hggBq/K/01NwPk32CwWG/G+1vWozs5DefknEl++w0vuV+39pkY4KHI8m/+wOCpg== - dependencies: - "@aws-sdk/protocol-http" "3.329.0" - "@aws-sdk/types" "3.329.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-retry@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.329.0.tgz#326fb0b7442d665689d311fba43eb49a510d2939" - integrity sha512-cB3D7GlhHUcHGOlygOYxD9cPhwsTYEAMcohK38An8+RHNp6VQEWezzLFCmHVKUSeCQ+wkjZfPA40jOG0rbjSgQ== - dependencies: - "@aws-sdk/protocol-http" "3.329.0" - "@aws-sdk/service-error-classification" "3.329.0" - "@aws-sdk/types" "3.329.0" - "@aws-sdk/util-middleware" "3.329.0" - "@aws-sdk/util-retry" "3.329.0" - tslib "^2.5.0" - uuid "^8.3.2" - -"@aws-sdk/middleware-sdk-sts@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.329.0.tgz#50056cca7688e708e3db6bd66203878bc373ff7d" - integrity sha512-bqtZuhkH8pANb2Gb4FEM1p27o+BoDBmVhEWm8sWH+APsyOor3jc6eUG2GxkfoO6D5tGNIuyCC/GuvW9XDIe4Kg== - dependencies: - "@aws-sdk/middleware-signing" "3.329.0" - "@aws-sdk/types" "3.329.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-serde@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.329.0.tgz#f822d7419953ba5d31104262724034340908dd28" - integrity sha512-tvM9NdPuRPCozPjTGNOeYZeLlyx3BcEyajrkRorCRf1YzG/mXdB6I1stote7i4q1doFtYTz0sYL8bqW3LUPn9A== - dependencies: - "@aws-sdk/types" "3.329.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-signing@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.329.0.tgz#25011abb0911c1a23840d8d228676758f5b55926" - integrity sha512-bL1nI+EUcF5B1ipwDXxiKL+Uw02Mbt/TNX54PbzunBGZIyO6DZG/H+M3U296bYbvPlwlZhp26O830g6K7VEWsA== - dependencies: - "@aws-sdk/property-provider" "3.329.0" - "@aws-sdk/protocol-http" "3.329.0" - "@aws-sdk/signature-v4" "3.329.0" - "@aws-sdk/types" "3.329.0" - "@aws-sdk/util-middleware" "3.329.0" - tslib "^2.5.0" - -"@aws-sdk/middleware-stack@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.329.0.tgz#745150a190cc025d0bd7a52c0db5580c05dbbb54" - integrity sha512-2huFLhJ45td2nuiIOjpc9JKJbFNn5CYmw9U8YDITTcydpteRN62CzCpeqroDvF89VOLWxh0ZFtuLCGUr7liSWQ== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/middleware-user-agent@3.332.0": - version "3.332.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.332.0.tgz#6f2de9579b09dd7feeab27ef8a18c236694ad903" - integrity sha512-rSL1xP4QmcMOsunN1p5ZDR9GT3vvoSCnYa4iPvMSjP8Jx7l4ff/aVctwfZkMs/up12+68Jqwj4TvtaCvCFXdUA== - dependencies: - "@aws-sdk/protocol-http" "3.329.0" - "@aws-sdk/types" "3.329.0" - "@aws-sdk/util-endpoints" "3.332.0" - tslib "^2.5.0" - -"@aws-sdk/node-config-provider@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.329.0.tgz#32666077565924354a2216a5343ee768d3107eea" - integrity sha512-hg9rGNlkzh8aeR/sQbijrkFx2BIO53j4Z6qDxPNWwSGpl05jri1VHxHx2HZMwgbY6Zy/DSguETN/BL8vdFqyLg== - dependencies: - "@aws-sdk/property-provider" "3.329.0" - "@aws-sdk/shared-ini-file-loader" "3.329.0" - "@aws-sdk/types" "3.329.0" - tslib "^2.5.0" - -"@aws-sdk/node-http-handler@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.329.0.tgz#6dc721e6a9df7baebefd145295ef1a8bf1000a51" - integrity sha512-OrjaHjU2ZTPfoHa5DruRvTIbeHH/cc0wvh4ml+FwDpWaPaBpOhLiluhZ3anqX1l5QjrXNiQnL8FxSM5OV/zVCA== - dependencies: - "@aws-sdk/abort-controller" "3.329.0" - "@aws-sdk/protocol-http" "3.329.0" - "@aws-sdk/querystring-builder" "3.329.0" - "@aws-sdk/types" "3.329.0" - tslib "^2.5.0" - -"@aws-sdk/property-provider@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.329.0.tgz#069dda84e132c9d4eca1a4ae37c62f7a650a0046" - integrity sha512-1cHLTV6yyMGaMSWWDW/p4vTkJ1cc5BOEO+A0eHuAcoSOk+LDe9IKhUG3/ZOvvYKQYcqIj5jjGSni/noXNCl/qw== - dependencies: - "@aws-sdk/types" "3.329.0" - tslib "^2.5.0" - -"@aws-sdk/protocol-http@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.329.0.tgz#a8a7e01477831961f5f040fe607c3552f9ccb013" - integrity sha512-0rLEHY6QTHTUUcVxzGbPUSmCKlXWplxT/fcYRh0bcc5MBK4naKfcQft1O6Ajp8uqs/9YPZ7XCVCn90pDeJfeaw== - dependencies: - "@aws-sdk/types" "3.329.0" - tslib "^2.5.0" - -"@aws-sdk/querystring-builder@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.329.0.tgz#c6e6dd03dcd4378d1fbee576ce2a81dd94ac46a6" - integrity sha512-UWgMKkS5trliaDJG4nPv3onu8Y0aBuwRo7RdIgggguOiU8pU6pq1I113nH2FBNWy+Me1bwf+bcviJh0pCo6bEg== - dependencies: - "@aws-sdk/types" "3.329.0" - "@aws-sdk/util-uri-escape" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/querystring-parser@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.329.0.tgz#dbbf2fd23ff0dfa2e4663fa414de1d5e60814896" - integrity sha512-9mkK+FB7snJ2G7H3CqtprDwYIRhzm6jEezffCwUWrC+lbqHBbErbhE9IeU/MKxILmf0RbC2riXEY1MHGspjRrQ== - dependencies: - "@aws-sdk/types" "3.329.0" - tslib "^2.5.0" - -"@aws-sdk/service-error-classification@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.329.0.tgz#32db59091ff28f14e526cee738bc14e32a6850f6" - integrity sha512-TSNr0flOcCLe71aPp7MjblKNGsmxpTU4xR5772MDX9Cz9GUTNZCPFtvrcqd+wzEPP/AC7XwNXe8KjoXooZImUQ== - -"@aws-sdk/shared-ini-file-loader@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.329.0.tgz#190eb922860d49b4259b20ca6df4d20769544802" - integrity sha512-e0hyd75fbjMd4aCoRwpP2/HR+0oScwogErVArIkq3F42c/hyNCQP3sph4JImuXIjuo6HNnpKpf20CEPPhNna8A== - dependencies: - "@aws-sdk/types" "3.329.0" - tslib "^2.5.0" - -"@aws-sdk/signature-v4@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.329.0.tgz#8d40683189678f49504169c923e8342247b1da70" - integrity sha512-9EnLoyOD5nFtCRAp+QRllDgQASCfY7jLHVhwht7jzwE80wE65Z9Ym5Z/mwTd4IyTz/xXfCvcE2VwClsBt0Ybdw== - dependencies: - "@aws-sdk/is-array-buffer" "3.310.0" - "@aws-sdk/types" "3.329.0" - "@aws-sdk/util-hex-encoding" "3.310.0" - "@aws-sdk/util-middleware" "3.329.0" - "@aws-sdk/util-uri-escape" "3.310.0" - "@aws-sdk/util-utf8" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/smithy-client@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.329.0.tgz#54705963939855c87ae6e6c88196d23e819d728e" - integrity sha512-7E0fGpBKxwFqHHAOqNbgNsHSEmCZLuvmU9yvG9DXKVzrS4P48O/PfOro123WpcFZs3STyOVgH8wjUPftHAVKmg== - dependencies: - "@aws-sdk/middleware-stack" "3.329.0" - "@aws-sdk/types" "3.329.0" - tslib "^2.5.0" - -"@aws-sdk/token-providers@3.332.0": - version "3.332.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.332.0.tgz#d014556ad93c0e43bb20237a3c5e85e9eed612a2" - integrity sha512-fccbg6OSl0l658pxl2p1MoU9gEePo5B361+JNaN0zfRMu7c5HBXCpdl4djlFxAHjltrX9f1+BKqfGHYgI3h8SQ== - dependencies: - "@aws-sdk/client-sso-oidc" "3.332.0" - "@aws-sdk/property-provider" "3.329.0" - "@aws-sdk/shared-ini-file-loader" "3.329.0" - "@aws-sdk/types" "3.329.0" - tslib "^2.5.0" - -"@aws-sdk/types@3.329.0", "@aws-sdk/types@^3.222.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.329.0.tgz#bc20659abfcd666954196c3a24ad47785db80dd3" - integrity sha512-wFBW4yciDfzQBSFmWNaEvHShnSGLMxSu9Lls6EUf6xDMavxSB36bsrVRX6CyAo/W0NeIIyEOW1LclGPgJV1okg== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/url-parser@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.329.0.tgz#a2862834a832ec1d379791f5233e378b75fc63ad" - integrity sha512-/VcfL7vNJKJGSjYYHVQF3bYCDFs4fSzB7j5qeVDwRdWr870gE7O1Dar+sLWBRKFF3AX+4VzplqzUfpu9t44JVA== - dependencies: - "@aws-sdk/querystring-parser" "3.329.0" - "@aws-sdk/types" "3.329.0" - tslib "^2.5.0" - -"@aws-sdk/util-base64@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64/-/util-base64-3.310.0.tgz#d0fd49aff358c5a6e771d0001c63b1f97acbe34c" - integrity sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg== - dependencies: - "@aws-sdk/util-buffer-from" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/util-body-length-browser@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.310.0.tgz#3fca9d2f73c058edf1907e4a1d99a392fdd23eca" - integrity sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/util-body-length-node@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.310.0.tgz#4846ae72834ab0636f29f89fc1878520f6543fed" - integrity sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/util-buffer-from@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.310.0.tgz#7a72cb965984d3c6a7e256ae6cf1621f52e54a57" - integrity sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw== - dependencies: - "@aws-sdk/is-array-buffer" "3.310.0" - tslib "^2.5.0" - -"@aws-sdk/util-config-provider@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-config-provider/-/util-config-provider-3.310.0.tgz#ff21f73d4774cfd7bd16ae56f905828600dda95f" - integrity sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/util-defaults-mode-browser@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.329.0.tgz#49fc6836e85968ff86917c56c82fc9ef595c0565" - integrity sha512-2iSiy/pzX3OXMhtSxtAzOiEFr3viQEFnYOTeZuiheuyS+cea2L79F6SlZ1110b/nOIU/UOrxxtz83HVad8YFMQ== - dependencies: - "@aws-sdk/property-provider" "3.329.0" - "@aws-sdk/types" "3.329.0" - bowser "^2.11.0" - tslib "^2.5.0" - -"@aws-sdk/util-defaults-mode-node@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.329.0.tgz#2296652bcacd56c6abe159194aae283738a796b2" - integrity sha512-7A6C7YKjkZtmKtH29isYEtOCbhd7IcXPP8lftN8WAWlLOiZE4gV7PHveagUj7QserJzgRKGwwTQbBj53n18HYg== - dependencies: - "@aws-sdk/config-resolver" "3.329.0" - "@aws-sdk/credential-provider-imds" "3.329.0" - "@aws-sdk/node-config-provider" "3.329.0" - "@aws-sdk/property-provider" "3.329.0" - "@aws-sdk/types" "3.329.0" - tslib "^2.5.0" - -"@aws-sdk/util-endpoints@3.332.0": - version "3.332.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.332.0.tgz#e360f65d240c97661988e20f15bb5bca160f773a" - integrity sha512-nQx7AiOroMU2hj6h+umWOSZ+WECwxupaxFUK/PPKGW6NY/VdQE6LluYnXOtF5awlr8w1nPksT0Lq05PZutMDLA== - dependencies: - "@aws-sdk/types" "3.329.0" - tslib "^2.5.0" - -"@aws-sdk/util-hex-encoding@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz#19294c78986c90ae33f04491487863dc1d33bd87" - integrity sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA== +"@aws-sdk/util-endpoints@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.370.0.tgz#bf1f4653c3afc89d4e79aa4895dd3dffbb56c930" + integrity sha512-5ltVAnM79nRlywwzZN5i8Jp4tk245OCGkKwwXbnDU+gq7zT3CIOsct1wNZvmpfZEPGt/bv7/NyRcjP+7XNsX/g== dependencies: + "@aws-sdk/types" "3.370.0" tslib "^2.5.0" "@aws-sdk/util-locate-window@^3.0.0": @@ -688,44 +445,24 @@ dependencies: tslib "^2.5.0" -"@aws-sdk/util-middleware@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-middleware/-/util-middleware-3.329.0.tgz#0d4056c8479d80760778928e807ff74c57fcead3" - integrity sha512-RhBOBaxzkTUghi4MSqr8S5qeeBCjgJ0XPJ6jIYkVkj1saCmqkuZCgl3zFaYdyhdxxPV6nflkFer+1HUoqT+Fqw== +"@aws-sdk/util-user-agent-browser@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.370.0.tgz#df144f5f1a65578842b79d49555c754a531d85f0" + integrity sha512-028LxYZMQ0DANKhW+AKFQslkScZUeYlPmSphrCIXgdIItRZh6ZJHGzE7J/jDsEntZOrZJsjI4z0zZ5W2idj04w== dependencies: - tslib "^2.5.0" - -"@aws-sdk/util-retry@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-retry/-/util-retry-3.329.0.tgz#20b71504dd907e70a457cd56dcd131d08d6de39c" - integrity sha512-+3VQ9HZLinysnmryUs9Xjt1YVh4TYYHLt30ilu4iUnIHFQoamdzIbRCWseSVFPCxGroen9M9qmAleAsytHEKuA== - dependencies: - "@aws-sdk/service-error-classification" "3.329.0" - tslib "^2.5.0" - -"@aws-sdk/util-uri-escape@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.310.0.tgz#9f942f09a715d8278875013a416295746b6085ba" - integrity sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q== - dependencies: - tslib "^2.5.0" - -"@aws-sdk/util-user-agent-browser@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.329.0.tgz#6c3353a68f5d3d420156fabdcfab3bf4160f383b" - integrity sha512-8hLSmMCl8aw2++0Zuba8ELq8FkK6/VNyx470St201IpMn2GMbQMDl/rLolRKiTgji6wc+T3pOTidkJkz8/cIXA== - dependencies: - "@aws-sdk/types" "3.329.0" + "@aws-sdk/types" "3.370.0" + "@smithy/types" "^1.1.0" bowser "^2.11.0" tslib "^2.5.0" -"@aws-sdk/util-user-agent-node@3.329.0": - version "3.329.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.329.0.tgz#eb0930a1f3315fa6ea6f72e4007bbfce1202a3e5" - integrity sha512-C50Zaeodc0+psEP+L4WpElrH8epuLWJPVN4hDOTORcM0cSoU2o025Ost9mbcU7UdoHNxF9vitLnzORGN9SHolg== +"@aws-sdk/util-user-agent-node@3.370.0": + version "3.370.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.370.0.tgz#96d8420b42cbebd498de8b94886340d11c97a34b" + integrity sha512-33vxZUp8vxTT/DGYIR3PivQm07sSRGWI+4fCv63Rt7Q++fO24E0kQtmVAlikRY810I10poD6rwILVtITtFSzkg== dependencies: - "@aws-sdk/node-config-provider" "3.329.0" - "@aws-sdk/types" "3.329.0" + "@aws-sdk/types" "3.370.0" + "@smithy/node-config-provider" "^1.0.1" + "@smithy/types" "^1.1.0" tslib "^2.5.0" "@aws-sdk/util-utf8-browser@^3.0.0": @@ -735,165 +472,154 @@ dependencies: tslib "^2.3.1" -"@aws-sdk/util-utf8@3.310.0": - version "3.310.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8/-/util-utf8-3.310.0.tgz#4a7b9dcebb88e830d3811aeb21e9a6df4273afb4" - integrity sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" + integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ== dependencies: - "@aws-sdk/util-buffer-from" "3.310.0" - tslib "^2.5.0" + "@babel/highlight" "^7.22.5" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" - integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/compat-data@^7.21.5": - version "7.21.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.7.tgz#61caffb60776e49a57ba61a88f02bedd8714f6bc" - integrity sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA== +"@babel/compat-data@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" + integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== "@babel/core@^7.11.6", "@babel/core@^7.12.3": - version "7.21.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.8.tgz#2a8c7f0f53d60100ba4c32470ba0281c92aa9aa4" - integrity sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ== + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.9.tgz#bd96492c68822198f33e8a256061da3cf391f58f" + integrity sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.21.4" - "@babel/generator" "^7.21.5" - "@babel/helper-compilation-targets" "^7.21.5" - "@babel/helper-module-transforms" "^7.21.5" - "@babel/helpers" "^7.21.5" - "@babel/parser" "^7.21.8" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.5" - "@babel/types" "^7.21.5" + "@babel/code-frame" "^7.22.5" + "@babel/generator" "^7.22.9" + "@babel/helper-compilation-targets" "^7.22.9" + "@babel/helper-module-transforms" "^7.22.9" + "@babel/helpers" "^7.22.6" + "@babel/parser" "^7.22.7" + "@babel/template" "^7.22.5" + "@babel/traverse" "^7.22.8" + "@babel/types" "^7.22.5" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.2" - semver "^6.3.0" + semver "^6.3.1" -"@babel/generator@^7.21.5", "@babel/generator@^7.7.2": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.5.tgz#c0c0e5449504c7b7de8236d99338c3e2a340745f" - integrity sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w== +"@babel/generator@^7.22.7", "@babel/generator@^7.22.9", "@babel/generator@^7.7.2": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.9.tgz#572ecfa7a31002fa1de2a9d91621fd895da8493d" + integrity sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw== dependencies: - "@babel/types" "^7.21.5" + "@babel/types" "^7.22.5" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" -"@babel/helper-compilation-targets@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz#631e6cc784c7b660417421349aac304c94115366" - integrity sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w== +"@babel/helper-compilation-targets@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz#f9d0a7aaaa7cd32a3f31c9316a69f5a9bcacb892" + integrity sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw== dependencies: - "@babel/compat-data" "^7.21.5" - "@babel/helper-validator-option" "^7.21.0" - browserslist "^4.21.3" + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.5" + browserslist "^4.21.9" lru-cache "^5.1.1" - semver "^6.3.0" + semver "^6.3.1" -"@babel/helper-environment-visitor@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz#c769afefd41d171836f7cb63e295bedf689d48ba" - integrity sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ== +"@babel/helper-environment-visitor@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" + integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== -"@babel/helper-function-name@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" - integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== +"@babel/helper-function-name@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" + integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== dependencies: - "@babel/template" "^7.20.7" - "@babel/types" "^7.21.0" + "@babel/template" "^7.22.5" + "@babel/types" "^7.22.5" -"@babel/helper-hoist-variables@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" - integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== dependencies: - "@babel/types" "^7.18.6" + "@babel/types" "^7.22.5" -"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.21.4": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" - integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== +"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" + integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== dependencies: - "@babel/types" "^7.21.4" + "@babel/types" "^7.22.5" -"@babel/helper-module-transforms@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz#d937c82e9af68d31ab49039136a222b17ac0b420" - integrity sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw== +"@babel/helper-module-transforms@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" + integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ== dependencies: - "@babel/helper-environment-visitor" "^7.21.5" - "@babel/helper-module-imports" "^7.21.4" - "@babel/helper-simple-access" "^7.21.5" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.19.1" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.5" - "@babel/types" "^7.21.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.5" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz#345f2377d05a720a4e5ecfa39cbf4474a4daed56" - integrity sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== -"@babel/helper-simple-access@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz#d697a7971a5c39eac32c7e63c0921c06c8a249ee" - integrity sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg== +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== dependencies: - "@babel/types" "^7.21.5" + "@babel/types" "^7.22.5" -"@babel/helper-split-export-declaration@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" - integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== dependencies: - "@babel/types" "^7.18.6" + "@babel/types" "^7.22.5" -"@babel/helper-string-parser@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz#2b3eea65443c6bdc31c22d037c65f6d323b6b2bd" - integrity sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w== +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== -"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== +"@babel/helper-validator-identifier@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" + integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== -"@babel/helper-validator-option@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" - integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== +"@babel/helper-validator-option@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" + integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== -"@babel/helpers@^7.21.5": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.5.tgz#5bac66e084d7a4d2d9696bdf0175a93f7fb63c08" - integrity sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA== +"@babel/helpers@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.6.tgz#8e61d3395a4f0c5a8060f309fb008200969b5ecd" + integrity sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA== dependencies: - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.5" - "@babel/types" "^7.21.5" + "@babel/template" "^7.22.5" + "@babel/traverse" "^7.22.6" + "@babel/types" "^7.22.5" -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== +"@babel/highlight@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031" + integrity sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw== dependencies: - "@babel/helper-validator-identifier" "^7.18.6" + "@babel/helper-validator-identifier" "^7.22.5" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.5", "@babel/parser@^7.21.8": - version "7.21.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.8.tgz#642af7d0333eab9c0ad70b14ac5e76dbde7bfdf8" - integrity sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7": + version "7.22.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" + integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -931,11 +657,11 @@ "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.7.2": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz#f264ed7bf40ffc9ec239edabc17a50c4f5b6fea2" - integrity sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ== + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" + integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" @@ -987,51 +713,51 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.7.2": - version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz#2751948e9b7c6d771a8efa59340c15d4a2891ff8" - integrity sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA== + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" + integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-plugin-utils" "^7.22.5" "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.19.0", "@babel/runtime@^7.20.6", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200" - integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q== + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438" + integrity sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ== dependencies: regenerator-runtime "^0.13.11" -"@babel/template@^7.20.7", "@babel/template@^7.3.3": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" - integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== +"@babel/template@^7.22.5", "@babel/template@^7.3.3": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" + integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" + "@babel/code-frame" "^7.22.5" + "@babel/parser" "^7.22.5" + "@babel/types" "^7.22.5" -"@babel/traverse@^7.21.5", "@babel/traverse@^7.7.2": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.5.tgz#ad22361d352a5154b498299d523cf72998a4b133" - integrity sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw== +"@babel/traverse@^7.22.6", "@babel/traverse@^7.22.8": + version "7.22.8" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.8.tgz#4d4451d31bc34efeae01eac222b514a77aa4000e" + integrity sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw== dependencies: - "@babel/code-frame" "^7.21.4" - "@babel/generator" "^7.21.5" - "@babel/helper-environment-visitor" "^7.21.5" - "@babel/helper-function-name" "^7.21.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.21.5" - "@babel/types" "^7.21.5" + "@babel/code-frame" "^7.22.5" + "@babel/generator" "^7.22.7" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.22.7" + "@babel/types" "^7.22.5" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3": - version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6" - integrity sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.3.3": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" + integrity sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA== dependencies: - "@babel/helper-string-parser" "^7.21.5" - "@babel/helper-validator-identifier" "^7.19.1" + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.5" to-fast-properties "^2.0.0" "@bcherny/json-schema-ref-parser@9.0.9": @@ -1239,9 +965,9 @@ stylis "4.2.0" "@emotion/css@^11.10.5": - version "11.11.0" - resolved "https://registry.yarnpkg.com/@emotion/css/-/css-11.11.0.tgz#dad6a27a77d5e5cbb0287674c3ace76d762563ca" - integrity sha512-m4g6nKzZyiKyJ3WOfdwrBdcujVcpaScIWHAnyNKPm/A/xJKwfXPfQAbEVi1kgexWTDakmg+r2aDj0KvnMTo4oQ== + version "11.11.2" + resolved "https://registry.yarnpkg.com/@emotion/css/-/css-11.11.2.tgz#e5fa081d0c6e335352e1bc2b05953b61832dca5a" + integrity sha512-VJxe1ucoMYMS7DkiMdC2T7PWNbrEI0a39YRiyDvK2qq4lXwjRbVP/z4lpG+odCsRzadlR+1ywwrTzhdm5HNdew== dependencies: "@emotion/babel-plugin" "^11.11.0" "@emotion/cache" "^11.11.0" @@ -1260,9 +986,9 @@ integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== "@emotion/react@^11.8.1": - version "11.11.0" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.0.tgz#408196b7ef8729d8ad08fc061b03b046d1460e02" - integrity sha512-ZSK3ZJsNkwfjT3JpDAWJZlrGD81Z3ytNDsxw1LKq1o+xkmO5pnWfr6gmCC8gHEFf3nSSX/09YrG67jybNPxSUw== + version "11.11.1" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.1.tgz#b2c36afac95b184f73b08da8c214fdf861fa4157" + integrity sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA== dependencies: "@babel/runtime" "^7.18.3" "@emotion/babel-plugin" "^11.11.0" @@ -1321,14 +1047,14 @@ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ== -"@eslint/eslintrc@^2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.3.tgz#4910db5505f4d503f27774bf356e3704818a0331" - integrity sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ== +"@eslint/eslintrc@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.0.tgz#82256f164cc9e0b59669efc19d57f8092706841d" + integrity sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.5.2" + espree "^9.6.0" globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" @@ -1336,10 +1062,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.40.0": - version "8.40.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.40.0.tgz#3ba73359e11f5a7bd3e407f70b3528abfae69cec" - integrity sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA== +"@eslint/js@8.44.0": + version "8.44.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.44.0.tgz#961a5903c74139390478bdc808bcde3fc45ab7af" + integrity sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw== "@faceless-ui/modal@^2.0.1": version "2.0.1" @@ -1361,17 +1087,17 @@ resolved "https://registry.yarnpkg.com/@faceless-ui/window-info/-/window-info-2.1.1.tgz#ed1474a60ab794295bca4c29e295b1e11a584d22" integrity sha512-gMAgda7beR4CNpBIXjgRVn97ek0LG3PAj9lxmoYdg574IEzLFZAh3eAYtTaS2XLKgb4+IHhsuBzlGmHbeOo2Aw== -"@floating-ui/core@^1.2.6": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.2.6.tgz#d21ace437cc919cdd8f1640302fa8851e65e75c0" - integrity sha512-EvYTiXet5XqweYGClEmpu3BoxmsQ4hkj3QaYA6qEnigCWffTP3vNRwBReTdrwDwo7OoJ3wM8Uoe9Uk4n+d4hfg== +"@floating-ui/core@^1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.3.1.tgz#4d795b649cc3b1cbb760d191c80dcb4353c9a366" + integrity sha512-Bu+AMaXNjrpjh41znzHqaz3r2Nr8hHuHZT6V2LBKMhyMl0FgKA62PNYbqnfgmzOhoWZj70Zecisbo4H1rotP5g== "@floating-ui/dom@^1.0.1": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.2.8.tgz#aee0f6ccc0787ab8fe741487a6e5e95b7b125375" - integrity sha512-XLwhYV90MxiHDq6S0rzFZj00fnDM+A1R9jhSioZoMsa7G0Q0i+Q4x40ajR8FHSdYDE1bgjG45mIWe6jtv9UPmg== + version "1.4.5" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.4.5.tgz#336dfb9870c98b471ff5802002982e489b8bd1c5" + integrity sha512-96KnRWkRnuBSSFbj0sFGwwOUd8EkiecINVl0O9wiZlZ64EkpyAOG3Xc2vKKNJmru0Z7RqWNymA+6b8OZqjgyyw== dependencies: - "@floating-ui/core" "^1.2.6" + "@floating-ui/core" "^1.3.1" "@hapi/hoek@^9.0.0": version "9.3.0" @@ -1385,10 +1111,10 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@humanwhocodes/config-array@^0.11.8": - version "0.11.8" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" - integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== +"@humanwhocodes/config-array@^0.11.10": + version "0.11.10" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" + integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ== dependencies: "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" @@ -1430,28 +1156,28 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.5.0.tgz#593a6c5c0d3f75689835f1b3b4688c4f8544cb57" - integrity sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ== +"@jest/console@^29.6.1": + version "29.6.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.6.1.tgz#b48ba7b9c34b51483e6d590f46e5837f1ab5f639" + integrity sha512-Aj772AYgwTSr5w8qnyoJ0eDYvN6bMsH3ORH1ivMotrInHLKdUz6BDlaEXHdM6kODaBIkNIyQGzsMvRdOv7VG7Q== dependencies: - "@jest/types" "^29.5.0" + "@jest/types" "^29.6.1" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^29.5.0" - jest-util "^29.5.0" + jest-message-util "^29.6.1" + jest-util "^29.6.1" slash "^3.0.0" -"@jest/core@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.5.0.tgz#76674b96904484e8214614d17261cc491e5f1f03" - integrity sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ== +"@jest/core@^29.6.1": + version "29.6.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.6.1.tgz#fac0d9ddf320490c93356ba201451825231e95f6" + integrity sha512-CcowHypRSm5oYQ1obz1wfvkjZZ2qoQlrKKvlfPwh5jUXVU12TWr2qMeH8chLMuTFzHh5a1g2yaqlqDICbr+ukQ== dependencies: - "@jest/console" "^29.5.0" - "@jest/reporters" "^29.5.0" - "@jest/test-result" "^29.5.0" - "@jest/transform" "^29.5.0" - "@jest/types" "^29.5.0" + "@jest/console" "^29.6.1" + "@jest/reporters" "^29.6.1" + "@jest/test-result" "^29.6.1" + "@jest/transform" "^29.6.1" + "@jest/types" "^29.6.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" @@ -1459,20 +1185,20 @@ exit "^0.1.2" graceful-fs "^4.2.9" jest-changed-files "^29.5.0" - jest-config "^29.5.0" - jest-haste-map "^29.5.0" - jest-message-util "^29.5.0" + jest-config "^29.6.1" + jest-haste-map "^29.6.1" + jest-message-util "^29.6.1" jest-regex-util "^29.4.3" - jest-resolve "^29.5.0" - jest-resolve-dependencies "^29.5.0" - jest-runner "^29.5.0" - jest-runtime "^29.5.0" - jest-snapshot "^29.5.0" - jest-util "^29.5.0" - jest-validate "^29.5.0" - jest-watcher "^29.5.0" + jest-resolve "^29.6.1" + jest-resolve-dependencies "^29.6.1" + jest-runner "^29.6.1" + jest-runtime "^29.6.1" + jest-snapshot "^29.6.1" + jest-util "^29.6.1" + jest-validate "^29.6.1" + jest-watcher "^29.6.1" micromatch "^4.0.4" - pretty-format "^29.5.0" + pretty-format "^29.6.1" slash "^3.0.0" strip-ansi "^6.0.0" @@ -1483,64 +1209,64 @@ dependencies: "@jest/types" "^27.5.1" -"@jest/environment@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.5.0.tgz#9152d56317c1fdb1af389c46640ba74ef0bb4c65" - integrity sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ== +"@jest/environment@^29.6.1": + version "29.6.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.6.1.tgz#ee358fff2f68168394b4a50f18c68278a21fe82f" + integrity sha512-RMMXx4ws+Gbvw3DfLSuo2cfQlK7IwGbpuEWXCqyYDcqYTI+9Ju3a5hDnXaxjNsa6uKh9PQF2v+qg+RLe63tz5A== dependencies: - "@jest/fake-timers" "^29.5.0" - "@jest/types" "^29.5.0" + "@jest/fake-timers" "^29.6.1" + "@jest/types" "^29.6.1" "@types/node" "*" - jest-mock "^29.5.0" + jest-mock "^29.6.1" -"@jest/expect-utils@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.5.0.tgz#f74fad6b6e20f924582dc8ecbf2cb800fe43a036" - integrity sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg== +"@jest/expect-utils@^29.6.1": + version "29.6.1" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.6.1.tgz#ab83b27a15cdd203fe5f68230ea22767d5c3acc5" + integrity sha512-o319vIf5pEMx0LmzSxxkYYxo4wrRLKHq9dP1yJU7FoPTB0LfAKSz8SWD6D/6U3v/O52t9cF5t+MeJiRsfk7zMw== dependencies: jest-get-type "^29.4.3" -"@jest/expect@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.5.0.tgz#80952f5316b23c483fbca4363ce822af79c38fba" - integrity sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g== +"@jest/expect@^29.6.1": + version "29.6.1" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.6.1.tgz#fef18265188f6a97601f1ea0a2912d81a85b4657" + integrity sha512-N5xlPrAYaRNyFgVf2s9Uyyvr795jnB6rObuPx4QFvNJz8aAjpZUDfO4bh5G/xuplMID8PrnuF1+SfSyDxhsgYg== dependencies: - expect "^29.5.0" - jest-snapshot "^29.5.0" + expect "^29.6.1" + jest-snapshot "^29.6.1" -"@jest/fake-timers@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.5.0.tgz#d4d09ec3286b3d90c60bdcd66ed28d35f1b4dc2c" - integrity sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg== +"@jest/fake-timers@^29.6.1": + version "29.6.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.6.1.tgz#c773efddbc61e1d2efcccac008139f621de57c69" + integrity sha512-RdgHgbXyosCDMVYmj7lLpUwXA4c69vcNzhrt69dJJdf8azUrpRh3ckFCaTPNjsEeRi27Cig0oKDGxy5j7hOgHg== dependencies: - "@jest/types" "^29.5.0" + "@jest/types" "^29.6.1" "@sinonjs/fake-timers" "^10.0.2" "@types/node" "*" - jest-message-util "^29.5.0" - jest-mock "^29.5.0" - jest-util "^29.5.0" + jest-message-util "^29.6.1" + jest-mock "^29.6.1" + jest-util "^29.6.1" -"@jest/globals@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.5.0.tgz#6166c0bfc374c58268677539d0c181f9c1833298" - integrity sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ== +"@jest/globals@^29.6.1": + version "29.6.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.6.1.tgz#c8a8923e05efd757308082cc22893d82b8aa138f" + integrity sha512-2VjpaGy78JY9n9370H8zGRCFbYVWwjY6RdDMhoJHa1sYfwe6XM/azGN0SjY8kk7BOZApIejQ1BFPyH7FPG0w3A== dependencies: - "@jest/environment" "^29.5.0" - "@jest/expect" "^29.5.0" - "@jest/types" "^29.5.0" - jest-mock "^29.5.0" + "@jest/environment" "^29.6.1" + "@jest/expect" "^29.6.1" + "@jest/types" "^29.6.1" + jest-mock "^29.6.1" -"@jest/reporters@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.5.0.tgz#985dfd91290cd78ddae4914ba7921bcbabe8ac9b" - integrity sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA== +"@jest/reporters@^29.6.1": + version "29.6.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.6.1.tgz#3325a89c9ead3cf97ad93df3a427549d16179863" + integrity sha512-9zuaI9QKr9JnoZtFQlw4GREQbxgmNYXU6QuWtmuODvk5nvPUeBYapVR/VYMyi2WSx3jXTLJTJji8rN6+Cm4+FA== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.5.0" - "@jest/test-result" "^29.5.0" - "@jest/transform" "^29.5.0" - "@jest/types" "^29.5.0" - "@jridgewell/trace-mapping" "^0.3.15" + "@jest/console" "^29.6.1" + "@jest/test-result" "^29.6.1" + "@jest/transform" "^29.6.1" + "@jest/types" "^29.6.1" + "@jridgewell/trace-mapping" "^0.3.18" "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" @@ -1552,66 +1278,66 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-message-util "^29.5.0" - jest-util "^29.5.0" - jest-worker "^29.5.0" + jest-message-util "^29.6.1" + jest-util "^29.6.1" + jest-worker "^29.6.1" slash "^3.0.0" string-length "^4.0.1" strip-ansi "^6.0.0" v8-to-istanbul "^9.0.1" -"@jest/schemas@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" - integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== +"@jest/schemas@^29.6.0": + version "29.6.0" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.0.tgz#0f4cb2c8e3dca80c135507ba5635a4fd755b0040" + integrity sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ== dependencies: - "@sinclair/typebox" "^0.25.16" + "@sinclair/typebox" "^0.27.8" -"@jest/source-map@^29.4.3": - version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.4.3.tgz#ff8d05cbfff875d4a791ab679b4333df47951d20" - integrity sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w== +"@jest/source-map@^29.6.0": + version "29.6.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.0.tgz#bd34a05b5737cb1a99d43e1957020ac8e5b9ddb1" + integrity sha512-oA+I2SHHQGxDCZpbrsCQSoMLb3Bz547JnM+jUr9qEbuw0vQlWZfpPS7CO9J7XiwKicEz9OFn/IYoLkkiUD7bzA== dependencies: - "@jridgewell/trace-mapping" "^0.3.15" + "@jridgewell/trace-mapping" "^0.3.18" callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.5.0.tgz#7c856a6ca84f45cc36926a4e9c6b57f1973f1408" - integrity sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ== +"@jest/test-result@^29.6.1": + version "29.6.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.6.1.tgz#850e565a3f58ee8ca6ec424db00cb0f2d83c36ba" + integrity sha512-Ynr13ZRcpX6INak0TPUukU8GWRfm/vAytE3JbJNGAvINySWYdfE7dGZMbk36oVuK4CigpbhMn8eg1dixZ7ZJOw== dependencies: - "@jest/console" "^29.5.0" - "@jest/types" "^29.5.0" + "@jest/console" "^29.6.1" + "@jest/types" "^29.6.1" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz#34d7d82d3081abd523dbddc038a3ddcb9f6d3cc4" - integrity sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ== +"@jest/test-sequencer@^29.6.1": + version "29.6.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.6.1.tgz#e3e582ee074dd24ea9687d7d1aaf05ee3a9b068e" + integrity sha512-oBkC36PCDf/wb6dWeQIhaviU0l5u6VCsXa119yqdUosYAt7/FbQU2M2UoziO3igj/HBDEgp57ONQ3fm0v9uyyg== dependencies: - "@jest/test-result" "^29.5.0" + "@jest/test-result" "^29.6.1" graceful-fs "^4.2.9" - jest-haste-map "^29.5.0" + jest-haste-map "^29.6.1" slash "^3.0.0" -"@jest/transform@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.5.0.tgz#cf9c872d0965f0cbd32f1458aa44a2b1988b00f9" - integrity sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw== +"@jest/transform@^29.6.1": + version "29.6.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.6.1.tgz#acb5606019a197cb99beda3c05404b851f441c92" + integrity sha512-URnTneIU3ZjRSaf906cvf6Hpox3hIeJXRnz3VDSw5/X93gR8ycdfSIEy19FlVx8NFmpN7fe3Gb1xF+NjXaQLWg== dependencies: "@babel/core" "^7.11.6" - "@jest/types" "^29.5.0" - "@jridgewell/trace-mapping" "^0.3.15" + "@jest/types" "^29.6.1" + "@jridgewell/trace-mapping" "^0.3.18" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^2.0.0" fast-json-stable-stringify "^2.1.0" graceful-fs "^4.2.9" - jest-haste-map "^29.5.0" + jest-haste-map "^29.6.1" jest-regex-util "^29.4.3" - jest-util "^29.5.0" + jest-util "^29.6.1" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" @@ -1639,12 +1365,12 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jest/types@^29.5.0": - version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593" - integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog== +"@jest/types@^29.6.1": + version "29.6.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.1.tgz#ae79080278acff0a6af5eb49d063385aaa897bf2" + integrity sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw== dependencies: - "@jest/schemas" "^29.4.3" + "@jest/schemas" "^29.6.0" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" @@ -1675,10 +1401,10 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jridgewell/source-map@^0.3.2": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.3.tgz#8108265659d4c33e72ffe14e33d6cc5eb59f2fda" - integrity sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg== +"@jridgewell/source-map@^0.3.3": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" + integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== dependencies: "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" @@ -1701,7 +1427,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": version "0.3.18" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== @@ -1755,16 +1481,14 @@ fastq "^1.6.0" "@octokit/auth-token@^3.0.0": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.3.tgz#ce7e48a3166731f26068d7a7a7996b5da58cbe0c" - integrity sha512-/aFM2M4HVDBT/jjDBa84sJniv1t9Gm/rLkalaz9htOm+L+8JMj1k9w0CkUdcxNyNxZPlTxKPVko+m1VlM58ZVA== - dependencies: - "@octokit/types" "^9.0.0" + version "3.0.4" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.4.tgz#70e941ba742bdd2b49bdb7393e821dea8520a3db" + integrity sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ== -"@octokit/core@^4.1.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.2.0.tgz#8c253ba9605aca605bc46187c34fcccae6a96648" - integrity sha512-AgvDRUg3COpR82P7PBdGZF/NNqGmtMq2NiPqeSsDIeCfYFOZ9gddqWNQHnFdEUf+YwOj4aZYmJnlPp7OXmDIDg== +"@octokit/core@^4.2.1": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.2.4.tgz#d8769ec2b43ff37cc3ea89ec4681a20ba58ef907" + integrity sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ== dependencies: "@octokit/auth-token" "^3.0.0" "@octokit/graphql" "^5.0.0" @@ -1775,47 +1499,47 @@ universal-user-agent "^6.0.0" "@octokit/endpoint@^7.0.0": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.5.tgz#2bb2a911c12c50f10014183f5d596ce30ac67dd1" - integrity sha512-LG4o4HMY1Xoaec87IqQ41TQ+glvIeTKqfjkCEmt5AIwDZJwQeVZFIEYXrYY6yLwK+pAScb9Gj4q+Nz2qSw1roA== + version "7.0.6" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.6.tgz#791f65d3937555141fb6c08f91d618a7d645f1e2" + integrity sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg== dependencies: "@octokit/types" "^9.0.0" is-plain-object "^5.0.0" universal-user-agent "^6.0.0" "@octokit/graphql@^5.0.0": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.5.tgz#a4cb3ea73f83b861893a6370ee82abb36e81afd2" - integrity sha512-Qwfvh3xdqKtIznjX9lz2D458r7dJPP8l6r4GQkIdWQouZwHQK0mVT88uwiU2bdTU2OtT1uOlKpRciUWldpG0yQ== + version "5.0.6" + resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.6.tgz#9eac411ac4353ccc5d3fca7d76736e6888c5d248" + integrity sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw== dependencies: "@octokit/request" "^6.0.0" "@octokit/types" "^9.0.0" universal-user-agent "^6.0.0" -"@octokit/openapi-types@^17.1.2": - version "17.2.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-17.2.0.tgz#f1800b5f9652b8e1b85cc6dfb1e0dc888810bdb5" - integrity sha512-MazrFNx4plbLsGl+LFesMo96eIXkFgEtaKbnNpdh4aQ0VM10aoylFsTYP1AEjkeoRNZiiPe3T6Gl2Hr8dJWdlQ== +"@octokit/openapi-types@^18.0.0": + version "18.0.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-18.0.0.tgz#f43d765b3c7533fd6fb88f3f25df079c24fccf69" + integrity sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw== -"@octokit/plugin-paginate-rest@^6.0.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.0.tgz#3522ef5c2712436332655085b197eafe4ac7afc4" - integrity sha512-5T4iXjJdYCVA1rdWS1C+uZV9AvtZY9QgTG74kFiSFVj94dZXowyi/YK8f4SGjZaL69jZthGlBaDKRdCMCF9log== +"@octokit/plugin-paginate-rest@^6.1.2": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.2.tgz#f86456a7a1fe9e58fec6385a85cf1b34072341f8" + integrity sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ== dependencies: - "@octokit/types" "^9.2.2" + "@octokit/tsconfig" "^1.0.2" + "@octokit/types" "^9.2.3" "@octokit/plugin-request-log@^1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== -"@octokit/plugin-rest-endpoint-methods@^7.0.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.1.0.tgz#7f3f4fac10bf72f8c5cd0c343252cd5f73dbf2d8" - integrity sha512-SWwz/hc47GaKJR6BlJI4WIVRodbAFRvrR0QRPSoPMs7krb7anYPML3psg+ThEz/kcwOdSNh/oA8qThi/Wvs4Fw== +"@octokit/plugin-rest-endpoint-methods@^7.1.2": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.2.3.tgz#37a84b171a6cb6658816c82c4082ac3512021797" + integrity sha512-I5Gml6kTAkzVlN7KCtjOM+Ruwe/rQppp0QU372K1GP7kNOYEKe8Xn5BW4sE62JAHdwpq95OQK/qGNyKQMUzVgA== dependencies: - "@octokit/types" "^9.2.2" - deprecation "^2.3.1" + "@octokit/types" "^10.0.0" "@octokit/request-error@^3.0.0": version "3.0.3" @@ -1827,9 +1551,9 @@ once "^1.4.0" "@octokit/request@^6.0.0": - version "6.2.4" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.4.tgz#b00a7185865c72bdd432e63168b1e900953ded0c" - integrity sha512-at92SYQstwh7HH6+Kf3bFMnHrle7aIrC0r5rTP+Bb30118B6j1vI2/M4walh6qcQgfuLIKs8NUO5CytHTnUI3A== + version "6.2.8" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.8.tgz#aaf480b32ab2b210e9dadd8271d187c93171d8eb" + integrity sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw== dependencies: "@octokit/endpoint" "^7.0.0" "@octokit/request-error" "^3.0.0" @@ -1838,22 +1562,34 @@ node-fetch "^2.6.7" universal-user-agent "^6.0.0" -"@octokit/rest@19.0.7": - version "19.0.7" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-19.0.7.tgz#d2e21b4995ab96ae5bfae50b4969da7e04e0bb70" - integrity sha512-HRtSfjrWmWVNp2uAkEpQnuGMJsu/+dBr47dRc5QVgsCbnIc1+GFEaoKBWkYG+zjrsHpSqcAElMio+n10c0b5JA== +"@octokit/rest@19.0.11": + version "19.0.11" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-19.0.11.tgz#2ae01634fed4bd1fca5b642767205ed3fd36177c" + integrity sha512-m2a9VhaP5/tUw8FwfnW2ICXlXpLPIqxtg3XcAiGMLj/Xhw3RSBfZ8le/466ktO1Gcjr8oXudGnHhxV1TXJgFxw== dependencies: - "@octokit/core" "^4.1.0" - "@octokit/plugin-paginate-rest" "^6.0.0" + "@octokit/core" "^4.2.1" + "@octokit/plugin-paginate-rest" "^6.1.2" "@octokit/plugin-request-log" "^1.0.4" - "@octokit/plugin-rest-endpoint-methods" "^7.0.0" + "@octokit/plugin-rest-endpoint-methods" "^7.1.2" -"@octokit/types@^9.0.0", "@octokit/types@^9.2.2": - version "9.2.2" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-9.2.2.tgz#d111d33928f288f48083bfe49d8a9a5945e67db1" - integrity sha512-9BjDxjgQIvCjNWZsbqyH5QC2Yni16oaE6xL+8SUBMzcYPF4TGQBXGA97Cl3KceK9mwiNMb1mOYCz6FbCCLEL+g== +"@octokit/tsconfig@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@octokit/tsconfig/-/tsconfig-1.0.2.tgz#59b024d6f3c0ed82f00d08ead5b3750469125af7" + integrity sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA== + +"@octokit/types@^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-10.0.0.tgz#7ee19c464ea4ada306c43f1a45d444000f419a4a" + integrity sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg== dependencies: - "@octokit/openapi-types" "^17.1.2" + "@octokit/openapi-types" "^18.0.0" + +"@octokit/types@^9.0.0", "@octokit/types@^9.2.3": + version "9.3.2" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-9.3.2.tgz#3f5f89903b69f6a2d196d78ec35f888c0013cac5" + integrity sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA== + dependencies: + "@octokit/openapi-types" "^18.0.0" "@playwright/test@1.33.0": version "1.33.0" @@ -1878,9 +1614,9 @@ graceful-fs "4.2.10" "@pnpm/npm-conf@^2.1.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-2.2.0.tgz#221b4cfcde745d5f8928c25f391e5cc9d405b345" - integrity sha512-roLI1ul/GwzwcfcVpZYPdrgW2W/drLriObl1h+yLF5syc8/5ULWw2ALbCHUWF+4YltIqA3xFSbG4IwyJz37e9g== + version "2.2.2" + resolved "https://registry.yarnpkg.com/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz#0058baf1c26cbb63a828f0193795401684ac86f0" + integrity sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA== dependencies: "@pnpm/config.env-replace" "^1.1.0" "@pnpm/network.ca-file" "^1.0.1" @@ -1891,10 +1627,10 @@ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== -"@popperjs/core@^2.9.2": - version "2.11.7" - resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.7.tgz#ccab5c8f7dc557a52ca3288c10075c9ccd37fff7" - integrity sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw== +"@popperjs/core@^2.11.8", "@popperjs/core@^2.9.2": + version "2.11.8" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" + integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== "@release-it/conventional-changelog@^5.1.1": version "5.1.1" @@ -1923,15 +1659,15 @@ resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== -"@sinclair/typebox@^0.25.16": - version "0.25.24" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" - integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== "@sindresorhus/is@^5.2.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.3.0.tgz#0ec9264cf54a527671d990eb874e030b55b70dcc" - integrity sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw== + version "5.5.2" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-5.5.2.tgz#cbfd816d556b941f65d32cfc6d708359b826e7ea" + integrity sha512-8ZMK+V6YpeZFfW6hU9uAeWVuq8v3t7BaG276gIO+kVqnAcLrHCXdFUOf7kgouyfAarkZtuavIqY3RsXTsTWviw== "@sinonjs/commons@^3.0.0": version "3.0.0" @@ -1941,82 +1677,422 @@ type-detect "4.0.8" "@sinonjs/fake-timers@^10.0.2": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.1.0.tgz#3595e42b3f0a7df80a9681cf58d8cb418eac1e99" - integrity sha512-w1qd368vtrwttm1PRJWPW1QHlbmHrVDGs1eBH/jZvRPUFS4MNXV9Q33EQdjOdeAxZ7O8+3wM7zxztm2nfUSyKw== + version "10.3.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== dependencies: "@sinonjs/commons" "^3.0.0" -"@swc/core-darwin-arm64@1.3.58": - version "1.3.58" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.58.tgz#0d87c46a0d18ded014a8b3c212cc3303f0f9f44a" - integrity sha512-NwX9768gcM4HjBEE+2VCMB+h/5bwNDF4DngOTJa9w02l3AwGZXWE66X4ulJQ3Oxv8EAz1nzWb8lbi3XT+WCtmQ== +"@smithy/abort-controller@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-1.0.2.tgz#74caac052ecea15c5460438272ad8d43a6ccbc53" + integrity sha512-tb2h0b+JvMee+eAxTmhnyqyNk51UXIK949HnE14lFeezKsVJTB30maan+CO2IMwnig2wVYQH84B5qk6ylmKCuA== + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" -"@swc/core-darwin-x64@1.3.58": - version "1.3.58" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.58.tgz#5c2a73e0e688e3e4d71477994b7aec92ce1ee8fe" - integrity sha512-XUdKXRIu8S7N5kmrtd0Nxf3uPIgZhQbgVHPhkvYH+Qwb+uXsdltKPiRwhvLI9M0yF3fvIrKtGJ8qUJdH5ih4zw== +"@smithy/config-resolver@^1.0.1", "@smithy/config-resolver@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-1.0.2.tgz#d4f556a44292b41b5c067662a4bd5049dea40e35" + integrity sha512-8Bk7CgnVKg1dn5TgnjwPz2ebhxeR7CjGs5yhVYH3S8x0q8yPZZVWwpRIglwXaf5AZBzJlNO1lh+lUhMf2e73zQ== + dependencies: + "@smithy/types" "^1.1.1" + "@smithy/util-config-provider" "^1.0.2" + "@smithy/util-middleware" "^1.0.2" + tslib "^2.5.0" -"@swc/core-linux-arm-gnueabihf@1.3.58": - version "1.3.58" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.58.tgz#0c03afc6cf279562bd53a53e5191ed6608ae4779" - integrity sha512-9M3/5RzjCXnz94a1kxb+0eBzqyZkxzeYTMmvcjIJSy7MVvWNuy0wHuh+x96X/6197g40P9LkzAiZ7q0DvxSPQQ== +"@smithy/credential-provider-imds@^1.0.1", "@smithy/credential-provider-imds@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-1.0.2.tgz#7aa797c0d95448eb3dccb988b40e62db8989576f" + integrity sha512-fLjCya+JOu2gPJpCiwSUyoLvT8JdNJmOaTOkKYBZoGf7CzqR6lluSyI+eboZnl/V0xqcfcqBG4tgqCISmWS3/w== + dependencies: + "@smithy/node-config-provider" "^1.0.2" + "@smithy/property-provider" "^1.0.2" + "@smithy/types" "^1.1.1" + "@smithy/url-parser" "^1.0.2" + tslib "^2.5.0" -"@swc/core-linux-arm64-gnu@1.3.58": - version "1.3.58" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.58.tgz#79797b0ede57803781146ecaa1cf521b979de2e4" - integrity sha512-hRjJIJdnYUAZlUi9ACCrsfS/hSFP4MmZRaUVOlQOif578Rw4kQlxsxFd1Rh1bhzUCid0KyZOyCvRzHSD/2ONgw== +"@smithy/eventstream-codec@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-1.0.2.tgz#06d1b6e2510cb2475a39b3a20b0c75e751917c59" + integrity sha512-eW/XPiLauR1VAgHKxhVvgvHzLROUgTtqat2lgljztbH8uIYWugv7Nz+SgCavB+hWRazv2iYgqrSy74GvxXq/rg== + dependencies: + "@aws-crypto/crc32" "3.0.0" + "@smithy/types" "^1.1.1" + "@smithy/util-hex-encoding" "^1.0.2" + tslib "^2.5.0" -"@swc/core-linux-arm64-musl@1.3.58": - version "1.3.58" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.58.tgz#4de5e07f1a16c0bcd789bf080fe74c164b499ad0" - integrity sha512-3wrqZbRhbTKtxcQebMAMGKtyypL6BQU0OwqzAk4dBIgm9GaH45xu7sH2OekfHMp3vuj4uWuere+tYtr9HU7xcQ== +"@smithy/fetch-http-handler@^1.0.1", "@smithy/fetch-http-handler@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-1.0.2.tgz#4186ee6451de22e867f43c05236dcff43eca6e91" + integrity sha512-kynyofLf62LvR8yYphPPdyHb8fWG3LepFinM/vWUTG2Q1pVpmPCM530ppagp3+q2p+7Ox0UvSqldbKqV/d1BpA== + dependencies: + "@smithy/protocol-http" "^1.1.1" + "@smithy/querystring-builder" "^1.0.2" + "@smithy/types" "^1.1.1" + "@smithy/util-base64" "^1.0.2" + tslib "^2.5.0" -"@swc/core-linux-x64-gnu@1.3.58": - version "1.3.58" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.58.tgz#a924eecc77ef2035c6ff2d58e9631efd28b54027" - integrity sha512-yOI5ucB+8g+gtp4L2AydPBThobZ2I3WR/dU2T+x2DFIE5Qpe/fqt6HPTFb02qmvqvOw36TLT45pRwAe4cY5LAw== +"@smithy/hash-node@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-1.0.2.tgz#dc65203a348d29e45c493ead3e772e4f7dfb5bc0" + integrity sha512-K6PKhcUNrJXtcesyzhIvNlU7drfIU7u+EMQuGmPw6RQDAg/ufUcfKHz4EcUhFAodUmN+rrejhRG9U6wxjeBOQA== + dependencies: + "@smithy/types" "^1.1.1" + "@smithy/util-buffer-from" "^1.0.2" + "@smithy/util-utf8" "^1.0.2" + tslib "^2.5.0" -"@swc/core-linux-x64-musl@1.3.58": - version "1.3.58" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.58.tgz#b5d04049d3b404035cc0a261754d95a938f10323" - integrity sha512-xPwxgPLxSWXsK9Yf792SsUmLKISdShAI9o/Kk6jjv0r7PRBS25hZ5FyOjAb/rMbAzDcmyGKHevKc3TMUPSMjwg== +"@smithy/invalid-dependency@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-1.0.2.tgz#0a9d82d1a14e5bdbdc0bd2cef5f457c85a942920" + integrity sha512-B1Y3Tsa6dfC+Vvb+BJMhTHOfFieeYzY9jWQSTR1vMwKkxsymD0OIAnEw8rD/RiDj/4E4RPGFdx9Mdgnyd6Bv5Q== + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" -"@swc/core-win32-arm64-msvc@1.3.58": - version "1.3.58" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.58.tgz#cb75b087b8a85eca6ef7a9fe22be8e13d91fcb1c" - integrity sha512-HW61trwkYGiaFprc+fJay6IKJ3scdquSdJaXsyumGF+jc/5kokQzNfY+JH6RWpk0/8zHnUWI4e+iNGuMYxYGeA== +"@smithy/is-array-buffer@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-1.0.2.tgz#224702a2364d698f0a36ecb2c240c0c9541ecfb6" + integrity sha512-pkyBnsBRpe+c/6ASavqIMRBdRtZNJEVJOEzhpxZ9JoAXiZYbkfaSMRA/O1dUxGdJ653GHONunnZ4xMo/LJ7utQ== + dependencies: + tslib "^2.5.0" -"@swc/core-win32-ia32-msvc@1.3.58": - version "1.3.58" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.58.tgz#f2cc7a0b451dd283110a7b1f57d3f1675b9f045a" - integrity sha512-nODSJgHCY8GU6qHR9ieoxshaFD5GYGrPen/6VUvQkGwnV/yMI2Yvecgd1vLSUV4v67ZruPhIkP9OJruD+Juwhg== +"@smithy/middleware-content-length@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-1.0.2.tgz#63099f8d01b3419b65e21cfd07b0c2ef47d1f473" + integrity sha512-pa1/SgGIrSmnEr2c9Apw7CdU4l/HW0fK3+LKFCPDYJrzM0JdYpqjQzgxi31P00eAkL0EFBccpus/p1n2GF9urw== + dependencies: + "@smithy/protocol-http" "^1.1.1" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" -"@swc/core-win32-x64-msvc@1.3.58": - version "1.3.58" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.58.tgz#5fb1c9a7b529fbb906868bb48a5545ed444b9ad9" - integrity sha512-If/uQ3MW6Pdtah2FHhfBY2xBdBXBJzOusXpFQAkwNbaxnrJgpqIIxpYphwsJMDQp6ooSS3U90YizW7mJNxb6UA== +"@smithy/middleware-endpoint@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-1.0.3.tgz#ff4b1c0a83eb8d8b8d3937f434a95efbbf43e1cd" + integrity sha512-GsWvTXMFjSgl617PCE2km//kIjjtvMRrR2GAuRDIS9sHiLwmkS46VWaVYy+XE7ubEsEtzZ5yK2e8TKDR6Qr5Lw== + dependencies: + "@smithy/middleware-serde" "^1.0.2" + "@smithy/types" "^1.1.1" + "@smithy/url-parser" "^1.0.2" + "@smithy/util-middleware" "^1.0.2" + tslib "^2.5.0" + +"@smithy/middleware-retry@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-1.0.4.tgz#8e9de0713dac7f7af405477d46bd4525ca7b9ea8" + integrity sha512-G7uRXGFL8c3F7APnoIMTtNAHH8vT4F2qVnAWGAZaervjupaUQuRRHYBLYubK0dWzOZz86BtAXKieJ5p+Ni2Xpg== + dependencies: + "@smithy/protocol-http" "^1.1.1" + "@smithy/service-error-classification" "^1.0.3" + "@smithy/types" "^1.1.1" + "@smithy/util-middleware" "^1.0.2" + "@smithy/util-retry" "^1.0.4" + tslib "^2.5.0" + uuid "^8.3.2" + +"@smithy/middleware-serde@^1.0.1", "@smithy/middleware-serde@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-1.0.2.tgz#87b3a0211602ae991d9b756893eb6bf2e3e5f711" + integrity sha512-T4PcdMZF4xme6koUNfjmSZ1MLi7eoFeYCtodQNQpBNsS77TuJt1A6kt5kP/qxrTvfZHyFlj0AubACoaUqgzPeg== + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/middleware-stack@^1.0.1", "@smithy/middleware-stack@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-1.0.2.tgz#d241082bf3cb315c749dda57e233039a9aed804e" + integrity sha512-H7/uAQEcmO+eDqweEFMJ5YrIpsBwmrXSP6HIIbtxKJSQpAcMGY7KrR2FZgZBi1FMnSUOh+rQrbOyj5HQmSeUBA== + dependencies: + tslib "^2.5.0" + +"@smithy/node-config-provider@^1.0.1", "@smithy/node-config-provider@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-1.0.2.tgz#2d391b96a9e10072e7e0a3698427400f4ef17ec4" + integrity sha512-HU7afWpTToU0wL6KseGDR2zojeyjECQfr8LpjAIeHCYIW7r360ABFf4EaplaJRMVoC3hD9FeltgI3/NtShOqCg== + dependencies: + "@smithy/property-provider" "^1.0.2" + "@smithy/shared-ini-file-loader" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/node-http-handler@^1.0.2", "@smithy/node-http-handler@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-1.0.3.tgz#89b556ca2bdcce7a994a9da1ea265094d76d4791" + integrity sha512-PcPUSzTbIb60VCJCiH0PU0E6bwIekttsIEf5Aoo/M0oTfiqsxHTn0Rcij6QoH6qJy6piGKXzLSegspXg5+Kq6g== + dependencies: + "@smithy/abort-controller" "^1.0.2" + "@smithy/protocol-http" "^1.1.1" + "@smithy/querystring-builder" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/property-provider@^1.0.1", "@smithy/property-provider@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-1.0.2.tgz#f99f104cbd6576c9aca9f56cb72819b4a65208e1" + integrity sha512-pXDPyzKX8opzt38B205kDgaxda6LHcTfPvTYQZnwP6BAPp1o9puiCPjeUtkKck7Z6IbpXCPUmUQnzkUzWTA42Q== + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/protocol-http@^1.1.0", "@smithy/protocol-http@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-1.1.1.tgz#10977cf71631eed4f5ad1845408920238d52cdba" + integrity sha512-mFLFa2sSvlUxm55U7B4YCIsJJIMkA6lHxwwqOaBkral1qxFz97rGffP/mmd4JDuin1EnygiO5eNJGgudiUgmDQ== + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/querystring-builder@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-1.0.2.tgz#ce861f6cbd14792c83aa19b4967a19923bd0706e" + integrity sha512-6P/xANWrtJhMzTPUR87AbXwSBuz1SDHIfL44TFd/GT3hj6rA+IEv7rftEpPjayUiWRocaNnrCPLvmP31mobOyA== + dependencies: + "@smithy/types" "^1.1.1" + "@smithy/util-uri-escape" "^1.0.2" + tslib "^2.5.0" + +"@smithy/querystring-parser@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-1.0.2.tgz#559d09c46b21e6fbda71e95deda4bcd8a46bdecc" + integrity sha512-IWxwxjn+KHWRRRB+K2Ngl+plTwo2WSgc2w+DvLy0DQZJh9UGOpw40d6q97/63GBlXIt4TEt5NbcFrO30CKlrsA== + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/service-error-classification@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-1.0.3.tgz#c620c1562610d3351985eb6dd04262ca2657ae67" + integrity sha512-2eglIYqrtcUnuI71yweu7rSfCgt6kVvRVf0C72VUqrd0LrV1M0BM0eYN+nitp2CHPSdmMI96pi+dU9U/UqAMSA== + +"@smithy/shared-ini-file-loader@^1.0.1", "@smithy/shared-ini-file-loader@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-1.0.2.tgz#c6e79991d87925bd18e0adae00c97da6c8ecae1e" + integrity sha512-bdQj95VN+lCXki+P3EsDyrkpeLn8xDYiOISBGnUG/AGPYJXN8dmp4EhRRR7XOoLoSs8anZHR4UcGEOzFv2jwGw== + dependencies: + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/signature-v4@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-1.0.2.tgz#3a7b10ac66c337b404aa061e5f268f0550729680" + integrity sha512-rpKUhmCuPmpV5dloUkOb9w1oBnJatvKQEjIHGmkjRGZnC3437MTdzWej9TxkagcZ8NRRJavYnEUixzxM1amFig== + dependencies: + "@smithy/eventstream-codec" "^1.0.2" + "@smithy/is-array-buffer" "^1.0.2" + "@smithy/types" "^1.1.1" + "@smithy/util-hex-encoding" "^1.0.2" + "@smithy/util-middleware" "^1.0.2" + "@smithy/util-uri-escape" "^1.0.2" + "@smithy/util-utf8" "^1.0.2" + tslib "^2.5.0" + +"@smithy/smithy-client@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-1.0.4.tgz#96d03d123d117a637c679a79bb8eae96e3857bd9" + integrity sha512-gpo0Xl5Nyp9sgymEfpt7oa9P2q/GlM3VmQIdm+FeH0QEdYOQx3OtvwVmBYAMv2FIPWxkMZlsPYRTnEiBTK5TYg== + dependencies: + "@smithy/middleware-stack" "^1.0.2" + "@smithy/types" "^1.1.1" + "@smithy/util-stream" "^1.0.2" + tslib "^2.5.0" + +"@smithy/types@^1.1.0", "@smithy/types@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-1.1.1.tgz#949394a22e13e7077471bae0d18c146e5f62c456" + integrity sha512-tMpkreknl2gRrniHeBtdgQwaOlo39df8RxSrwsHVNIGXULy5XP6KqgScUw2m12D15wnJCKWxVhCX+wbrBW/y7g== + dependencies: + tslib "^2.5.0" + +"@smithy/url-parser@^1.0.1", "@smithy/url-parser@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-1.0.2.tgz#fb59be6f2283399443d9e7afe08ebf63b3c266bb" + integrity sha512-0JRsDMQe53F6EHRWksdcavKDRjyqp8vrjakg8EcCUOa7PaFRRB1SO/xGZdzSlW1RSTWQDEksFMTCEcVEKmAoqA== + dependencies: + "@smithy/querystring-parser" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/util-base64@^1.0.1", "@smithy/util-base64@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-1.0.2.tgz#6cdd5a9356dafad3c531123c12cd77d674762da0" + integrity sha512-BCm15WILJ3SL93nusoxvJGMVfAMWHZhdeDZPtpAaskozuexd0eF6szdz4kbXaKp38bFCSenA6bkUHqaE3KK0dA== + dependencies: + "@smithy/util-buffer-from" "^1.0.2" + tslib "^2.5.0" + +"@smithy/util-body-length-browser@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-browser/-/util-body-length-browser-1.0.2.tgz#4a9a49497634b5f25ab5ff73f1a8498010b0024a" + integrity sha512-Xh8L06H2anF5BHjSYTg8hx+Itcbf4SQZnVMl4PIkCOsKtneMJoGjPRLy17lEzfoh/GOaa0QxgCP6lRMQWzNl4w== + dependencies: + tslib "^2.5.0" + +"@smithy/util-body-length-node@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-node/-/util-body-length-node-1.0.2.tgz#bc4969022f7d9ffcb239d626d80a85138e986df6" + integrity sha512-nXHbZsUtvZeyfL4Ceds9nmy2Uh2AhWXohG4vWHyjSdmT8cXZlJdmJgnH6SJKDjyUecbu+BpKeVvSrA4cWPSOPA== + dependencies: + tslib "^2.5.0" + +"@smithy/util-buffer-from@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-1.0.2.tgz#27e19573d721962bd2443f23d4edadb8206b2cb5" + integrity sha512-lHAYIyrBO9RANrPvccnPjU03MJnWZ66wWuC5GjWWQVfsmPwU6m00aakZkzHdUT6tGCkGacXSgArP5wgTgA+oCw== + dependencies: + "@smithy/is-array-buffer" "^1.0.2" + tslib "^2.5.0" + +"@smithy/util-config-provider@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-config-provider/-/util-config-provider-1.0.2.tgz#4d2e867df1cc7b4010d1278bd5767ce1b679dae9" + integrity sha512-HOdmDm+3HUbuYPBABLLHtn8ittuRyy+BSjKOA169H+EMc+IozipvXDydf+gKBRAxUa4dtKQkLraypwppzi+PRw== + dependencies: + tslib "^2.5.0" + +"@smithy/util-defaults-mode-browser@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-1.0.2.tgz#31ad7b9bce7e38fd57f4a370ee416373b4fbd432" + integrity sha512-J1u2PO235zxY7dg0+ZqaG96tFg4ehJZ7isGK1pCBEA072qxNPwIpDzUVGnLJkHZvjWEGA8rxIauDtXfB0qxeAg== + dependencies: + "@smithy/property-provider" "^1.0.2" + "@smithy/types" "^1.1.1" + bowser "^2.11.0" + tslib "^2.5.0" + +"@smithy/util-defaults-mode-node@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-1.0.2.tgz#b295fe2a18568c1e21a85b6557e2b769452b4d95" + integrity sha512-9/BN63rlIsFStvI+AvljMh873Xw6bbI6b19b+PVYXyycQ2DDQImWcjnzRlHW7eP65CCUNGQ6otDLNdBQCgMXqg== + dependencies: + "@smithy/config-resolver" "^1.0.2" + "@smithy/credential-provider-imds" "^1.0.2" + "@smithy/node-config-provider" "^1.0.2" + "@smithy/property-provider" "^1.0.2" + "@smithy/types" "^1.1.1" + tslib "^2.5.0" + +"@smithy/util-hex-encoding@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-1.0.2.tgz#5b9f2162f2a59b2d2aa39992bd2c7f65b6616ab6" + integrity sha512-Bxydb5rMJorMV6AuDDMOxro3BMDdIwtbQKHpwvQFASkmr52BnpDsWlxgpJi8Iq7nk1Bt4E40oE1Isy/7ubHGzg== + dependencies: + tslib "^2.5.0" + +"@smithy/util-middleware@^1.0.1", "@smithy/util-middleware@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-1.0.2.tgz#c3d4c7a6cd31bde33901e54abd7700c8ca73dab3" + integrity sha512-vtXK7GOR2BoseCX8NCGe9SaiZrm9M2lm/RVexFGyPuafTtry9Vyv7hq/vw8ifd/G/pSJ+msByfJVb1642oQHKw== + dependencies: + tslib "^2.5.0" + +"@smithy/util-retry@^1.0.3", "@smithy/util-retry@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-1.0.4.tgz#9d95df3884981414163d5f780d38e3529384d9ad" + integrity sha512-RnZPVFvRoqdj2EbroDo3OsnnQU8eQ4AlnZTOGusbYKybH3269CFdrZfZJloe60AQjX7di3J6t/79PjwCLO5Khw== + dependencies: + "@smithy/service-error-classification" "^1.0.3" + tslib "^2.5.0" + +"@smithy/util-stream@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-1.0.2.tgz#2d33aa5168e51d1dd7937c32a09c8334d2da44d9" + integrity sha512-qyN2M9QFMTz4UCHi6GnBfLOGYKxQZD01Ga6nzaXFFC51HP/QmArU72e4kY50Z/EtW8binPxspP2TAsGbwy9l3A== + dependencies: + "@smithy/fetch-http-handler" "^1.0.2" + "@smithy/node-http-handler" "^1.0.3" + "@smithy/types" "^1.1.1" + "@smithy/util-base64" "^1.0.2" + "@smithy/util-buffer-from" "^1.0.2" + "@smithy/util-hex-encoding" "^1.0.2" + "@smithy/util-utf8" "^1.0.2" + tslib "^2.5.0" + +"@smithy/util-uri-escape@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-1.0.2.tgz#c69a5423c9baa7a045a79372320bd40a437ac756" + integrity sha512-k8C0BFNS9HpBMHSgUDnWb1JlCQcFG+PPlVBq9keP4Nfwv6a9Q0yAfASWqUCtzjuMj1hXeLhn/5ADP6JxnID1Pg== + dependencies: + tslib "^2.5.0" + +"@smithy/util-utf8@^1.0.1", "@smithy/util-utf8@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-1.0.2.tgz#b34c27b4efbe4f0edb6560b6d4f743088302671f" + integrity sha512-V4cyjKfJlARui0dMBfWJMQAmJzoW77i4N3EjkH/bwnE2Ngbl4tqD2Y0C/xzpzY/J1BdxeCKxAebVFk8aFCaSCw== + dependencies: + "@smithy/util-buffer-from" "^1.0.2" + tslib "^2.5.0" + +"@swc/core-darwin-arm64@1.3.70": + version "1.3.70" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.70.tgz#056ac6899e22cb7f7be21388d4d938ca5123a72b" + integrity sha512-31+mcl0dgdRHvZRjhLOK9V6B+qJ7nxDZYINr9pBlqGWxknz37Vld5KK19Kpr79r0dXUZvaaelLjCnJk9dA2PcQ== + +"@swc/core-darwin-x64@1.3.70": + version "1.3.70" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.70.tgz#3945814de6fadbee5b46cb2a3422353acb420c5c" + integrity sha512-GMFJ65E18zQC80t0os+TZvI+8lbRuitncWVge/RXmXbVLPRcdykP4EJ87cqzcG5Ah0z18/E0T+ixD6jHRisrYQ== + +"@swc/core-linux-arm-gnueabihf@1.3.70": + version "1.3.70" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.70.tgz#7960e54ede1af75a7ef99ee53febf37fea6269a8" + integrity sha512-wjhCwS8LCiAq2VedF1b4Bryyw68xZnfMED4pLRazAl8BaUlDFANfRBORNunxlfHQj4V3x39IaiLgCZRHMdzXBg== + +"@swc/core-linux-arm64-gnu@1.3.70": + version "1.3.70" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.70.tgz#df9654e5040bbeb1619739756a7f50100e38ace8" + integrity sha512-9D/Rx67cAOnMiexvCqARxvhj7coRajTp5HlJHuf+rfwMqI2hLhpO9/pBMQxBUAWxODO/ksQ/OF+GJRjmtWw/2A== + +"@swc/core-linux-arm64-musl@1.3.70": + version "1.3.70" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.70.tgz#2c2aab5a136c7eb409ddc9cdc4f947a68fd74493" + integrity sha512-gkjxBio7XD+1GlQVVyPP/qeFkLu83VhRHXaUrkNYpr5UZG9zZurBERT9nkS6Y+ouYh+Q9xmw57aIyd2KvD2zqQ== + +"@swc/core-linux-x64-gnu@1.3.70": + version "1.3.70" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.70.tgz#774351532b154ed36a5c6d14b647e7a8ab510028" + integrity sha512-/nCly+V4xfMVwfEUoLLAukxUSot/RcSzsf6GdsGTjFcrp5sZIntAjokYRytm3VT1c2TK321AfBorsi9R5w8Y7Q== + +"@swc/core-linux-x64-musl@1.3.70": + version "1.3.70" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.70.tgz#c0b1b4ad5f4ef187eaa093589a4933ecb6836546" + integrity sha512-HoOsPJbt361KGKaivAK0qIiYARkhzlxeAfvF5NlnKxkIMOZpQ46Lwj3tR0VWohKbrhS+cYKFlVuDi5XnDkx0XA== + +"@swc/core-win32-arm64-msvc@1.3.70": + version "1.3.70" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.70.tgz#8640267ce3959db0e7e682103677a5e0500b5ea7" + integrity sha512-hm4IBK/IaRil+aj1cWU6f0GyAdHpw/Jr5nyFYLM2c/tt7w2t5hgb8NjzM2iM84lOClrig1fG6edj2vCF1dFzNQ== + +"@swc/core-win32-ia32-msvc@1.3.70": + version "1.3.70" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.70.tgz#f95d5656622f5a963bc0125da9fda84cf40faa8d" + integrity sha512-5cgKUKIT/9Fp5fCA+zIjYCQ4dSvjFYOeWGZR3QiTXGkC4bGa1Ji9SEPyeIAX0iruUnKjYaZB9RvHK2tNn7RLrQ== + +"@swc/core-win32-x64-msvc@1.3.70": + version "1.3.70" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.70.tgz#5b3acddb96fdf60df089b837061915cb4be94eaa" + integrity sha512-LE8lW46+TQBzVkn2mHBlk8DIElPIZ2dO5P8AbJiARNBAnlqQWu67l9gWM89UiZ2l33J2cI37pHzON3tKnT8f9g== "@swc/core@^1.3.26": - version "1.3.58" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.58.tgz#3371c6c660694124c2f1cc60ce6b99fd3df3f8c3" - integrity sha512-tSDcHXMBQIo2ohQ/0ryZnUA+0mBrVhe49+cR+QsFru+XEhCok1BLqdE6cZ2a+sgZ1I+Dmw8aTxYm8Ox64PSKPQ== + version "1.3.70" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.70.tgz#f5ddc6fe6add7a99f5b94d2214ad0d8527d11479" + integrity sha512-LWVWlEDLlOD25PvA2NEz41UzdwXnlDyBiZbe69s3zM0DfCPwZXLUm79uSqH9ItsOjTrXSL5/1+XUL6C/BZwChA== optionalDependencies: - "@swc/core-darwin-arm64" "1.3.58" - "@swc/core-darwin-x64" "1.3.58" - "@swc/core-linux-arm-gnueabihf" "1.3.58" - "@swc/core-linux-arm64-gnu" "1.3.58" - "@swc/core-linux-arm64-musl" "1.3.58" - "@swc/core-linux-x64-gnu" "1.3.58" - "@swc/core-linux-x64-musl" "1.3.58" - "@swc/core-win32-arm64-msvc" "1.3.58" - "@swc/core-win32-ia32-msvc" "1.3.58" - "@swc/core-win32-x64-msvc" "1.3.58" + "@swc/core-darwin-arm64" "1.3.70" + "@swc/core-darwin-x64" "1.3.70" + "@swc/core-linux-arm-gnueabihf" "1.3.70" + "@swc/core-linux-arm64-gnu" "1.3.70" + "@swc/core-linux-arm64-musl" "1.3.70" + "@swc/core-linux-x64-gnu" "1.3.70" + "@swc/core-linux-x64-musl" "1.3.70" + "@swc/core-win32-arm64-msvc" "1.3.70" + "@swc/core-win32-ia32-msvc" "1.3.70" + "@swc/core-win32-x64-msvc" "1.3.70" "@swc/jest@^0.2.24": - version "0.2.26" - resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.26.tgz#6ef2d6d31869e3aaddc132603bc21f2e4c57cc5d" - integrity sha512-7lAi7q7ShTO3E5Gt1Xqf3pIhRbERxR1DUxvtVa9WKzIB+HGQ7wZP5sYx86zqnaEoKKGhmOoZ7gyW0IRu8Br5+A== + version "0.2.27" + resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.27.tgz#f6cbd0b6f95cf689c3344c63fc379fa680cdbf52" + integrity sha512-Xt8EJ6Wy0NYVL8KDPcDMsuUSzyV2UAByamyy28x2iDZCJw2eVz3acedCGBYxxlPR/DNr6QbA35OSymuXhC9QVA== dependencies: "@jest/create-cache-key-function" "^27.4.2" jsonc-parser "^3.2.0" @@ -2038,23 +2114,23 @@ defer-to-connect "^2.0.1" "@testing-library/dom@^8.11.1", "@testing-library/dom@^8.5.0": - version "8.20.0" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.20.0.tgz#914aa862cef0f5e89b98cc48e3445c4c921010f6" - integrity sha512-d9ULIT+a4EXLX3UU8FBjauG9NnsZHkHztXoIcTsOKoOw030fyjheN9svkTULjJxtYag9DZz5Jz5qkWZDPxTFwA== + version "8.20.1" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.20.1.tgz#2e52a32e46fc88369eef7eef634ac2a192decd9f" + integrity sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" "@types/aria-query" "^5.0.1" - aria-query "^5.0.0" + aria-query "5.1.3" chalk "^4.1.0" dom-accessibility-api "^0.5.9" - lz-string "^1.4.4" + lz-string "^1.5.0" pretty-format "^27.0.2" "@testing-library/jest-dom@^5.16.5": - version "5.16.5" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz#3912846af19a29b2dbf32a6ae9c31ef52580074e" - integrity sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA== + version "5.17.0" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz#5e97c8f9a15ccf4656da00fecab505728de81e0c" + integrity sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg== dependencies: "@adobe/css-tools" "^4.0.1" "@babel/runtime" "^7.9.2" @@ -2080,11 +2156,6 @@ resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - "@tootallnate/once@2": version "2.0.0" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" @@ -2135,9 +2206,9 @@ integrity sha512-upIS0Gt9Mc8eEpCbYMZ1K8rhNosfKUtimNcINce+zLwJF5UpM3Vv7yz3S5l/1IX+DxTa8lTkUjqynvjRXyJzsg== "@types/babel__core@^7.1.14": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" - integrity sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ== + version "7.20.1" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.1.tgz#916ecea274b0c776fec721e333e55762d3a9614b" + integrity sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -2161,11 +2232,11 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.5.tgz#c107216842905afafd3b6e774f6f935da6f5db80" - integrity sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q== + version "7.20.1" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.1.tgz#dd6f1d2411ae677dcb2db008c962598be31d6acf" + integrity sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg== dependencies: - "@babel/types" "^7.3.0" + "@babel/types" "^7.20.7" "@types/body-parser@*", "@types/body-parser@^1.19.2": version "1.19.2" @@ -2221,9 +2292,9 @@ "@types/estree" "*" "@types/eslint@*": - version "8.37.0" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.37.0.tgz#29cebc6c2a3ac7fea7113207bf5a828fdf4d7ef1" - integrity sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ== + version "8.44.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.0.tgz#55818eabb376e2272f77fbf5c96c43137c3c1e53" + integrity sha512-gsF+c/0XOguWgaOgvFs+xnnRqt9GwgTvIks36WpE6ueeI4KCEHHd8K/CKHqhOqrJKsYH8m27kRzQEvWXAwXUTw== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -2343,6 +2414,11 @@ resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== +"@types/http-errors@*": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.1.tgz#20172f9578b225f6c7da63446f56d4ce108d5a65" + integrity sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ== + "@types/ignore-styles@^5.0.0": version "5.0.0" resolved "https://registry.yarnpkg.com/@types/ignore-styles/-/ignore-styles-5.0.0.tgz#62ec630e5e003f1c6b15ca97ed52e4e5cd0b2752" @@ -2380,9 +2456,9 @@ "@types/istanbul-lib-report" "*" "@types/jest@*": - version "29.5.1" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.1.tgz#83c818aa9a87da27d6da85d3378e5a34d2f31a47" - integrity sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ== + version "29.5.3" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.3.tgz#7a35dc0044ffb8b56325c6802a4781a626b05777" + integrity sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA== dependencies: expect "^29.0.0" pretty-format "^29.0.0" @@ -2410,9 +2486,9 @@ parse5 "^7.0.0" "@types/json-schema@*", "@types/json-schema@^7.0.11", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + version "7.0.12" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" + integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== "@types/json5@^0.0.29": version "0.0.29" @@ -2434,9 +2510,9 @@ "@types/node" "*" "@types/lodash@^4.14.149", "@types/lodash@^4.14.182": - version "4.14.194" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.194.tgz#b71eb6f7a0ff11bff59fc987134a093029258a76" - integrity sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g== + version "4.14.195" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.195.tgz#bafc975b252eb6cea78882ce8a7b6bf22a6de632" + integrity sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg== "@types/method-override@^0.0.32": version "0.0.32" @@ -2509,14 +2585,14 @@ form-data "^3.0.0" "@types/node@*", "@types/node@^20.1.3": - version "20.1.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.1.7.tgz#ce10c802f7731909d0a44ac9888e8b3a9125eb62" - integrity sha512-WCuw/o4GSwDGMoonES8rcvwsig77dGCMbZDrZr2x4ZZiNW4P/gcoZXe/0twgtobcTkmg9TuKflxYL/DuwDyJzg== + version "20.4.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.2.tgz#129cc9ae69f93824f92fac653eebfb4812ab4af9" + integrity sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw== "@types/nodemailer@^6.4.7": - version "6.4.7" - resolved "https://registry.yarnpkg.com/@types/nodemailer/-/nodemailer-6.4.7.tgz#658f4bca47c1a895b1d7e054b3b54030a5e1f5e0" - integrity sha512-f5qCBGAn/f0qtRcd4SEn88c8Fp3Swct1731X4ryPKqS61/A3LmmzN8zaEz7hneJvpjFbUUgY7lru/B/7ODTazg== + version "6.4.8" + resolved "https://registry.yarnpkg.com/@types/nodemailer/-/nodemailer-6.4.8.tgz#f06c661e9b201fc2acc3a00a0fded42ba7eaca9d" + integrity sha512-oVsJSCkqViCn8/pEu2hfjwVO+Gb3e+eTWjg3PcjeFKRItfKpKwHphQqbYmPQrlMk+op7pNNWPbsJIEthpFN/OQ== dependencies: "@types/node" "*" @@ -2552,9 +2628,9 @@ "@types/passport" "*" "@types/passport-jwt@^3.0.8": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@types/passport-jwt/-/passport-jwt-3.0.8.tgz#c8a95bf7d8f330f2560f1b3d07605e23ac01469a" - integrity sha512-VKJZDJUAHFhPHHYvxdqFcc5vlDht8Q2pL1/ePvKAgqRThDaCc84lSYOTQmnx3+JIkDlN+2KfhFhXIzlcVT+Pcw== + version "3.0.9" + resolved "https://registry.yarnpkg.com/@types/passport-jwt/-/passport-jwt-3.0.9.tgz#6c74c71e133206c697344feaf6e6044e01fe2d1d" + integrity sha512-5XJt+79emfgpuBvBQusUPylFIVtW1QVAAkTRwCbRJAmxUjmLtIqUU6V1ovpnHPu6Qut3mR5Juc+s7kd06roNTg== dependencies: "@types/express" "*" "@types/jsonwebtoken" "*" @@ -2590,9 +2666,9 @@ integrity sha512-BYOID+l2Aco2nBik+iYS4SZX0Lf20KPILP5RGmM1IgzdwNdTs0eebiFriOPcej1sX9mLnSoiNte5zcFxssgpGA== "@types/prettier@^2.1.5", "@types/prettier@^2.6.1": - version "2.7.2" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" - integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== + version "2.7.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/prismjs@^1.26.0": version "1.26.0" @@ -2641,9 +2717,9 @@ react-popper "^2.2.5" "@types/react-dom@^18.0.0", "@types/react-dom@^18.0.10": - version "18.2.4" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.4.tgz#13f25bfbf4e404d26f62ac6e406591451acba9e0" - integrity sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw== + version "18.2.7" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.7.tgz#67222a08c0a6ae0a0da33c3532348277c70abb63" + integrity sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA== dependencies: "@types/react" "*" @@ -2679,9 +2755,9 @@ "@types/react" "*" "@types/react@*", "@types/react@^18.0.26": - version "18.2.6" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.6.tgz#5cd53ee0d30ffc193b159d3516c8c8ad2f19d571" - integrity sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA== + version "18.2.15" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.15.tgz#14792b35df676c20ec3cf595b262f8c615a73066" + integrity sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -2711,10 +2787,11 @@ "@types/node" "*" "@types/serve-static@*": - version "1.15.1" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d" - integrity sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ== + version "1.15.2" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.2.tgz#3e5419ecd1e40e7405d34093f10befb43f63381a" + integrity sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw== dependencies: + "@types/http-errors" "*" "@types/mime" "*" "@types/node" "*" @@ -2749,9 +2826,9 @@ integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== "@types/testing-library__jest-dom@^5.14.5", "@types/testing-library__jest-dom@^5.9.1": - version "5.14.5" - resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz#d113709c90b3c75fdb127ec338dad7d5f86c974f" - integrity sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ== + version "5.14.8" + resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.8.tgz#b32090a01c29040461fb7fa10a82400f216a4b93" + integrity sha512-NRfJE9Cgpmu4fx716q9SYmU4jxxhYRU1BQo239Txt/9N3EC745XZX1Yl7h/SBIDlo1ANVOCRB4YDXjaQdoKCHQ== dependencies: "@types/jest" "*" @@ -2787,9 +2864,9 @@ webpack "^5" "@types/webpack-env@^1.18.0": - version "1.18.0" - resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.18.0.tgz#ed6ecaa8e5ed5dfe8b2b3d00181702c9925f13fb" - integrity sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg== + version "1.18.1" + resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.18.1.tgz#49699bb508961e14a3bfb68c78cd87b296889d1d" + integrity sha512-D0HJET2/UY6k9L6y3f5BL+IDxZmPkYmPT4+qBrRdmRLYRuV0qNKizMgTvYxXZYn+36zjPeoDZAEYBCM6XB+gww== "@types/webpack-hot-middleware@2.25.6": version "2.25.6" @@ -2856,87 +2933,87 @@ "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^5.59.1": - version "5.59.6" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.6.tgz#a350faef1baa1e961698240f922d8de1761a9e2b" - integrity sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw== + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" + integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== dependencies: "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.59.6" - "@typescript-eslint/type-utils" "5.59.6" - "@typescript-eslint/utils" "5.59.6" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" debug "^4.3.4" - grapheme-splitter "^1.0.4" + graphemer "^1.4.0" ignore "^5.2.0" natural-compare-lite "^1.4.0" semver "^7.3.7" tsutils "^3.21.0" "@typescript-eslint/parser@^5.59.1": - version "5.59.6" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.6.tgz#bd36f71f5a529f828e20b627078d3ed6738dbb40" - integrity sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA== + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== dependencies: - "@typescript-eslint/scope-manager" "5.59.6" - "@typescript-eslint/types" "5.59.6" - "@typescript-eslint/typescript-estree" "5.59.6" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.59.6": - version "5.59.6" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.6.tgz#d43a3687aa4433868527cfe797eb267c6be35f19" - integrity sha512-gLbY3Le9Dxcb8KdpF0+SJr6EQ+hFGYFl6tVY8VxLPFDfUZC7BHFw+Vq7bM5lE9DwWPfx4vMWWTLGXgpc0mAYyQ== +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== dependencies: - "@typescript-eslint/types" "5.59.6" - "@typescript-eslint/visitor-keys" "5.59.6" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/type-utils@5.59.6": - version "5.59.6" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.59.6.tgz#37c51d2ae36127d8b81f32a0a4d2efae19277c48" - integrity sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ== +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" + integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== dependencies: - "@typescript-eslint/typescript-estree" "5.59.6" - "@typescript-eslint/utils" "5.59.6" + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.59.6": - version "5.59.6" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.6.tgz#5a6557a772af044afe890d77c6a07e8c23c2460b" - integrity sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA== +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/typescript-estree@5.59.6": - version "5.59.6" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.6.tgz#2fb80522687bd3825504925ea7e1b8de7bb6251b" - integrity sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA== +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== dependencies: - "@typescript-eslint/types" "5.59.6" - "@typescript-eslint/visitor-keys" "5.59.6" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.59.6", "@typescript-eslint/utils@^5.10.0": - version "5.59.6" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.6.tgz#82960fe23788113fc3b1f9d4663d6773b7907839" - integrity sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg== +"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.10.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.59.6" - "@typescript-eslint/types" "5.59.6" - "@typescript-eslint/typescript-estree" "5.59.6" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" eslint-scope "^5.1.1" semver "^7.3.7" -"@typescript-eslint/visitor-keys@5.59.6": - version "5.59.6" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.6.tgz#673fccabf28943847d0c8e9e8d008e3ada7be6bb" - integrity sha512-zEfbFLzB9ETcEJ4HZEEsCR9HHeNku5/Qw1jSS5McYJv5BR+ftYXwFFAH5Al+xkGaZEqowMwl7uoJjQb1YSPF8Q== +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== dependencies: - "@typescript-eslint/types" "5.59.6" + "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" "@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": @@ -3128,7 +3205,7 @@ acorn-globals@^7.0.0: acorn "^8.1.0" acorn-walk "^8.0.2" -acorn-import-assertions@^1.7.6: +acorn-import-assertions@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== @@ -3143,23 +3220,30 @@ acorn-walk@^8.0.0, acorn-walk@^8.0.2, acorn-walk@^8.1.1, acorn-walk@^8.2.0: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^8.0.4, acorn@^8.1.0, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0, acorn@^8.7.1, acorn@^8.8.0, acorn@^8.8.1: - version "8.8.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" - integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== +acorn@^8.0.4, acorn@^8.1.0, acorn@^8.4.1, acorn@^8.7.0, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== add-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== -agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2: +agent-base@6: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" +agent-base@^7.0.1, agent-base@^7.0.2, agent-base@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.0.tgz#536802b76bc0b34aa50195eb2442276d613e3434" + integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== + dependencies: + debug "^4.3.4" + ajv-formats@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" @@ -3206,20 +3290,13 @@ ansi-align@^3.0.1: dependencies: string-width "^4.1.0" -ansi-escapes@^4.2.1: +ansi-escapes@^4.2.1, ansi-escapes@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: type-fest "^0.21.3" -ansi-escapes@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-6.2.0.tgz#8a13ce75286f417f1963487d86ba9f90dccf9947" - integrity sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw== - dependencies: - type-fest "^3.0.0" - ansi-html-community@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" @@ -3289,13 +3366,20 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@^5.0.0, aria-query@^5.1.3: +aria-query@5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== dependencies: deep-equal "^2.0.5" +aria-query@^5.0.0, aria-query@^5.1.3: + version "5.3.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + array-buffer-byte-length@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" @@ -3314,7 +3398,7 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== -array-includes@^3.1.5, array-includes@^3.1.6: +array-includes@^3.1.6: version "3.1.6" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== @@ -3372,6 +3456,18 @@ array.prototype.tosorted@^1.1.1: es-shim-unscopables "^1.0.0" get-intrinsic "^1.1.3" +arraybuffer.prototype.slice@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz#9b5ea3868a6eebc30273da577eb888381c0044bb" + integrity sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -3382,7 +3478,7 @@ ast-types-flow@^0.0.7: resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== -ast-types@^0.13.2: +ast-types@^0.13.4: version "0.13.4" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== @@ -3436,23 +3532,23 @@ available-typed-arrays@^1.0.5: integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== axe-core@^4.6.2: - version "4.7.1" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.1.tgz#04392c9ccb3d7d7c5d2f8684f148d56d3442f33d" - integrity sha512-sCXXUhA+cljomZ3ZAwb8i1p3oOlkABzPy08ZDAoGcYuvtBPlQ1Ytde129ArXyHWDhfeewq7rlx9F+cUx2SSlkg== + version "4.7.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.2.tgz#040a7342b20765cb18bb50b628394c21bccc17a0" + integrity sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g== axobject-query@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1" - integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg== + version "3.2.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" + integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== dependencies: - deep-equal "^2.0.5" + dequal "^2.0.3" -babel-jest@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.5.0.tgz#3fe3ddb109198e78b1c88f9ebdecd5e4fc2f50a5" - integrity sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q== +babel-jest@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.6.1.tgz#a7141ad1ed5ec50238f3cd36127636823111233a" + integrity sha512-qu+3bdPEQC6KZSPz+4Fyjbga5OODNcp49j6GKzG1EKbkfyJBxEYGVUmVGpwCSeGouG52R4EgYMLb6p9YeEEQ4A== dependencies: - "@jest/transform" "^29.5.0" + "@jest/transform" "^29.6.1" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" babel-preset-jest "^29.5.0" @@ -3526,6 +3622,11 @@ base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +basic-ftp@^5.0.2: + version "5.0.3" + resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.0.3.tgz#b14c0fe8111ce001ec913686434fe0c2fb461228" + integrity sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g== + before-after-hook@^2.2.0: version "2.2.3" resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" @@ -3546,7 +3647,7 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bl@^4.0.3: +bl@^4.0.3, bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== @@ -3616,9 +3717,9 @@ bowser@^2.11.0: integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== boxen@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-7.1.0.tgz#ba10a9ef4e73a9e220105b5f8c07a56d359a4cb4" - integrity sha512-ScG8CDo8dj7McqCZ5hz4dIBp20xj4unQ2lXIDa7ff6RcZElCpuNzutdwzKVvRikfNjm7CFAlR3HJHcoHkDOExQ== + version "7.1.1" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-7.1.1.tgz#f9ba525413c2fec9cdb88987d835c4f7cad9c8f4" + integrity sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog== dependencies: ansi-align "^3.0.1" camelcase "^7.0.1" @@ -3658,15 +3759,15 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.21.5: - version "4.21.5" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" - integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.21.4, browserslist@^4.21.5, browserslist@^4.21.9: + version "4.21.9" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635" + integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg== dependencies: - caniuse-lite "^1.0.30001449" - electron-to-chromium "^1.4.284" - node-releases "^2.0.8" - update-browserslist-db "^1.0.10" + caniuse-lite "^1.0.30001503" + electron-to-chromium "^1.4.431" + node-releases "^2.0.12" + update-browserslist-db "^1.0.11" bser@2.1.1: version "2.1.1" @@ -3687,10 +3788,10 @@ bson@^4.7.2: dependencies: buffer "^5.6.0" -bson@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/bson/-/bson-5.3.0.tgz#37b006df4cd91ed125cb686467c1dd6d4606b514" - integrity sha512-ukmCZMneMlaC5ebPHXIkP8YJzNl5DC41N5MAIvKDqLggdao342t4McltoJBQfQya/nHBWAcSsYRqlXPoQkTJag== +bson@^5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/bson/-/bson-5.4.0.tgz#0eea77276d490953ad8616b483298dbff07384c6" + integrity sha512-WRZ5SQI5GfUuKnPTNmAYPiKIof3ORXAF4IRU5UcgmivNIon01rWQlw5RUH954dpu8yGL8T59YShVddIPaU/gFA== buffer-crc32@~0.2.3: version "0.2.13" @@ -3753,9 +3854,9 @@ cacheable-lookup@^7.0.0: integrity sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w== cacheable-request@^10.2.8: - version "10.2.10" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-10.2.10.tgz#1785984a9a4ddec8dd01792232cca474be49a8af" - integrity sha512-v6WB+Epm/qO4Hdlio/sfUn69r5Shgh39SsE9DSd4bIezP0mblOlObI+I0kUEM7J0JFc+I7pSeMeYaOYtX1N/VQ== + version "10.2.12" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-10.2.12.tgz#05b97a3199d1ee65c360eb45c5af6191faa3ab6b" + integrity sha512-qtWGB5kn2OLjx47pYUkWicyOpK1vy9XZhq8yRTXOy+KAmjjESSRLx6SiExnnaGGUP1NM6/vmygMu0fGylNh9tw== dependencies: "@types/http-cache-semantics" "^4.0.1" get-stream "^6.0.1" @@ -3825,12 +3926,12 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001464: - version "1.0.30001488" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001488.tgz#d19d7b6e913afae3e98f023db97c19e9ddc5e91f" - integrity sha512-NORIQuuL4xGpIy6iCCQGN4iFjlBXtfKWIenlUuyZJumLRIindLb7wXM+GO8erEhb7vXfcnf4BAg2PrSDN5TNLQ== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001503: + version "1.0.30001517" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz#90fabae294215c3495807eb24fc809e11dc2f0a8" + integrity sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA== -chalk@5.2.0, chalk@^5.0.0, chalk@^5.0.1, chalk@^5.2.0: +chalk@5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.2.0.tgz#249623b7d66869c673699fb66d65723e54dfcfb3" integrity sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA== @@ -3860,6 +3961,11 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^5.0.0, chalk@^5.0.1, chalk@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -3906,9 +4012,9 @@ ci-info@^3.2.0: integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== cjs-module-lexer@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" - integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== + version "1.2.3" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" + integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1: version "2.3.2" @@ -3938,6 +4044,13 @@ cli-color@^2.0.2: memoizee "^0.4.15" timers-ext "^0.1.7" +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + cli-cursor@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea" @@ -3945,7 +4058,7 @@ cli-cursor@^4.0.0: dependencies: restore-cursor "^4.0.0" -cli-spinners@^2.6.1: +cli-spinners@^2.5.0, cli-spinners@^2.6.1: version "2.9.0" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.0.tgz#5881d0ad96381e117bbe07ad91f2008fe6ffd8db" integrity sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g== @@ -3998,9 +4111,9 @@ co@^4.6.0: integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + version "1.0.2" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== color-convert@^1.9.0: version "1.9.3" @@ -4414,11 +4527,11 @@ cross-env@^7.0.3: cross-spawn "^7.0.1" cross-fetch@^3.0.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.6.tgz#bae05aa31a4da760969756318feeee6e70f15d6c" - integrity sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g== + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== dependencies: - node-fetch "^2.6.11" + node-fetch "^2.6.12" cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" @@ -4449,9 +4562,9 @@ css-blank-pseudo@^3.0.3: postcss-selector-parser "^6.0.9" css-declaration-sorter@^6.3.1: - version "6.4.0" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz#630618adc21724484b3e9505bce812def44000ad" - integrity sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew== + version "6.4.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" + integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== css-has-pseudo@^3.0.4: version "3.0.4" @@ -4477,16 +4590,16 @@ css-loader@^5.2.7: semver "^7.3.5" css-minimizer-webpack-plugin@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.0.tgz#a2c2d1bc5cc37450519e873e13d942bbe4478ef5" - integrity sha512-1wZ/PYvg+ZKwi5FX6YrvbB31jMAdurS+CmRQLwWCVSlfzJC85l/a6RVICqUHFa+jXyhilfnCyjafzJGbmz5tcA== + version "5.0.1" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz#33effe662edb1a0bf08ad633c32fa75d0f7ec565" + integrity sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg== dependencies: - cssnano "^6.0.0" + "@jridgewell/trace-mapping" "^0.3.18" + cssnano "^6.0.1" jest-worker "^29.4.3" - postcss "^8.4.21" - schema-utils "^4.0.0" + postcss "^8.4.24" + schema-utils "^4.0.1" serialize-javascript "^6.0.1" - source-map "^0.6.1" css-prefers-color-scheme@^6.0.3: version "6.0.3" @@ -4596,7 +4709,7 @@ cssnano-utils@^4.0.0: resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-4.0.0.tgz#d1da885ec04003ab19505ff0e62e029708d36b08" integrity sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw== -cssnano@^6.0.0: +cssnano@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-6.0.1.tgz#87c38c4cd47049c735ab756d7e77ac3ca855c008" integrity sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg== @@ -4651,16 +4764,16 @@ dargs@^7.0.0: resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== -data-uri-to-buffer@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" - integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== - data-uri-to-buffer@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== +data-uri-to-buffer@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz#db89a9e279c2ffe74f50637a59a32fb23b3e4d7c" + integrity sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg== + data-urls@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" @@ -4675,7 +4788,7 @@ dataloader@^2.1.0: resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.2.2.tgz#216dc509b5abe39d43a9b9d97e6e5e473dfbe3e0" integrity sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g== -date-fns@^2.0.1, date-fns@^2.24.0, date-fns@^2.29.3: +date-fns@^2.0.1, date-fns@^2.29.3, date-fns@^2.30.0: version "2.30.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== @@ -4758,14 +4871,14 @@ dedent@^0.7.0: integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== deep-equal@^2.0.5, deep-equal@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.1.tgz#c72ab22f3a7d3503a4ca87dde976fe9978816739" - integrity sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ== + version "2.2.2" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.2.tgz#9b2635da569a13ba8e1cc159c2f744071b115daa" + integrity sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA== dependencies: array-buffer-byte-length "^1.0.0" call-bind "^1.0.2" es-get-iterator "^1.1.3" - get-intrinsic "^1.2.0" + get-intrinsic "^1.2.1" is-arguments "^1.1.1" is-array-buffer "^3.0.2" is-date-object "^1.0.5" @@ -4839,15 +4952,15 @@ define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: has-property-descriptors "^1.0.0" object-keys "^1.1.1" -degenerator@^3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-3.0.4.tgz#07ccf95bc11044a37a6efc2f66029fb636e31f24" - integrity sha512-Z66uPeBfHZAHVmue3HPfyKu2Q0rC2cRxbTOsvmU/po5fvvcx27W4mIu9n0PUlQih4oUYvcG1BsbtVv8x7KDOSw== +degenerator@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-4.0.4.tgz#dbeeb602c64ce543c1f17e2c681d1d0cc9d4a0ac" + integrity sha512-MTZdZsuNxSBL92rsjx3VFWe57OpRlikyLbcx2B5Dmdv6oScqpMrvpY7zHLMymrUxo3U5+suPUMsNgW/+SZB1lg== dependencies: - ast-types "^0.13.2" - escodegen "^1.8.1" - esprima "^4.0.0" - vm2 "^3.9.17" + ast-types "^0.13.4" + escodegen "^1.14.3" + esprima "^4.0.1" + vm2 "^3.9.19" delayed-stream@~1.0.0: version "1.0.0" @@ -4859,20 +4972,25 @@ depd@2.0.0: resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -deprecation@^2.0.0, deprecation@^2.3.1: +deprecation@^2.0.0: version "2.3.1" resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + destroy@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== detect-libc@^2.0.0, detect-libc@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" - integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== + version "2.0.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" + integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== detect-newline@^3.0.0: version "3.1.0" @@ -5056,10 +5174,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.4.284: - version "1.4.397" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.397.tgz#82a7e26c657538d59bb713b97ac22f97ea3a90ea" - integrity sha512-jwnPxhh350Q/aMatQia31KAIQdhEsYS0fFZ0BQQlN9tfvOEwShu6ZNwI4kL/xBabjcB/nTy6lSt17kNIluJZ8Q== +electron-to-chromium@^1.4.431: + version "1.4.467" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.467.tgz#b0660bf644baff7eedea33b8c742fb53ec60e3c2" + integrity sha512-2qI70O+rR4poYeF2grcuS/bCps5KJh6y1jtZMDDEteyKJQrzLOEhFyXCLcHW6DTBjKjWkk26JhWoAi+Ux9A0fg== emittery@^0.13.1: version "0.13.1" @@ -5093,10 +5211,10 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" -enhanced-resolve@^5.14.0: - version "5.14.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.14.0.tgz#0b6c676c8a3266c99fa281e4433a706f5c0c61c4" - integrity sha512-+DCows0XNwLDcUhbFJPdlQEVnT2zXlCv7hPxemTz86/O+B/hCQ+mb7ydkPKiflpVraqLPCAfu7lDy+hBXueojw== +enhanced-resolve@^5.15.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" + integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -5117,9 +5235,9 @@ env-paths@^2.2.1: integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== envinfo@^7.7.3: - version "7.8.1" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" - integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + version "7.10.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.10.0.tgz#55146e3909cc5fe63c22da63fb15b05aeac35b13" + integrity sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw== error-ex@^1.3.1: version "1.3.2" @@ -5129,17 +5247,18 @@ error-ex@^1.3.1: is-arrayish "^0.2.1" es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.21.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" - integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== + version "1.22.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc" + integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw== dependencies: array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.1" available-typed-arrays "^1.0.5" call-bind "^1.0.2" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" function.prototype.name "^1.1.5" - get-intrinsic "^1.2.0" + get-intrinsic "^1.2.1" get-symbol-description "^1.0.0" globalthis "^1.0.3" gopd "^1.0.1" @@ -5159,14 +5278,18 @@ es-abstract@^1.19.0, es-abstract@^1.20.4: object-inspect "^1.12.3" object-keys "^1.1.1" object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" + regexp.prototype.flags "^1.5.0" + safe-array-concat "^1.0.0" safe-regex-test "^1.0.0" string.prototype.trim "^1.2.7" string.prototype.trimend "^1.0.6" string.prototype.trimstart "^1.0.6" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" typed-array-length "^1.0.4" unbox-primitive "^1.0.2" - which-typed-array "^1.1.9" + which-typed-array "^1.1.10" es-array-method-boxes-properly@^1.0.0: version "1.0.0" @@ -5189,9 +5312,9 @@ es-get-iterator@^1.0.2, es-get-iterator@^1.1.3: stop-iteration-iterator "^1.0.0" es-module-lexer@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.2.1.tgz#ba303831f63e6a394983fde2f97ad77b22324527" - integrity sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg== + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.0.tgz#6be9c9e0b4543a60cd166ff6f8b4e9dae0b0c16f" + integrity sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA== es-set-tostringtag@^2.0.1: version "2.0.1" @@ -5289,7 +5412,7 @@ escape-string-regexp@^5.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== -escodegen@^1.8.1: +escodegen@^1.14.3: version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== @@ -5302,14 +5425,13 @@ escodegen@^1.8.1: source-map "~0.6.1" escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + version "2.1.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== dependencies: esprima "^4.0.1" estraverse "^5.2.0" esutils "^2.0.2" - optionator "^0.8.1" optionalDependencies: source-map "~0.6.1" @@ -5368,9 +5490,9 @@ eslint-plugin-jest-dom@^4.0.3: requireindex "^1.2.0" eslint-plugin-jest@^27.2.1: - version "27.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.2.1.tgz#b85b4adf41c682ea29f1f01c8b11ccc39b5c672c" - integrity sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg== + version "27.2.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.2.3.tgz#6f8a4bb2ca82c0c5d481d1b3be256ab001f5a3ec" + integrity sha512-sRLlSCpICzWuje66Gl9zvdF6mwD5X86I4u55hJyFBsxYOsBCmT5+kSUjf+fkFWVMMgpzNEupjW8WzUqi83hJAQ== dependencies: "@typescript-eslint/utils" "^5.10.0" @@ -5419,9 +5541,9 @@ eslint-plugin-react-hooks@^4.6.0: integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== eslint-plugin-react@^7.32.2: - version "7.32.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" - integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== + version "7.33.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.0.tgz#6c356fb0862fec2cd1b04426c669ea746e9b6eb3" + integrity sha512-qewL/8P34WkY8jAqdQxsiL82pDUeT7nhs8IsuXgfgnsEloKCT4miAV9N9kGtx7/KM9NH/NCGUE7Edt9iGxLXFw== dependencies: array-includes "^3.1.6" array.prototype.flatmap "^1.3.1" @@ -5436,7 +5558,7 @@ eslint-plugin-react@^7.32.2: object.values "^1.1.6" prop-types "^15.8.1" resolve "^2.0.0-next.4" - semver "^6.3.0" + semver "^6.3.1" string.prototype.matchall "^4.0.8" eslint-scope@5.1.1, eslint-scope@^5.1.1: @@ -5448,9 +5570,9 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: estraverse "^4.1.1" eslint-scope@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" - integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== + version "7.2.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.1.tgz#936821d3462675f25a18ac5fd88a67cc15b393bd" + integrity sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -5473,15 +5595,15 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== eslint@^8.39.0: - version "8.40.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.40.0.tgz#a564cd0099f38542c4e9a2f630fa45bf33bc42a4" - integrity sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ== + version "8.45.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.45.0.tgz#bab660f90d18e1364352c0a6b7c6db8edb458b78" + integrity sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.4.0" - "@eslint/eslintrc" "^2.0.3" - "@eslint/js" "8.40.0" - "@humanwhocodes/config-array" "^0.11.8" + "@eslint/eslintrc" "^2.1.0" + "@eslint/js" "8.44.0" + "@humanwhocodes/config-array" "^0.11.10" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" ajv "^6.10.0" @@ -5492,7 +5614,7 @@ eslint@^8.39.0: escape-string-regexp "^4.0.0" eslint-scope "^7.2.0" eslint-visitor-keys "^3.4.1" - espree "^9.5.2" + espree "^9.6.0" esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -5500,30 +5622,27 @@ eslint@^8.39.0: find-up "^5.0.0" glob-parent "^6.0.2" globals "^13.19.0" - grapheme-splitter "^1.0.4" + graphemer "^1.4.0" ignore "^5.2.0" - import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" is-path-inside "^3.0.3" - js-sdsl "^4.1.4" js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" + optionator "^0.9.3" strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" text-table "^0.2.0" -espree@^9.5.2: - version "9.5.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b" - integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw== +espree@^9.6.0: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== dependencies: - acorn "^8.8.0" + acorn "^8.9.0" acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" @@ -5624,16 +5743,17 @@ expand-template@^2.0.3: resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== -expect@^29.0.0, expect@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.5.0.tgz#68c0509156cb2a0adb8865d413b137eeaae682f7" - integrity sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg== +expect@^29.0.0, expect@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.6.1.tgz#64dd1c8f75e2c0b209418f2b8d36a07921adfdf1" + integrity sha512-XEdDLonERCU1n9uR56/Stx9OqojaLAQtZf9PrCHH9Hl8YXiEIka3H4NXJ3NOIBmQJTg7+j7buh34PMHfJujc8g== dependencies: - "@jest/expect-utils" "^29.5.0" + "@jest/expect-utils" "^29.6.1" + "@types/node" "*" jest-get-type "^29.4.3" - jest-matcher-utils "^29.5.0" - jest-message-util "^29.5.0" - jest-util "^29.5.0" + jest-matcher-utils "^29.6.1" + jest-message-util "^29.6.1" + jest-util "^29.6.1" express-fileupload@1.4.0: version "1.4.0" @@ -5716,9 +5836,9 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-glob@^3.2.11, fast-glob@^3.2.9: - version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + version "3.3.0" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.0.tgz#7c40cb491e1e2ed5664749e87bfb516dbe8727c0" + integrity sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -5746,10 +5866,10 @@ fast-safe-stringify@^2.0.8, fast-safe-stringify@^2.1.1: resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== -fast-xml-parser@4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz#5a98c18238d28a57bbdfa9fe4cda01211fff8f4a" - integrity sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg== +fast-xml-parser@4.2.5: + version "4.2.5" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz#a6747a09296a6cb34f2ae634019bf1738f3b421f" + integrity sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g== dependencies: strnum "^1.0.5" @@ -5819,11 +5939,6 @@ file-type@16.5.4: strtok3 "^6.2.4" token-types "^4.1.1" -file-uri-to-path@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba" - integrity sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg== - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -5995,10 +6110,10 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-monkey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" - integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== +fs-monkey@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.4.tgz#ee8c1b53d3fe8bb7e5d2c5c5dfc0168afdd2f747" + integrity sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ== fs.realpath@^1.0.0: version "1.0.0" @@ -6010,14 +6125,6 @@ fsevents@2.3.2, fsevents@^2.3.2, fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== -ftp@^0.3.10: - version "0.3.10" - resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" - integrity sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ== - dependencies: - readable-stream "1.1.x" - xregexp "2.0.0" - function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -6048,7 +6155,7 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== @@ -6097,21 +6204,21 @@ get-symbol-description@^1.0.0: get-intrinsic "^1.1.1" get-tsconfig@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.5.0.tgz#6d52d1c7b299bd3ee9cd7638561653399ac77b0f" - integrity sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ== - -get-uri@3: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-3.0.2.tgz#f0ef1356faabc70e1f9404fa3b66b2ba9bfc725c" - integrity sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg== + version "4.6.2" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.6.2.tgz#831879a5e6c2aa24fe79b60340e2233a1e0f472e" + integrity sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg== dependencies: - "@tootallnate/once" "1" - data-uri-to-buffer "3" - debug "4" - file-uri-to-path "2" + resolve-pkg-maps "^1.0.0" + +get-uri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.1.tgz#cff2ba8d456c3513a04b70c45de4dbcca5b1527c" + integrity sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q== + dependencies: + basic-ftp "^5.0.2" + data-uri-to-buffer "^5.0.1" + debug "^4.3.4" fs-extra "^8.1.0" - ftp "^0.3.10" git-raw-commits@^2.0.8: version "2.0.11" @@ -6272,10 +6379,10 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -got@12.6.0, got@^12.1.0: - version "12.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-12.6.0.tgz#8d382ee5de4432c086e83c133efdd474484f6ac7" - integrity sha512-WTcaQ963xV97MN3x0/CbAriXFZcXCfgxVp91I+Ze6pawQOa7SgzwSx2zIJJsX+kTajMnVs0xcFD1TxZKFqhdnQ== +got@12.6.1, got@^12.1.0: + version "12.6.1" + resolved "https://registry.yarnpkg.com/got/-/got-12.6.1.tgz#8869560d1383353204b5a9435f782df9c091f549" + integrity sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ== dependencies: "@sindresorhus/is" "^5.2.0" "@szmarczak/http-timer" "^5.0.1" @@ -6299,15 +6406,15 @@ graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== graphql-http@^1.17.1: - version "1.18.0" - resolved "https://registry.yarnpkg.com/graphql-http/-/graphql-http-1.18.0.tgz#6a72fc6d085e0761d9d483273c6fa9a6de5f6c4c" - integrity sha512-r2sIo6jCTQi1aj7s+Srg7oU3+r5pUUgxgDD5JDZOmFzrbXVGz+yMhIKhvqW0cV10DcnVIFCOzuFuc1qvnjJ7yQ== + version "1.21.0" + resolved "https://registry.yarnpkg.com/graphql-http/-/graphql-http-1.21.0.tgz#04d1606e663acd3f422e86e2e85f4ae7a8b0881b" + integrity sha512-yrItPfHj5WeT4n7iusbVin+vGSQjXFAX6U/GnYytdCJRXVad1TWGtYFDZ2ROjCKpXQzIwvfbiWCEwfuXgR3B6A== graphql-playground-html@^1.6.30: version "1.6.30" @@ -6340,9 +6447,9 @@ graphql-request@^3.7.0: form-data "^3.0.0" graphql-scalars@^1.20.1: - version "1.21.3" - resolved "https://registry.yarnpkg.com/graphql-scalars/-/graphql-scalars-1.21.3.tgz#21eb0b9349cc94ae62b40f40ebe87220d3a5f1b1" - integrity sha512-QLWw3BHmqHZMp9JeYmPpjq7JT9aw/H8TpwmWKJEuMSE3+O7Xe7TduQbOLFzbs1q9UxX6CVkc0O1JO/YfkP/pAw== + version "1.22.2" + resolved "https://registry.yarnpkg.com/graphql-scalars/-/graphql-scalars-1.22.2.tgz#6326e6fe2d0ad4228a9fea72a977e2bf26b86362" + integrity sha512-my9FB4GtghqXqi/lWSVAOPiTzTnnEzdOXCsAC2bb5V7EFNQjVjwy3cSSbUvgYOtDuDibd+ZsCDhz+4eykYOlhQ== dependencies: tslib "^2.5.0" @@ -6352,9 +6459,9 @@ graphql-type-json@^0.3.2: integrity sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg== graphql@^16.6.0: - version "16.6.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.6.0.tgz#c2dcffa4649db149f6282af726c8c83f1c7c5fdb" - integrity sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw== + version "16.7.1" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.7.1.tgz#11475b74a7bff2aefd4691df52a0eca0abd9b642" + integrity sha512-DRYR9tf+UGU0KOsMcKAlXeFfX89UiiIZ0dRU3mR0yJfu6OjZqUcp68NnFLnqQU5RexygFoDy1EW+ccOYcPfmHg== gzip-size@^6.0.0: version "6.0.0" @@ -6483,9 +6590,9 @@ html-encoding-sniffer@^3.0.0: whatwg-encoding "^2.0.0" html-entities@^2.1.0: - version "2.3.3" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" - integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== + version "2.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.4.0.tgz#edd0cee70402584c8c76cc2c0556db09d1f45061" + integrity sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ== html-escaper@^2.0.0: version "2.0.2" @@ -6513,9 +6620,9 @@ html-parse-stringify@^3.0.1: void-elements "3.1.0" html-webpack-plugin@^5.5.0: - version "5.5.1" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.1.tgz#826838e31b427f5f7f30971f8d8fa2422dfa6763" - integrity sha512-cTUzZ1+NqjGEKjmVgZKLMdiFg3m9MdRXkZW2OEe69WYVi5ONLMmlnSZdXzGGMOq0C8jGDrL6EWyEDDUioHO/pA== + version "5.5.3" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz#72270f4a78e222b5825b296e5e3e1328ad525a3e" + integrity sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg== dependencies: "@types/html-minifier-terser" "^6.0.0" html-minifier-terser "^6.0.2" @@ -6549,15 +6656,6 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - http-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" @@ -6567,6 +6665,14 @@ http-proxy-agent@^5.0.0: agent-base "6" debug "4" +http-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz#e9096c5afd071a3fce56e6252bb321583c124673" + integrity sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ== + dependencies: + agent-base "^7.1.0" + debug "^4.3.4" + http-status@^1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/http-status/-/http-status-1.6.2.tgz#6dc05188a9856d67d96e48e8b4fd645c719ce82a" @@ -6580,7 +6686,7 @@ http2-wrapper@^2.1.10: quick-lru "^5.1.1" resolve-alpn "^1.2.0" -https-proxy-agent@5, https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: +https-proxy-agent@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== @@ -6588,6 +6694,14 @@ https-proxy-agent@5, https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1: agent-base "6" debug "4" +https-proxy-agent@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz#0277e28f13a07d45c663633841e20a40aaafe0ab" + integrity sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ== + dependencies: + agent-base "^7.0.2" + debug "4" + human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" @@ -6606,14 +6720,14 @@ i18next-browser-languagedetector@^6.1.8: "@babel/runtime" "^7.19.0" i18next-http-middleware@^3.2.2: - version "3.3.0" - resolved "https://registry.yarnpkg.com/i18next-http-middleware/-/i18next-http-middleware-3.3.0.tgz#f4e504eea68adc5b8e881d9d6eb78f93f7a34dc0" - integrity sha512-WX6uqxNwXccdNm/md5VJ+Q47DF2gjqLvygvgNzb2tCJWPM86FCi2LIvKco70EttlpV9IkfkCVNVF07/56EsSEw== + version "3.3.2" + resolved "https://registry.yarnpkg.com/i18next-http-middleware/-/i18next-http-middleware-3.3.2.tgz#6a24fee6bde44952a5af24364d43fa32f6c1b9b6" + integrity sha512-PSeLXQXr9Qiv9Q3GCWCoIJenKVbxCcVsXb7VMp/mOprV4gu+AMJT7VHw4+QEf6oYW6GU31QSLnfDpLNoSMtx3g== i18next@^22.4.9: - version "22.4.15" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-22.4.15.tgz#951882b751872994f8502b5a6ef6f796e6a7d7f8" - integrity sha512-yYudtbFrrmWKLEhl6jvKUYyYunj4bTBCe2qIUYAxbXoPusY7YmdwPvOE6fx6UIfWvmlbCWDItr7wIs8KEBZ5Zg== + version "22.5.1" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-22.5.1.tgz#99df0b318741a506000c243429a7352e5f44d424" + integrity sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA== dependencies: "@babel/runtime" "^7.20.6" @@ -6657,11 +6771,11 @@ immer@^9.0.6: integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== immutable@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.0.tgz#eb1738f14ffb39fd068b1dbe1296117484dd34be" - integrity sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg== + version "4.3.1" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.1.tgz#17988b356097ab0719e2f741d56f3ec6c317f9dc" + integrity sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A== -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -6715,26 +6829,26 @@ ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -inquirer@9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-9.2.0.tgz#930d56d682cda629419e80eb92c45828a0fa5924" - integrity sha512-WWERbVqjsTXjXub1ZW0ZHDit1dyHqy0T9XIkky9TnmKAPrjU9Jkd59nZPK0dUuM3s73GZAZu2Jo4iFU3XSPVLA== +inquirer@9.2.6: + version "9.2.6" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-9.2.6.tgz#802a61ee3eefbf1cb82a7fb6c2ae95a106050e01" + integrity sha512-y71l237eJJKS4rl7sQcEUiMhrR0pB/ZnRMMTxLpjJhWL4hdWCT03a6jJnC1w6qIPSRZWEozuieGt3v7XaEJYFw== dependencies: - ansi-escapes "^6.0.0" + ansi-escapes "^4.3.2" chalk "^5.2.0" - cli-cursor "^4.0.0" + cli-cursor "^3.1.0" cli-width "^4.0.0" external-editor "^3.0.3" figures "^5.0.0" lodash "^4.17.21" mute-stream "1.0.0" - ora "^6.1.2" - run-async "^2.4.0" - rxjs "^7.8.0" - string-width "^5.1.2" - strip-ansi "^7.0.1" + ora "^5.4.1" + run-async "^3.0.0" + rxjs "^7.8.1" + string-width "^4.2.3" + strip-ansi "^6.0.1" through "^2.3.6" - wrap-ansi "^8.1.0" + wrap-ansi "^6.0.1" internal-slot@^1.0.3, internal-slot@^1.0.4, internal-slot@^1.0.5: version "1.0.5" @@ -6755,7 +6869,7 @@ interpret@^2.2.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== -ip@^1.1.5: +ip@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== @@ -6907,6 +7021,11 @@ is-installed-globally@^0.4.0: global-dirs "^3.0.0" is-path-inside "^3.0.2" +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + is-interactive@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-2.0.0.tgz#40c57614593826da1100ade6059778d597f16e90" @@ -7035,21 +7154,22 @@ is-text-path@^1.0.1: text-extensions "^1.0.0" is-typed-array@^1.1.10, is-typed-array@^1.1.9: - version "1.1.10" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" - integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" + which-typed-array "^1.1.11" is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + is-unicode-supported@^1.1.0, is-unicode-supported@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz#d824984b616c292a2e198207d4a609983842f714" @@ -7194,75 +7314,75 @@ jest-changed-files@^29.5.0: execa "^5.0.0" p-limit "^3.1.0" -jest-circus@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.5.0.tgz#b5926989449e75bff0d59944bae083c9d7fb7317" - integrity sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA== +jest-circus@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.6.1.tgz#861dab37e71a89907d1c0fabc54a0019738ed824" + integrity sha512-tPbYLEiBU4MYAL2XoZme/bgfUeotpDBd81lgHLCbDZZFaGmECk0b+/xejPFtmiBP87GgP/y4jplcRpbH+fgCzQ== dependencies: - "@jest/environment" "^29.5.0" - "@jest/expect" "^29.5.0" - "@jest/test-result" "^29.5.0" - "@jest/types" "^29.5.0" + "@jest/environment" "^29.6.1" + "@jest/expect" "^29.6.1" + "@jest/test-result" "^29.6.1" + "@jest/types" "^29.6.1" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" is-generator-fn "^2.0.0" - jest-each "^29.5.0" - jest-matcher-utils "^29.5.0" - jest-message-util "^29.5.0" - jest-runtime "^29.5.0" - jest-snapshot "^29.5.0" - jest-util "^29.5.0" + jest-each "^29.6.1" + jest-matcher-utils "^29.6.1" + jest-message-util "^29.6.1" + jest-runtime "^29.6.1" + jest-snapshot "^29.6.1" + jest-util "^29.6.1" p-limit "^3.1.0" - pretty-format "^29.5.0" + pretty-format "^29.6.1" pure-rand "^6.0.0" slash "^3.0.0" stack-utils "^2.0.3" -jest-cli@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.5.0.tgz#b34c20a6d35968f3ee47a7437ff8e53e086b4a67" - integrity sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw== +jest-cli@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.6.1.tgz#99d9afa7449538221c71f358f0fdd3e9c6e89f72" + integrity sha512-607dSgTA4ODIN6go9w6xY3EYkyPFGicx51a69H7yfvt7lN53xNswEVLovq+E77VsTRi5fWprLH0yl4DJgE8Ing== dependencies: - "@jest/core" "^29.5.0" - "@jest/test-result" "^29.5.0" - "@jest/types" "^29.5.0" + "@jest/core" "^29.6.1" + "@jest/test-result" "^29.6.1" + "@jest/types" "^29.6.1" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^29.5.0" - jest-util "^29.5.0" - jest-validate "^29.5.0" + jest-config "^29.6.1" + jest-util "^29.6.1" + jest-validate "^29.6.1" prompts "^2.0.1" yargs "^17.3.1" -jest-config@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.5.0.tgz#3cc972faec8c8aaea9ae158c694541b79f3748da" - integrity sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA== +jest-config@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.6.1.tgz#d785344509065d53a238224c6cdc0ed8e2f2f0dd" + integrity sha512-XdjYV2fy2xYixUiV2Wc54t3Z4oxYPAELUzWnV6+mcbq0rh742X2p52pii5A3oeRzYjLnQxCsZmp0qpI6klE2cQ== dependencies: "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.5.0" - "@jest/types" "^29.5.0" - babel-jest "^29.5.0" + "@jest/test-sequencer" "^29.6.1" + "@jest/types" "^29.6.1" + babel-jest "^29.6.1" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^29.5.0" - jest-environment-node "^29.5.0" + jest-circus "^29.6.1" + jest-environment-node "^29.6.1" jest-get-type "^29.4.3" jest-regex-util "^29.4.3" - jest-resolve "^29.5.0" - jest-runner "^29.5.0" - jest-util "^29.5.0" - jest-validate "^29.5.0" + jest-resolve "^29.6.1" + jest-runner "^29.6.1" + jest-util "^29.6.1" + jest-validate "^29.6.1" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^29.5.0" + pretty-format "^29.6.1" slash "^3.0.0" strip-json-comments "^3.1.1" @@ -7276,15 +7396,15 @@ jest-diff@^26.0.0: jest-get-type "^26.3.0" pretty-format "^26.6.2" -jest-diff@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.5.0.tgz#e0d83a58eb5451dcc1fa61b1c3ee4e8f5a290d63" - integrity sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw== +jest-diff@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.6.1.tgz#13df6db0a89ee6ad93c747c75c85c70ba941e545" + integrity sha512-FsNCvinvl8oVxpNLttNQX7FAq7vR+gMDGj90tiP7siWw1UdakWUGqrylpsYrpvj908IYckm5Y0Q7azNAozU1Kg== dependencies: chalk "^4.0.0" diff-sequences "^29.4.3" jest-get-type "^29.4.3" - pretty-format "^29.5.0" + pretty-format "^29.6.1" jest-docblock@^29.4.3: version "29.4.3" @@ -7293,42 +7413,42 @@ jest-docblock@^29.4.3: dependencies: detect-newline "^3.0.0" -jest-each@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.5.0.tgz#fc6e7014f83eac68e22b7195598de8554c2e5c06" - integrity sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA== +jest-each@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.6.1.tgz#975058e5b8f55c6780beab8b6ab214921815c89c" + integrity sha512-n5eoj5eiTHpKQCAVcNTT7DRqeUmJ01hsAL0Q1SMiBHcBcvTKDELixQOGMCpqhbIuTcfC4kMfSnpmDqRgRJcLNQ== dependencies: - "@jest/types" "^29.5.0" + "@jest/types" "^29.6.1" chalk "^4.0.0" jest-get-type "^29.4.3" - jest-util "^29.5.0" - pretty-format "^29.5.0" + jest-util "^29.6.1" + pretty-format "^29.6.1" jest-environment-jsdom@^29.3.1: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.5.0.tgz#cfe86ebaf1453f3297b5ff3470fbe94739c960cb" - integrity sha512-/KG8yEK4aN8ak56yFVdqFDzKNHgF4BAymCx2LbPNPsUshUlfAl0eX402Xm1pt+eoG9SLZEUVifqXtX8SK74KCw== + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.6.1.tgz#480bce658aa31589309c82ca510351fd7c683bbb" + integrity sha512-PoY+yLaHzVRhVEjcVKSfJ7wXmJW4UqPYNhR05h7u/TK0ouf6DmRNZFBL/Z00zgQMyWGMBXn69/FmOvhEJu8cIw== dependencies: - "@jest/environment" "^29.5.0" - "@jest/fake-timers" "^29.5.0" - "@jest/types" "^29.5.0" + "@jest/environment" "^29.6.1" + "@jest/fake-timers" "^29.6.1" + "@jest/types" "^29.6.1" "@types/jsdom" "^20.0.0" "@types/node" "*" - jest-mock "^29.5.0" - jest-util "^29.5.0" + jest-mock "^29.6.1" + jest-util "^29.6.1" jsdom "^20.0.0" -jest-environment-node@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.5.0.tgz#f17219d0f0cc0e68e0727c58b792c040e332c967" - integrity sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw== +jest-environment-node@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.6.1.tgz#08a122dece39e58bc388da815a2166c58b4abec6" + integrity sha512-ZNIfAiE+foBog24W+2caIldl4Irh8Lx1PUhg/GZ0odM1d/h2qORAsejiFc7zb+SEmYPn1yDZzEDSU5PmDkmVLQ== dependencies: - "@jest/environment" "^29.5.0" - "@jest/fake-timers" "^29.5.0" - "@jest/types" "^29.5.0" + "@jest/environment" "^29.6.1" + "@jest/fake-timers" "^29.6.1" + "@jest/types" "^29.6.1" "@types/node" "*" - jest-mock "^29.5.0" - jest-util "^29.5.0" + jest-mock "^29.6.1" + jest-util "^29.6.1" jest-get-type@^26.3.0: version "26.3.0" @@ -7340,66 +7460,66 @@ jest-get-type@^29.4.3: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== -jest-haste-map@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.5.0.tgz#69bd67dc9012d6e2723f20a945099e972b2e94de" - integrity sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA== +jest-haste-map@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.6.1.tgz#62655c7a1c1b349a3206441330fb2dbdb4b63803" + integrity sha512-0m7f9PZXxOCk1gRACiVgX85knUKPKLPg4oRCjLoqIm9brTHXaorMA0JpmtmVkQiT8nmXyIVoZd/nnH1cfC33ig== dependencies: - "@jest/types" "^29.5.0" + "@jest/types" "^29.6.1" "@types/graceful-fs" "^4.1.3" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.9" jest-regex-util "^29.4.3" - jest-util "^29.5.0" - jest-worker "^29.5.0" + jest-util "^29.6.1" + jest-worker "^29.6.1" micromatch "^4.0.4" walker "^1.0.8" optionalDependencies: fsevents "^2.3.2" -jest-leak-detector@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz#cf4bdea9615c72bac4a3a7ba7e7930f9c0610c8c" - integrity sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow== +jest-leak-detector@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.6.1.tgz#66a902c81318e66e694df7d096a95466cb962f8e" + integrity sha512-OrxMNyZirpOEwkF3UHnIkAiZbtkBWiye+hhBweCHkVbCgyEy71Mwbb5zgeTNYWJBi1qgDVfPC1IwO9dVEeTLwQ== dependencies: jest-get-type "^29.4.3" - pretty-format "^29.5.0" + pretty-format "^29.6.1" -jest-matcher-utils@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz#d957af7f8c0692c5453666705621ad4abc2c59c5" - integrity sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw== +jest-matcher-utils@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.6.1.tgz#6c60075d84655d6300c5d5128f46531848160b53" + integrity sha512-SLaztw9d2mfQQKHmJXKM0HCbl2PPVld/t9Xa6P9sgiExijviSp7TnZZpw2Fpt+OI3nwUO/slJbOfzfUMKKC5QA== dependencies: chalk "^4.0.0" - jest-diff "^29.5.0" + jest-diff "^29.6.1" jest-get-type "^29.4.3" - pretty-format "^29.5.0" + pretty-format "^29.6.1" -jest-message-util@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.5.0.tgz#1f776cac3aca332ab8dd2e3b41625435085c900e" - integrity sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA== +jest-message-util@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.6.1.tgz#d0b21d87f117e1b9e165e24f245befd2ff34ff8d" + integrity sha512-KoAW2zAmNSd3Gk88uJ56qXUWbFk787QKmjjJVOjtGFmmGSZgDBrlIL4AfQw1xyMYPNVD7dNInfIbur9B2rd/wQ== dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.5.0" + "@jest/types" "^29.6.1" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.9" micromatch "^4.0.4" - pretty-format "^29.5.0" + pretty-format "^29.6.1" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.5.0.tgz#26e2172bcc71d8b0195081ff1f146ac7e1518aed" - integrity sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw== +jest-mock@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.6.1.tgz#049ee26aea8cbf54c764af649070910607316517" + integrity sha512-brovyV9HBkjXAEdRooaTQK42n8usKoSRR3gihzUpYeV/vwqgSoNfrksO7UfSACnPmxasO/8TmHM3w9Hp3G1dgw== dependencies: - "@jest/types" "^29.5.0" + "@jest/types" "^29.6.1" "@types/node" "*" - jest-util "^29.5.0" + jest-util "^29.6.1" jest-pnp-resolver@^1.2.2: version "1.2.3" @@ -7411,149 +7531,147 @@ jest-regex-util@^29.4.3: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.4.3.tgz#a42616141e0cae052cfa32c169945d00c0aa0bb8" integrity sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg== -jest-resolve-dependencies@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz#f0ea29955996f49788bf70996052aa98e7befee4" - integrity sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg== +jest-resolve-dependencies@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.1.tgz#b85b06670f987a62515bbf625d54a499e3d708f5" + integrity sha512-BbFvxLXtcldaFOhNMXmHRWx1nXQO5LoXiKSGQcA1LxxirYceZT6ch8KTE1bK3X31TNG/JbkI7OkS/ABexVahiw== dependencies: jest-regex-util "^29.4.3" - jest-snapshot "^29.5.0" + jest-snapshot "^29.6.1" -jest-resolve@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.5.0.tgz#b053cc95ad1d5f6327f0ac8aae9f98795475ecdc" - integrity sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w== +jest-resolve@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.6.1.tgz#4c3324b993a85e300add2f8609f51b80ddea39ee" + integrity sha512-AeRkyS8g37UyJiP9w3mmI/VXU/q8l/IH52vj/cDAyScDcemRbSBhfX/NMYIGilQgSVwsjxrCHf3XJu4f+lxCMg== dependencies: chalk "^4.0.0" graceful-fs "^4.2.9" - jest-haste-map "^29.5.0" + jest-haste-map "^29.6.1" jest-pnp-resolver "^1.2.2" - jest-util "^29.5.0" - jest-validate "^29.5.0" + jest-util "^29.6.1" + jest-validate "^29.6.1" resolve "^1.20.0" resolve.exports "^2.0.0" slash "^3.0.0" -jest-runner@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.5.0.tgz#6a57c282eb0ef749778d444c1d758c6a7693b6f8" - integrity sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ== +jest-runner@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.6.1.tgz#54557087e7972d345540d622ab5bfc3d8f34688c" + integrity sha512-tw0wb2Q9yhjAQ2w8rHRDxteryyIck7gIzQE4Reu3JuOBpGp96xWgF0nY8MDdejzrLCZKDcp8JlZrBN/EtkQvPQ== dependencies: - "@jest/console" "^29.5.0" - "@jest/environment" "^29.5.0" - "@jest/test-result" "^29.5.0" - "@jest/transform" "^29.5.0" - "@jest/types" "^29.5.0" + "@jest/console" "^29.6.1" + "@jest/environment" "^29.6.1" + "@jest/test-result" "^29.6.1" + "@jest/transform" "^29.6.1" + "@jest/types" "^29.6.1" "@types/node" "*" chalk "^4.0.0" emittery "^0.13.1" graceful-fs "^4.2.9" jest-docblock "^29.4.3" - jest-environment-node "^29.5.0" - jest-haste-map "^29.5.0" - jest-leak-detector "^29.5.0" - jest-message-util "^29.5.0" - jest-resolve "^29.5.0" - jest-runtime "^29.5.0" - jest-util "^29.5.0" - jest-watcher "^29.5.0" - jest-worker "^29.5.0" + jest-environment-node "^29.6.1" + jest-haste-map "^29.6.1" + jest-leak-detector "^29.6.1" + jest-message-util "^29.6.1" + jest-resolve "^29.6.1" + jest-runtime "^29.6.1" + jest-util "^29.6.1" + jest-watcher "^29.6.1" + jest-worker "^29.6.1" p-limit "^3.1.0" source-map-support "0.5.13" -jest-runtime@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.5.0.tgz#c83f943ee0c1da7eb91fa181b0811ebd59b03420" - integrity sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw== +jest-runtime@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.6.1.tgz#8a0fc9274ef277f3d70ba19d238e64334958a0dc" + integrity sha512-D6/AYOA+Lhs5e5il8+5pSLemjtJezUr+8zx+Sn8xlmOux3XOqx4d8l/2udBea8CRPqqrzhsKUsN/gBDE/IcaPQ== dependencies: - "@jest/environment" "^29.5.0" - "@jest/fake-timers" "^29.5.0" - "@jest/globals" "^29.5.0" - "@jest/source-map" "^29.4.3" - "@jest/test-result" "^29.5.0" - "@jest/transform" "^29.5.0" - "@jest/types" "^29.5.0" + "@jest/environment" "^29.6.1" + "@jest/fake-timers" "^29.6.1" + "@jest/globals" "^29.6.1" + "@jest/source-map" "^29.6.0" + "@jest/test-result" "^29.6.1" + "@jest/transform" "^29.6.1" + "@jest/types" "^29.6.1" "@types/node" "*" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" glob "^7.1.3" graceful-fs "^4.2.9" - jest-haste-map "^29.5.0" - jest-message-util "^29.5.0" - jest-mock "^29.5.0" + jest-haste-map "^29.6.1" + jest-message-util "^29.6.1" + jest-mock "^29.6.1" jest-regex-util "^29.4.3" - jest-resolve "^29.5.0" - jest-snapshot "^29.5.0" - jest-util "^29.5.0" + jest-resolve "^29.6.1" + jest-snapshot "^29.6.1" + jest-util "^29.6.1" slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.5.0.tgz#c9c1ce0331e5b63cd444e2f95a55a73b84b1e8ce" - integrity sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g== +jest-snapshot@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.6.1.tgz#0d083cb7de716d5d5cdbe80d598ed2fbafac0239" + integrity sha512-G4UQE1QQ6OaCgfY+A0uR1W2AY0tGXUPQpoUClhWHq1Xdnx1H6JOrC2nH5lqnOEqaDgbHFgIwZ7bNq24HpB180A== dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" "@babel/plugin-syntax-jsx" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.5.0" - "@jest/transform" "^29.5.0" - "@jest/types" "^29.5.0" - "@types/babel__traverse" "^7.0.6" + "@jest/expect-utils" "^29.6.1" + "@jest/transform" "^29.6.1" + "@jest/types" "^29.6.1" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^29.5.0" + expect "^29.6.1" graceful-fs "^4.2.9" - jest-diff "^29.5.0" + jest-diff "^29.6.1" jest-get-type "^29.4.3" - jest-matcher-utils "^29.5.0" - jest-message-util "^29.5.0" - jest-util "^29.5.0" + jest-matcher-utils "^29.6.1" + jest-message-util "^29.6.1" + jest-util "^29.6.1" natural-compare "^1.4.0" - pretty-format "^29.5.0" - semver "^7.3.5" + pretty-format "^29.6.1" + semver "^7.5.3" -jest-util@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f" - integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ== +jest-util@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.6.1.tgz#c9e29a87a6edbf1e39e6dee2b4689b8a146679cb" + integrity sha512-NRFCcjc+/uO3ijUVyNOQJluf8PtGCe/W6cix36+M3cTFgiYqFOOW5MgN4JOOcvbUhcKTYVd1CvHz/LWi8d16Mg== dependencies: - "@jest/types" "^29.5.0" + "@jest/types" "^29.6.1" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.5.0.tgz#8e5a8f36178d40e47138dc00866a5f3bd9916ffc" - integrity sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ== +jest-validate@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.6.1.tgz#765e684af6e2c86dce950aebefbbcd4546d69f7b" + integrity sha512-r3Ds69/0KCN4vx4sYAbGL1EVpZ7MSS0vLmd3gV78O+NAx3PDQQukRU5hNHPXlyqCgFY8XUk7EuTMLugh0KzahA== dependencies: - "@jest/types" "^29.5.0" + "@jest/types" "^29.6.1" camelcase "^6.2.0" chalk "^4.0.0" jest-get-type "^29.4.3" leven "^3.1.0" - pretty-format "^29.5.0" + pretty-format "^29.6.1" -jest-watcher@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.5.0.tgz#cf7f0f949828ba65ddbbb45c743a382a4d911363" - integrity sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA== +jest-watcher@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.6.1.tgz#7c0c43ddd52418af134c551c92c9ea31e5ec942e" + integrity sha512-d4wpjWTS7HEZPaaj8m36QiaP856JthRZkrgcIY/7ISoUWPIillrXM23WPboZVLbiwZBt4/qn2Jke84Sla6JhFA== dependencies: - "@jest/test-result" "^29.5.0" - "@jest/types" "^29.5.0" + "@jest/test-result" "^29.6.1" + "@jest/types" "^29.6.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" emittery "^0.13.1" - jest-util "^29.5.0" + jest-util "^29.6.1" string-length "^4.0.1" jest-worker@^27.4.5: @@ -7565,25 +7683,25 @@ jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^29.4.3, jest-worker@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.5.0.tgz#bdaefb06811bd3384d93f009755014d8acb4615d" - integrity sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA== +jest-worker@^29.4.3, jest-worker@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.6.1.tgz#64b015f0e985ef3a8ad049b61fe92b3db74a5319" + integrity sha512-U+Wrbca7S8ZAxAe9L6nb6g8kPdia5hj32Puu5iOqBCMTMWFHXuK6dOV2IFrpedbTV8fjMFLdWNttQTBL6u2MRA== dependencies: "@types/node" "*" - jest-util "^29.5.0" + jest-util "^29.6.1" merge-stream "^2.0.0" supports-color "^8.0.0" jest@^29.3.1: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.5.0.tgz#f75157622f5ce7ad53028f2f8888ab53e1f1f24e" - integrity sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ== + version "29.6.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.6.1.tgz#74be1cb719c3abe439f2d94aeb18e6540a5b02ad" + integrity sha512-Nirw5B4nn69rVUZtemCQhwxOBhm0nsp3hmtF4rzCeWD7BkjAXRIji7xWQfnTNbz9g0aVsBX6aZK3n+23LM6uDw== dependencies: - "@jest/core" "^29.5.0" - "@jest/types" "^29.5.0" + "@jest/core" "^29.6.1" + "@jest/types" "^29.6.1" import-local "^3.0.2" - jest-cli "^29.5.0" + jest-cli "^29.6.1" joi@^17.7.0: version "17.9.2" @@ -7601,11 +7719,6 @@ joycon@^3.1.1: resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== -js-sdsl@^4.1.4: - version "4.4.0" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" - integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -7762,9 +7875,9 @@ jsonparse@^1.2.0: integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== jsonwebtoken@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz#d0faf9ba1cc3a56255fe49c0961a67e520c1926d" - integrity sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw== + version "9.0.1" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz#81d8c901c112c24e497a55daf6b2be1225b40145" + integrity sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg== dependencies: jws "^3.2.2" lodash "^4.17.21" @@ -7772,12 +7885,14 @@ jsonwebtoken@^9.0.0: semver "^7.3.8" "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" - integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== + version "3.3.4" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.4.tgz#b896535fed5b867650acce5a9bd4135ffc7b3bf9" + integrity sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw== dependencies: - array-includes "^3.1.5" - object.assign "^4.1.3" + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" jwa@^1.4.1: version "1.4.1" @@ -7807,9 +7922,9 @@ kareem@2.5.1: integrity sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA== keyv@^4.5.2: - version "4.5.2" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" - integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== + version "4.5.3" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.3.tgz#00873d2b046df737963157bd04f294ca818c9c25" + integrity sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug== dependencies: json-buffer "3.0.1" @@ -7992,6 +8107,14 @@ lodash@4.17.21, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17. resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + log-symbols@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-5.1.0.tgz#a20e3b9a5f53fac6aeb8e2bb22c07cf2c8f16d93" @@ -8033,6 +8156,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +lru-cache@^7.14.1: + version "7.18.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + lru-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" @@ -8040,15 +8168,15 @@ lru-queue@^0.1.0: dependencies: es5-ext "~0.10.2" -lz-string@^1.4.4: +lz-string@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== macos-release@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-3.1.0.tgz#6165bb0736ae567ed6649e36ce6a24d87cbb7aca" - integrity sha512-/M/R0gCDgM+Cv1IuBG1XGdfTFnMEG6PZeT+KGWHO/OG+imqmaD9CH5vHBTycEM3+Kc4uG2Il+tFAuUWLqQOeUA== + version "3.2.0" + resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-3.2.0.tgz#dcee82b6a4932971b1538dbf6f3aabc4a903b613" + integrity sha512-fSErXALFNsnowREYZ49XCdOHF8wOPWuFOGQrAhP7x5J/BqQv+B02cNsTykGpDgRVx43EKg++6ANmTaGTtW+hUA== make-dir@^3.0.0, make-dir@^3.0.2: version "3.1.0" @@ -8109,11 +8237,11 @@ media-typer@0.3.0: integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== memfs@^3.4.12: - version "3.5.1" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.5.1.tgz#f0cd1e2bfaef58f6fe09bfb9c2288f07fea099ec" - integrity sha512-UWbFJKvj5k+nETdteFndTpYxdeTMox/ULeqX5k/dpaQJCCFmj5EeKv3dBcyO2xmkRAx2vppRu5dVG7SOtsGOzA== + version "3.6.0" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" + integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== dependencies: - fs-monkey "^1.0.3" + fs-monkey "^1.0.4" memoize-one@^6.0.0: version "6.0.0" @@ -8311,10 +8439,10 @@ mongodb-connection-string-url@^2.5.4, mongodb-connection-string-url@^2.6.0: "@types/whatwg-url" "^8.2.1" whatwg-url "^11.0.0" -mongodb-memory-server-core@8.12.2: - version "8.12.2" - resolved "https://registry.yarnpkg.com/mongodb-memory-server-core/-/mongodb-memory-server-core-8.12.2.tgz#730cc4c01c457657e16e4e4a8a642b9ff8382fea" - integrity sha512-bls+lroejnhbZTOm5KHtxtf9PK6xASEAsCvZCPoXrNk1f10p0jDw7Xb4GUqVi0ZuVmuLZBNgmzYeHmb3WUgvLg== +mongodb-memory-server-core@8.13.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/mongodb-memory-server-core/-/mongodb-memory-server-core-8.13.0.tgz#3aabf0faa2ad0eaf986dd047bfb9d599a285d4ed" + integrity sha512-4NTOzYOlRUilwb8CxOKix/XbZmac4cLpmEU03eaHx90lgEp+ARZM2PQtIOEg3nhHo97r9THIEv6Gs4LECokp0Q== dependencies: async-mutex "^0.3.2" camelcase "^6.3.0" @@ -8323,23 +8451,23 @@ mongodb-memory-server-core@8.12.2: get-port "^5.1.1" https-proxy-agent "^5.0.1" md5-file "^5.0.0" - mongodb "^4.13.0" + mongodb "^4.16.0" new-find-package-json "^2.0.0" - semver "^7.3.8" + semver "^7.5.1" tar-stream "^2.1.4" - tslib "^2.5.0" + tslib "^2.5.3" uuid "^9.0.0" yauzl "^2.10.0" mongodb-memory-server@^8.12.2: - version "8.12.2" - resolved "https://registry.yarnpkg.com/mongodb-memory-server/-/mongodb-memory-server-8.12.2.tgz#09d7f7fb7877d309c486f3e703390633bfd137f4" - integrity sha512-WM3uJnKWqhJxu3LlHfvRXRrhc+kiEGdGDHMrAG0N1E2fWbRlvSnUKau7Jdcf7cIA5HlRC/K8uVe0DCym45KfAA== + version "8.13.0" + resolved "https://registry.yarnpkg.com/mongodb-memory-server/-/mongodb-memory-server-8.13.0.tgz#c3302c72972220f2d7f8e48dc1919eb75c8585a8" + integrity sha512-CyrKMwEmRePn8iQ3LtWQiOJxlGK0eM+NNTq3Yg8m7gaywepFu24mF7s13q87Kfuq0WgBuCJQ4t6VcUZJ4m+KWQ== dependencies: - mongodb-memory-server-core "8.12.2" - tslib "^2.5.0" + mongodb-memory-server-core "8.13.0" + tslib "^2.5.3" -mongodb@4.16.0, mongodb@^4.13.0: +mongodb@4.16.0, mongodb@^4.16.0: version "4.16.0" resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-4.16.0.tgz#8b0043de7b577c6a7e0ce44a2ca7315b9c0a7927" integrity sha512-0EB113Fsucaq1wsY0dOhi1fmZOwFtLOtteQkiqOXGklvWMnSH3g2QS53f0KTP+/6qOkuoXE2JksubSZNmxeI+g== @@ -8351,12 +8479,12 @@ mongodb@4.16.0, mongodb@^4.13.0: "@aws-sdk/credential-providers" "^3.186.0" saslprep "^1.0.3" -mongodb@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-5.3.0.tgz#9bef3ff35511a66fb7d9aafb7b06112787138db1" - integrity sha512-Wy/sbahguL8c3TXQWXmuBabiLD+iVmz+tOgQf+FwkCjhUIorqbAxRbbz00g4ZoN4sXIPwpAlTANMaGRjGGTikQ== +mongodb@5.7.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-5.7.0.tgz#e16d2fcdfd9f8503ec2d88288392dc3235bb3ecc" + integrity sha512-zm82Bq33QbqtxDf58fLWBwTjARK3NSvKYjyz997KSy6hpat0prjeX/kxjbPVyZY60XYPDNETaHkHJI2UCzSLuw== dependencies: - bson "^5.2.0" + bson "^5.4.0" mongodb-connection-string-url "^2.6.0" socks "^2.7.1" optionalDependencies: @@ -8386,13 +8514,13 @@ mongoose@6.11.4: sift "16.0.1" mongoose@>=6.3.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-7.1.1.tgz#a0e17be54754dd8801cb3696585b949399550aa9" - integrity sha512-AIxaWwGY+td7QOMk4NgK6fbRuGovFyDzv65nU1uj1DsUh3lpjfP3iFYHSR+sUKrs7nbp19ksLlRXkmInBteSCA== + version "7.4.0" + resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-7.4.0.tgz#3726a8dea0c9e2d54651845cc84c813a6507906a" + integrity sha512-oHE1eqodfKzugXRlQxpo+msIea7jPcRoayDuEMr50+bYwM/juA5f+1stjkWlXcg6vo1PdJFVA6DGaKOPLuG5mA== dependencies: - bson "^5.2.0" + bson "^5.4.0" kareem "2.5.1" - mongodb "5.3.0" + mongodb "5.7.0" mpath "0.9.0" mquery "5.0.0" ms "2.1.3" @@ -8523,9 +8651,9 @@ no-case@^3.0.4: tslib "^2.0.3" node-abi@^3.3.0: - version "3.40.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.40.0.tgz#51d8ed44534f70ff1357dfbc3a89717b1ceac1b4" - integrity sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA== + version "3.45.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.45.0.tgz#f568f163a3bfca5aacfce1fbeee1fa2cc98441f5" + integrity sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ== dependencies: semver "^7.3.5" @@ -8539,10 +8667,10 @@ node-domexception@^1.0.0: resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== -node-fetch@2, node-fetch@^2.6.1, node-fetch@^2.6.11, node-fetch@^2.6.7: - version "2.6.11" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.11.tgz#cde7fc71deef3131ef80a738919f999e6edfff25" - integrity sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w== +node-fetch@2, node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7: + version "2.6.12" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba" + integrity sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g== dependencies: whatwg-url "^5.0.0" @@ -8560,15 +8688,15 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-releases@^2.0.8: - version "2.0.10" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" - integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== +node-releases@^2.0.12: + version "2.0.13" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== nodemailer@^6.9.0: - version "6.9.2" - resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.9.2.tgz#b79051811edd52c2436ad1c6aed2dc45b9c9cf1f" - integrity sha512-4+TYaa/e1nIxQfyw/WzNPYTEZ5OvHIDEnmjs4LPmIfccPQN+2CYKmGHjWixn/chzD3bmUTu5FMfpltizMxqzdg== + version "6.9.4" + resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.9.4.tgz#93bd4a60eb0be6fa088a0483340551ebabfd2abf" + integrity sha512-CXjQvrQZV4+6X5wP6ZIgdehJamI63MFoYFGGPtHudWym9qaEHDNdPzaj5bfMCvxG1vhAileSWW90q7nL0N36mA== nodemon@^2.0.20: version "2.0.22" @@ -8658,9 +8786,9 @@ nth-check@^2.0.1: boolbase "^1.0.0" nwsapi@^2.2.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.4.tgz#fd59d5e904e8e1f03c25a7d5a15cfa16c714a1e5" - integrity sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g== + version "2.2.7" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" + integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" @@ -8690,7 +8818,7 @@ object-to-formdata@^4.4.2: resolved "https://registry.yarnpkg.com/object-to-formdata/-/object-to-formdata-4.5.1.tgz#b6955a9c505b58df15852fee5f844b418b3eb6fe" integrity sha512-QiM9D0NiU5jV6J6tjE1g7b4Z2tcUnKs1OPUi4iMb2zH+7jwlcUrASghgkFk9GtzqNNq8rTQJtT8AzjBAvLoNMw== -object.assign@^4.1.0, object.assign@^4.1.3, object.assign@^4.1.4: +object.assign@^4.1.0, object.assign@^4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== @@ -8800,34 +8928,19 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" -ora@6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-6.3.0.tgz#a314600999f514a989a0904f5c17c8b7c1f7c878" - integrity sha512-1/D8uRFY0ay2kgBpmAwmSA404w4OoPVhHMqRqtjvrcK/dnzcEZxMJ+V4DUbyICu8IIVRclHcOf5wlD1tMY4GUQ== - dependencies: - chalk "^5.0.0" - cli-cursor "^4.0.0" - cli-spinners "^2.6.1" - is-interactive "^2.0.0" - is-unicode-supported "^1.1.0" - log-symbols "^5.1.0" - stdin-discarder "^0.1.0" - strip-ansi "^7.0.1" - wcwidth "^1.0.1" - -ora@^6.1.2: +ora@6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/ora/-/ora-6.3.1.tgz#a4e9e5c2cf5ee73c259e8b410273e706a2ad3ed6" integrity sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ== @@ -8842,6 +8955,21 @@ ora@^6.1.2: strip-ansi "^7.0.1" wcwidth "^1.0.1" +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + os-name@5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/os-name/-/os-name-5.1.0.tgz#4f5ab5edfa6938b590112714f1570fe79f1d957a" @@ -8919,34 +9047,32 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pac-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz#b718f76475a6a5415c2efbe256c1c971c84f635e" - integrity sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ== +pac-proxy-agent@^6.0.3: + version "6.0.4" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-6.0.4.tgz#f90d066808974cd6813dfcdac69a2aa483b18ba1" + integrity sha512-FbJYeusBOZNe6bmrC2/+r/HljwExryon16lNKEU82gWiwIPMCEktUPSEAcTkO9K3jd/YPGuX/azZel1ltmo6nQ== dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - get-uri "3" - http-proxy-agent "^4.0.1" - https-proxy-agent "5" - pac-resolver "^5.0.0" - raw-body "^2.2.0" - socks-proxy-agent "5" + agent-base "^7.0.2" + debug "^4.3.4" + get-uri "^6.0.1" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.0" + pac-resolver "^6.0.1" + socks-proxy-agent "^8.0.1" -pac-resolver@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-5.0.1.tgz#c91efa3a9af9f669104fa2f51102839d01cde8e7" - integrity sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q== +pac-resolver@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-6.0.2.tgz#742ef24d2805b18c0a684ac02bcb0b5ce9644648" + integrity sha512-EQpuJ2ifOjpZY5sg1Q1ZeAxvtLwR7Mj3RgY8cysPGbsRu3RBXyJFWxnMus9PScjxya/0LzvVDxNh/gl0eXBU4w== dependencies: - degenerator "^3.0.2" - ip "^1.1.5" + degenerator "^4.0.4" + ip "^1.1.8" netmask "^2.0.2" package-json@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-8.1.0.tgz#2a22806f1ed7c786c8e6ff26cfe20003bf4c6850" - integrity sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg== + version "8.1.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-8.1.1.tgz#3e9948e43df40d1e8e78a85485f1070bf8f03dc8" + integrity sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA== dependencies: got "^12.1.0" registry-auth-token "^5.0.1" @@ -9167,9 +9293,9 @@ pino-abstract-transport@^1.0.0: split2 "^4.0.0" pino-pretty@^9.1.1: - version "9.4.0" - resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-9.4.0.tgz#fc4026e83c87272cbdfb7afed121770e6000940c" - integrity sha512-NIudkNLxnl7MGj1XkvsqVyRgo6meFP82ECXF2PlOI+9ghmbGuBUUqKJ7IZPIxpJw4vhhSva0IuiDSAuGh6TV9g== + version "9.4.1" + resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-9.4.1.tgz#89121ef32d00a4d2e4b1c62850dcfff26f62a185" + integrity sha512-loWr5SNawVycvY//hamIzyz3Fh5OSpvkcO13MwdDW+eKIGylobPLqnVGTDwDXkdmpJd1BhEG+qhDw09h6SqJiQ== dependencies: colorette "^2.0.7" dateformat "^4.6.3" @@ -9205,9 +9331,9 @@ pino@^6.4.1: sonic-boom "^1.0.2" pirates@^4.0.1, pirates@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" @@ -9476,9 +9602,9 @@ postcss-modules-extract-imports@^3.0.0: integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== postcss-modules-local-by-default@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" - integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz#b08eb4f083050708998ba2c6061b50c2870ca524" + integrity sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA== dependencies: icss-utils "^5.0.0" postcss-selector-parser "^6.0.2" @@ -9717,10 +9843,10 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.2.15, postcss@^8.4.21: - version "8.4.23" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.23.tgz#df0aee9ac7c5e53e1075c24a3613496f9e6552ab" - integrity sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA== +postcss@^8.2.15, postcss@^8.4.21, postcss@^8.4.24: + version "8.4.27" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.27.tgz#234d7e4b72e34ba5a92c29636734349e0d9c3057" + integrity sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ== dependencies: nanoid "^3.3.6" picocolors "^1.0.0" @@ -9786,12 +9912,12 @@ pretty-format@^27.0.2: ansi-styles "^5.0.0" react-is "^17.0.1" -pretty-format@^29.0.0, pretty-format@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.5.0.tgz#283134e74f70e2e3e7229336de0e4fce94ccde5a" - integrity sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw== +pretty-format@^29.0.0, pretty-format@^29.6.1: + version "29.6.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.6.1.tgz#ec838c288850b7c4f9090b867c2d4f4edbfb0f3e" + integrity sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog== dependencies: - "@jest/schemas" "^29.4.3" + "@jest/schemas" "^29.6.0" ansi-styles "^5.0.0" react-is "^18.0.0" @@ -9866,21 +9992,21 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" -proxy-agent@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-5.0.0.tgz#d31405c10d6e8431fde96cba7a0c027ce01d633b" - integrity sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g== +proxy-agent@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.2.1.tgz#062df6609a4012fd1c108974865599b61e77abde" + integrity sha512-OIbBKlRAT+ycCm6wAYIzMwPejzRtjy8F3QiDX0eKOA3e4pe3U9F/IvzcHP42bmgQxVv97juG+J8/gx+JIeCX/Q== dependencies: - agent-base "^6.0.0" - debug "4" - http-proxy-agent "^4.0.0" - https-proxy-agent "^5.0.0" - lru-cache "^5.1.1" - pac-proxy-agent "^5.0.0" - proxy-from-env "^1.0.0" - socks-proxy-agent "^5.0.0" + agent-base "^7.0.2" + debug "^4.3.4" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.0" + lru-cache "^7.14.1" + pac-proxy-agent "^6.0.3" + proxy-from-env "^1.1.0" + socks-proxy-agent "^8.0.1" -proxy-from-env@^1.0.0: +proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== @@ -9998,7 +10124,7 @@ raw-body@2.5.1: iconv-lite "0.4.24" unpipe "1.0.0" -raw-body@2.5.2, raw-body@^2.2.0: +raw-body@2.5.2: version "2.5.2" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== @@ -10027,13 +10153,13 @@ react-animate-height@^2.1.2: prop-types "^15.6.1" react-datepicker@^4.10.0: - version "4.11.0" - resolved "https://registry.yarnpkg.com/react-datepicker/-/react-datepicker-4.11.0.tgz#40e73b4729a284ed206fdb322b8e84eb566e11a3" - integrity sha512-50n93o7mQwBEhg05tbopjFKgs8qgi8VBCAOMC4VqrKut72eAjESc/wXS/k5hRtnP0oe2FCGw7MJuIwh37wuXOw== + version "4.16.0" + resolved "https://registry.yarnpkg.com/react-datepicker/-/react-datepicker-4.16.0.tgz#b9dd389bb5611a1acc514bba1dd944be21dd877f" + integrity sha512-hNQ0PAg/LQoVbDUO/RWAdm/RYmPhN3cz7LuQ3hqbs24OSp69QCiKOJRrQ4jk1gv1jNR5oYu8SjjgfDh8q6Q1yw== dependencies: - "@popperjs/core" "^2.9.2" + "@popperjs/core" "^2.11.8" classnames "^2.2.6" - date-fns "^2.24.0" + date-fns "^2.30.0" prop-types "^15.7.2" react-onclickoutside "^6.12.2" react-popper "^2.3.0" @@ -10058,9 +10184,9 @@ react-dom@^18.2.0: scheduler "^0.23.0" react-fast-compare@^3.0.1, react-fast-compare@^3.1.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.1.tgz#53933d9e14f364281d6cba24bfed7a4afb808b5f" - integrity sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg== + version "3.2.2" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" + integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== react-helmet@^6.1.0: version "6.1.0" @@ -10142,9 +10268,9 @@ react-router@5.3.4: tiny-warning "^1.0.0" react-select@^5.7.3: - version "5.7.3" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.7.3.tgz#fa0dc9a23cad6ff3871ad3829f6083a4b54961a2" - integrity sha512-z8i3NCuFFWL3w27xq92rBkVI2onT0jzIIPe480HlBjXJ3b5o6Q+Clp4ydyeKrj9DZZ3lrjawwLC5NGl0FSvUDg== + version "5.7.4" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-5.7.4.tgz#d8cad96e7bc9d6c8e2709bdda8f4363c5dd7ea7d" + integrity sha512-NhuE56X+p9QDFh4BgeygHFIvJJszO1i1KSkg/JPcIJrbovyRtI+GuOEa4XzFCEpZRAEoEI8u/cAHK+jG/PgUzQ== dependencies: "@babel/runtime" "^7.12.0" "@emotion/cache" "^11.4.0" @@ -10221,16 +10347,6 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -readable-stream@1.1.x: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" @@ -10241,14 +10357,15 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stre util-deprecate "^1.0.1" readable-stream@^4.0.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.4.0.tgz#55ce132d60a988c460d75c631e9ccf6a7229b468" - integrity sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg== + version "4.4.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.4.2.tgz#e6aced27ad3b9d726d8308515b9a1b98dc1b9d13" + integrity sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA== dependencies: abort-controller "^3.0.0" buffer "^6.0.3" events "^3.3.0" process "^0.11.10" + string_decoder "^1.3.0" readable-stream@~1.0.31: version "1.0.34" @@ -10348,20 +10465,20 @@ relateurl@^0.2.7: integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== release-it@^15.10.1: - version "15.10.3" - resolved "https://registry.yarnpkg.com/release-it/-/release-it-15.10.3.tgz#9d0a832083c070958cdd0727d3053d45ea344e85" - integrity sha512-OSdHOg76gwkpLbSLBK09GZQj5XWXwBP+S6v//rSoQKkjqklaCLK04Gl5NkTwNrQOHHiihs4ToesDNh2+w55k3w== + version "15.11.0" + resolved "https://registry.yarnpkg.com/release-it/-/release-it-15.11.0.tgz#389cf1e8f367b51f3f3bc4dc3e01046b6bdb166c" + integrity sha512-lZwoGEnKYKwGnfxxlA7vtR7vvozPrOSsIgQaHO4bgQ5ARbG3IA6Dmo0IVusv6nR1KmnjH70QIeNAgsWs6Ji/tw== dependencies: "@iarna/toml" "2.2.5" - "@octokit/rest" "19.0.7" + "@octokit/rest" "19.0.11" async-retry "1.3.3" chalk "5.2.0" cosmiconfig "8.1.3" execa "7.1.1" git-url-parse "13.1.0" globby "13.1.4" - got "12.6.0" - inquirer "9.2.0" + got "12.6.1" + inquirer "9.2.6" is-ci "3.0.1" issue-parser "6.0.0" lodash "4.17.21" @@ -10369,11 +10486,11 @@ release-it@^15.10.1: new-github-release-url "2.0.0" node-fetch "3.3.1" open "9.1.0" - ora "6.3.0" + ora "6.3.1" os-name "5.1.0" promise.allsettled "1.0.6" - proxy-agent "5.0.0" - semver "7.5.0" + proxy-agent "6.2.1" + semver "7.5.1" shelljs "0.8.5" update-notifier "6.0.2" url-join "5.0.0" @@ -10438,6 +10555,11 @@ resolve-pathname@^3.0.0: resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + resolve.exports@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" @@ -10468,6 +10590,14 @@ responselike@^3.0.0: dependencies: lowercase-keys "^3.0.0" +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + restore-cursor@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9" @@ -10500,10 +10630,10 @@ run-applescript@^5.0.0: dependencies: execa "^5.0.0" -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== +run-async@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-3.0.0.tgz#42a432f6d76c689522058984384df28be379daad" + integrity sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q== run-parallel@^1.1.9: version "1.2.0" @@ -10512,13 +10642,23 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@^7.8.0: +rxjs@^7.8.1: version "7.8.1" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== dependencies: tslib "^2.1.0" +safe-array-concat@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060" + integrity sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -10566,9 +10706,9 @@ sass-loader@^12.6.0: neo-async "^2.6.2" sass@^1.57.1: - version "1.62.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.62.1.tgz#caa8d6bf098935bc92fc73fa169fb3790cacd029" - integrity sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A== + version "1.64.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.64.0.tgz#9ca8d0acb1a704b86b7f1197dc310f568fb34638" + integrity sha512-m7YtAGmQta9uANIUJwXesAJMSncqH+3INc8kdVXs6eV6GUC8Qu2IYKQSN8PRLgiQfpca697G94klm2leYMxSHw== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -10593,19 +10733,19 @@ scheduler@^0.23.0: dependencies: loose-envify "^1.1.0" -schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.2.tgz#36c10abca6f7577aeae136c804b0c741edeadc99" - integrity sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg== +schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== dependencies: "@types/json-schema" "^7.0.8" ajv "^6.12.5" ajv-keywords "^3.5.2" -schema-utils@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.1.tgz#eb2d042df8b01f4b5c276a2dfd41ba0faab72e8d" - integrity sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ== +schema-utils@^4.0.0, schema-utils@^4.0.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" + integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== dependencies: "@types/json-schema" "^7.0.9" ajv "^8.9.0" @@ -10614,7 +10754,7 @@ schema-utils@^4.0.0: scmp@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/scmp/-/scmp-2.1.0.tgz#37b8e197c425bdeb570ab91cc356b311a11f9c9a" + resolved "https://registry.yarnpkg.com/scmp/-/scmp-2.1.0.tgz#37b8e197c425bdeb570ab91cc356b311a11f9c9a" integrity sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q== scroll-into-view-if-needed@^2.2.20: @@ -10637,9 +10777,9 @@ semver-diff@^4.0.0: semver "^7.3.5" "semver@2 || 3 || 4 || 5", semver@^5.7.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== semver@7.3.8: version "7.3.8" @@ -10648,25 +10788,25 @@ semver@7.3.8: dependencies: lru-cache "^6.0.0" -semver@7.5.0: - version "7.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0" - integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== - dependencies: - lru-cache "^6.0.0" - -semver@^6.0.0, semver@^6.1.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: +semver@7.5.1: version "7.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw== dependencies: lru-cache "^6.0.0" +semver@^6.0.0, semver@^6.1.0, semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.1, semver@^7.5.3: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + semver@~7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" @@ -10869,16 +11009,16 @@ smart-buffer@^4.2.0: resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== -socks-proxy-agent@5, socks-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e" - integrity sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ== +socks-proxy-agent@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.1.tgz#ffc5859a66dac89b0c4dab90253b96705f3e7120" + integrity sha512-59EjPbbgg8U3x62hhKOFVAmySQUcfRQ4C7Q/D5sEHnZTQRrQlNKINks44DMR1gwXp0p4LaVIeccX2KHTTcHVqQ== dependencies: - agent-base "^6.0.2" - debug "4" - socks "^2.3.3" + agent-base "^7.0.1" + debug "^4.3.4" + socks "^2.7.1" -socks@^2.3.3, socks@^2.7.1: +socks@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== @@ -11109,7 +11249,7 @@ string.prototype.trimstart@^1.0.6: define-properties "^1.1.4" es-abstract "^1.20.4" -string_decoder@^1.1.1: +string_decoder@^1.1.1, string_decoder@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -11136,9 +11276,9 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: ansi-regex "^5.0.1" strip-ansi@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" - integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== dependencies: ansi-regex "^6.0.1" @@ -11169,7 +11309,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -11257,9 +11397,9 @@ swc-loader@^0.2.3: integrity sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A== swc-minify-webpack-plugin@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/swc-minify-webpack-plugin/-/swc-minify-webpack-plugin-2.1.0.tgz#35f975595d2e090064f34cb57f4ac4fd98a67eaa" - integrity sha512-v4B+Wcr84q58w2uALmjdTmOKyoF0pWY1xoGzy5vMibuQXQ0dHXlTmhodfu1NCiOISkqMf3T10nFmFQutBLw/vA== + version "2.1.1" + resolved "https://registry.yarnpkg.com/swc-minify-webpack-plugin/-/swc-minify-webpack-plugin-2.1.1.tgz#2c63fe592d49541733d7557b3af8f97c7ffa78b9" + integrity sha512-/9ud/libNWUC5p71vXWhW/O2Nc0essW8D9pY4P4ol0ceM8OcFbNr41R9YFqTkmktqUL2t0WwXau+FkR4T1+PJA== symbol-tree@^3.2.4: version "3.2.4" @@ -11298,9 +11438,9 @@ tar-stream@^2.1.4: readable-stream "^3.1.1" terser-webpack-plugin@^5.3.6, terser-webpack-plugin@^5.3.7: - version "5.3.8" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.8.tgz#415e03d2508f7de63d59eca85c5d102838f06610" - integrity sha512-WiHL3ElchZMsK27P8uIUh4604IgJyAW47LVXGbEoB21DbQcZ+OuMpGjVYnEUaqcWM6dO8uS2qUbA7LSCWqvsbg== + version "5.3.9" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1" + integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== dependencies: "@jridgewell/trace-mapping" "^0.3.17" jest-worker "^27.4.5" @@ -11309,12 +11449,12 @@ terser-webpack-plugin@^5.3.6, terser-webpack-plugin@^5.3.7: terser "^5.16.8" terser@^5.10.0, terser@^5.16.8: - version "5.17.4" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.17.4.tgz#b0c2d94897dfeba43213ed5f90ed117270a2c696" - integrity sha512-jcEKZw6UPrgugz/0Tuk/PVyLAPfMBJf5clnGueo45wTweoV8yh7Q7PEkhkJ5uuUbC7zAxEcG3tqNr1bstkQ8nw== + version "5.19.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.2.tgz#bdb8017a9a4a8de4663a7983f45c506534f9234e" + integrity sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA== dependencies: - "@jridgewell/source-map" "^0.3.2" - acorn "^8.5.0" + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" commander "^2.20.0" source-map-support "~0.5.20" @@ -11449,9 +11589,9 @@ touch@^3.1.0: nopt "~1.0.10" tough-cookie@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" - integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== + version "4.1.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" + integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== dependencies: psl "^1.1.33" punycode "^2.1.1" @@ -11521,10 +11661,10 @@ tslib@^1.11.1, tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" - integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.5.0, tslib@^2.5.3: + version "2.6.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" + integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== tsutils@^3.21.0: version "3.21.0" @@ -11594,11 +11734,6 @@ type-fest@^2.13.0, type-fest@^2.5.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== -type-fest@^3.0.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.10.0.tgz#d75f17a22be8816aea6315ab2739fe1c0c211863" - integrity sha512-hmAPf1datm+gt3c2mvu0sJyhFy6lTkIGf0GzyaZWxRLnabQfPUqg6tF95RPg6sLxKI7nFLGdFxBcf2/7+GXI+A== - type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -11617,6 +11752,36 @@ type@^2.7.2: resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + typed-array-length@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" @@ -11700,7 +11865,7 @@ untildify@^4.0.0: resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== -update-browserslist-db@^1.0.10: +update-browserslist-db@^1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== @@ -11829,7 +11994,7 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -vm2@^3.9.17: +vm2@^3.9.19: version "3.9.19" resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.19.tgz#be1e1d7a106122c6c492b4d51c2e8b93d3ed6a4a" integrity sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg== @@ -11894,9 +12059,9 @@ webidl-conversions@^7.0.0: integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== webpack-bundle-analyzer@^4.8.0: - version "4.8.0" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.8.0.tgz#951b8aaf491f665d2ae325d8b84da229157b1d04" - integrity sha512-ZzoSBePshOKhr+hd8u6oCkZVwpVaXgpw23ScGLFpR6SjYI7+7iIWYarjN6OEYOfRt8o7ZyZZQk0DuMizJ+LEIg== + version "4.9.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.0.tgz#fc093c4ab174fd3dcbd1c30b763f56d10141209d" + integrity sha512-+bXGmO1LyiNx0i9enBu3H8mv42sj/BJWhZNFwjz92tVnBa9J3JMGo2an2IXlEleoDOPn/Hofl5hr/xCpObUDtw== dependencies: "@discoveryjs/json-ext" "0.5.7" acorn "^8.0.4" @@ -11939,18 +12104,18 @@ webpack-dev-middleware@6.0.1: schema-utils "^4.0.0" webpack-hot-middleware@^2.25.3: - version "2.25.3" - resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.25.3.tgz#be343ce2848022cfd854dd82820cd730998c6794" - integrity sha512-IK/0WAHs7MTu1tzLTjio73LjS3Ov+VvBKQmE8WPlJutgG5zT6Urgq/BbAdRrHTRpyzK0dvAvFh1Qg98akxgZpA== + version "2.25.4" + resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.25.4.tgz#d8bc9e9cb664fc3105c8e83d2b9ed436bee4e193" + integrity sha512-IRmTspuHM06aZh98OhBJtqLpeWFM8FXJS5UYpKYxCJzyFoyWj1w6VGFfomZU7OPA55dMLrQK0pRT1eQ3PACr4w== dependencies: ansi-html-community "0.0.8" html-entities "^2.1.0" strip-ansi "^6.0.0" webpack-merge@^5.7.3: - version "5.8.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" - integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== + version "5.9.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.9.0.tgz#dc160a1c4cf512ceca515cc231669e9ddb133826" + integrity sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg== dependencies: clone-deep "^4.0.1" wildcard "^2.0.0" @@ -11969,9 +12134,9 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5, webpack@^5.78.0: - version "5.83.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.83.0.tgz#70b4b7c941ded3d2ad16d620c534a53dc27b0080" - integrity sha512-mdWk7amgh7hMCXzU+uTDGpIJEbkqat2RLgSDW53E1OOSE6U0gmBcWadJ6y0FdQQbGbW0lV2LT9t2iOEZc+FU7w== + version "5.88.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.88.2.tgz#f62b4b842f1c6ff580f3fcb2ed4f0b579f4c210e" + integrity sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.0" @@ -11979,10 +12144,10 @@ webpack@^5, webpack@^5.78.0: "@webassemblyjs/wasm-edit" "^1.11.5" "@webassemblyjs/wasm-parser" "^1.11.5" acorn "^8.7.1" - acorn-import-assertions "^1.7.6" + acorn-import-assertions "^1.9.0" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.14.0" + enhanced-resolve "^5.15.0" es-module-lexer "^1.2.1" eslint-scope "5.1.1" events "^3.2.0" @@ -11992,7 +12157,7 @@ webpack@^5, webpack@^5.78.0: loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" - schema-utils "^3.1.2" + schema-utils "^3.2.0" tapable "^2.1.1" terser-webpack-plugin "^5.3.7" watchpack "^2.4.0" @@ -12006,9 +12171,9 @@ whatwg-encoding@^2.0.0: iconv-lite "0.6.3" whatwg-fetch@^3.4.1: - version "3.6.2" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" - integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== + version "3.6.17" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.17.tgz#009bbbfc122b227b74ba1ff31536b3a1a0e0e212" + integrity sha512-c4ghIvG6th0eudYwKZY5keb81wtFz9/WeAHAoy8+r18kcWlitUIrmGFQ2rWEl4UCKUilD3zCLHOIPheHx5ypRQ== whatwg-mimetype@^3.0.0: version "3.0.0" @@ -12052,17 +12217,16 @@ which-collection@^1.0.1: is-weakmap "^2.0.1" is-weakset "^2.0.1" -which-typed-array@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" - integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== +which-typed-array@^1.1.10, which-typed-array@^1.1.11, which-typed-array@^1.1.9: + version "1.1.11" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" + integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== dependencies: available-typed-arrays "^1.0.5" call-bind "^1.0.2" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" - is-typed-array "^1.1.10" which@^2.0.1: version "2.0.2" @@ -12089,22 +12253,31 @@ wildcard@^2.0.0: integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== windows-release@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-5.1.0.tgz#fc56e8c53d970bd63ded965c85b2fbeacf7d80da" - integrity sha512-CddHecz5dt0ngTjGPP1uYr9Tjl4qq5rEKNk8UGb8XCdngNXI+GRYvqelD055FdiUgqODZz3R/5oZWYldPtXQpA== + version "5.1.1" + resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-5.1.1.tgz#7ac7019f9baeaea6c00ec889b11824f46c12ee8d" + integrity sha512-NMD00arvqcq2nwqc5Q6KtrSRHK+fVD31erE5FEMahAw5PmVCgD7MUXodq3pdZSUkqA9Cda2iWx6s1XYwiJWRmw== dependencies: execa "^5.1.1" -word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +word-wrap@~1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" + integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== wordwrap@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== +wrap-ansi@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -12171,11 +12344,6 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xregexp@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" - integrity sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA== - xss@^1.0.6: version "1.0.14" resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.14.tgz#4f3efbde75ad0d82e9921cc3c95e6590dd336694" From 08377cc5a7ea9d02350177e2e1d69390ee97af78 Mon Sep 17 00:00:00 2001 From: Jarrod Flesch <30633324+JarrodMFlesch@users.noreply.github.com> Date: Fri, 21 Jul 2023 17:24:44 -0400 Subject: [PATCH 02/24] fix: if arrayFieldType rows are undefined, page would crash (#3049) --- src/admin/components/forms/field-types/Array/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/admin/components/forms/field-types/Array/index.tsx b/src/admin/components/forms/field-types/Array/index.tsx index 88ff777075..e39d704473 100644 --- a/src/admin/components/forms/field-types/Array/index.tsx +++ b/src/admin/components/forms/field-types/Array/index.tsx @@ -143,7 +143,7 @@ const ArrayFieldType: React.FC = (props) => { }, [dispatchFields, path, setDocFieldPreferences]); const hasMaxRows = maxRows && rows?.length >= maxRows; - const fieldErrorCount = rows.reduce((total, row) => total + (row?.childErrorPaths?.size || 0), 0) + (valid ? 0 : 1); + const fieldErrorCount = (rows || []).reduce((total, row) => total + (row?.childErrorPaths?.size || 0), 0) + (valid ? 0 : 1); const fieldHasErrors = submitted && fieldErrorCount > 0; const classes = [ From 074abf4b7dac7786c18d2c69a48057f2edb89c80 Mon Sep 17 00:00:00 2001 From: Jacob Fletcher Date: Mon, 24 Jul 2023 08:23:51 -0400 Subject: [PATCH 03/24] chore: migrates ecommerce template to next.js app router (#2991) --- templates/ecommerce/.env.example | 4 +- templates/ecommerce/README.md | 211 +- templates/ecommerce/eject.ts | 26 +- templates/ecommerce/next.config.js | 23 + templates/ecommerce/package.json | 25 +- templates/ecommerce/public/favicon.ico | Bin 0 -> 17223 bytes templates/ecommerce/public/favicon.svg | 15 + .../image-1.jpg => public/static-image.jpg} | Bin .../ecommerce/src/app/(pages)/[slug]/page.tsx | 58 + .../account/AccountForm/index.module.scss | 24 + .../app/(pages)/account/AccountForm/index.tsx | 162 + .../src/app/(pages)/account/index.module.scss | 25 + .../src/app/(pages)/account/page.tsx | 115 + .../(pages)/cart/CartPage/index.module.scss | 109 + .../src/app/(pages)/cart/CartPage/index.tsx | 157 + .../src/app/(pages)/cart/index.module.scss | 5 + .../ecommerce/src/app/(pages)/cart/page.tsx | 70 + .../checkout}/CheckoutForm/index.module.scss | 2 +- .../(pages)/checkout/CheckoutForm/index.tsx | 94 + .../checkout/CheckoutPage}/index.module.scss | 36 +- .../(pages)/checkout/CheckoutPage/index.tsx | 172 + .../app/(pages)/checkout/index.module.scss | 5 + .../src/app/(pages)/checkout/page.tsx | 96 + .../CreateAccountForm/index.module.scss | 22 + .../CreateAccountForm/index.tsx | 122 + .../(pages)/create-account/index.module.scss | 5 + .../src/app/(pages)/create-account/page.tsx | 35 + .../(pages)/login/LoginForm/index.module.scss | 22 + .../src/app/(pages)/login/LoginForm/index.tsx | 87 + .../src/app/(pages)/login/index.module.scss | 9 + .../ecommerce/src/app/(pages)/login/page.tsx | 33 + .../app/(pages)/logout/LogoutPage/index.tsx | 54 + .../(pages)}/logout/index.module.scss | 5 - .../ecommerce/src/app/(pages)/logout/page.tsx | 28 + .../ecommerce/src/app/(pages)/not-found.tsx | 15 + .../OrderConfirmationPage/index.module.scss | 1 + .../OrderConfirmationPage/page.tsx | 77 + .../order-confirmation/index.module.scss | 2 +- .../app/(pages)/order-confirmation/page.tsx | 28 + .../(pages)}/orders/[id]/index.module.scss | 24 +- .../src/app/(pages)/orders/[id]/page.tsx | 88 + .../src/app/(pages)/orders/index.module.scss | 52 + .../ecommerce/src/app/(pages)/orders/page.tsx | 83 + .../src/app/(pages)/products/[slug]/page.tsx | 45 + .../RecoverPasswordForm/index.module.scss | 23 + .../RecoverPasswordForm/index.tsx | 89 + .../recover-password/index.module.scss | 7 +- .../src/app/(pages)/recover-password/page.tsx | 25 + .../ResetPasswordForm/index.module.scss | 13 + .../ResetPasswordForm/index.tsx | 87 + .../(pages)}/reset-password/index.module.scss | 0 .../src/app/(pages)/reset-password/page.tsx | 27 + .../app/(pages)/styleguide/buttons/page.tsx | 42 + .../styleguide/call-to-action/page.tsx | 99 + .../(pages)/styleguide/content-block/page.tsx | 47 + .../(pages)/styleguide/media-block/page.tsx | 44 + .../app/(pages)/styleguide/message/page.tsx | 43 + .../src/app/(pages)/styleguide/page.tsx | 39 + .../(pages)/styleguide/typography/page.tsx | 54 + templates/ecommerce/src/app/_api/fetchDoc.ts | 51 + templates/ecommerce/src/app/_api/fetchDocs.ts | 41 + .../ecommerce/src/app/_api/fetchGlobals.ts | 84 + templates/ecommerce/src/app/_api/getMe.ts | 47 + .../_blocks}/ArchiveBlock/index.module.scss | 2 +- .../_blocks}/ArchiveBlock/index.tsx | 13 +- .../_blocks}/ArchiveBlock/types.ts | 2 +- .../_blocks/CallToAction/index.module.scss | 61 + .../src/app/_blocks/CallToAction/index.tsx | 38 + .../src/app/_blocks/Content/index.module.scss | 42 + .../{blocks => app/_blocks}/Content/index.tsx | 24 +- .../_blocks}/MediaBlock/index.module.scss | 1 + .../src/app/_blocks/MediaBlock/index.tsx | 41 + .../AddToCartButton/index.module.scss | 14 + .../app/_components/AddToCartButton/index.tsx | 54 + .../_components}/AdminBar/index.module.scss | 21 +- .../_components}/AdminBar/index.tsx | 27 +- .../BackgroundColor/index.module.scss | 11 + .../app/_components/BackgroundColor/index.tsx | 20 + .../_components}/Blocks/index.tsx | 52 +- .../_components}/Button/index.module.scss | 36 +- .../_components}/Button/index.tsx | 17 +- .../_components}/Card/index.module.scss | 37 +- .../_components}/Card/index.tsx | 66 +- .../_components}/CartLink/index.module.scss | 0 .../_components}/CartLink/index.tsx | 8 +- .../src/app/_components/Chevron/index.tsx | 26 + .../CollectionArchive/index.module.scss | 24 +- .../_components}/CollectionArchive/index.tsx | 106 +- .../app/_components/Footer/index.module.scss | 43 + .../src/app/_components/Footer/index.tsx | 41 + .../_components}/Gutter/index.module.scss | 6 + .../_components}/Gutter/index.tsx | 7 +- .../src/app/_components/HR/index.module.scss | 8 + .../src/app/_components/HR/index.tsx | 11 + .../_components/Header/Nav/index.module.scss | 20 + .../src/app/_components/Header/Nav/index.tsx | 41 + .../app/_components/Header/index.module.scss | 22 + .../src/app/_components/Header/index.tsx | 38 + .../_components}/Hero/index.tsx | 8 +- .../app/_components/Input/index.module.scss | 56 + .../src/app/_components/Input/index.tsx | 55 + .../app/_components/Label/index.module.scss | 5 + .../_components}/Label/index.tsx | 0 .../_components}/LargeBody/index.module.scss | 4 +- .../_components}/LargeBody/index.tsx | 0 .../_components}/Link/index.tsx | 37 +- .../LoadingShimmer/index.module.scss | 29 + .../app/_components/LoadingShimmer/index.tsx | 18 + .../Media/Image/index.module.scss | 2 +- .../_components}/Media/Image/index.tsx | 6 +- .../Media/Video/index.module.scss | 2 +- .../_components}/Media/Video/index.tsx | 4 +- .../_components}/Media/index.tsx | 0 .../_components}/Media/types.ts | 2 +- .../app/_components/Message/index.module.scss | 46 + .../src/app/_components/Message/index.tsx | 33 + .../_components}/PageRange/index.module.scss | 5 +- .../_components}/PageRange/index.tsx | 4 +- .../_components/Pagination/index.module.scss | 29 + .../src/app/_components/Pagination/index.tsx | 46 + .../app/_components/PaywallBlocks/index.tsx | 109 + .../app/_components/Price/index.module.scss | 29 + .../_components}/Price/index.tsx | 34 +- .../RemoveFromCartButton/index.module.scss | 7 + .../RemoveFromCartButton/index.tsx | 6 +- .../_components/RenderParams/Component.tsx | 41 + .../app/_components/RenderParams/index.tsx | 15 + .../_components}/RichText/index.module.scss | 0 .../_components}/RichText/index.tsx | 0 .../_components}/RichText/serialize.tsx | 37 +- .../VerticalPadding/index.module.scss | 0 .../_components}/VerticalPadding/index.tsx | 0 .../_components}/icons/Chevron/index.tsx | 0 .../_components}/icons/Menu/index.tsx | 0 .../ecommerce/src/{css => app/_css}/app.scss | 30 +- .../src/{css => app/_css}/colors.scss | 2 +- .../src/{css => app/_css}/common.scss | 0 .../src/{css => app/_css}/queries.scss | 6 +- templates/ecommerce/src/app/_css/theme.scss | 237 + .../ecommerce/src/{css => app/_css}/type.scss | 9 - .../src/{graphql => app/_graphql}/blocks.ts | 6 +- .../src/{graphql => app/_graphql}/cart.ts | 0 .../{graphql => app/_graphql}/categories.ts | 0 .../src/{graphql => app/_graphql}/globals.ts | 8 +- .../src/{graphql => app/_graphql}/link.ts | 0 templates/ecommerce/src/app/_graphql/me.ts | 14 + .../src/{graphql => app/_graphql}/media.ts | 0 .../src/{graphql => app/_graphql}/meta.ts | 0 .../ecommerce/src/app/_graphql/orders.ts | 27 + .../src/{graphql => app/_graphql}/pages.ts | 12 +- .../src/{graphql => app/_graphql}/products.ts | 25 +- .../_heros}/HighImpact/index.module.scss | 8 +- .../src/app/_heros/HighImpact/index.tsx | 43 + .../app/_heros/LowImpact/index.module.scss | 4 + .../src/app/_heros/LowImpact/index.tsx | 20 + .../_heros}/MediumImpact/index.module.scss | 4 +- .../src/app/_heros/MediumImpact/index.tsx | 35 + .../_heros}/Product/index.module.scss | 48 +- .../src/app/_heros/Product/index.tsx | 79 + .../_providers}/Auth/index.tsx | 100 +- .../_providers}/Cart/index.tsx | 112 +- .../_providers}/Cart/reducer.ts | 29 +- .../app/_providers/Theme/InitTheme/index.tsx | 49 + .../Theme/ThemeSelector/index.module.scss | 52 + .../_providers/Theme/ThemeSelector/index.tsx | 54 + .../_providers/Theme/ThemeSelector/types.ts | 5 + .../src/app/_providers/Theme/index.tsx | 55 + .../src/app/_providers/Theme/shared.ts | 17 + .../src/app/_providers/Theme/types.ts | 10 + .../ecommerce/src/app/_providers/index.tsx | 19 + .../_utilities}/canUseDOM.ts | 0 .../_utilities}/formatDateTime.ts | 0 .../src/app/_utilities/generateMeta.ts | 31 + .../ecommerce/src/app/_utilities/getMeUser.ts | 41 + .../src/app/_utilities/mergeOpenGraph.ts | 21 + .../_utilities}/toKebabCase.ts | 0 .../ecommerce/src/{ => app}/cssVariables.js | 0 templates/ecommerce/src/app/layout.tsx | 40 + templates/ecommerce/src/app/page.tsx | 5 + .../src/blocks/CallToAction/index.module.scss | 31 - .../src/blocks/CallToAction/index.tsx | 44 - .../src/blocks/Content/index.module.scss | 13 - .../ecommerce/src/blocks/MediaBlock/index.ts | 36 - .../ecommerce/src/blocks/MediaBlock/index.tsx | 43 - .../Orders/access/adminsAndOrderedBy.ts | 17 - .../src/collections/Orders/hooks/syncUser.ts | 51 - .../ecommerce/src/collections/Orders/index.ts | 109 - .../src/collections/Products/index.ts | 124 - .../ecommerce/src/collections/Users/index.ts | 142 - .../AddToCartButton/index.module.scss | 10 - .../src/components/AddToCartButton/index.tsx | 51 - .../BackgroundColor/index.module.scss | 9 - .../src/components/BackgroundColor/index.tsx | 26 - .../src/components/CheckoutForm/index.tsx | 67 - .../src/components/Footer/index.module.scss | 27 - .../ecommerce/src/components/Footer/index.tsx | 30 - .../src/components/Header/MobileMenuModal.tsx | 28 - .../src/components/Header/index.module.scss | 39 - .../ecommerce/src/components/Header/index.tsx | 48 - .../Header/mobileMenuModal.module.scss | 31 - .../src/components/Hero/HighImpact/index.tsx | 45 - .../Hero/LowImpact/index.module.scss | 4 - .../src/components/Hero/LowImpact/index.tsx | 23 - .../components/Hero/MediumImpact/index.tsx | 38 - .../src/components/Hero/Product/index.tsx | 66 - .../src/components/Input/index.module.scss | 24 - .../ecommerce/src/components/Input/index.tsx | 32 - .../src/components/Label/index.module.scss | 5 - .../ecommerce/src/components/Logo/index.tsx | 54 - .../src/components/PaywallBlocks/index.tsx | 64 - .../src/components/Price/index.module.scss | 18 - .../RemoveFromCartButton/index.module.scss | 10 - templates/ecommerce/src/endpoints/checkout.ts | 109 - .../ecommerce/src/fields/backgroundColor.ts | 27 - .../src/fields/richText/label/plugin.ts | 16 - .../src/fields/richText/largeBody/plugin.ts | 16 - templates/ecommerce/src/graphql/index.ts | 20 - templates/ecommerce/src/pages/[slug].tsx | 92 - templates/ecommerce/src/pages/_app.tsx | 84 - .../src/pages/account/index.module.css | 25 - .../ecommerce/src/pages/account/index.tsx | 153 - .../src/pages/cart/index.module.scss | 68 - templates/ecommerce/src/pages/cart/index.tsx | 164 - .../ecommerce/src/pages/checkout/index.tsx | 185 - .../src/pages/create-account/index.module.css | 11 - .../src/pages/create-account/index.tsx | 130 - templates/ecommerce/src/pages/index.tsx | 10 - .../src/pages/login/index.module.scss | 12 - templates/ecommerce/src/pages/login/index.tsx | 103 - .../ecommerce/src/pages/logout/index.tsx | 86 - .../src/pages/order-confirmation/index.tsx | 93 - .../ecommerce/src/pages/orders/[id]/index.tsx | 136 - .../src/pages/orders/index.module.scss | 31 - .../ecommerce/src/pages/orders/index.tsx | 87 - .../ecommerce/src/pages/products/[slug].tsx | 75 - .../src/pages/recover-password/index.tsx | 105 - .../src/pages/reset-password/index.tsx | 110 - .../ecommerce/src/pages/styleguide/index.tsx | 61 - templates/ecommerce/src/payload-types.ts | 471 - .../src/{ => payload}/access/admins.ts | 0 .../src/{ => payload}/access/anyone.ts | 0 .../blocks/ArchiveBlock/index.ts | 0 .../blocks/CallToAction/index.ts | 4 +- .../src/{ => payload}/blocks/Content/index.ts | 4 +- .../src/payload/blocks/MediaBlock/index.ts | 31 + .../{ => payload}/collections/Categories.ts | 0 .../src/{ => payload}/collections/Media.ts | 2 +- .../Pages/access/adminsOrPublished.ts | 0 .../{ => payload}/collections/Pages/index.ts | 2 + .../Products/access/checkUserPurchases.ts | 0 .../Products/hooks/beforeChange.ts | 0 .../Products/hooks/deleteProductFromCarts.ts | 0 .../src/payload/collections/Products/index.ts | 129 + .../collections/Products/ui/ProductSelect.tsx | 13 +- .../collections/Users/access/adminsAndUser.ts | 0 .../collections/Users/checkRole.ts | 2 +- .../collections/Users/endpoints/order.ts | 52 + .../collections/Users/endpoints/orders.ts | 50 + .../collections/Users/endpoints/purchases.ts | 50 + .../Users/hooks/createStripeCustomer.ts | 2 +- .../Users/hooks/ensureFirstUserIsAdmin.ts | 0 .../Users/hooks/loginAfterCreate.ts | 0 .../src/payload/collections/Users/index.ts | 161 + .../collections/Users/ui/CustomerSelect.tsx | 17 +- .../BeforeDashboard/SeedButton/index.tsx | 7 +- .../components/BeforeDashboard/index.scss | 0 .../components/BeforeDashboard/index.tsx | 33 +- .../payload/components/BeforeLogin/index.scss | 0 .../payload/components/BeforeLogin/index.tsx | 16 + .../components/LinkToOrders/index.scss | 0 .../payload/components/LinkToOrders/index.tsx | 17 + .../src/{ => payload}/emptyModuleMock.js | 0 .../src/payload/endpoints/payment-intent.ts | 126 + .../src/{ => payload}/endpoints/seed.ts | 0 .../src/{ => payload}/fields/hero.ts | 0 .../src/payload/fields/invertBackground.ts | 6 + .../src/{ => payload}/fields/link.ts | 9 +- .../src/{ => payload}/fields/linkGroup.ts | 0 .../{ => payload}/fields/richText/elements.ts | 0 .../{ => payload}/fields/richText/index.ts | 2 +- .../fields/richText/label/Button/index.tsx | 0 .../fields/richText/label/Element/index.scss | 0 .../fields/richText/label/Element/index.tsx | 0 .../fields/richText/label/Icon/index.tsx | 0 .../fields/richText/label/index.ts | 0 .../payload/fields/richText/label/plugin.ts | 21 + .../richText/largeBody/Button/index.tsx | 0 .../richText/largeBody/Element/index.scss | 0 .../richText/largeBody/Element/index.tsx | 0 .../fields/richText/largeBody/Icon/index.tsx | 0 .../fields/richText/largeBody/index.ts | 0 .../fields/richText/largeBody/plugin.ts | 21 + .../{ => payload}/fields/richText/leaves.ts | 0 .../src/{ => payload}/fields/slug.ts | 0 .../src/payload/generated-schema.graphql | 9139 +++++++++++++++++ .../src/{ => payload}/globals/Footer.ts | 0 .../src/{ => payload}/globals/Header.ts | 0 .../src/{ => payload}/globals/Settings.ts | 0 .../hooks/populateArchiveBlock.ts | 8 +- .../hooks/populatePublishedDate.ts | 0 .../ecommerce/src/payload/payload-types.ts | 440 + .../src/{ => payload}/payload.config.ts | 28 +- .../src/{ => payload}/seed/cart-page.ts | 40 +- .../ecommerce/src/{ => payload}/seed/home.ts | 267 +- .../ecommerce/src/payload/seed/image-1.jpg | Bin 0 -> 93586 bytes .../src/{ => payload}/seed/image-1.ts | 0 .../src/{ => payload}/seed/image-2.jpg | Bin .../src/{ => payload}/seed/image-2.ts | 0 .../src/{ => payload}/seed/image-3.jpg | Bin .../src/{ => payload}/seed/image-3.ts | 0 .../ecommerce/src/{ => payload}/seed/index.ts | 2 +- .../src/{ => payload}/seed/product-1.ts | 13 +- .../src/{ => payload}/seed/product-2.ts | 21 +- .../src/{ => payload}/seed/product-3.ts | 19 +- .../src/{ => payload}/seed/shop-page.ts | 16 +- .../ecommerce/src/payload/seed/static-home.ts | 126 + .../stripe/webhooks/priceUpdated.ts | 6 +- .../stripe/webhooks/productUpdated.ts | 0 .../src/{ => payload}/utilities/deepMerge.ts | 3 +- .../src/{ => payload}/utilities/formatSlug.ts | 0 templates/ecommerce/src/public/favicon.ico | Bin 25931 -> 0 bytes templates/ecommerce/src/seed/static-home.ts | 70 - templates/ecommerce/src/server.default.ts | 2 +- templates/ecommerce/src/server.ts | 4 +- .../webhooks/invoiceCreatedOrUpdated.ts | 128 - templates/ecommerce/tsconfig.json | 4 - templates/ecommerce/tsconfig.server.json | 2 +- templates/ecommerce/yarn.lock | 8730 ---------------- 328 files changed, 16185 insertions(+), 13538 deletions(-) create mode 100644 templates/ecommerce/public/favicon.ico create mode 100644 templates/ecommerce/public/favicon.svg rename templates/ecommerce/{src/seed/image-1.jpg => public/static-image.jpg} (100%) create mode 100644 templates/ecommerce/src/app/(pages)/[slug]/page.tsx create mode 100644 templates/ecommerce/src/app/(pages)/account/AccountForm/index.module.scss create mode 100644 templates/ecommerce/src/app/(pages)/account/AccountForm/index.tsx create mode 100644 templates/ecommerce/src/app/(pages)/account/index.module.scss create mode 100644 templates/ecommerce/src/app/(pages)/account/page.tsx create mode 100644 templates/ecommerce/src/app/(pages)/cart/CartPage/index.module.scss create mode 100644 templates/ecommerce/src/app/(pages)/cart/CartPage/index.tsx create mode 100644 templates/ecommerce/src/app/(pages)/cart/index.module.scss create mode 100644 templates/ecommerce/src/app/(pages)/cart/page.tsx rename templates/ecommerce/src/{components => app/(pages)/checkout}/CheckoutForm/index.module.scss (78%) create mode 100644 templates/ecommerce/src/app/(pages)/checkout/CheckoutForm/index.tsx rename templates/ecommerce/src/{pages/checkout => app/(pages)/checkout/CheckoutPage}/index.module.scss (64%) create mode 100644 templates/ecommerce/src/app/(pages)/checkout/CheckoutPage/index.tsx create mode 100644 templates/ecommerce/src/app/(pages)/checkout/index.module.scss create mode 100644 templates/ecommerce/src/app/(pages)/checkout/page.tsx create mode 100644 templates/ecommerce/src/app/(pages)/create-account/CreateAccountForm/index.module.scss create mode 100644 templates/ecommerce/src/app/(pages)/create-account/CreateAccountForm/index.tsx create mode 100644 templates/ecommerce/src/app/(pages)/create-account/index.module.scss create mode 100644 templates/ecommerce/src/app/(pages)/create-account/page.tsx create mode 100644 templates/ecommerce/src/app/(pages)/login/LoginForm/index.module.scss create mode 100644 templates/ecommerce/src/app/(pages)/login/LoginForm/index.tsx create mode 100644 templates/ecommerce/src/app/(pages)/login/index.module.scss create mode 100644 templates/ecommerce/src/app/(pages)/login/page.tsx create mode 100644 templates/ecommerce/src/app/(pages)/logout/LogoutPage/index.tsx rename templates/ecommerce/src/{pages => app/(pages)}/logout/index.module.scss (51%) create mode 100644 templates/ecommerce/src/app/(pages)/logout/page.tsx create mode 100644 templates/ecommerce/src/app/(pages)/not-found.tsx create mode 100644 templates/ecommerce/src/app/(pages)/order-confirmation/OrderConfirmationPage/index.module.scss create mode 100644 templates/ecommerce/src/app/(pages)/order-confirmation/OrderConfirmationPage/page.tsx rename templates/ecommerce/src/{pages => app/(pages)}/order-confirmation/index.module.scss (68%) create mode 100644 templates/ecommerce/src/app/(pages)/order-confirmation/page.tsx rename templates/ecommerce/src/{pages => app/(pages)}/orders/[id]/index.module.scss (76%) create mode 100644 templates/ecommerce/src/app/(pages)/orders/[id]/page.tsx create mode 100644 templates/ecommerce/src/app/(pages)/orders/index.module.scss create mode 100644 templates/ecommerce/src/app/(pages)/orders/page.tsx create mode 100644 templates/ecommerce/src/app/(pages)/products/[slug]/page.tsx create mode 100644 templates/ecommerce/src/app/(pages)/recover-password/RecoverPasswordForm/index.module.scss create mode 100644 templates/ecommerce/src/app/(pages)/recover-password/RecoverPasswordForm/index.tsx rename templates/ecommerce/src/{pages => app/(pages)}/recover-password/index.module.scss (55%) create mode 100644 templates/ecommerce/src/app/(pages)/recover-password/page.tsx create mode 100644 templates/ecommerce/src/app/(pages)/reset-password/ResetPasswordForm/index.module.scss create mode 100644 templates/ecommerce/src/app/(pages)/reset-password/ResetPasswordForm/index.tsx rename templates/ecommerce/src/{pages => app/(pages)}/reset-password/index.module.scss (100%) create mode 100644 templates/ecommerce/src/app/(pages)/reset-password/page.tsx create mode 100644 templates/ecommerce/src/app/(pages)/styleguide/buttons/page.tsx create mode 100644 templates/ecommerce/src/app/(pages)/styleguide/call-to-action/page.tsx create mode 100644 templates/ecommerce/src/app/(pages)/styleguide/content-block/page.tsx create mode 100644 templates/ecommerce/src/app/(pages)/styleguide/media-block/page.tsx create mode 100644 templates/ecommerce/src/app/(pages)/styleguide/message/page.tsx create mode 100644 templates/ecommerce/src/app/(pages)/styleguide/page.tsx create mode 100644 templates/ecommerce/src/app/(pages)/styleguide/typography/page.tsx create mode 100644 templates/ecommerce/src/app/_api/fetchDoc.ts create mode 100644 templates/ecommerce/src/app/_api/fetchDocs.ts create mode 100644 templates/ecommerce/src/app/_api/fetchGlobals.ts create mode 100644 templates/ecommerce/src/app/_api/getMe.ts rename templates/ecommerce/src/{blocks => app/_blocks}/ArchiveBlock/index.module.scss (85%) rename templates/ecommerce/src/{blocks => app/_blocks}/ArchiveBlock/index.tsx (69%) rename templates/ecommerce/src/{blocks => app/_blocks}/ArchiveBlock/types.ts (59%) create mode 100644 templates/ecommerce/src/app/_blocks/CallToAction/index.module.scss create mode 100644 templates/ecommerce/src/app/_blocks/CallToAction/index.tsx create mode 100644 templates/ecommerce/src/app/_blocks/Content/index.module.scss rename templates/ecommerce/src/{blocks => app/_blocks}/Content/index.tsx (53%) rename templates/ecommerce/src/{blocks => app/_blocks}/MediaBlock/index.module.scss (67%) create mode 100644 templates/ecommerce/src/app/_blocks/MediaBlock/index.tsx create mode 100644 templates/ecommerce/src/app/_components/AddToCartButton/index.module.scss create mode 100644 templates/ecommerce/src/app/_components/AddToCartButton/index.tsx rename templates/ecommerce/src/{components => app/_components}/AdminBar/index.module.scss (60%) rename templates/ecommerce/src/{components => app/_components}/AdminBar/index.tsx (58%) create mode 100644 templates/ecommerce/src/app/_components/BackgroundColor/index.module.scss create mode 100644 templates/ecommerce/src/app/_components/BackgroundColor/index.tsx rename templates/ecommerce/src/{components => app/_components}/Blocks/index.tsx (53%) rename templates/ecommerce/src/{components => app/_components}/Button/index.module.scss (51%) rename templates/ecommerce/src/{components => app/_components}/Button/index.tsx (81%) rename templates/ecommerce/src/{components => app/_components}/Card/index.module.scss (63%) rename templates/ecommerce/src/{components => app/_components}/Card/index.tsx (63%) rename templates/ecommerce/src/{components => app/_components}/CartLink/index.module.scss (100%) rename templates/ecommerce/src/{components => app/_components}/CartLink/index.tsx (74%) create mode 100644 templates/ecommerce/src/app/_components/Chevron/index.tsx rename templates/ecommerce/src/{components => app/_components}/CollectionArchive/index.module.scss (68%) rename templates/ecommerce/src/{components => app/_components}/CollectionArchive/index.tsx (64%) create mode 100644 templates/ecommerce/src/app/_components/Footer/index.module.scss create mode 100644 templates/ecommerce/src/app/_components/Footer/index.tsx rename templates/ecommerce/src/{components => app/_components}/Gutter/index.module.scss (56%) rename templates/ecommerce/src/{components => app/_components}/Gutter/index.tsx (78%) create mode 100644 templates/ecommerce/src/app/_components/HR/index.module.scss create mode 100644 templates/ecommerce/src/app/_components/HR/index.tsx create mode 100644 templates/ecommerce/src/app/_components/Header/Nav/index.module.scss create mode 100644 templates/ecommerce/src/app/_components/Header/Nav/index.tsx create mode 100644 templates/ecommerce/src/app/_components/Header/index.module.scss create mode 100644 templates/ecommerce/src/app/_components/Header/index.tsx rename templates/ecommerce/src/{components => app/_components}/Hero/index.tsx (62%) create mode 100644 templates/ecommerce/src/app/_components/Input/index.module.scss create mode 100644 templates/ecommerce/src/app/_components/Input/index.tsx create mode 100644 templates/ecommerce/src/app/_components/Label/index.module.scss rename templates/ecommerce/src/{components => app/_components}/Label/index.tsx (100%) rename templates/ecommerce/src/{components => app/_components}/LargeBody/index.module.scss (52%) rename templates/ecommerce/src/{components => app/_components}/LargeBody/index.tsx (100%) rename templates/ecommerce/src/{components => app/_components}/Link/index.tsx (63%) create mode 100644 templates/ecommerce/src/app/_components/LoadingShimmer/index.module.scss create mode 100644 templates/ecommerce/src/app/_components/LoadingShimmer/index.tsx rename templates/ecommerce/src/{components => app/_components}/Media/Image/index.module.scss (65%) rename templates/ecommerce/src/{components => app/_components}/Media/Image/index.tsx (94%) rename templates/ecommerce/src/{components => app/_components}/Media/Video/index.module.scss (69%) rename templates/ecommerce/src/{components => app/_components}/Media/Video/index.tsx (91%) rename templates/ecommerce/src/{components => app/_components}/Media/index.tsx (100%) rename templates/ecommerce/src/{components => app/_components}/Media/types.ts (88%) create mode 100644 templates/ecommerce/src/app/_components/Message/index.module.scss create mode 100644 templates/ecommerce/src/app/_components/Message/index.tsx rename templates/ecommerce/src/{components => app/_components}/PageRange/index.module.scss (75%) rename templates/ecommerce/src/{components => app/_components}/PageRange/index.tsx (90%) create mode 100644 templates/ecommerce/src/app/_components/Pagination/index.module.scss create mode 100644 templates/ecommerce/src/app/_components/Pagination/index.tsx create mode 100644 templates/ecommerce/src/app/_components/PaywallBlocks/index.tsx create mode 100644 templates/ecommerce/src/app/_components/Price/index.module.scss rename templates/ecommerce/src/{components => app/_components}/Price/index.tsx (59%) create mode 100644 templates/ecommerce/src/app/_components/RemoveFromCartButton/index.module.scss rename templates/ecommerce/src/{components => app/_components}/RemoveFromCartButton/index.tsx (84%) create mode 100644 templates/ecommerce/src/app/_components/RenderParams/Component.tsx create mode 100644 templates/ecommerce/src/app/_components/RenderParams/index.tsx rename templates/ecommerce/src/{components => app/_components}/RichText/index.module.scss (100%) rename templates/ecommerce/src/{components => app/_components}/RichText/index.tsx (100%) rename templates/ecommerce/src/{components => app/_components}/RichText/serialize.tsx (66%) rename templates/ecommerce/src/{components => app/_components}/VerticalPadding/index.module.scss (100%) rename templates/ecommerce/src/{components => app/_components}/VerticalPadding/index.tsx (100%) rename templates/ecommerce/src/{components => app/_components}/icons/Chevron/index.tsx (100%) rename templates/ecommerce/src/{components => app/_components}/icons/Menu/index.tsx (100%) rename templates/ecommerce/src/{css => app/_css}/app.scss (70%) rename templates/ecommerce/src/{css => app/_css}/colors.scss (99%) rename templates/ecommerce/src/{css => app/_css}/common.scss (100%) rename templates/ecommerce/src/{css => app/_css}/queries.scss (85%) create mode 100644 templates/ecommerce/src/app/_css/theme.scss rename templates/ecommerce/src/{css => app/_css}/type.scss (89%) rename templates/ecommerce/src/{graphql => app/_graphql}/blocks.ts (93%) rename templates/ecommerce/src/{graphql => app/_graphql}/cart.ts (100%) rename templates/ecommerce/src/{graphql => app/_graphql}/categories.ts (100%) rename templates/ecommerce/src/{graphql => app/_graphql}/globals.ts (76%) rename templates/ecommerce/src/{graphql => app/_graphql}/link.ts (100%) create mode 100644 templates/ecommerce/src/app/_graphql/me.ts rename templates/ecommerce/src/{graphql => app/_graphql}/media.ts (100%) rename templates/ecommerce/src/{graphql => app/_graphql}/meta.ts (100%) create mode 100644 templates/ecommerce/src/app/_graphql/orders.ts rename templates/ecommerce/src/{graphql => app/_graphql}/pages.ts (73%) rename templates/ecommerce/src/{graphql => app/_graphql}/products.ts (73%) rename templates/ecommerce/src/{components/Hero => app/_heros}/HighImpact/index.module.scss (80%) create mode 100644 templates/ecommerce/src/app/_heros/HighImpact/index.tsx create mode 100644 templates/ecommerce/src/app/_heros/LowImpact/index.module.scss create mode 100644 templates/ecommerce/src/app/_heros/LowImpact/index.tsx rename templates/ecommerce/src/{components/Hero => app/_heros}/MediumImpact/index.module.scss (87%) create mode 100644 templates/ecommerce/src/app/_heros/MediumImpact/index.tsx rename templates/ecommerce/src/{components/Hero => app/_heros}/Product/index.module.scss (57%) create mode 100644 templates/ecommerce/src/app/_heros/Product/index.tsx rename templates/ecommerce/src/{providers => app/_providers}/Auth/index.tsx (71%) rename templates/ecommerce/src/{providers => app/_providers}/Cart/index.tsx (70%) rename templates/ecommerce/src/{providers => app/_providers}/Cart/reducer.ts (76%) create mode 100644 templates/ecommerce/src/app/_providers/Theme/InitTheme/index.tsx create mode 100644 templates/ecommerce/src/app/_providers/Theme/ThemeSelector/index.module.scss create mode 100644 templates/ecommerce/src/app/_providers/Theme/ThemeSelector/index.tsx create mode 100644 templates/ecommerce/src/app/_providers/Theme/ThemeSelector/types.ts create mode 100644 templates/ecommerce/src/app/_providers/Theme/index.tsx create mode 100644 templates/ecommerce/src/app/_providers/Theme/shared.ts create mode 100644 templates/ecommerce/src/app/_providers/Theme/types.ts create mode 100644 templates/ecommerce/src/app/_providers/index.tsx rename templates/ecommerce/src/{utilities => app/_utilities}/canUseDOM.ts (100%) rename templates/ecommerce/src/{utilities => app/_utilities}/formatDateTime.ts (100%) create mode 100644 templates/ecommerce/src/app/_utilities/generateMeta.ts create mode 100644 templates/ecommerce/src/app/_utilities/getMeUser.ts create mode 100644 templates/ecommerce/src/app/_utilities/mergeOpenGraph.ts rename templates/ecommerce/src/{utilities => app/_utilities}/toKebabCase.ts (100%) rename templates/ecommerce/src/{ => app}/cssVariables.js (100%) create mode 100644 templates/ecommerce/src/app/layout.tsx create mode 100644 templates/ecommerce/src/app/page.tsx delete mode 100644 templates/ecommerce/src/blocks/CallToAction/index.module.scss delete mode 100644 templates/ecommerce/src/blocks/CallToAction/index.tsx delete mode 100644 templates/ecommerce/src/blocks/Content/index.module.scss delete mode 100644 templates/ecommerce/src/blocks/MediaBlock/index.ts delete mode 100644 templates/ecommerce/src/blocks/MediaBlock/index.tsx delete mode 100644 templates/ecommerce/src/collections/Orders/access/adminsAndOrderedBy.ts delete mode 100644 templates/ecommerce/src/collections/Orders/hooks/syncUser.ts delete mode 100644 templates/ecommerce/src/collections/Orders/index.ts delete mode 100644 templates/ecommerce/src/collections/Products/index.ts delete mode 100644 templates/ecommerce/src/collections/Users/index.ts delete mode 100644 templates/ecommerce/src/components/AddToCartButton/index.module.scss delete mode 100644 templates/ecommerce/src/components/AddToCartButton/index.tsx delete mode 100644 templates/ecommerce/src/components/BackgroundColor/index.module.scss delete mode 100644 templates/ecommerce/src/components/BackgroundColor/index.tsx delete mode 100644 templates/ecommerce/src/components/CheckoutForm/index.tsx delete mode 100644 templates/ecommerce/src/components/Footer/index.module.scss delete mode 100644 templates/ecommerce/src/components/Footer/index.tsx delete mode 100644 templates/ecommerce/src/components/Header/MobileMenuModal.tsx delete mode 100644 templates/ecommerce/src/components/Header/index.module.scss delete mode 100644 templates/ecommerce/src/components/Header/index.tsx delete mode 100644 templates/ecommerce/src/components/Header/mobileMenuModal.module.scss delete mode 100644 templates/ecommerce/src/components/Hero/HighImpact/index.tsx delete mode 100644 templates/ecommerce/src/components/Hero/LowImpact/index.module.scss delete mode 100644 templates/ecommerce/src/components/Hero/LowImpact/index.tsx delete mode 100644 templates/ecommerce/src/components/Hero/MediumImpact/index.tsx delete mode 100644 templates/ecommerce/src/components/Hero/Product/index.tsx delete mode 100644 templates/ecommerce/src/components/Input/index.module.scss delete mode 100644 templates/ecommerce/src/components/Input/index.tsx delete mode 100644 templates/ecommerce/src/components/Label/index.module.scss delete mode 100644 templates/ecommerce/src/components/Logo/index.tsx delete mode 100644 templates/ecommerce/src/components/PaywallBlocks/index.tsx delete mode 100644 templates/ecommerce/src/components/Price/index.module.scss delete mode 100644 templates/ecommerce/src/components/RemoveFromCartButton/index.module.scss delete mode 100644 templates/ecommerce/src/endpoints/checkout.ts delete mode 100644 templates/ecommerce/src/fields/backgroundColor.ts delete mode 100644 templates/ecommerce/src/fields/richText/label/plugin.ts delete mode 100644 templates/ecommerce/src/fields/richText/largeBody/plugin.ts delete mode 100644 templates/ecommerce/src/graphql/index.ts delete mode 100644 templates/ecommerce/src/pages/[slug].tsx delete mode 100644 templates/ecommerce/src/pages/_app.tsx delete mode 100644 templates/ecommerce/src/pages/account/index.module.css delete mode 100644 templates/ecommerce/src/pages/account/index.tsx delete mode 100644 templates/ecommerce/src/pages/cart/index.module.scss delete mode 100644 templates/ecommerce/src/pages/cart/index.tsx delete mode 100644 templates/ecommerce/src/pages/checkout/index.tsx delete mode 100644 templates/ecommerce/src/pages/create-account/index.module.css delete mode 100644 templates/ecommerce/src/pages/create-account/index.tsx delete mode 100644 templates/ecommerce/src/pages/index.tsx delete mode 100644 templates/ecommerce/src/pages/login/index.module.scss delete mode 100644 templates/ecommerce/src/pages/login/index.tsx delete mode 100644 templates/ecommerce/src/pages/logout/index.tsx delete mode 100644 templates/ecommerce/src/pages/order-confirmation/index.tsx delete mode 100644 templates/ecommerce/src/pages/orders/[id]/index.tsx delete mode 100644 templates/ecommerce/src/pages/orders/index.module.scss delete mode 100644 templates/ecommerce/src/pages/orders/index.tsx delete mode 100644 templates/ecommerce/src/pages/products/[slug].tsx delete mode 100644 templates/ecommerce/src/pages/recover-password/index.tsx delete mode 100644 templates/ecommerce/src/pages/reset-password/index.tsx delete mode 100644 templates/ecommerce/src/pages/styleguide/index.tsx delete mode 100644 templates/ecommerce/src/payload-types.ts rename templates/ecommerce/src/{ => payload}/access/admins.ts (100%) rename templates/ecommerce/src/{ => payload}/access/anyone.ts (100%) rename templates/ecommerce/src/{ => payload}/blocks/ArchiveBlock/index.ts (100%) rename templates/ecommerce/src/{ => payload}/blocks/CallToAction/index.ts (76%) rename templates/ecommerce/src/{ => payload}/blocks/Content/index.ts (91%) create mode 100644 templates/ecommerce/src/payload/blocks/MediaBlock/index.ts rename templates/ecommerce/src/{ => payload}/collections/Categories.ts (100%) rename templates/ecommerce/src/{ => payload}/collections/Media.ts (87%) rename templates/ecommerce/src/{ => payload}/collections/Pages/access/adminsOrPublished.ts (100%) rename templates/ecommerce/src/{ => payload}/collections/Pages/index.ts (93%) rename templates/ecommerce/src/{ => payload}/collections/Products/access/checkUserPurchases.ts (100%) rename templates/ecommerce/src/{ => payload}/collections/Products/hooks/beforeChange.ts (100%) rename templates/ecommerce/src/{ => payload}/collections/Products/hooks/deleteProductFromCarts.ts (100%) create mode 100644 templates/ecommerce/src/payload/collections/Products/index.ts rename templates/ecommerce/src/{ => payload}/collections/Products/ui/ProductSelect.tsx (93%) rename templates/ecommerce/src/{ => payload}/collections/Users/access/adminsAndUser.ts (100%) rename templates/ecommerce/src/{ => payload}/collections/Users/checkRole.ts (84%) create mode 100644 templates/ecommerce/src/payload/collections/Users/endpoints/order.ts create mode 100644 templates/ecommerce/src/payload/collections/Users/endpoints/orders.ts create mode 100644 templates/ecommerce/src/payload/collections/Users/endpoints/purchases.ts rename templates/ecommerce/src/{ => payload}/collections/Users/hooks/createStripeCustomer.ts (94%) rename templates/ecommerce/src/{ => payload}/collections/Users/hooks/ensureFirstUserIsAdmin.ts (100%) rename templates/ecommerce/src/{ => payload}/collections/Users/hooks/loginAfterCreate.ts (100%) create mode 100644 templates/ecommerce/src/payload/collections/Users/index.ts rename templates/ecommerce/src/{ => payload}/collections/Users/ui/CustomerSelect.tsx (93%) rename templates/ecommerce/src/{ => payload}/components/BeforeDashboard/SeedButton/index.tsx (86%) rename templates/ecommerce/src/{ => payload}/components/BeforeDashboard/index.scss (100%) rename templates/ecommerce/src/{ => payload}/components/BeforeDashboard/index.tsx (63%) create mode 100644 templates/ecommerce/src/payload/components/BeforeLogin/index.scss create mode 100644 templates/ecommerce/src/payload/components/BeforeLogin/index.tsx create mode 100644 templates/ecommerce/src/payload/components/LinkToOrders/index.scss create mode 100644 templates/ecommerce/src/payload/components/LinkToOrders/index.tsx rename templates/ecommerce/src/{ => payload}/emptyModuleMock.js (100%) create mode 100644 templates/ecommerce/src/payload/endpoints/payment-intent.ts rename templates/ecommerce/src/{ => payload}/endpoints/seed.ts (100%) rename templates/ecommerce/src/{ => payload}/fields/hero.ts (100%) create mode 100644 templates/ecommerce/src/payload/fields/invertBackground.ts rename templates/ecommerce/src/{ => payload}/fields/link.ts (95%) rename templates/ecommerce/src/{ => payload}/fields/linkGroup.ts (100%) rename templates/ecommerce/src/{ => payload}/fields/richText/elements.ts (100%) rename templates/ecommerce/src/{ => payload}/fields/richText/index.ts (99%) rename templates/ecommerce/src/{ => payload}/fields/richText/label/Button/index.tsx (100%) rename templates/ecommerce/src/{ => payload}/fields/richText/label/Element/index.scss (100%) rename templates/ecommerce/src/{ => payload}/fields/richText/label/Element/index.tsx (100%) rename templates/ecommerce/src/{ => payload}/fields/richText/label/Icon/index.tsx (100%) rename templates/ecommerce/src/{ => payload}/fields/richText/label/index.ts (100%) create mode 100644 templates/ecommerce/src/payload/fields/richText/label/plugin.ts rename templates/ecommerce/src/{ => payload}/fields/richText/largeBody/Button/index.tsx (100%) rename templates/ecommerce/src/{ => payload}/fields/richText/largeBody/Element/index.scss (100%) rename templates/ecommerce/src/{ => payload}/fields/richText/largeBody/Element/index.tsx (100%) rename templates/ecommerce/src/{ => payload}/fields/richText/largeBody/Icon/index.tsx (100%) rename templates/ecommerce/src/{ => payload}/fields/richText/largeBody/index.ts (100%) create mode 100644 templates/ecommerce/src/payload/fields/richText/largeBody/plugin.ts rename templates/ecommerce/src/{ => payload}/fields/richText/leaves.ts (100%) rename templates/ecommerce/src/{ => payload}/fields/slug.ts (100%) create mode 100644 templates/ecommerce/src/payload/generated-schema.graphql rename templates/ecommerce/src/{ => payload}/globals/Footer.ts (100%) rename templates/ecommerce/src/{ => payload}/globals/Header.ts (100%) rename templates/ecommerce/src/{ => payload}/globals/Settings.ts (100%) rename templates/ecommerce/src/{ => payload}/hooks/populateArchiveBlock.ts (88%) rename templates/ecommerce/src/{ => payload}/hooks/populatePublishedDate.ts (100%) create mode 100644 templates/ecommerce/src/payload/payload-types.ts rename templates/ecommerce/src/{ => payload}/payload.config.ts (74%) rename templates/ecommerce/src/{ => payload}/seed/cart-page.ts (61%) rename templates/ecommerce/src/{ => payload}/seed/home.ts (56%) create mode 100644 templates/ecommerce/src/payload/seed/image-1.jpg rename templates/ecommerce/src/{ => payload}/seed/image-1.ts (100%) rename templates/ecommerce/src/{ => payload}/seed/image-2.jpg (100%) rename templates/ecommerce/src/{ => payload}/seed/image-2.ts (100%) rename templates/ecommerce/src/{ => payload}/seed/image-3.jpg (100%) rename templates/ecommerce/src/{ => payload}/seed/image-3.ts (100%) rename templates/ecommerce/src/{ => payload}/seed/index.ts (98%) rename templates/ecommerce/src/{ => payload}/seed/product-1.ts (86%) rename templates/ecommerce/src/{ => payload}/seed/product-2.ts (65%) rename templates/ecommerce/src/{ => payload}/seed/product-3.ts (65%) rename templates/ecommerce/src/{ => payload}/seed/shop-page.ts (71%) create mode 100644 templates/ecommerce/src/payload/seed/static-home.ts rename templates/ecommerce/src/{ => payload}/stripe/webhooks/priceUpdated.ts (91%) rename templates/ecommerce/src/{ => payload}/stripe/webhooks/productUpdated.ts (100%) rename templates/ecommerce/src/{ => payload}/utilities/deepMerge.ts (96%) rename templates/ecommerce/src/{ => payload}/utilities/formatSlug.ts (100%) delete mode 100644 templates/ecommerce/src/public/favicon.ico delete mode 100644 templates/ecommerce/src/seed/static-home.ts delete mode 100644 templates/ecommerce/src/stripe/webhooks/invoiceCreatedOrUpdated.ts delete mode 100644 templates/ecommerce/yarn.lock diff --git a/templates/ecommerce/.env.example b/templates/ecommerce/.env.example index 885b1efbab..7c16f9e3f2 100644 --- a/templates/ecommerce/.env.example +++ b/templates/ecommerce/.env.example @@ -1,11 +1,11 @@ # Payload vars PORT=3000 -MONGODB_URI=mongodb://localhost/payload-template-ecommerce +MONGODB_URI=mongodb://127.0.0.1/payload-template-ecommerce PAYLOAD_SECRET=712kjbkuh87234sflj98713b PAYLOAD_PUBLIC_SERVER_URL=http://localhost:3000 STRIPE_SECRET_KEY= PAYLOAD_PUBLIC_STRIPE_IS_TEST_KEY=true -STRIPE_WEBHOOKS_ENDPOINT_SECRET= +STRIPE_WEBHOOKS_SIGNING_SECRET= # Next.js vars NEXT_PUBLIC_SERVER_URL=http://localhost:3000 diff --git a/templates/ecommerce/README.md b/templates/ecommerce/README.md index 17bb2b3312..be1f6a91c8 100644 --- a/templates/ecommerce/README.md +++ b/templates/ecommerce/README.md @@ -1,6 +1,12 @@ # Payload E-Commerce Template -A template for [Payload](https://github.com/payloadcms/payload) to power e-commerce businesses. This repo may have been created by running `npx create-payload-app` and selecting the "e-commerce" template or by cloning this template on [Payload Cloud](https://payloadcms.com/new/clone/blank). +This is the official [Payload E-Commerce Template](https://github.com/payloadcms/payload/blob/master/templates/ecommerce). Use it to power e-commerce businesses and online stores of all sizes. This repo includes a fully-working backend, enterprise-grade admin panel, and a beautifully designed, production-ready website. + +This template is right for you if you are selling: + +- Physical products like clothing or merchandise +- Digital assets like ebooks or videos +- Access to content like courses or premium articles Core features: @@ -12,51 +18,82 @@ Core features: - [Paywall](#paywall) - [Layout Builder](#layout-builder) - [SEO](#seo) -- [Front-end](#front-end) +- [Website](#website) -For details on how to get this template up and running locally, see the [development](#development) section. +## Quick Start + +To spin up this example locally, follow these steps: + +### Clone + +If you have not done so already, you need to have standalone copy of this repo on your machine. If you've already cloned this repo, skip to [Development](#development). + +#### Method 1 (recommended) + + Go to Payload Cloud and [clone this template](https://payloadcms.com/new/clone/ecommerce). This will create a new repository on your GitHub account with this template's code which you can then clone to your own machine. + +#### Method 2 + + Use the `create-payload-app` CLI to clone this template directly to your machine: + + npx create-payload-app my-project -t ecommerce + +#### Method 3 + + Use the `git` CLI to clone this template directly to your machine: + + git clone -n --depth=1 --filter=tree:0 https://github.com/payloadcms/payload my-project && cd my-project && git sparse-checkout set --no-cone templates/ecommerce && git checkout && rm -rf .git && git init && git add . && git mv -f templates/ecommerce/{.,}* . && git add . && git commit -m "Initial commit" + +### Development + +1. First [clone the repo](#clone) if you have not done so already +1. `cd my-project && cp .env.example .env` to copy the example environment variables +1. `yarn && yarn dev` to install dependencies and start the dev server +1. `open http://localhost:3000` to open the app in your browser + +That's it! Changes made in `./src` will be reflected in your app. Follow the on-screen instructions to login and create your first admin user. To begin accepting payment, follow the [Stripe](#stripe) guide. Then check out [Production](#production) once you're ready to build and serve your app, and [Deployment](#deployment) when you're ready to go live. ## How it works -The Payload config is tailored specifically to the needs of an e-commerce business. It is pre-configured in the following ways: +The Payload config is tailored specifically to the needs of most e-commerce businesses. It is pre-configured in the following ways: ### Collections -See the [collections documentation](https://payloadcms.com/docs/configuration/collections) for details on how to extend this functionality. +See the [Collections](https://payloadcms.com/docs/configuration/collections) docs for details on how to extend this functionality. - #### Users (Authentication) Users are auth-enabled and encompass both admins and customers based on the value of their `roles` field. Only `admin` users can access your admin panel to manage your store whereas `customer` can authenticate on your front-end to create [shopping carts](#shopping-cart) and place [orders](#orders) but have limited access to the platform. See [Access Control](#access-control) for more details. - For additional help, see the official [Auth Example](https://github.com/payloadcms/payload/tree/master/examples/auth/cms#readme) or the [authentication docs](https://payloadcms.com/docs/authentication/overview#authentication-overview). + For additional help, see the official [Auth Example](https://github.com/payloadcms/payload/tree/master/examples/auth) or the [Authentication](https://payloadcms.com/docs/authentication/overview#authentication-overview) docs. - #### Products - Each product is linked to Stripe via a select field that is dynamically populated in the sidebar. This field fetches all available products in the background and displays them as options. Once a product has been selected, prices get automatically synced between Stripe and Payload. All products are layout-builder enabled so you can generate unique pages for each product using layout-building blocks, see [Layout Builder](#layout-builder) for more details. Products can also gate their content or digital assets behind a paywall, see [Paywall](#paywall) for more details. + Products are linked to Stripe via a custom select field that is dynamically populated in the sidebar of each product. This field fetches all available products in the background and displays them as options. Once a product has been selected, prices get automatically synced between Stripe and Payload through [Payload Hooks](https://payloadcms.com/docs/hooks) and [Stripe Webhooks](https://stripe.com/docs/webhooks). See [Stripe](#stripe) for more details. -- #### Orders + All products are layout builder enabled so you can generate unique pages for each product using layout building blocks, see [Layout Builder](#layout-builder) for more details. - When an order is placed in Stripe, a webhook is fired that Payload listens for. This webhook creates a new order in Payload with the same data as the invoice. See the [Stripe section](#stripe) for more details. + Products can also restrict access to content or digital assets behind a paywall (gated content), see [Paywall](#paywall) for more details. - #### Pages - All pages are layout-builder enabled so you can generate unique layouts for each page using layout-building blocks, see [Layout Builder](#layout-builder) for more details. + All pages are layout builder enabled so you can generate unique layouts for each page using layout-building blocks, see [Layout Builder](#layout-builder) for more details. - #### Media - This is the uploads-enabled collection used by products and pages to contain media, etc. + This is the uploads enabled collection used by products and pages to contain media like images, videos, downloads, and other assets. - #### Categories - A taxonomy used to group products together. Categories can be nested inside of one another, for example "Shirts > Red". See the official [Payload Nested Docs Plugin](https://github.com/payloadcms/plugin-nested-docs) for more details. + A taxonomy used to group products together. Categories can be nested inside of one another, for example "Courses > Technology". See the official [Payload Nested Docs Plugin](https://github.com/payloadcms/plugin-nested-docs) for more details. ### Globals -See the [globals documentation](https://payloadcms.com/docs/configuration/globals) for details on how to extend this functionality. +See the [Globals](https://payloadcms.com/docs/configuration/globals) docs for details on how to extend this functionality. - `Header` - The data required by the header on your front-end, i.e. nav links, etc. + The data required by the header on your front-end like nav links. - `Footer` @@ -67,13 +104,12 @@ See the [globals documentation](https://payloadcms.com/docs/configuration/global Basic role-based access control is setup to determine what users can and cannot do based on their roles, which are: - `admin`: They can access the Payload admin panel to manage your store. They can see all data and make all operations. -- `customer`: They cannot access the Payload admin panel and have a limited access to operations based on their user (see below). +- `customer`: They cannot access the Payload admin panel and can perform limited operations based on their user (see below). This applies to each collection in the following ways: - `users`: Only admins and the user themselves can access their profile. Anyone can create a user but only admins can delete users. -- `orders`: Only admins and the user who placed the order can access it. Once placed, orders cannot be edited or deleted. -- `products`: Everyone can access products, but only admins can create, update, or delete them. Paywall-enabled products may also have content that is only accessible by users who have purchased the product. See [Paywall](#paywall) for more details. +- `products`: Everyone can access products, but only admins can create, update, or delete them. Paywall-enabled products may also have content that is only accessible to only users who have purchased the product. See [Paywall](#paywall) for more details. For more details on how to extend this functionality, see the [Payload Access Control](https://payloadcms.com/docs/access-control/overview#access-control) docs. @@ -102,12 +138,9 @@ Logged-in users can have their shopping carts saved to their profiles as they sh ## Stripe -Payload itself handles no currency exchange. All payments are processed and billed using [Stripe](https://stripe.com). This means you must have access to a Stripe account via an API key, see [Connect Stripe](#connect-stripe) for how to get one. When you create a product in Payload that wish to sell, it must be connected to a Stripe product by selecting one from the field in the product's sidebar. This field fetches all available products in the background and displays them as options, see [Products](#products) for more details. Once set, data is automatically synced between the two platforms in the following ways: +Payload itself handles no currency exchange. All payments are processed and billed using [Stripe](https://stripe.com). This means you must have access to a Stripe account via an API key, see [Connect Stripe](#connect-stripe) for how to get one. When you create a product in Payload that you wish to sell, it must be connected to a Stripe product by selecting one from the field in the product's sidebar, see [Products](#products) for more details. Once set, data is automatically synced between the two platforms in the following ways: 1. Stripe to Payload using [Stripe Webhooks](https://stripe.com/docs/webhooks): - - - `invoice.created` - - `invoice.updated` - `product.created` - `product.updated` - `price.updated` @@ -117,13 +150,63 @@ Payload itself handles no currency exchange. All payments are processed and bill For more details on how to extend this functionality, see the the official [Payload Stripe Plugin](https://github.com/payloadcms/plugin-stripe). +### Connect Stripe + +To integrate with Stripe, follow these steps: + +1. You will first need to create a [Stripe](https://stripe.com) account if you do not already have one. +1. Retrieve your [Stripe API keys](https://dashboard.stripe.com/test/apikeys) and paste them into your `env`: + ```bash + STRIPE_SECRET_KEY= + NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY= + ``` +1. In another terminal, listen for webhooks (optional): + ```bash + stripe login # follow the prompts + yarn stripe:webhooks + ``` +1. Paste the given webhook signing secret into your `env`: + ```bash + STRIPE_WEBHOOKS_SIGNING_SECRET= + ``` +1. Reboot Payload to ensure that Stripe connects and the webhooks are registered. + ## Checkout -A custom endpoint is opened at `/api/checkout` which initiates the checkout process. This endpoint creates a [`PaymentIntent`](https://stripe.com/docs/payments/payment-intents) with the items in the cart using the Stripe's [Invoices API](https://stripe.com/docs/api/invoices). First, an invoice is drafted, then each item in your cart is appended as a line-item to the invoice. The total price is recalculated on the server to ensure accuracy and security, and once completed, passes the `client_secret` back in the response for your front-end to finalize the payment. +A custom endpoint is opened at `POST /api/payment-intent` which initiates the checkout process. This endpoint creates a [Stripe Payment Intent](https://stripe.com/docs/payments/payment-intents) with the items in the cart using the Stripe's [Invoices API](https://stripe.com/docs/api/invoices). First, an invoice is drafted, then each item in your cart is appended as a line-item to the invoice. The total price is recalculated on the server to ensure accuracy and security, and once completed, passes the `client_secret` back in the response for your front-end to finalize the payment. Once the payment has succeeded, the draft invoice will be set to paid, each purchased product will be recorded to the user's profile, and the user's cart will be cleared. + +## Orders + + When an order is placed, an invoice is created in Stripe. To easily query orders from Stripe, two custom endpoints are opened which proxy the Stripe API for these invoices. This allows you to safely query Stripe from your front-end without exposing your sensitive Stripe API key. + + - `GET /api/users/orders` - Returns all orders for the current user + - `GET /api/users/orders/:id` - Returns a single order by ID + - `POST /api/users/purchases` - Adds new purchases to the user's profile + + For more details on how to extend this functionality, see the [Custom Endpoints](https://payloadcms.com/docs/rest-api/overview#custom-endpoints) docs. ## Paywall -Products can optionally gate content or digital assets behind a paywall. This will require the product to be purchased before it's resources are accessible. To do this, we add a `paywall` field to the `product` collection with `read` access control to check for associated purchases on each request. A `purchases` field is maintained on each user to determine their access which can be manually adjusted as needed. +Products can optionally restrict access to content or digital assets behind a paywall. This will require the product to be purchased before it's data and resources are accessible. To do this, a `purchases` field is maintained on each user to track their purchase history: + +```ts +{ + name: 'purchases', + label: 'Purchases', + type: 'array', + fields: [ + { + name: 'product', + label: 'Product', + type: 'relationship', + relationTo: 'products', + }, + // other metadata like `createdOn`, etc + ] +} +``` + +Then, a `paywall` field is added to the `product` with `read` access control set to check for associated purchases. Every time a user requests a product, this will only return data to those who have purchased it: ```ts { @@ -139,9 +222,9 @@ Products can optionally gate content or digital assets behind a paywall. This wi } ``` -## Layout builder +## Layout Builder -Products and pages can be built using a powerful layout builder. This allows you to create unique layouts for each product or page. This template comes pre-configured with the following layout building blocks: +Create unique product and page layouts for any type fo content using a powerful layout builder. This template comes pre-configured with the following layout building blocks: - Hero - Content @@ -149,69 +232,45 @@ Products and pages can be built using a powerful layout builder. This allows you - Call To Action - Archive +Each block is fully designed and built into the front-end website that comes with this template. See [Website](#website) for more details. + ## SEO -This template comes pre-configured with the official [Payload SEO Plugin](https://github.com/payloadcms/plugin-seo) for complete SEO control. +This template comes pre-configured with the official [Payload SEO Plugin](https://github.com/payloadcms/plugin-seo) for complete SEO control from the admin panel. All SEO data is fully integrated into the front-end website that comes with this template. See [Website](#website) for more details. -## Front-end +## Website -This template includes a fully-working [Next.js](https://nextjs.org) front-end that is served alongside your Payload app in a single Express server. This makes is so that you can deploy both apps simultaneously and host them together. If you prefer a different front-end framework, this pattern works for any framework that supports a custom server. You can easily [Eject](#eject) the front-end out from this template to swap in your own or to use it as a standalone CMS. For more details, see the official [Custom Server Example](https://github.com/payloadcms/payload/tree/master/examples/custom-server). +This template includes a beautifully designed, production-ready front-end built with the [Next.js App Router](https://nextjs.org), served right alongside your Payload app in a single Express server. This makes is so that you can deploy both apps simultaneously and host them together. If you prefer a different front-end framework, this pattern works for any framework that supports a custom server. If you prefer to host your website separately from Payload, you can easily [Eject](#eject) the front-end out from this template to swap in your own, or to use it as a standalone CMS. For more details, see the official [Custom Server Example](https://github.com/payloadcms/payload/tree/master/examples/custom-server). Core features: -- [Next.js](https://nextjs.org), [GraphQL](https://graphql.org), [TypeScript](https://www.typescriptlang.org) -- Complete authentication workflow -- Complete shopping experience -- Full shopping cart implementation -- Full checkout workflow -- Account dashboard -- Pre-made layout building blocks +- [Next.js App Router](https://nextjs.org) +- [Stripe](https://stripe.com) +- [GraphQL](https://graphql.org) +- [TypeScript](https://www.typescriptlang.org) +- [React Hook Form](https://react-hook-form.com) - [Payload Admin Bar](https://github.com/payloadcms/payload-admin-bar) -- Complete SEO configuration -- Working Stripe integration -- Conditionally rendered paywall content +- Complete authentication flow +- Fully built shopping cart +- Complete checkout flow +- Customer accounts +- Dark mode +- Pre-made layout building blocks +- Complete SEO integration +- Complete Stripe integration +- Fully built paywall ### Eject If you prefer another front-end framework or would like to use Payload as a standalone CMS, you can easily eject the front-end from this template. To eject, simply run `yarn eject`. This will uninstall all Next.js related dependencies and delete all files and folders related to the Next.js front-end. It also removes all custom routing from your `server.ts` file and updates your `eslintrc.js`. -> Note: Your eject script may not work as expected if you've made significant modifications to your project. If you run into any issues, compare your project's dependencies and file structure with this template, see [./src/eject](./src/eject) for full details. +> Note: Your eject script may not work as expected if you've made significant modifications to your project. If you run into any issues, compare your project's dependencies and file structure with this template. See [./src/eject](./src/eject) for full details. For more details on how setup a custom server, see the official [Custom Server Example](https://github.com/payloadcms/payload/tree/master/examples/custom-server). ## Development -To spin up the template locally, follow these steps: - -1. First clone the repo -1. Then `cd YOUR_PROJECT_REPO && cp .env.example .env` -1. Next `yarn && yarn dev` (or `docker-compose up`, see [Docker](#docker)) -1. Now `open http://localhost:3000/admin` to access the admin panel -1. Create your first admin user using the form on the page - -That's it! Changes made in `./src` will be reflected in your app—but your database is blank and your app is not yet connected to Stripe, more details on that [here](#stripe). You can optionally seed the database with a few products and pages, more details on that [here](#seed). - -### Connect Stripe - -To integrate with Stripe, follow these steps: - -1. You will first need to create a [Stripe](https://stripe.com) account if you do not already have one. -1. Retrieve your Stripe Secret Key from the Stripe admin panel and paste it into your `env`: - ```bash - STRIPE_SECRET_KEY= - ``` -1. In another terminal, listen for webhooks: - ```bash - stripe login # follow the prompts - yarn stripe:webhooks - ``` -1. Paste the given webhook signing secret into your `env`: - ```bash - STRIPE_WEBHOOKS_ENDPOINT_SECRET= - ``` -1. Reboot Payload to ensure that Stripe connects and the webhooks are registered. - -See the official [Payload Stripe Plugin](https://github.com/payloadcms/plugin-stripe) for more details. +To spin up this example locally, follow the [Quick Start](#quick-start). Then [Connect Stripe](#connect-stripe) to enable payments, and [Seed](#seed) the database with a few products and pages. ### Docker @@ -225,7 +284,7 @@ That's it! The Docker instance will help you get up and running quickly while al ### Seed -To seed the database with a few products and pages you can run `yarn seed`. This template also comes with a `/api/seed` endpoint you can use to seed the database from the admin panel. +To seed the database with a few products and pages you can run `yarn seed`. This template also comes with a `GET /api/seed` endpoint you can use to seed the database from the admin panel. > NOTICE: seeding the database is destructive because it drops your current database to populate a fresh one from the seed template. Only run this command if you are starting a new project or can afford to lose your current data. @@ -233,11 +292,17 @@ To seed the database with a few products and pages you can run `yarn seed`. This To run Payload in production, you need to build and serve the Admin panel. To do so, follow these steps: -1. First invoke the `payload build` script by running `yarn build` or `npm run build` in your project root. This creates a `./build` directory with a production-ready admin bundle. -1. Then run `yarn serve` or `npm run serve` to run Node in production and serve Payload from the `./build` directory. +1. Invoke the `payload build` script by running `yarn build` or `npm run build` in your project root. This creates a `./build` directory with a production-ready admin bundle. +1. Finally run `yarn serve` or `npm run serve` to run Node in production and serve Payload from the `./build` directory. +1. When you're ready to go live, see [Deployment](#deployment) for more details. ### Deployment +Before deploying your app, you need to: + +1. Switch [your Stripe account to live mode](https://stripe.com/docs/test-mode) and update your [Stripe API keys](https://dashboard.stripe.com/test/apikeys). See [Connect Stripe](#connect-stripe) for more details. +1. Ensure your app builds and serves in production. See [Production](#production) for more details. + The easiest way to deploy your project is to use [Payload Cloud](https://payloadcms.com/new/import), a one-click hosting solution to deploy production-ready instances of your Payload apps directly from your GitHub repo. You can also deploy your app manually, check out the [deployment documentation](https://payloadcms.com/docs/production/deployment) for full details. ## Questions diff --git a/templates/ecommerce/eject.ts b/templates/ecommerce/eject.ts index a8442f297b..cc91361df2 100644 --- a/templates/ecommerce/eject.ts +++ b/templates/ecommerce/eject.ts @@ -7,7 +7,7 @@ import path from 'path' // See `./README.md#eject` for more information const files = ['./next.config.js', './next-env.d.ts'] -const directories = ['./src/pages', './src/public', './src/graphql', './src/css', './src/providers'] +const directories = ['./src/app'] const eject = async (): Promise => { files.forEach(file => { @@ -20,30 +20,6 @@ const eject = async (): Promise => { }) }) - // remove all components EXCEPT any Payload ones - const payloadComponents = ['BeforeDashboard'] - const components = fs.readdirSync(path.join(__dirname, './src/components')) - components.forEach(component => { - if (!payloadComponents.includes(component)) { - fs.rm(path.join(__dirname, `./src/components/${component}`), { recursive: true }, err => { - if (err) throw err - }) - } - }) - - // remove all blocks EXCEPT the associated Payload configs (`index.ts`) - const blocks = fs.readdirSync(path.join(__dirname, './src/blocks')) - blocks.forEach(block => { - const blockFiles = fs.readdirSync(path.join(__dirname, `./src/blocks/${block}`)) - blockFiles.forEach(file => { - if (file !== 'index.ts') { - fs.rm(path.join(__dirname, `./src/blocks/${block}/${file}`), err => { - if (err) throw err - }) - } - }) - }) - // create a new `./src/server.ts` file // use contents from `./src/server.default.ts` const serverFile = path.join(__dirname, './src/server.ts') diff --git a/templates/ecommerce/next.config.js b/templates/ecommerce/next.config.js index 233b3b0a4c..e958640d3c 100644 --- a/templates/ecommerce/next.config.js +++ b/templates/ecommerce/next.config.js @@ -1,4 +1,16 @@ /** @type {import('next').NextConfig} */ + +const ContentSecurityPolicy = ` + default-src 'self'; + script-src 'self' 'unsafe-inline' 'unsafe-eval' https://checkout.stripe.com https://js.stripe.com; + child-src 'self'; + style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; + img-src 'self' https://*.stripe.com https://raw.githubusercontent.com; + font-src 'self'; + frame-src 'self' https://checkout.stripe.com https://js.stripe.com; + connect-src 'self' https://checkout.stripe.com; +` + const nextConfig = { reactStrictMode: true, swcMinify: true, @@ -27,6 +39,17 @@ const nextConfig = { source: '/:path*', }) } + + headers.push({ + source: '/(.*)', + headers: [ + { + key: 'Content-Security-Policy', + value: ContentSecurityPolicy.replace(/\s{2,}/g, ' ').trim(), + }, + ], + }) + return headers }, } diff --git a/templates/ecommerce/package.json b/templates/ecommerce/package.json index 1e493dc9a7..f9fdd7861d 100644 --- a/templates/ecommerce/package.json +++ b/templates/ecommerce/package.json @@ -5,37 +5,33 @@ "main": "dist/server.js", "license": "MIT", "scripts": { - "dev": "cross-env PAYLOAD_CONFIG_PATH=src/payload.config.ts nodemon", + "dev": "cross-env PAYLOAD_CONFIG_PATH=src/payload/payload.config.ts nodemon", "stripe:webhooks": "stripe listen --forward-to localhost:8000/stripe/webhooks", - "seed": "rm -rf media && cross-env PAYLOAD_SEED=true PAYLOAD_DROP_DATABASE=true PAYLOAD_CONFIG_PATH=src/payload.config.ts ts-node src/server.ts", - "build:payload": "cross-env PAYLOAD_CONFIG_PATH=src/payload.config.ts payload build", + "seed": "rm -rf media && cross-env PAYLOAD_SEED=true PAYLOAD_DROP_DATABASE=true PAYLOAD_CONFIG_PATH=src/payload/payload.config.ts ts-node src/server.ts", + "build:payload": "cross-env PAYLOAD_CONFIG_PATH=src/payload/payload.config.ts payload build", "build:server": "tsc --project tsconfig.server.json", - "build:next": "cross-env PAYLOAD_CONFIG_PATH=dist/payload.config.js NEXT_BUILD=true node dist/server.js", + "build:next": "cross-env PAYLOAD_CONFIG_PATH=dist/payload/payload.config.js NEXT_BUILD=true node dist/server.js", "build": "cross-env NODE_ENV=production yarn build:payload && yarn build:server && yarn copyfiles && yarn build:next", - "serve": "cross-env PAYLOAD_CONFIG_PATH=dist/payload.config.js NODE_ENV=production node dist/server.js", - "eject": "yarn remove next react react-dom @apollo/client apollo-link-http @next/eslint-plugin-next && ts-node eject.ts", + "serve": "cross-env PAYLOAD_CONFIG_PATH=dist/payload/payload.config.js NODE_ENV=production node dist/server.js", + "eject": "yarn remove next react react-dom @next/eslint-plugin-next && ts-node eject.ts", "copyfiles": "copyfiles -u 1 \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png}\" dist/", - "generate:types": "cross-env PAYLOAD_CONFIG_PATH=src/payload.config.ts payload generate:types", - "generate:graphQLSchema": "PAYLOAD_CONFIG_PATH=src/payload.config.ts payload generate:graphQLSchema", + "generate:types": "cross-env PAYLOAD_CONFIG_PATH=src/payload/payload.config.ts payload generate:types", + "generate:graphQLSchema": "PAYLOAD_CONFIG_PATH=src/payload/payload.config.ts payload generate:graphQLSchema", "lint": "eslint src", "lint:fix": "eslint --fix --ext .ts,.tsx src" }, "dependencies": { - "@apollo/client": "^3.7.16", - "@faceless-ui/css-grid": "^1.2.0", "@payloadcms/plugin-cloud": "^2.0.0", "@payloadcms/plugin-nested-docs": "^1.0.4", "@payloadcms/plugin-seo": "^1.0.10", "@payloadcms/plugin-stripe": "^0.0.13", "@stripe/react-stripe-js": "^1.16.3", "@stripe/stripe-js": "^1.46.0", - "apollo-link-http": "^1.5.17", "cross-env": "^7.0.3", "dotenv": "^8.2.0", - "eslint-import-resolver-alias": "^1.1.2", "express": "^4.17.1", - "next": "^13.4.7", - "payload": "^1.8.2", + "next": "^13.4.8", + "payload": "^1.11.1", "payload-admin-bar": "^1.0.6", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -53,6 +49,7 @@ "copyfiles": "^2.4.1", "eslint": "^8.19.0", "eslint-config-prettier": "^8.5.0", + "eslint-import-resolver-alias": "^1.1.2", "eslint-plugin-filenames": "^1.3.2", "eslint-plugin-import": "2.25.4", "eslint-plugin-prettier": "^4.0.0", diff --git a/templates/ecommerce/public/favicon.ico b/templates/ecommerce/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..601b77718ca588b59f2ff9da3cb5039856844e5a GIT binary patch literal 17223 zcmeHO2|ShA`#;xSvhUm?SyNeRQe@D`I)gEaC}}cfBFb80=r%Q?nj(x8k;XEbFrt4H zUD`xhrfEb)t1V?J+%TNqect)MJ~!Ei)aT=TKJPv6dzR<^iTU#5CgbtK}$H>SC zr=+A1vAMZ9zH{de{^5rou&S!+pjeO=b8~a?KmYvmR{f5S4x&E%9654i!1~YzKtonm7Q4H<spa)AEk&Yg>A&6I5QF%r^*a(vmc_4!1h_~UtCr3zk{@b=~>l;^Jy?TWc6BDtXo*tne z68Bhi0=k9ye#3?hxU8(Kj|aT?`1lOSpDgtF@ngJa&mLmF8;f0lO|4k50;i{^zcX)) zgg=Sn+O=y~Q&V%mxoI$+0A7&$;K74$&G977(eQu$`ZclM0bLHpZ?JUMIS2zYA>mxpb7ud7GTr?K`(ASnOT{>c2v%=}^?Zwxx zU&m|Ktie)JQllPwp{-$$ke8RoN_Ir=F!$}+wF@gNE00NTvVXxGsH3BUV`F1+YisMU zyxZH`acXKR{`AvNi7}HLBS?B<9L*n>TO9 zm6er!x_I*B3EsVXH{m0IGUFlhV7P!b@Bq7jwb;p%C$WKn!MN#qFuwiMp-mu-TzB`+ zpZfkd_f?b8ZvQ$4Chr&g6ik;Xa%Mh#ehP&tKgDF&!W7S`abwB`Cf5dFZlB0C%y_jg zU?kTetTY!aSU~va#Kh(P@1RT2E%>QUpFTaH4|SyY z$@TzWW>QiT*4Ni3Xp{Ch6pqp6k+uToq#+?8xW2xgWdBY)TKpsd*fRzP2V?N5v)bQi zu?|!o#uXPA7vfBsge6Mnp* zFpV}3&R$GSO>ss>#(*}@D$sw$5Ay{0AxDdGxbiUOP^nbnd>i~K;L92)e5m+AKC&N! z4=gAs2-nrsy(7YhjGt^HkOTS!_#ylI;XVfZq#Pgv*s8U)HE|aPYzoE?*6|O@^q+s< zX*8CEiL!qZ^FT554e$fPnTMaB-&=j}W55qGkv7%eFa5FLAE;d*4cg{Ix1XV~LwkV# ze57GA?7u&LuqAk4O$ONE3}B>TGVuduuosvg;H(7BOhy|f3qRlnTYYT_JY&EP;|h&N!{cQuB!1Wf!?~ZXuI^iFr}4rMYXDelUb=LNWH~M| ztoN>5xq=-W90(r-@EI@6taL#4HkBs0p|6f zsW6Ee2(`8};hQc!oe6=@%+$yRZfn8A{97wRJERzS2=NG-85!DcuX!Hl=x)1GG`K2z zP01BG3Byo92jPkXhqr#~lKi7M+v3E8#4RU2=iB$nS?HweULTt92}R2paL!Y)|1w2_>ngV}`yYSARJ%Rj8SjU!Dmr32tD<`tzr`HS zKj_Be>#3N)m+%c`f`4dEjQXhaT9r8>LgBn#DXz;qnr9o`{xPNEsfc0+=LJ`Xr$q%u zi@JVy%89N(NX>b>T*JkkvW~s0{n;xTVv_PRdhx-h7Y!+{2Wf6)GK}_f^=cblJMypP zVyigMb~UQ@R+-(ip6>J9G(+`e;dfqW%RAa#@=8!=(~JM@Z@&uPbN32<&g0>tofQlF zQmZ4lPXCd9MHJK+OSZesxGCc+_lpFrZMx*FV!tas247Vxoo*Fyp|tI2?hMkDZOd7=iQi~WSbIl{ z)9}*?-*dCzzU-S&`rPfdpPt};gS~;CJ~}OUxd1vLwsm)bwhmvZ#a|KZ zQb*g!_9nIk)>f zsu4!qJ=}cUTm3^#(!UqJL9ycCN_Wt=$qw?$^)3&b``FQ*0uQ8;F( z$(@wfHZ$q*3Fv)Lv+6~}+zeVIojU*ay2|S4vl{CJL@8}+i>esLDfzvgtIJcwceVIS zcGos8D$-6kds7n4X1LyL7g0(A)Dv2f&7x3$dl(9q`2TWlp0pjUA=V3~_6|00ig z&*GO-nT}K*`i*D1YAMsX>J1ni(;j;z?A#N)ekr;kIE{1Rrz@iQI1PN}-HoNvl8cW- zu>UC;XRX1mr^mrdYrJ!^;8tVv2^5mHjOz)~F;^44v8MqovuJVc5N;8jxd`oZKYl^; zUK~Ymt;$hKY~lul61%GD)FX%{e@rivDoLR=mM2ObQPoLCa%nqJ1p5YL?Q*8UmtOj{ zlDS_(ud*or;zn^Plk02-G6toC{qQ0=!`GK7x6tQzVh$|m+T2vzq`c6bX^)4+uW7pE z@KWe4$y!{rwoKJalo{WD`E7C9ElQ*G;&0~C4&?YJ@UCF1&~-0ag1Yv8A;n3L`s#b$ zJYxmgG{uMtF?ot)6{DFmEc;DvZ{w>llx6;7iu+N%2kAB<-A-H3=g$K^p)`g|NbX7J zo#xzJqg%OhHbo&r<6LVLxAXQoH9mUOnawJBatgGUioZ5`g&~i%-v-sG@zA9LGpJ~9 zTfPmt`deIZI{P%bVPFOaGHK6eL$S9RS?pUK>PlzOcLb`dA?1$zSVXO6yrOK)zfchx z=&8H!wRlXinxmnBg*FF@o4-Abv0mAd-5}fly9eso0V-&Ebig^;uE+C`(WX2De$iGD zpCEo)&&WlJ+^3(ZJ0rn3)$NVCKApC4tE3xVxE*x-Mn8Vm8ySb*%6pvpR|Dpi<`+qn z>N#$GiiM7(X%xmZZEP~O=P!yn?iE$d?(V<8%GoP3peyT*Y)0X9ba=PO{`$1V^0D2V z(!8^Joi=rz$Wqmfv?@Bk{_FB=x_(~Cp_ae7q>dYuT-ac=j=%ZEy31OJ4+WOq$l&ze z8K!=5+v-*G%VRh?W;`#8EHk`oZ1wb;WN$O~qj~l(#BLhq{9j1xKD9G$Ek1>FOp;3M zngVhtay3y>JZ7RdD#XB#oz)vb(EOarge31QoLN(&(2-kpQlWZN_uT#PDPd1m(^L#NLk+;Kw+BhAAfq&Z!?x7YYUB@&yqy`ZqJuQ zM#>Fp%e+r*IT?Mrbp^#bM$zf{eBqwb-RYF+^9$P!Jz8=gx0RFG+ceedsf)HT@~x4k zzMIOLr7`DQIoU&=OC1mnRF^iGQSQ7f$0)INi%E@av{TNe)eQon{9CrKOm02zq+}WO z(}i`vwN|><*cmjWsU3dSO+^X6w|r4pP`({)5qq|%Zrj)5w74rpfpzU#&Cznp{bFa; fAO~?Yp+A^SfRAxygG-hPtP#vsSQ@1-cmCmjQ~<%> literal 0 HcmV?d00001 diff --git a/templates/ecommerce/public/favicon.svg b/templates/ecommerce/public/favicon.svg new file mode 100644 index 0000000000..86dc2defc4 --- /dev/null +++ b/templates/ecommerce/public/favicon.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/templates/ecommerce/src/seed/image-1.jpg b/templates/ecommerce/public/static-image.jpg similarity index 100% rename from templates/ecommerce/src/seed/image-1.jpg rename to templates/ecommerce/public/static-image.jpg diff --git a/templates/ecommerce/src/app/(pages)/[slug]/page.tsx b/templates/ecommerce/src/app/(pages)/[slug]/page.tsx new file mode 100644 index 0000000000..f3b3f5e156 --- /dev/null +++ b/templates/ecommerce/src/app/(pages)/[slug]/page.tsx @@ -0,0 +1,58 @@ +import React from 'react' +import { Metadata } from 'next' +import { notFound } from 'next/navigation' + +import { Page } from '../../../payload/payload-types' +import { staticHome } from '../../../payload/seed/static-home' +import { fetchDoc } from '../../_api/fetchDoc' +import { fetchDocs } from '../../_api/fetchDocs' +import { Blocks } from '../../_components/Blocks' +import { Hero } from '../../_components/Hero' +import { generateMeta } from '../../_utilities/generateMeta' + +export default async function Page({ params: { slug = 'home' } }) { + let page = await fetchDoc({ + collection: 'pages', + slug, + }) + + // If no `home` page exists, render a static one using dummy content + // You should delete this code once you have created a home page in the CMS + // This is really only useful for those who are demoing this template + if (!page && slug === 'home') { + page = staticHome + } + + if (!page) return notFound() + + const { hero, layout } = page + + return ( + + + + + ) +} + +export async function generateStaticParams() { + const pages = await fetchDocs('pages') + + return pages?.map(({ slug }) => slug) +} + +export async function generateMetadata({ params: { slug = 'home' } }): Promise { + let page = await fetchDoc({ + collection: 'pages', + slug, + }) + + if (!page && slug === 'home') { + page = staticHome + } + + return generateMeta({ doc: page }) +} diff --git a/templates/ecommerce/src/app/(pages)/account/AccountForm/index.module.scss b/templates/ecommerce/src/app/(pages)/account/AccountForm/index.module.scss new file mode 100644 index 0000000000..c8a66e0946 --- /dev/null +++ b/templates/ecommerce/src/app/(pages)/account/AccountForm/index.module.scss @@ -0,0 +1,24 @@ +@import "../../../_css/common"; + +.form { + margin-bottom: var(--base); + display: flex; + flex-direction: column; + gap: calc(var(--base) / 2); + align-items: flex-start; + width: 66.66%; + + @include mid-break { + width: 100%; + } +} + +.changePassword { + all: unset; + cursor: pointer; + text-decoration: underline; +} + +.submit { + margin-top: calc(var(--base) / 2); +} diff --git a/templates/ecommerce/src/app/(pages)/account/AccountForm/index.tsx b/templates/ecommerce/src/app/(pages)/account/AccountForm/index.tsx new file mode 100644 index 0000000000..fa247719cc --- /dev/null +++ b/templates/ecommerce/src/app/(pages)/account/AccountForm/index.tsx @@ -0,0 +1,162 @@ +'use client' + +import React, { Fragment, useCallback, useEffect, useRef, useState } from 'react' +import { useForm } from 'react-hook-form' +import { useRouter } from 'next/navigation' + +import { Button } from '../../../_components/Button' +import { Input } from '../../../_components/Input' +import { Message } from '../../../_components/Message' +import { useAuth } from '../../../_providers/Auth' + +import classes from './index.module.scss' + +type FormData = { + email: string + name: string + password: string + passwordConfirm: string +} + +const AccountForm: React.FC = () => { + const [error, setError] = useState('') + const [success, setSuccess] = useState('') + const { user, setUser } = useAuth() + const [changePassword, setChangePassword] = useState(false) + + const { + register, + handleSubmit, + formState: { errors, isLoading }, + reset, + watch, + } = useForm() + + const password = useRef({}) + password.current = watch('password', '') + + const router = useRouter() + + const onSubmit = useCallback( + async (data: FormData) => { + if (user) { + const response = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/users/${user.id}`, { + // Make sure to include cookies with fetch + credentials: 'include', + method: 'PATCH', + body: JSON.stringify(data), + headers: { + 'Content-Type': 'application/json', + }, + }) + + if (response.ok) { + const json = await response.json() + setUser(json.doc) + setSuccess('Successfully updated account.') + setError('') + setChangePassword(false) + reset({ + email: json.doc.email, + name: json.doc.name, + password: '', + passwordConfirm: '', + }) + } else { + setError('There was a problem updating your account.') + } + } + }, + [user, setUser, reset], + ) + + useEffect(() => { + if (user === null) { + router.push( + `/login?error=${encodeURIComponent( + 'You must be logged in to view this page.', + )}&redirect=${encodeURIComponent('/account')}`, + ) + } + + // Once user is loaded, reset form to have default values + if (user) { + reset({ + email: user.email, + name: user.name, + password: '', + passwordConfirm: '', + }) + } + }, [user, router, reset, changePassword]) + + return ( +
+ + {!changePassword ? ( + +

+ {'Change your account details below, or '} + + {' to change your password.'} +

+ + +
+ ) : ( + +

+ {'Change your password below, or '} + + . +

+ + value === password.current || 'The passwords do not match'} + error={errors.passwordConfirm} + /> +
+ )} +
+
+ + Page {page} of {totalPages} + +
+ + + ) +} diff --git a/templates/ecommerce/src/app/_components/PaywallBlocks/index.tsx b/templates/ecommerce/src/app/_components/PaywallBlocks/index.tsx new file mode 100644 index 0000000000..59aa5abf8c --- /dev/null +++ b/templates/ecommerce/src/app/_components/PaywallBlocks/index.tsx @@ -0,0 +1,109 @@ +'use client' + +import React, { useEffect } from 'react' +import Link from 'next/link' + +import { Page } from '../../../payload/payload-types' +import { PRODUCT_PAYWALL } from '../../_graphql/products' +import { useAuth } from '../../_providers/Auth' +import { Blocks } from '../Blocks' +import { Gutter } from '../Gutter' +import { LoadingShimmer } from '../LoadingShimmer' +import { Message } from '../Message' +import { VerticalPadding } from '../VerticalPadding' + +export const PaywallBlocks: React.FC<{ + productSlug: string + disableTopPadding?: boolean +}> = props => { + const { productSlug, disableTopPadding } = props + const { user } = useAuth() + + const [isLoading, setIsLoading] = React.useState(false) + const [blocks, setBlocks] = React.useState() + const hasInitialized = React.useRef(false) + + useEffect(() => { + if (!user || hasInitialized.current) return + hasInitialized.current = true + + const getPaywallContent = async () => { + setIsLoading(true) + + try { + const paywall = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/graphql`, { + method: 'POST', + credentials: 'include', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + query: PRODUCT_PAYWALL, + variables: { + slug: productSlug, + }, + }), + }) + ?.then(res => res.json()) + ?.then(res => res?.data?.Products.docs[0]?.paywall) + + if (paywall) { + setBlocks(paywall) + } + + setIsLoading(false) + } catch (error) { + console.error(error) // eslint-disable-line no-console + setIsLoading(false) + } + } + + getPaywallContent() + }, [user, productSlug]) + + if (user === undefined) { + return null + } + + if (user === null) { + return ( + + + + {`This content is gated behind a paywall. You must be `} + + logged in + + {` as an admin or have purchased this product to view this content.`} + + } + /> + + + ) + } + + if (isLoading) { + return ( + + + + + + ) + } + + if (!blocks || blocks.length === 0) { + return ( + + + + + + ) + } + + return +} diff --git a/templates/ecommerce/src/app/_components/Price/index.module.scss b/templates/ecommerce/src/app/_components/Price/index.module.scss new file mode 100644 index 0000000000..1b31033fe7 --- /dev/null +++ b/templates/ecommerce/src/app/_components/Price/index.module.scss @@ -0,0 +1,29 @@ +@import '../../_css/common'; + +.actions { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: calc(var(--base) / 2); + + @include mid-break { + flex-direction: column; + align-items: flex-start; + } +} + +.price { + font-weight: 600; + line-height: 1; + display: flex; + flex-direction: column; + gap: 4px; + + > * { + margin: 0; + } +} + +.priceBreakdown { + color: var(--theme-elevation-500); +} diff --git a/templates/ecommerce/src/components/Price/index.tsx b/templates/ecommerce/src/app/_components/Price/index.tsx similarity index 59% rename from templates/ecommerce/src/components/Price/index.tsx rename to templates/ecommerce/src/app/_components/Price/index.tsx index a955a80c66..18074f98e7 100644 --- a/templates/ecommerce/src/components/Price/index.tsx +++ b/templates/ecommerce/src/app/_components/Price/index.tsx @@ -1,18 +1,20 @@ +'use client' + import React, { useEffect, useState } from 'react' -import { Product } from '../../payload-types' +import { Product } from '../../../payload/payload-types' import { AddToCartButton } from '../AddToCartButton' import { RemoveFromCartButton } from '../RemoveFromCartButton' import classes from './index.module.scss' -export const priceFromJSON = (priceJSON): string => { +export const priceFromJSON = (priceJSON: string, quantity: number = 1): string => { let price = '' if (priceJSON) { try { const parsed = JSON.parse(priceJSON)?.data[0] - const priceValue = parsed.unit_amount + const priceValue = parsed.unit_amount * quantity const priceType = parsed.type price = (priceValue / 100).toLocaleString('en-US', { @@ -40,17 +42,33 @@ export const Price: React.FC<{ quantity?: number button?: 'addToCart' | 'removeFromCart' | false }> = props => { - const { product, product: { priceJSON } = {}, button = 'addToCart' } = props + const { product, product: { priceJSON } = {}, button = 'addToCart', quantity } = props - const [price, setPrice] = useState(() => priceFromJSON(priceJSON)) + const [price, setPrice] = useState<{ + actualPrice: string + withQuantity: string + }>(() => ({ + actualPrice: priceFromJSON(priceJSON), + withQuantity: priceFromJSON(priceJSON, quantity), + })) useEffect(() => { - setPrice(priceFromJSON(priceJSON)) - }, [priceJSON]) + setPrice({ + actualPrice: priceFromJSON(priceJSON), + withQuantity: priceFromJSON(priceJSON, quantity), + }) + }, [priceJSON, quantity]) return (
- {typeof price !== 'undefined' && price !== '' &&

{price}

} + {typeof price?.actualPrice !== 'undefined' && price?.withQuantity !== '' && ( +
+

{price?.withQuantity}

+ {quantity > 1 && ( + {`${price.actualPrice} x ${quantity}`} + )} +
+ )} {button && button === 'addToCart' && ( )} diff --git a/templates/ecommerce/src/app/_components/RemoveFromCartButton/index.module.scss b/templates/ecommerce/src/app/_components/RemoveFromCartButton/index.module.scss new file mode 100644 index 0000000000..2519bfea48 --- /dev/null +++ b/templates/ecommerce/src/app/_components/RemoveFromCartButton/index.module.scss @@ -0,0 +1,7 @@ +@import '../../_css/common'; + +.removeFromCartButton { + all: unset; + cursor: pointer; + @extend %label; +} diff --git a/templates/ecommerce/src/components/RemoveFromCartButton/index.tsx b/templates/ecommerce/src/app/_components/RemoveFromCartButton/index.tsx similarity index 84% rename from templates/ecommerce/src/components/RemoveFromCartButton/index.tsx rename to templates/ecommerce/src/app/_components/RemoveFromCartButton/index.tsx index af979c552d..4e3cf5aef1 100644 --- a/templates/ecommerce/src/components/RemoveFromCartButton/index.tsx +++ b/templates/ecommerce/src/app/_components/RemoveFromCartButton/index.tsx @@ -1,7 +1,7 @@ import React from 'react' -import { Product } from '../../payload-types' -import { useCart } from '../../providers/Cart' +import { Product } from '../../../payload/payload-types' +import { useCart } from '../../_providers/Cart' import classes from './index.module.scss' @@ -27,7 +27,7 @@ export const RemoveFromCartButton: React.FC<{ }} className={[className, classes.removeFromCartButton].filter(Boolean).join(' ')} > - Remove from cart + Remove ) } diff --git a/templates/ecommerce/src/app/_components/RenderParams/Component.tsx b/templates/ecommerce/src/app/_components/RenderParams/Component.tsx new file mode 100644 index 0000000000..09048725ef --- /dev/null +++ b/templates/ecommerce/src/app/_components/RenderParams/Component.tsx @@ -0,0 +1,41 @@ +'use client' + +import { useEffect } from 'react' +import { useSearchParams } from 'next/navigation' + +import { Message } from '../Message' + +export type Props = { + params?: string[] + message?: string + className?: string + onParams?: (paramValues: (string | string[])[]) => void +} + +export const RenderParamsComponent: React.FC = ({ + params = ['error', 'message', 'success'], + message, + className, + onParams, +}) => { + const searchParams = useSearchParams() + const paramValues = params.map(param => searchParams.get(param)).filter(Boolean) + + useEffect(() => { + if (paramValues.length && onParams) { + onParams(paramValues) + } + }, [paramValues, onParams]) + + if (paramValues.length) { + return ( +
+ {paramValues.map(paramValue => ( + + ))} +
+ ) + } + + return null +} diff --git a/templates/ecommerce/src/app/_components/RenderParams/index.tsx b/templates/ecommerce/src/app/_components/RenderParams/index.tsx new file mode 100644 index 0000000000..d7a834dda5 --- /dev/null +++ b/templates/ecommerce/src/app/_components/RenderParams/index.tsx @@ -0,0 +1,15 @@ +import { Suspense } from 'react' + +import { Props, RenderParamsComponent } from './Component' + +// Using `useSearchParams` from `next/navigation` causes the entire route to de-optimize into client-side rendering +// To fix this, we wrap the component in a `Suspense` component +// See https://nextjs.org/docs/messages/deopted-into-client-rendering for more info + +export const RenderParams: React.FC = props => { + return ( + + + + ) +} diff --git a/templates/ecommerce/src/components/RichText/index.module.scss b/templates/ecommerce/src/app/_components/RichText/index.module.scss similarity index 100% rename from templates/ecommerce/src/components/RichText/index.module.scss rename to templates/ecommerce/src/app/_components/RichText/index.module.scss diff --git a/templates/ecommerce/src/components/RichText/index.tsx b/templates/ecommerce/src/app/_components/RichText/index.tsx similarity index 100% rename from templates/ecommerce/src/components/RichText/index.tsx rename to templates/ecommerce/src/app/_components/RichText/index.tsx diff --git a/templates/ecommerce/src/components/RichText/serialize.tsx b/templates/ecommerce/src/app/_components/RichText/serialize.tsx similarity index 66% rename from templates/ecommerce/src/components/RichText/serialize.tsx rename to templates/ecommerce/src/app/_components/RichText/serialize.tsx index 6d1627225a..a6341697a2 100644 --- a/templates/ecommerce/src/components/RichText/serialize.tsx +++ b/templates/ecommerce/src/app/_components/RichText/serialize.tsx @@ -1,5 +1,6 @@ import React, { Fragment } from 'react' import escapeHTML from 'escape-html' +import Link from 'next/link' import { Text } from 'slate' import { Label } from '../Label' @@ -19,8 +20,8 @@ type Leaf = { [key: string]: unknown } -const serialize = (children: Children): React.ReactElement[] => - children.map((node, i) => { +const serialize = (children?: Children): React.ReactNode[] => + children?.map((node, i) => { if (Text.isText(node)) { let text = @@ -61,51 +62,51 @@ const serialize = (children: Children): React.ReactElement[] => switch (node.type) { case 'h1': - return

{serialize(node.children)}

+ return

{serialize(node?.children)}

case 'h2': - return

{serialize(node.children)}

+ return

{serialize(node?.children)}

case 'h3': - return

{serialize(node.children)}

+ return

{serialize(node?.children)}

case 'h4': - return

{serialize(node.children)}

+ return

{serialize(node?.children)}

case 'h5': - return
{serialize(node.children)}
+ return
{serialize(node?.children)}
case 'h6': - return
{serialize(node.children)}
+ return
{serialize(node?.children)}
case 'quote': - return
{serialize(node.children)}
+ return
{serialize(node?.children)}
case 'ul': - return
    {serialize(node.children)}
+ return
    {serialize(node?.children)}
case 'ol': return
    {serialize(node.children)}
case 'li': return
  • {serialize(node.children)}
  • case 'link': return ( - - {serialize(node.children)} - + {serialize(node?.children)} + ) case 'label': - return + return case 'large-body': { - return {serialize(node.children)} + return {serialize(node?.children)} } default: - return

    {serialize(node.children)}

    + return

    {serialize(node?.children)}

    } - }) + }) || [] export default serialize diff --git a/templates/ecommerce/src/components/VerticalPadding/index.module.scss b/templates/ecommerce/src/app/_components/VerticalPadding/index.module.scss similarity index 100% rename from templates/ecommerce/src/components/VerticalPadding/index.module.scss rename to templates/ecommerce/src/app/_components/VerticalPadding/index.module.scss diff --git a/templates/ecommerce/src/components/VerticalPadding/index.tsx b/templates/ecommerce/src/app/_components/VerticalPadding/index.tsx similarity index 100% rename from templates/ecommerce/src/components/VerticalPadding/index.tsx rename to templates/ecommerce/src/app/_components/VerticalPadding/index.tsx diff --git a/templates/ecommerce/src/components/icons/Chevron/index.tsx b/templates/ecommerce/src/app/_components/icons/Chevron/index.tsx similarity index 100% rename from templates/ecommerce/src/components/icons/Chevron/index.tsx rename to templates/ecommerce/src/app/_components/icons/Chevron/index.tsx diff --git a/templates/ecommerce/src/components/icons/Menu/index.tsx b/templates/ecommerce/src/app/_components/icons/Menu/index.tsx similarity index 100% rename from templates/ecommerce/src/components/icons/Menu/index.tsx rename to templates/ecommerce/src/app/_components/icons/Menu/index.tsx diff --git a/templates/ecommerce/src/css/app.scss b/templates/ecommerce/src/app/_css/app.scss similarity index 70% rename from templates/ecommerce/src/css/app.scss rename to templates/ecommerce/src/app/_css/app.scss index 2c7aeb745f..438ede82c2 100644 --- a/templates/ecommerce/src/css/app.scss +++ b/templates/ecommerce/src/app/_css/app.scss @@ -1,14 +1,9 @@ @use './queries.scss' as *; @use './colors.scss' as *; @use './type.scss' as *; +@import "./theme.scss"; :root { - --breakpoint-xs-width : #{$breakpoint-xs-width}; - --breakpoint-s-width : #{$breakpoint-s-width}; - --breakpoint-m-width : #{$breakpoint-m-width}; - --breakpoint-l-width : #{$breakpoint-l-width}; - --scrollbar-width: 17px; - --base: 24px; --font-body: system-ui; --font-mono: 'Roboto Mono', monospace; @@ -16,9 +11,6 @@ --gutter-h: 180px; --block-padding: 120px; - --header-z-index: 100; - --modal-z-index: 90; - @include large-break { --gutter-h: 144px; --block-padding: 96px; @@ -30,18 +22,20 @@ } } -///////////////////////////// -// GLOBAL STYLES -///////////////////////////// - * { box-sizing: border-box; } html { @extend %body; - background: var(--color-base-0); + background: var(--theme-bg); -webkit-font-smoothing: antialiased; + opacity: 0; + + &[data-theme=dark], + &[data-theme=light] { + opacity: initial; + } } html, @@ -52,17 +46,17 @@ body, body { font-family: var(--font-body); - color: var(--color-base-1000); margin: 0; + color: var(--theme-text); } ::selection { - background: var(--color-success-500); + background: var(--theme-success-500); color: var(--color-base-800); } ::-moz-selection { - background: var(--color-success-500); + background: var(--theme-success-500); color: var(--color-base-800); } @@ -126,4 +120,4 @@ a { svg { vertical-align: middle; -} \ No newline at end of file +} diff --git a/templates/ecommerce/src/css/colors.scss b/templates/ecommerce/src/app/_css/colors.scss similarity index 99% rename from templates/ecommerce/src/css/colors.scss rename to templates/ecommerce/src/app/_css/colors.scss index e5b65419bb..68bcbc2d59 100644 --- a/templates/ecommerce/src/css/colors.scss +++ b/templates/ecommerce/src/app/_css/colors.scss @@ -80,4 +80,4 @@ --color-error-850: rgb(77, 33, 35); --color-error-900: rgb(51, 22, 24); --color-error-950: rgb(25, 11, 12); -} \ No newline at end of file +} diff --git a/templates/ecommerce/src/css/common.scss b/templates/ecommerce/src/app/_css/common.scss similarity index 100% rename from templates/ecommerce/src/css/common.scss rename to templates/ecommerce/src/app/_css/common.scss diff --git a/templates/ecommerce/src/css/queries.scss b/templates/ecommerce/src/app/_css/queries.scss similarity index 85% rename from templates/ecommerce/src/css/queries.scss rename to templates/ecommerce/src/app/_css/queries.scss index 74f23fb0db..8f84ac7097 100644 --- a/templates/ecommerce/src/css/queries.scss +++ b/templates/ecommerce/src/app/_css/queries.scss @@ -3,10 +3,6 @@ $breakpoint-s-width: 768px; $breakpoint-m-width: 1024px; $breakpoint-l-width: 1440px; -//////////////////////////// -// MEDIA QUERIES -///////////////////////////// - @mixin extra-small-break { @media (max-width: #{$breakpoint-xs-width}) { @content; @@ -29,4 +25,4 @@ $breakpoint-l-width: 1440px; @media (max-width: #{$breakpoint-l-width}) { @content; } -} \ No newline at end of file +} diff --git a/templates/ecommerce/src/app/_css/theme.scss b/templates/ecommerce/src/app/_css/theme.scss new file mode 100644 index 0000000000..5caf087879 --- /dev/null +++ b/templates/ecommerce/src/app/_css/theme.scss @@ -0,0 +1,237 @@ +[data-theme=light] { + --theme-success-50: var(--color-success-50); + --theme-success-100: var(--color-success-100); + --theme-success-150: var(--color-success-150); + --theme-success-200: var(--color-success-200); + --theme-success-250: var(--color-success-250); + --theme-success-300: var(--color-success-300); + --theme-success-350: var(--color-success-350); + --theme-success-400: var(--color-success-400); + --theme-success-450: var(--color-success-450); + --theme-success-500: var(--color-success-500); + --theme-success-550: var(--color-success-550); + --theme-success-600: var(--color-success-600); + --theme-success-650: var(--color-success-650); + --theme-success-700: var(--color-success-700); + --theme-success-750: var(--color-success-750); + --theme-success-800: var(--color-success-800); + --theme-success-850: var(--color-success-850); + --theme-success-900: var(--color-success-900); + --theme-success-950: var(--color-success-950); + + --theme-warning-50: var(--color-warning-50); + --theme-warning-100: var(--color-warning-100); + --theme-warning-150: var(--color-warning-150); + --theme-warning-200: var(--color-warning-200); + --theme-warning-250: var(--color-warning-250); + --theme-warning-300: var(--color-warning-300); + --theme-warning-350: var(--color-warning-350); + --theme-warning-400: var(--color-warning-400); + --theme-warning-450: var(--color-warning-450); + --theme-warning-500: var(--color-warning-500); + --theme-warning-550: var(--color-warning-550); + --theme-warning-600: var(--color-warning-600); + --theme-warning-650: var(--color-warning-650); + --theme-warning-700: var(--color-warning-700); + --theme-warning-750: var(--color-warning-750); + --theme-warning-800: var(--color-warning-800); + --theme-warning-850: var(--color-warning-850); + --theme-warning-900: var(--color-warning-900); + --theme-warning-950: var(--color-warning-950); + + --theme-error-50: var(--color-error-50); + --theme-error-100: var(--color-error-100); + --theme-error-150: var(--color-error-150); + --theme-error-200: var(--color-error-200); + --theme-error-250: var(--color-error-250); + --theme-error-300: var(--color-error-300); + --theme-error-350: var(--color-error-350); + --theme-error-400: var(--color-error-400); + --theme-error-450: var(--color-error-450); + --theme-error-500: var(--color-error-500); + --theme-error-550: var(--color-error-550); + --theme-error-600: var(--color-error-600); + --theme-error-650: var(--color-error-650); + --theme-error-700: var(--color-error-700); + --theme-error-750: var(--color-error-750); + --theme-error-800: var(--color-error-800); + --theme-error-850: var(--color-error-850); + --theme-error-900: var(--color-error-900); + --theme-error-950: var(--color-error-950); + + --theme-elevation-0: var(--color-base-0); + --theme-elevation-50: var(--color-base-50); + --theme-elevation-100: var(--color-base-100); + --theme-elevation-150: var(--color-base-150); + --theme-elevation-200: var(--color-base-200); + --theme-elevation-250: var(--color-base-250); + --theme-elevation-300: var(--color-base-300); + --theme-elevation-350: var(--color-base-350); + --theme-elevation-400: var(--color-base-400); + --theme-elevation-450: var(--color-base-450); + --theme-elevation-500: var(--color-base-500); + --theme-elevation-550: var(--color-base-550); + --theme-elevation-600: var(--color-base-600); + --theme-elevation-650: var(--color-base-650); + --theme-elevation-700: var(--color-base-700); + --theme-elevation-750: var(--color-base-750); + --theme-elevation-800: var(--color-base-800); + --theme-elevation-850: var(--color-base-850); + --theme-elevation-900: var(--color-base-900); + --theme-elevation-950: var(--color-base-950); + --theme-elevation-1000: var(--color-base-1000); + + --theme-bg: var(--theme-elevation-0); + --theme-input-bg: var(--theme-elevation-50); + --theme-text: var(--theme-elevation-750); + --theme-border-color: var(--theme-elevation-150); + + color-scheme: light; + color: var(--theme-text); + + --highlight-default-bg-color: var(--theme-success-400); + --highlight-default-text-color: var(--theme-text); + + --highlight-danger-bg-color: var(--theme-error-150); + --highlight-danger-text-color: var(--theme-text); + + h1 a, + h2 a, + h3 a, + h4 a, + h5 a, + h6 a { + color: var(--theme-elevation-750); + + &:hover { + color: var(--theme-elevation-800); + } + + &:visited { + color: var(--theme-elevation-750); + + &:hover { + color: var(--theme-elevation-800); + } + } + } +} + +[data-theme=dark] { + --theme-elevation-0: var(--color-base-1000); + --theme-elevation-50: var(--color-base-950); + --theme-elevation-100: var(--color-base-900); + --theme-elevation-150: var(--color-base-850); + --theme-elevation-200: var(--color-base-800); + --theme-elevation-250: var(--color-base-750); + --theme-elevation-300: var(--color-base-700); + --theme-elevation-350: var(--color-base-650); + --theme-elevation-400: var(--color-base-600); + --theme-elevation-450: var(--color-base-550); + --theme-elevation-500: var(--color-base-500); + --theme-elevation-550: var(--color-base-450); + --theme-elevation-600: var(--color-base-400); + --theme-elevation-650: var(--color-base-350); + --theme-elevation-700: var(--color-base-300); + --theme-elevation-750: var(--color-base-250); + --theme-elevation-800: var(--color-base-200); + --theme-elevation-850: var(--color-base-150); + --theme-elevation-900: var(--color-base-100); + --theme-elevation-950: var(--color-base-50); + --theme-elevation-1000: var(--color-base-0); + + --theme-success-50: var(--color-success-950); + --theme-success-100: var(--color-success-900); + --theme-success-150: var(--color-success-850); + --theme-success-200: var(--color-success-800); + --theme-success-250: var(--color-success-750); + --theme-success-300: var(--color-success-700); + --theme-success-350: var(--color-success-650); + --theme-success-400: var(--color-success-600); + --theme-success-450: var(--color-success-550); + --theme-success-500: var(--color-success-500); + --theme-success-550: var(--color-success-450); + --theme-success-600: var(--color-success-400); + --theme-success-650: var(--color-success-350); + --theme-success-700: var(--color-success-300); + --theme-success-750: var(--color-success-250); + --theme-success-800: var(--color-success-200); + --theme-success-850: var(--color-success-150); + --theme-success-900: var(--color-success-100); + --theme-success-950: var(--color-success-50); + + --theme-warning-50: var(--color-warning-950); + --theme-warning-100: var(--color-warning-900); + --theme-warning-150: var(--color-warning-850); + --theme-warning-200: var(--color-warning-800); + --theme-warning-250: var(--color-warning-750); + --theme-warning-300: var(--color-warning-700); + --theme-warning-350: var(--color-warning-650); + --theme-warning-400: var(--color-warning-600); + --theme-warning-450: var(--color-warning-550); + --theme-warning-500: var(--color-warning-500); + --theme-warning-550: var(--color-warning-450); + --theme-warning-600: var(--color-warning-400); + --theme-warning-650: var(--color-warning-350); + --theme-warning-700: var(--color-warning-300); + --theme-warning-750: var(--color-warning-250); + --theme-warning-800: var(--color-warning-200); + --theme-warning-850: var(--color-warning-150); + --theme-warning-900: var(--color-warning-100); + --theme-warning-950: var(--color-warning-50); + + --theme-error-50: var(--color-error-950); + --theme-error-100: var(--color-error-900); + --theme-error-150: var(--color-error-850); + --theme-error-200: var(--color-error-800); + --theme-error-250: var(--color-error-750); + --theme-error-300: var(--color-error-700); + --theme-error-350: var(--color-error-650); + --theme-error-400: var(--color-error-600); + --theme-error-450: var(--color-error-550); + --theme-error-500: var(--color-error-500); + --theme-error-550: var(--color-error-450); + --theme-error-600: var(--color-error-400); + --theme-error-650: var(--color-error-350); + --theme-error-700: var(--color-error-300); + --theme-error-750: var(--color-error-250); + --theme-error-800: var(--color-error-200); + --theme-error-850: var(--color-error-150); + --theme-error-900: var(--color-error-100); + --theme-error-950: var(--color-error-50); + + --theme-bg: var(--theme-elevation-100); + --theme-text: var(--theme-elevation-900); + --theme-input-bg: var(--theme-elevation-150); + --theme-border-color: var(--theme-elevation-250); + + color-scheme: dark; + color: var(--theme-text); + + --highlight-default-bg-color: var(--theme-success-100); + --highlight-default-text-color: var(--theme-success-600); + + --highlight-danger-bg-color: var(--theme-error-100); + --highlight-danger-text-color: var(--theme-error-550); + + h1 a, + h2 a, + h3 a, + h4 a, + h5 a, + h6 a { + color: var(--theme-success-600); + + &:hover { + color: var(--theme-success-400); + } + + &:visited { + color: var(--theme-success-700); + + &:hover { + color: var(--theme-success-500); + } + } + } +} diff --git a/templates/ecommerce/src/css/type.scss b/templates/ecommerce/src/app/_css/type.scss similarity index 89% rename from templates/ecommerce/src/css/type.scss rename to templates/ecommerce/src/app/_css/type.scss index 27eb1984f1..f8d1d07162 100644 --- a/templates/ecommerce/src/css/type.scss +++ b/templates/ecommerce/src/app/_css/type.scss @@ -1,9 +1,5 @@ @use 'queries' as *; -///////////////////////////// -// HEADINGS -///////////////////////////// - %h1, %h2, %h3, @@ -83,10 +79,6 @@ font-weight: bold; } -///////////////////////////// -// TYPE STYLES -///////////////////////////// - %body { font-size: 18px; line-height: 32px; @@ -110,7 +102,6 @@ %label { font-size: 16px; line-height: 24px; - letter-spacing: 1px; text-transform: uppercase; @include mid-break { diff --git a/templates/ecommerce/src/graphql/blocks.ts b/templates/ecommerce/src/app/_graphql/blocks.ts similarity index 93% rename from templates/ecommerce/src/graphql/blocks.ts rename to templates/ecommerce/src/app/_graphql/blocks.ts index bf6a93d1ac..04be32e960 100644 --- a/templates/ecommerce/src/graphql/blocks.ts +++ b/templates/ecommerce/src/app/_graphql/blocks.ts @@ -6,7 +6,7 @@ import { META } from './meta' export const CALL_TO_ACTION = ` ...on Cta { blockType - ctaBackgroundColor + invertBackground richText links { link ${LINK_FIELDS()} @@ -17,7 +17,7 @@ export const CALL_TO_ACTION = ` export const CONTENT = ` ...on Content { blockType - backgroundColor + invertBackground columns { size richText @@ -30,7 +30,7 @@ export const CONTENT = ` export const MEDIA_BLOCK = ` ...on MediaBlock { blockType - mediaBlockBackgroundColor + invertBackground position ${MEDIA} } diff --git a/templates/ecommerce/src/graphql/cart.ts b/templates/ecommerce/src/app/_graphql/cart.ts similarity index 100% rename from templates/ecommerce/src/graphql/cart.ts rename to templates/ecommerce/src/app/_graphql/cart.ts diff --git a/templates/ecommerce/src/graphql/categories.ts b/templates/ecommerce/src/app/_graphql/categories.ts similarity index 100% rename from templates/ecommerce/src/graphql/categories.ts rename to templates/ecommerce/src/app/_graphql/categories.ts diff --git a/templates/ecommerce/src/graphql/globals.ts b/templates/ecommerce/src/app/_graphql/globals.ts similarity index 76% rename from templates/ecommerce/src/graphql/globals.ts rename to templates/ecommerce/src/app/_graphql/globals.ts index 335159beae..7f24e1c1d2 100644 --- a/templates/ecommerce/src/graphql/globals.ts +++ b/templates/ecommerce/src/app/_graphql/globals.ts @@ -1,5 +1,3 @@ -import { gql } from '@apollo/client' - import { LINK_FIELDS } from './link' export const HEADER = ` @@ -10,7 +8,7 @@ export const HEADER = ` } ` -export const HEADER_QUERY = gql` +export const HEADER_QUERY = ` query Header { ${HEADER} } @@ -24,7 +22,7 @@ export const FOOTER = ` } ` -export const FOOTER_QUERY = gql` +export const FOOTER_QUERY = ` query Header { ${FOOTER} } @@ -38,7 +36,7 @@ export const SETTINGS = ` } ` -export const SETTINGS_QUERY = gql` +export const SETTINGS_QUERY = ` query Settings { ${SETTINGS} } diff --git a/templates/ecommerce/src/graphql/link.ts b/templates/ecommerce/src/app/_graphql/link.ts similarity index 100% rename from templates/ecommerce/src/graphql/link.ts rename to templates/ecommerce/src/app/_graphql/link.ts diff --git a/templates/ecommerce/src/app/_graphql/me.ts b/templates/ecommerce/src/app/_graphql/me.ts new file mode 100644 index 0000000000..8154ae2331 --- /dev/null +++ b/templates/ecommerce/src/app/_graphql/me.ts @@ -0,0 +1,14 @@ +import { CART } from './cart' + +export const ME_QUERY = `query { + meUser { + user { + id + email + name + ${CART} + roles + } + exp + } +}` diff --git a/templates/ecommerce/src/graphql/media.ts b/templates/ecommerce/src/app/_graphql/media.ts similarity index 100% rename from templates/ecommerce/src/graphql/media.ts rename to templates/ecommerce/src/app/_graphql/media.ts diff --git a/templates/ecommerce/src/graphql/meta.ts b/templates/ecommerce/src/app/_graphql/meta.ts similarity index 100% rename from templates/ecommerce/src/graphql/meta.ts rename to templates/ecommerce/src/app/_graphql/meta.ts diff --git a/templates/ecommerce/src/app/_graphql/orders.ts b/templates/ecommerce/src/app/_graphql/orders.ts new file mode 100644 index 0000000000..da57fb5d51 --- /dev/null +++ b/templates/ecommerce/src/app/_graphql/orders.ts @@ -0,0 +1,27 @@ +import { PRODUCT } from './products' + +export const ORDERS = ` + query Orders { + Orders(limit: 300) { + docs { + id + } + } + } +` + +export const ORDER = ` + query Order($id: String ) { + Orders(where: { id: { equals: $id}}) { + docs { + id + orderedBy + items { + product ${PRODUCT} + title + priceJSON + } + } + } + } +` diff --git a/templates/ecommerce/src/graphql/pages.ts b/templates/ecommerce/src/app/_graphql/pages.ts similarity index 73% rename from templates/ecommerce/src/graphql/pages.ts rename to templates/ecommerce/src/app/_graphql/pages.ts index a9d20b3c14..933bb858b1 100644 --- a/templates/ecommerce/src/graphql/pages.ts +++ b/templates/ecommerce/src/app/_graphql/pages.ts @@ -1,14 +1,11 @@ -import { gql } from '@apollo/client' - import { ARCHIVE_BLOCK, CALL_TO_ACTION, CONTENT, MEDIA_BLOCK } from './blocks' -import { FOOTER, HEADER, SETTINGS } from './globals' import { LINK_FIELDS } from './link' import { MEDIA } from './media' import { META } from './meta' -export const PAGES = gql` +export const PAGES = ` query Pages { - Pages(limit: 300, where: { slug: { not_equals: "cart" } }) { + Pages(limit: 300, where: { slug: { not_equals: "cart" } }) { docs { slug } @@ -16,7 +13,7 @@ export const PAGES = gql` } ` -export const PAGE = gql` +export const PAGE = ` query Page($slug: String ) { Pages(where: { AND: [{ slug: { equals: $slug }}] }) { docs { @@ -40,8 +37,5 @@ export const PAGE = gql` ${META} } } - ${HEADER} - ${FOOTER} - ${SETTINGS} } ` diff --git a/templates/ecommerce/src/graphql/products.ts b/templates/ecommerce/src/app/_graphql/products.ts similarity index 73% rename from templates/ecommerce/src/graphql/products.ts rename to templates/ecommerce/src/app/_graphql/products.ts index 58e52d528c..2e032209d7 100644 --- a/templates/ecommerce/src/graphql/products.ts +++ b/templates/ecommerce/src/app/_graphql/products.ts @@ -1,11 +1,8 @@ -import { gql } from '@apollo/client' - import { ARCHIVE_BLOCK, CALL_TO_ACTION, CONTENT, MEDIA_BLOCK } from './blocks' import { CATEGORIES } from './categories' -import { FOOTER, HEADER, SETTINGS } from './globals' import { META } from './meta' -export const PRODUCTS = gql` +export const PRODUCTS = ` query Products { Products(limit: 300) { docs { @@ -15,12 +12,13 @@ export const PRODUCTS = gql` } ` -export const PRODUCT = gql` +export const PRODUCT = ` query Product($slug: String ) { Products(where: { slug: { equals: $slug}}) { docs { id title + stripeProductID ${CATEGORIES} layout { ${CALL_TO_ACTION} @@ -28,18 +26,25 @@ export const PRODUCT = gql` ${MEDIA_BLOCK} ${ARCHIVE_BLOCK} } + priceJSON + ${META} + enablePaywall + } + } + } +` + +export const PRODUCT_PAYWALL = ` + query Product($slug: String ) { + Products(where: { slug: { equals: $slug}}) { + docs { paywall { ${CALL_TO_ACTION} ${CONTENT} ${MEDIA_BLOCK} ${ARCHIVE_BLOCK} } - priceJSON - ${META} } } - ${HEADER} - ${FOOTER} - ${SETTINGS} } ` diff --git a/templates/ecommerce/src/components/Hero/HighImpact/index.module.scss b/templates/ecommerce/src/app/_heros/HighImpact/index.module.scss similarity index 80% rename from templates/ecommerce/src/components/Hero/HighImpact/index.module.scss rename to templates/ecommerce/src/app/_heros/HighImpact/index.module.scss index d5b17d5c5e..855b40cbba 100644 --- a/templates/ecommerce/src/components/Hero/HighImpact/index.module.scss +++ b/templates/ecommerce/src/app/_heros/HighImpact/index.module.scss @@ -1,7 +1,7 @@ -@import '../../../css/queries'; +@import '../../_css/queries.scss'; .hero { - padding-top: calc(var(--gutter-h) / 2); + padding-top: calc(var(--base) * 2); position: relative; overflow: hidden; @@ -13,7 +13,7 @@ .media { width: calc(100% + var(--gutter-h)); left: calc(var(--gutter-h) / -2); - margin-top: calc(var(--base) * 2); + margin-top: calc(var(--base) * 3); position: relative; @include mid-break { @@ -40,7 +40,9 @@ .caption { margin-top: var(--base); + color: var(--theme-elevation-500); left: calc(var(--gutter-h) / 2); + width: calc(100% - var(--gutter-h)); position: relative; @include mid-break { diff --git a/templates/ecommerce/src/app/_heros/HighImpact/index.tsx b/templates/ecommerce/src/app/_heros/HighImpact/index.tsx new file mode 100644 index 0000000000..95ead943ba --- /dev/null +++ b/templates/ecommerce/src/app/_heros/HighImpact/index.tsx @@ -0,0 +1,43 @@ +import React, { Fragment } from 'react' + +import { Page } from '../../../payload/payload-types' +import { Gutter } from '../../_components/Gutter' +import { CMSLink } from '../../_components/Link' +import { Media } from '../../_components/Media' +import RichText from '../../_components/RichText' + +import classes from './index.module.scss' + +export const HighImpactHero: React.FC = ({ richText, media, links }) => { + return ( + +
    + + {Array.isArray(links) && links.length > 0 && ( +
      + {links.map(({ link }, i) => { + return ( +
    • + +
    • + ) + })} +
    + )} +
    +
    + {typeof media === 'object' && ( + + + {media?.caption && } + + )} +
    +
    + ) +} diff --git a/templates/ecommerce/src/app/_heros/LowImpact/index.module.scss b/templates/ecommerce/src/app/_heros/LowImpact/index.module.scss new file mode 100644 index 0000000000..6b6fbea13d --- /dev/null +++ b/templates/ecommerce/src/app/_heros/LowImpact/index.module.scss @@ -0,0 +1,4 @@ +@use '../../_css/type.scss' as *; + +.lowImpactHero { +} diff --git a/templates/ecommerce/src/app/_heros/LowImpact/index.tsx b/templates/ecommerce/src/app/_heros/LowImpact/index.tsx new file mode 100644 index 0000000000..749e0e587d --- /dev/null +++ b/templates/ecommerce/src/app/_heros/LowImpact/index.tsx @@ -0,0 +1,20 @@ +import React from 'react' + +import { Page } from '../../../payload/payload-types' +import { Gutter } from '../../_components/Gutter' +import RichText from '../../_components/RichText' +import { VerticalPadding } from '../../_components/VerticalPadding' + +import classes from './index.module.scss' + +export const LowImpactHero: React.FC = ({ richText }) => { + return ( + +
    + + + +
    +
    + ) +} diff --git a/templates/ecommerce/src/components/Hero/MediumImpact/index.module.scss b/templates/ecommerce/src/app/_heros/MediumImpact/index.module.scss similarity index 87% rename from templates/ecommerce/src/components/Hero/MediumImpact/index.module.scss rename to templates/ecommerce/src/app/_heros/MediumImpact/index.module.scss index 5dd8811f9d..a0b58fef56 100644 --- a/templates/ecommerce/src/components/Hero/MediumImpact/index.module.scss +++ b/templates/ecommerce/src/app/_heros/MediumImpact/index.module.scss @@ -1,4 +1,4 @@ -@use '../../../css/common.scss' as *; +@use '../../_css/common.scss' as *; .hero { padding-top: calc(var(--base) * 3); @@ -18,7 +18,7 @@ width: 100vw; left: calc(var(--gutter-h) * -1); height: 200px; - background: linear-gradient(to bottom, var(--color-base-100), transparent); + background: linear-gradient(to bottom, var(--theme-elevation-100), transparent); top: calc(100% + (var(--base) * 2)); right: 0; diff --git a/templates/ecommerce/src/app/_heros/MediumImpact/index.tsx b/templates/ecommerce/src/app/_heros/MediumImpact/index.tsx new file mode 100644 index 0000000000..95f821d4f0 --- /dev/null +++ b/templates/ecommerce/src/app/_heros/MediumImpact/index.tsx @@ -0,0 +1,35 @@ +import React from 'react' + +import { Page } from '../../../payload/payload-types' +import { Gutter } from '../../_components/Gutter' +import { CMSLink } from '../../_components/Link' +import { Media } from '../../_components/Media' +import RichText from '../../_components/RichText' + +import classes from './index.module.scss' + +export const MediumImpactHero: React.FC = props => { + const { richText, media, links } = props + + return ( + +
    + + {Array.isArray(links) && ( +
      + {links.map(({ link }, i) => { + return ( +
    • + +
    • + ) + })} +
    + )} +
    +
    + {typeof media === 'object' && } +
    +
    + ) +} diff --git a/templates/ecommerce/src/components/Hero/Product/index.module.scss b/templates/ecommerce/src/app/_heros/Product/index.module.scss similarity index 57% rename from templates/ecommerce/src/components/Hero/Product/index.module.scss rename to templates/ecommerce/src/app/_heros/Product/index.module.scss index b8a41060de..bac267604c 100644 --- a/templates/ecommerce/src/components/Hero/Product/index.module.scss +++ b/templates/ecommerce/src/app/_heros/Product/index.module.scss @@ -1,43 +1,69 @@ -@use '../../../css/common.scss' as *; +@use '../../_css/common.scss' as *; -.contentWrapper { +.productHero { display: flex; + gap: calc(var(--base) * 2); + + @include mid-break { + flex-direction: column; + gap: var(--base); + } } .content { - height: 100%; + width: 50%; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; + gap: var(--base); @include mid-break { - margin-bottom: var(--base); + width: 100%; + gap: calc(var(--base) / 2); } } .categories { - margin-bottom: calc(var(--base) / 2); + @extend %label; } .title { margin: 0; - margin-bottom: var(--base); +} + +.warning { + margin: 0; + color: var(--theme-warning-500); + margin-top: calc(var(--base) / 2); @include mid-break { - margin-bottom: calc(var(--base) / 2); + margin-top: 0; + } +} + +:global([data-theme="light"]) { + .warning { + color: var(--theme-error-500); } } .description { margin: 0; - margin-bottom: var(--base); @include mid-break { margin-bottom: calc(var(--base) / 2); } } +.media { + width: 50%; + + @include mid-break { + width: 100%; + } +} + .mediaWrapper { text-decoration: none; display: block; @@ -57,7 +83,7 @@ } .placeholder { - background-color: var(--color-base-50); + background-color: var(--theme-elevation-50); width: 100%; height: 100%; display: flex; @@ -65,6 +91,10 @@ justify-content: center; } +.caption { + color: var(--theme-elevation-500); +} + .addToCartButton { margin-top: var(--base); } diff --git a/templates/ecommerce/src/app/_heros/Product/index.tsx b/templates/ecommerce/src/app/_heros/Product/index.tsx new file mode 100644 index 0000000000..c9e87e1037 --- /dev/null +++ b/templates/ecommerce/src/app/_heros/Product/index.tsx @@ -0,0 +1,79 @@ +import React, { Fragment } from 'react' +import Link from 'next/link' + +import { Product } from '../../../payload/payload-types' +import { AddToCartButton } from '../../_components/AddToCartButton' +import { Gutter } from '../../_components/Gutter' +import { Media } from '../../_components/Media' +import { Message } from '../../_components/Message' +import { Price } from '../../_components/Price' +import RichText from '../../_components/RichText' + +import classes from './index.module.scss' + +export const ProductHero: React.FC<{ + product: Product +}> = ({ product }) => { + const { + id, + stripeProductID, + title, + categories, + meta: { image: metaImage, description } = {}, + } = product + + return ( + +
    +
    + {categories?.map((category, index) => { + const { title: categoryTitle } = category + + const titleToUse = categoryTitle || 'Untitled category' + + const isLast = index === categories.length - 1 + + return ( + + {titleToUse} + {!isLast && ,  } + + ) + })} +
    +

    {title}

    +
    +

    + {`${description ? `${description} ` : ''}To edit this product, `} + + navigate to the admin dashboard + + {'.'} +

    + {!stripeProductID && ( +

    + {'This product is not yet connected to Stripe. To link this product, '} + + navigate to the admin dashboard + + {'.'} +

    + )} +
    + + +
    +
    +
    + {!metaImage &&
    No image
    } + {metaImage && typeof metaImage !== 'string' && ( + + )} +
    + {metaImage && typeof metaImage !== 'string' && metaImage?.caption && ( + + )} +
    +
    + ) +} diff --git a/templates/ecommerce/src/providers/Auth/index.tsx b/templates/ecommerce/src/app/_providers/Auth/index.tsx similarity index 71% rename from templates/ecommerce/src/providers/Auth/index.tsx rename to templates/ecommerce/src/app/_providers/Auth/index.tsx index 2c06e8aa44..03a47ccb6f 100644 --- a/templates/ecommerce/src/providers/Auth/index.tsx +++ b/templates/ecommerce/src/app/_providers/Auth/index.tsx @@ -1,7 +1,8 @@ +'use client' + import React, { createContext, useCallback, useContext, useEffect, useState } from 'react' -import { CART } from '../../graphql/cart' -import { User } from '../../payload-types' +import { User } from '../../../payload/payload-types' // eslint-disable-next-line no-unused-vars type ResetPassword = (args: { @@ -37,24 +38,18 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children // used to track the single event of logging in or logging out // useful for `useEffect` hooks that should only run once const [status, setStatus] = useState() - const create = useCallback(async args => { try { - const res = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/graphql`, { + const res = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/users/create`, { method: 'POST', credentials: 'include', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ - query: `mutation { - createUser(email: "${args.email}", password: "${args.password}", confirmPassword: "${args.passwordConfirm}") { ) { - user { - email - } - exp - } - }`, + email: args.email, + password: args.password, + passwordConfirm: args.passwordConfirm, }), }) @@ -73,34 +68,24 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children const login = useCallback(async args => { try { - const res = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/graphql`, { + const res = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/users/login`, { method: 'POST', credentials: 'include', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ - query: `mutation { - loginUser(email: "${args.email}", password: "${args.password}") { - user { - id - email - name - ${CART} - roles - } - exp - } - }`, + email: args.email, + password: args.password, }), }) if (res.ok) { - const { data, errors } = await res.json() + const { user, errors } = await res.json() if (errors) throw new Error(errors[0].message) - setUser(data?.loginUser?.user) + setUser(user) setStatus('loggedIn') - return data?.loginUser?.user + return user } throw new Error('Invalid login') @@ -111,17 +96,12 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children const logout = useCallback(async () => { try { - const res = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/graphql`, { + const res = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/users/logout`, { method: 'POST', credentials: 'include', headers: { 'Content-Type': 'application/json', }, - body: JSON.stringify({ - query: `mutation { - logoutUser - }`, - }), }) if (res.ok) { @@ -138,32 +118,18 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children useEffect(() => { const fetchMe = async () => { try { - const res = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/graphql`, { - method: 'POST', + const res = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/users/me`, { + method: 'GET', credentials: 'include', headers: { 'Content-Type': 'application/json', }, - body: JSON.stringify({ - query: `query { - meUser { - user { - id - email - name - ${CART} - roles - } - exp - } - }`, - }), }) if (res.ok) { - const { data } = await res.json() - setUser(data?.meUser?.user || null) - setStatus(data?.meUser?.user ? 'loggedIn' : undefined) + const { user: meUser } = await res.json() + setUser(meUser || null) + setStatus(meUser ? 'loggedIn' : undefined) } else { throw new Error('An error occurred while fetching your account.') } @@ -178,21 +144,14 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children const forgotPassword = useCallback(async args => { try { - const res = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/graphql`, { + const res = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/users/forgot-password`, { method: 'POST', credentials: 'include', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ - query: `mutation { - forgotPasswordUser(email: "${args.email}") { - user { - email - } - exp - } - }`, + email: args.email, }), }) @@ -210,25 +169,16 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({ children const resetPassword = useCallback(async args => { try { - const res = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/graphql`, { + const res = await fetch(`${process.env.NEXT_PUBLIC_SERVER_URL}/api/users/reset-password`, { method: 'POST', credentials: 'include', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ - query: `mutation { - resetPasswordUser(password: "${args.password}", passwordConfirm: "${args.passwordConfirm}", token: "${args.token}") { - user { - id - email - name - ${CART} - roles - } - exp - } - }`, + password: args.password, + passwordConfirm: args.passwordConfirm, + token: args.token, }), }) diff --git a/templates/ecommerce/src/providers/Cart/index.tsx b/templates/ecommerce/src/app/_providers/Cart/index.tsx similarity index 70% rename from templates/ecommerce/src/providers/Cart/index.tsx rename to templates/ecommerce/src/app/_providers/Cart/index.tsx index c0f9ddc028..867671e8c3 100644 --- a/templates/ecommerce/src/providers/Cart/index.tsx +++ b/templates/ecommerce/src/app/_providers/Cart/index.tsx @@ -1,3 +1,5 @@ +'use client' + import React, { createContext, useCallback, @@ -8,10 +10,9 @@ import React, { useState, } from 'react' -import { Product, User } from '../../payload-types' +import { Product, User } from '../../../payload/payload-types' import { useAuth } from '../Auth' import { CartItem, cartReducer } from './reducer' -// import { useNotifications } from '../Notifications'; export type CartContext = { cart: User['cart'] @@ -24,6 +25,7 @@ export type CartContext = { formatted: string raw: number } + hasInitializedCart: boolean } const Context = createContext({} as CartContext) @@ -56,42 +58,50 @@ export const CartProvider = props => { raw: 0, }) - const [cartIsEmpty, setCartIsEmpty] = useState() const hasInitialized = useRef(false) + const [hasInitializedCart, setHasInitialized] = useState(false) // Check local storage for a cart // If there is a cart, fetch the products and hydrate the cart useEffect(() => { if (!hasInitialized.current) { hasInitialized.current = true + const syncCartFromLocalStorage = async () => { const localCart = localStorage.getItem('cart') - if (localCart) { - const parsedCart = JSON.parse(localCart) - if (parsedCart.items && parsedCart.items.length > 0) { - const initialCart = await Promise.all( - parsedCart.items.map(async ({ product, quantity }) => { - const res = await fetch( - `${process.env.NEXT_PUBLIC_SERVER_URL}/api/products/${product}`, - ) - const data = await res.json() - return { - product: data, - quantity, - } - }), - ) + const parsedCart = JSON.parse(localCart || '{}') - dispatchCart({ - type: 'SET_CART', - payload: { - items: initialCart, - }, - }) - } + if (parsedCart?.items && parsedCart?.items?.length > 0) { + const initialCart = await Promise.all( + parsedCart.items.map(async ({ product, quantity }) => { + const res = await fetch( + `${process.env.NEXT_PUBLIC_SERVER_URL}/api/products/${product}`, + ) + const data = await res.json() + return { + product: data, + quantity, + } + }), + ) + + dispatchCart({ + type: 'SET_CART', + payload: { + items: initialCart, + }, + }) + } else { + dispatchCart({ + type: 'SET_CART', + payload: { + items: [], + }, + }) } } + syncCartFromLocalStorage() } }, []) @@ -105,7 +115,7 @@ export const CartProvider = props => { // merge the user's cart with the local state upon logging in dispatchCart({ type: 'MERGE_CART', - payload: user.cart, + payload: user?.cart, }) } @@ -123,13 +133,24 @@ export const CartProvider = props => { // wait until we have attempted authentication (the user is either an object or `null`) if (!hasInitialized.current || user === undefined) return + // ensure that cart items are fully populated, filter out any items that are not + // this will prevent discontinued products from appearing in the cart const flattenedCart = { ...cart, - items: cart.items?.map(item => ({ - ...item, - // flatten relationship to product - product: typeof item.product === 'string' ? item.product : item.product.id, - })), + items: cart?.items + ?.map(item => { + if (!item?.product || typeof item?.product !== 'object') { + return null + } + + return { + ...item, + // flatten relationship to product + product: item?.product?.id, + quantity: typeof item?.quantity === 'number' ? item?.quantity : 0, + } + }) + .filter(Boolean) as CartItem[], } if (user) { @@ -159,18 +180,20 @@ export const CartProvider = props => { } else { localStorage.setItem('cart', JSON.stringify(flattenedCart)) } + + setHasInitialized(true) }, [user, cart]) const isProductInCart = useCallback( (incomingProduct: Product): boolean => { let isInCart = false - const { items: itemsInCart } = cart + const { items: itemsInCart } = cart || {} if (Array.isArray(itemsInCart) && itemsInCart.length > 0) { isInCart = Boolean( itemsInCart.find(({ product }) => typeof product === 'string' ? product === incomingProduct.id - : product.id === incomingProduct.id, + : product?.id === incomingProduct.id, ), // eslint-disable-line function-paren-newline ) } @@ -203,17 +226,17 @@ export const CartProvider = props => { // calculate the new cart total whenever the cart changes useEffect(() => { if (!hasInitialized) return - const isEmpty = !arrayHasItems(cart.items) - setCartIsEmpty(isEmpty) - const newTotal = cart.items.reduce((acc, item) => { - return ( - acc + - (typeof item.product === 'object' - ? JSON.parse(item.product.priceJSON)?.data?.[0]?.unit_amount * item.quantity - : 0) - ) - }, 0) + const newTotal = + cart?.items?.reduce((acc, item) => { + return ( + acc + + (typeof item.product === 'object' + ? JSON.parse(item?.product?.priceJSON || '{}')?.data?.[0]?.unit_amount * + (typeof item?.quantity === 'number' ? item?.quantity : 0) + : 0) + ) + }, 0) || 0 setTotal({ formatted: (newTotal / 100).toLocaleString('en-US', { @@ -230,10 +253,11 @@ export const CartProvider = props => { cart, addItemToCart, deleteItemFromCart, - cartIsEmpty, + cartIsEmpty: hasInitializedCart && !arrayHasItems(cart?.items), clearCart, isProductInCart, cartTotal: total, + hasInitializedCart, }} > {children && children} diff --git a/templates/ecommerce/src/providers/Cart/reducer.ts b/templates/ecommerce/src/app/_providers/Cart/reducer.ts similarity index 76% rename from templates/ecommerce/src/providers/Cart/reducer.ts rename to templates/ecommerce/src/app/_providers/Cart/reducer.ts index 1b94f90ea3..347597804a 100644 --- a/templates/ecommerce/src/providers/Cart/reducer.ts +++ b/templates/ecommerce/src/app/_providers/Cart/reducer.ts @@ -1,9 +1,9 @@ -import type { Product, User } from '../../payload-types' +import type { CartItems, Product, User } from '../../../payload/payload-types' + +export type CartItem = CartItems[0] type CartType = User['cart'] -export type CartItem = User['cart']['items'][0] - type CartAction = | { type: 'SET_CART' @@ -37,12 +37,12 @@ export const cartReducer = (cart: CartType, action: CartAction): CartType => { const syncedItems: CartItem[] = [ ...(cart?.items || []), ...(incomingCart?.items || []), - ].reduce((acc, item) => { + ].reduce((acc: CartItem[], item) => { // remove duplicates - const productId = typeof item.product === 'string' ? item.product : item.product.id + const productId = typeof item.product === 'string' ? item.product : item?.product?.id const indexInAcc = acc.findIndex(({ product }) => - typeof product === 'string' ? product === productId : product.id === productId, + typeof product === 'string' ? product === productId : product?.id === productId, ) // eslint-disable-line function-paren-newline if (indexInAcc > -1) { @@ -67,10 +67,10 @@ export const cartReducer = (cart: CartType, action: CartAction): CartType => { // if the item is already in the cart, increase the quantity const { payload: incomingItem } = action const productId = - typeof incomingItem.product === 'string' ? incomingItem.product : incomingItem.product.id + typeof incomingItem.product === 'string' ? incomingItem.product : incomingItem?.product?.id - const indexInCart = cart.items.findIndex(({ product }) => - typeof product === 'string' ? product === productId : product.id === productId, + const indexInCart = cart?.items?.findIndex(({ product }) => + typeof product === 'string' ? product === productId : product?.id === productId, ) // eslint-disable-line function-paren-newline let withAddedItem = [...(cart?.items || [])] @@ -79,10 +79,10 @@ export const cartReducer = (cart: CartType, action: CartAction): CartType => { withAddedItem.push(incomingItem) } - if (indexInCart > -1) { + if (typeof indexInCart === 'number' && indexInCart > -1) { withAddedItem[indexInCart] = { ...withAddedItem[indexInCart], - quantity: incomingItem.quantity > 0 ? incomingItem.quantity : 1, + quantity: (incomingItem.quantity || 0) > 0 ? incomingItem.quantity : undefined, } } @@ -96,13 +96,14 @@ export const cartReducer = (cart: CartType, action: CartAction): CartType => { const { payload: incomingProduct } = action const withDeletedItem = { ...cart } - const indexInCart = cart.items.findIndex(({ product }) => + const indexInCart = cart?.items?.findIndex(({ product }) => typeof product === 'string' ? product === incomingProduct.id - : product.id === incomingProduct.id, + : product?.id === incomingProduct.id, ) // eslint-disable-line function-paren-newline - if (indexInCart > -1) withDeletedItem.items.splice(indexInCart, 1) + if (typeof indexInCart === 'number' && withDeletedItem.items && indexInCart > -1) + withDeletedItem.items.splice(indexInCart, 1) return withDeletedItem } diff --git a/templates/ecommerce/src/app/_providers/Theme/InitTheme/index.tsx b/templates/ecommerce/src/app/_providers/Theme/InitTheme/index.tsx new file mode 100644 index 0000000000..12ab2541e3 --- /dev/null +++ b/templates/ecommerce/src/app/_providers/Theme/InitTheme/index.tsx @@ -0,0 +1,49 @@ +import Script from 'next/script' + +import { defaultTheme, themeLocalStorageKey } from '../ThemeSelector/types' + +export const InitTheme: React.FC = () => { + return ( + // eslint-disable-next-line @next/next/no-before-interactive-script-outside-document +