diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 5272dbeaf2d0..000000000000 --- a/.eslintignore +++ /dev/null @@ -1,15 +0,0 @@ -node_modules -docker -bundle.js -website/blog -website/build -website/core -website/docs -website/node_modules -website/i18n/*.js -website/pages -website/translated_docs -website -setupJest.js -frontend -dist diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 1f17b1e55315..000000000000 --- a/.eslintrc +++ /dev/null @@ -1,59 +0,0 @@ -{ - "env": { - "node": true, - "jest": true - }, - "extends": ["airbnb-typescript/base", "plugin:prettier/recommended"], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 2019, - "project": "./tsconfig.json" - }, - "plugins": ["@typescript-eslint", "prettier", "import", "no-only-tests", "regexp"], - "root": true, - "rules": { - "@typescript-eslint/no-var-requires": 0, - "@typescript-eslint/naming-convention": 0, - "@typescript-eslint/space-before-function-paren": 0, - "import/prefer-default-export": 0, - "import/no-unresolved": 0, - "class-methods-use-this": [0], - "prettier/prettier": ["error"], - "func-names": "off", - "strict": [0, "global"], - "no-underscore-dangle": "off", - "no-plusplus": "off", - "no-param-reassign": "error", - "no-return-await": "error", - "max-nested-callbacks": "off", - "no-only-tests/no-only-tests": "error", - "new-cap": [ - "error", - { - "capIsNewExceptions": ["Router", "Mitm"] - } - ], - "regexp/no-super-linear-backtracking": "error", - "regexp/strict": "warn", - "regexp/no-useless-escape": "warn", - "prefer-regex-literals": "warn" - }, - "overrides": [ - { - // enable the rule specifically for TypeScript files - "files": ["*.ts", "*.tsx"], - "rules": { - "@typescript-eslint/explicit-module-boundary-types": ["error"], - "@typescript-eslint/naming-convention": ["error"], - "@typescript-eslint/space-before-function-paren": ["error"] - } - }, - { - "files": ["src/test/e2e/helpers/test-helper.ts"], - "rules": { - "import/no-extraneous-dependencies": "off" - } - } - ], - "ignorePatterns": ["**/docs/api/oas/", "examples/**", "scripts/**"] -} diff --git a/biome.json b/biome.json new file mode 100644 index 000000000000..2cf0a2ba6e48 --- /dev/null +++ b/biome.json @@ -0,0 +1,96 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.2.2/schema.json", + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "performance": { + "noDelete": "off" + }, + "correctness": { + "noUnsafeOptionalChaining": "off" + }, + "complexity": { + "noBannedTypes": "off", + "noUselessConstructor": "off", + "useOptionalChain": "warn", + "noStaticOnlyClass": "off" + }, + "style": { + "noNonNullAssertion": "off", + "noInferrableTypes": "off", + "noUnusedTemplateLiteral": "off", + "useSingleVarDeclarator": "off" + }, + "suspicious": { + "noExplicitAny": "off", + "noExtraNonNullAssertion": "off", + "noRedeclare": "off" + } + }, + "ignore": [ + "node_modules", + "docker", + "bundle.js", + "website/blog", + "website/build", + "website/core", + "website/docs", + "website/i18n/*.js", + "website/pages", + "website/translated_docs", + "website", + "setupJest.js", + "frontend", + "dist", + "src/migrations/*.js", + "src/test/examples/*.json", + "website/**/*.js", + "coverage" + ] + }, + "organizeImports": { + "enabled": false + }, + "formatter": { + "indentStyle": "space", + "ignore": [ + "node_modules", + "docker", + "bundle.js", + "website/blog", + "website/build", + "website/core", + "website/docs", + "website/i18n/*.js", + "website/pages", + "website/translated_docs", + "website", + "setupJest.js", + "frontend", + "dist", + "src/migrations/*.js", + "src/migrations/*.json", + "src/test/examples/*.json", + "website/**/*.js", + "coverage", + ".eslintrc", + ".eslintignore", + "package.json" + ], + "indentSize": 4 + }, + "javascript": { + "formatter": { + "semicolons": "always", + "quoteStyle": "single", + "jsxQuoteStyle": "single", + "indentSize": 4 + } + }, + "json": { + "formatter": { + "indentSize": 2 + } + } +} diff --git a/package.json b/package.json index 0e54a2dd7cf7..a5663d534bfe 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "prestart:dev": "yarn run clean", "start:dev": "TZ=UTC NODE_ENV=development tsc-watch --strictNullChecks false --onSuccess \"node dist/server-dev.js\"", "db-migrate": "db-migrate --migrations-dir ./src/migrations", - "lint": "eslint ./src", + "lint": "biome check src", "local:package": "del-cli --force build && mkdir build && cp -r dist docs CHANGELOG.md LICENSE README.md package.json build", "prebuild:watch": "yarn run clean", "build:watch": "tsc -w --strictNullChecks false", @@ -168,6 +168,7 @@ "@apidevtools/swagger-parser": "10.1.0", "@babel/core": "7.22.17", "@swc/core": "1.3.88", + "@biomejs/biome": "1.2.2", "@swc/jest": "0.2.29", "@types/bcryptjs": "2.4.3", "@types/cors": "2.8.14", @@ -190,20 +191,10 @@ "@types/supertest": "2.0.12", "@types/type-is": "1.6.4", "@types/uuid": "9.0.3", - "@typescript-eslint/eslint-plugin": "5.62.0", - "@typescript-eslint/parser": "5.62.0", "concurrently": "^8.0.1", "copyfiles": "2.4.1", "coveralls": "3.1.1", "del-cli": "5.1.0", - "eslint": "^8.38.0", - "eslint-config-airbnb-base": "15.0.0", - "eslint-config-airbnb-typescript": "17.1.0", - "eslint-config-prettier": "8.10.0", - "eslint-plugin-import": "2.28.1", - "eslint-plugin-no-only-tests": "^3.1.0", - "eslint-plugin-prettier": "4.2.1", - "eslint-plugin-regexp": "^1.14.0", "faker": "5.5.3", "fast-check": "3.13.0", "fetch-mock": "9.11.0", @@ -213,7 +204,6 @@ "lint-staged": "13.2.3", "nock": "13.3.3", "openapi-enforcer": "1.22.3", - "prettier": "2.8.1", "proxyquire": "2.1.3", "source-map-support": "0.5.21", "superagent": "8.1.2", @@ -241,24 +231,10 @@ }, "lint-staged": { "*.{js,ts}": [ - "eslint --fix" + "biome check --apply" ], "*.{json,yaml,md}": [ - "prettier --write" - ] - }, - "prettier": { - "proseWrap": "never", - "singleQuote": true, - "tabWidth": 4, - "trailingComma": "all", - "overrides": [ - { - "files": "*.{json,yaml,yml,md}", - "options": { - "tabWidth": 2 - } - } + "biome format --write" ] } } diff --git a/scripts/npm-tag.js b/scripts/npm-tag.js index a3bf86dd9cab..228cabf95a9e 100644 --- a/scripts/npm-tag.js +++ b/scripts/npm-tag.js @@ -9,10 +9,10 @@ function isPrerelease(version) { return arr && arr.length > 0; } -if(isPrerelease(version)){ - console.log('beta') -}else if(semver.gt(version, latestUnleashVersion)) { +if (isPrerelease(version)) { + console.log('beta'); +} else if (semver.gt(version, latestUnleashVersion)) { console.log('latest'); } else { console.log('previous'); -} \ No newline at end of file +} diff --git a/src/lib/addons/datadog.test.ts b/src/lib/addons/datadog.test.ts index cc08f2e7e0e8..db27944b1c30 100644 --- a/src/lib/addons/datadog.test.ts +++ b/src/lib/addons/datadog.test.ts @@ -134,7 +134,7 @@ test('Should call datadog webhook for archived toggle with project info', async expect(fetchRetryCalls[0].options.body).toMatchSnapshot(); }); -test(`Should call datadog webhook for toggled environment`, async () => { +test('Should call datadog webhook for toggled environment', async () => { const addon = new DatadogAddon({ getLogger: noLogger, unleashUrl: 'http://some-url.com', @@ -169,7 +169,7 @@ test(`Should call datadog webhook for toggled environment`, async () => { expect(fetchRetryCalls[0].options.body).toMatchSnapshot(); }); -test(`Should include customHeaders in headers when calling service`, async () => { +test('Should include customHeaders in headers when calling service', async () => { const addon = new DatadogAddon({ getLogger: noLogger, unleashUrl: 'http://some-url.com', @@ -205,7 +205,7 @@ test(`Should include customHeaders in headers when calling service`, async () => expect(fetchRetryCalls[0].options.headers).toMatchSnapshot(); }); -test(`Should not include source_type_name when included in the config`, async () => { +test('Should not include source_type_name when included in the config', async () => { const addon = new DatadogAddon({ getLogger: noLogger, unleashUrl: 'http://some-url.com', diff --git a/src/lib/addons/datadog.ts b/src/lib/addons/datadog.ts index cc044ce77163..ca931c84e4a8 100644 --- a/src/lib/addons/datadog.ts +++ b/src/lib/addons/datadog.ts @@ -72,8 +72,7 @@ export default class DatadogAddon extends Addon { } const { tags: eventTags } = event; - const tags = - eventTags && eventTags.map((tag) => `${tag.type}:${tag.value}`); + const tags = eventTags?.map((tag) => `${tag.type}:${tag.value}`); const body: DDRequestBody = { text: text, title: 'Unleash notification update', diff --git a/src/lib/addons/feature-event-formatter-md.test.ts b/src/lib/addons/feature-event-formatter-md.test.ts index 93866e44f94e..91e83035b3f4 100644 --- a/src/lib/addons/feature-event-formatter-md.test.ts +++ b/src/lib/addons/feature-event-formatter-md.test.ts @@ -315,8 +315,7 @@ const testCases: [string, IEvent, string][] = [ ].map( ([operator, display]) => <[string, IEvent, string]>[ - 'when default strategy updated with numeric constraint ' + - operator, + `when default strategy updated with numeric constraint ${operator}`, { id: 39, type: FEATURE_STRATEGY_UPDATE, @@ -504,7 +503,7 @@ const testCases: [string, IEvent, string][] = [ ]; testCases.forEach(([description, event, expected]) => - test('Should format specialised text for events ' + description, () => { + test(`Should format specialised text for events ${description}`, () => { const formatter = new FeatureEventFormatterMd('unleashUrl'); const actual = formatter.format(event); expect(actual).toBe(expected); diff --git a/src/lib/addons/feature-event-formatter-md.ts b/src/lib/addons/feature-event-formatter-md.ts index 95a339ff7f87..1f32c7e7f64b 100644 --- a/src/lib/addons/feature-event-formatter-md.ts +++ b/src/lib/addons/feature-event-formatter-md.ts @@ -22,10 +22,9 @@ export interface FeatureEventFormatter { format: (event: IEvent) => string; featureLink: (event: IEvent) => string; } - export enum LinkStyle { - SLACK, - MD, + SLACK = 0, + MD = 1, } export class FeatureEventFormatterMd implements FeatureEventFormatter { @@ -254,10 +253,11 @@ export class FeatureEventFormatterMd implements FeatureEventFormatter { SEMVER_LT: 'is a SemVer less than', }; const formatConstraint = (constraint: IConstraint) => { - const val = constraint.hasOwnProperty('value') + const val = Object.hasOwn(constraint, 'value') ? constraint.value : `(${constraint.values.join(',')})`; - const operator = constraintOperatorDescriptions.hasOwnProperty( + const operator = Object.hasOwn( + constraintOperatorDescriptions, constraint.operator, ) ? constraintOperatorDescriptions[constraint.operator] diff --git a/src/lib/app.ts b/src/lib/app.ts index 580e2b9d00d4..6ae1716e374f 100644 --- a/src/lib/app.ts +++ b/src/lib/app.ts @@ -41,7 +41,7 @@ export default async function getApp( const baseUriPath = config.server.baseUriPath || ''; const publicFolder = config.publicFolder || findPublicFolder(); - let indexHTML = await loadIndexHTML(config, publicFolder); + const indexHTML = await loadIndexHTML(config, publicFolder); app.set('trust proxy', true); app.disable('x-powered-by'); diff --git a/src/lib/create-config.test.ts b/src/lib/create-config.test.ts index 0d8b137595a7..729b9d158d4a 100644 --- a/src/lib/create-config.test.ts +++ b/src/lib/create-config.test.ts @@ -439,19 +439,19 @@ test('Environment variables for frontend CORS origins takes priority over option }); test('baseUriPath defaults to the empty string', async () => { - let config = createConfig({}); + const config = createConfig({}); expect(config.server.baseUriPath).toBe(''); }); test('BASE_URI_PATH defined in env is passed through', async () => { process.env.BASE_URI_PATH = '/demo'; - let config = createConfig({}); + const config = createConfig({}); expect(config.server.baseUriPath).toBe('/demo'); delete process.env.BASE_URI_PATH; }); test('environment variable takes precedence over configured variable', async () => { process.env.BASE_URI_PATH = '/demo'; - let config = createConfig({ + const config = createConfig({ server: { baseUriPath: '/other', }, @@ -463,7 +463,7 @@ test('environment variable takes precedence over configured variable', async () test.each(['demo', '/demo', '/demo/'])( 'Trailing and leading slashes gets normalized for base path %s', async (path) => { - let config = createConfig({ + const config = createConfig({ server: { baseUriPath: path, }, @@ -473,7 +473,7 @@ test.each(['demo', '/demo', '/demo/'])( ); test('Config with enterpriseVersion set and pro environment should set isEnterprise to false', async () => { - let config = createConfig({ + const config = createConfig({ enterpriseVersion: '5.3.0', ui: { environment: 'pro' }, }); @@ -481,7 +481,7 @@ test('Config with enterpriseVersion set and pro environment should set isEnterpr }); test('Config with enterpriseVersion set and not pro environment should set isEnterprise to true', async () => { - let config = createConfig({ + const config = createConfig({ enterpriseVersion: '5.3.0', ui: { environment: 'Enterprise' }, }); diff --git a/src/lib/create-config.ts b/src/lib/create-config.ts index 80ee6cfcdefe..65640ab14e50 100644 --- a/src/lib/create-config.ts +++ b/src/lib/create-config.ts @@ -78,7 +78,7 @@ const defaultClientCachingOptions: IClientCachingOption = { function loadClientCachingOptions( options: IUnleashOptions, ): IClientCachingOption { - let envs: Partial = {}; + const envs: Partial = {}; if (process.env.CLIENT_FEATURE_CACHING_MAXAGE) { envs.maxAge = parseEnvVarNumber( process.env.CLIENT_FEATURE_CACHING_MAXAGE, diff --git a/src/lib/db/access-store.ts b/src/lib/db/access-store.ts index c1ef8c7987e5..e2c85634818d 100644 --- a/src/lib/db/access-store.ts +++ b/src/lib/db/access-store.ts @@ -848,8 +848,7 @@ export class AccessStore implements IAccessStore { } async getUserAccessOverview(): Promise { - const result = await this.db - .raw(`SELECT u.id, u.created_at, u.name, u.email, u.seen_at, up.p_array as projects, gr.p_array as groups, gp.p_array as group_projects, r.name as root_role + const result = await this.db.raw(`SELECT u.id, u.created_at, u.name, u.email, u.seen_at, up.p_array as projects, gr.p_array as groups, gp.p_array as group_projects, r.name as root_role FROM users u, LATERAL ( SELECT ARRAY ( SELECT ru.project diff --git a/src/lib/db/client-applications-store.ts b/src/lib/db/client-applications-store.ts index 1ca45fdd23f4..dbce4e66e043 100644 --- a/src/lib/db/client-applications-store.ts +++ b/src/lib/db/client-applications-store.ts @@ -104,9 +104,7 @@ const remapUsageRow = (input) => { }; }; -export default class ClientApplicationsStore - implements IClientApplicationsStore -{ +export default class ClientApplicationsStore implements IClientApplicationsStore { private db: Db; private logger: Logger; diff --git a/src/lib/db/client-metrics-store-v2.ts b/src/lib/db/client-metrics-store-v2.ts index 796c7a79f687..616dbb9281b6 100644 --- a/src/lib/db/client-metrics-store-v2.ts +++ b/src/lib/db/client-metrics-store-v2.ts @@ -158,7 +158,7 @@ export class ClientMetricsStoreV2 implements IClientMetricsStoreV2 { // this function will collapse metrics before sending it to the database. async batchInsertMetrics(metrics: IClientMetricsEnv[]): Promise { - if (!metrics || metrics.length == 0) { + if (!metrics || metrics.length === 0) { return; } const rows = collapseHourlyMetrics(metrics).map(toRow); diff --git a/src/lib/db/event-store.test.ts b/src/lib/db/event-store.test.ts index 2cf7d955fc90..a38263944276 100644 --- a/src/lib/db/event-store.test.ts +++ b/src/lib/db/event-store.test.ts @@ -47,7 +47,7 @@ test('Find unannounced events returns all events', async () => { await db.rawDatabase('events').insert(allEvents).returning(['id']); const store = new EventStore(db.rawDatabase, getLogger); - let events = await store.setUnannouncedToAnnounced(); + const events = await store.setUnannouncedToAnnounced(); expect(events).toBeTruthy(); expect(events.length).toBe(505); await db.destroy(); diff --git a/src/lib/db/event-store.ts b/src/lib/db/event-store.ts index c28d1ad4657b..ae51d52677cb 100644 --- a/src/lib/db/event-store.ts +++ b/src/lib/db/event-store.ts @@ -107,7 +107,7 @@ class EventStore implements IEventStore { } async count(): Promise { - let count = await this.db(TABLE) + const count = await this.db(TABLE) .count>() .first(); if (!count) { @@ -131,7 +131,7 @@ class EventStore implements IEventStore { if (eventSearch.feature) { query = query.andWhere({ feature_name: eventSearch.feature }); } - let count = await query.count().first(); + const count = await query.count().first(); if (!count) { return 0; } diff --git a/src/lib/db/feature-environment-store.ts b/src/lib/db/feature-environment-store.ts index ec114157c827..b8938aec1249 100644 --- a/src/lib/db/feature-environment-store.ts +++ b/src/lib/db/feature-environment-store.ts @@ -389,7 +389,7 @@ export class FeatureEnvironmentStore implements IFeatureEnvironmentStore { environments: string[], variants: IVariant[], ): Promise { - let v = variants || []; + const v = variants || []; v.sort((a, b) => a.name.localeCompare(b.name)); const variantsString = JSON.stringify(v); const records = environments.map((env) => ({ @@ -407,7 +407,7 @@ export class FeatureEnvironmentStore implements IFeatureEnvironmentStore { async addFeatureEnvironment( featureEnvironment: IFeatureEnvironment, ): Promise { - let v = featureEnvironment.variants || []; + const v = featureEnvironment.variants || []; v.sort((a, b) => a.name.localeCompare(b.name)); await this.db(T.featureEnvs) .insert({ @@ -424,11 +424,11 @@ export class FeatureEnvironmentStore implements IFeatureEnvironmentStore { sourceEnvironment: string, destinationEnvironment: string, ): Promise { - let sourceFeatureStrategies = await this.db('feature_strategies').where( - { - environment: sourceEnvironment, - }, - ); + const sourceFeatureStrategies = await this.db( + 'feature_strategies', + ).where({ + environment: sourceEnvironment, + }); const clonedStrategyRows = sourceFeatureStrategies.map( (featureStrategy) => { diff --git a/src/lib/db/feature-strategy-store.ts b/src/lib/db/feature-strategy-store.ts index 297d4bd5d887..892bd9bca9b5 100644 --- a/src/lib/db/feature-strategy-store.ts +++ b/src/lib/db/feature-strategy-store.ts @@ -493,10 +493,10 @@ class FeatureStrategiesStore implements IFeatureStrategiesStore { .whereIn(['tag_type', 'tag_value'], tag); query = query.whereIn('features.name', tagQuery); } - if (namePrefix && namePrefix.trim()) { + if (namePrefix?.trim()) { let namePrefixQuery = namePrefix; if (!namePrefix.endsWith('%')) { - namePrefixQuery = namePrefixQuery + '%'; + namePrefixQuery = `${namePrefixQuery}%`; } query = query.whereILike('features.name', namePrefixQuery); } diff --git a/src/lib/db/feature-toggle-client-store.ts b/src/lib/db/feature-toggle-client-store.ts index 77cfad5a7cdf..13f537f4b848 100644 --- a/src/lib/db/feature-toggle-client-store.ts +++ b/src/lib/db/feature-toggle-client-store.ts @@ -184,7 +184,7 @@ export default class FeatureToggleClientStore stopTimer(); const featureToggles = rows.reduce((acc, r) => { - let feature: PartialDeep = acc[r.name] ?? { + const feature: PartialDeep = acc[r.name] ?? { strategies: [], }; if (this.isUnseenStrategyRow(feature, r) && !r.strategy_disabled) { diff --git a/src/lib/db/feature-toggle-store.ts b/src/lib/db/feature-toggle-store.ts index b8dc6d3af059..fcb988214d88 100644 --- a/src/lib/db/feature-toggle-store.ts +++ b/src/lib/db/feature-toggle-store.ts @@ -122,7 +122,7 @@ export default class FeatureToggleStore implements IFeatureToggleStore { dateAccessor: string; }): Promise { const { project, archived, dateAccessor } = queryModifiers; - let query = this.db + const query = this.db .count() .from(TABLE) .where({ project }) diff --git a/src/lib/db/project-store.ts b/src/lib/db/project-store.ts index f51e5461b849..85d2b7886b5c 100644 --- a/src/lib/db/project-store.ts +++ b/src/lib/db/project-store.ts @@ -361,7 +361,7 @@ class ProjectStore implements IProjectStore { async getProjectLinksForEnvironments( environments: string[], ): Promise { - let rows = await this.db('project_environments') + const rows = await this.db('project_environments') .select(['project_id', 'environment_name']) .whereIn('environment_name', environments); return rows.map(this.mapLinkRow); diff --git a/src/lib/error/bad-data-error.ts b/src/lib/error/bad-data-error.ts index 0f1e73ec2a19..fb52f06fc250 100644 --- a/src/lib/error/bad-data-error.ts +++ b/src/lib/error/bad-data-error.ts @@ -17,11 +17,11 @@ class BadDataError extends UnleashError { message: string, errors?: [ValidationErrorDescription, ...ValidationErrorDescription[]], ) { - const topLevelMessage = - 'Request validation failed: your request body or params contain invalid data' + - (errors + const topLevelMessage = `Request validation failed: your request body or params contain invalid data${ + errors ? '. Refer to the `details` list for more information.' - : `: ${message}`); + : `: ${message}` + }`; super(topLevelMessage); this.details = errors ?? [{ message: message, description: message }]; diff --git a/src/lib/error/from-legacy-error.ts b/src/lib/error/from-legacy-error.ts index d754b019d6da..41e122f22f37 100644 --- a/src/lib/error/from-legacy-error.ts +++ b/src/lib/error/from-legacy-error.ts @@ -23,8 +23,6 @@ const getStatusCode = (errorName: string): number => { return 400; case 'InvalidTokenError': return 401; - case 'NoAccessError': - return 403; case 'UsedTokenError': return 403; case 'InvalidOperationError': diff --git a/src/lib/features/export-import-toggles/import-toggles-store.ts b/src/lib/features/export-import-toggles/import-toggles-store.ts index 59a217a568f3..0b94328793e5 100644 --- a/src/lib/features/export-import-toggles/import-toggles-store.ts +++ b/src/lib/features/export-import-toggles/import-toggles-store.ts @@ -44,10 +44,9 @@ export class ImportTogglesStore implements IImportTogglesStore { environment: string, ): Promise { if (featureNames.length === 0) return true; + const joinedFeatureNames = featureNames.map(() => '?').join(','); const result = await this.db.raw( - 'SELECT EXISTS (SELECT 1 FROM feature_strategies WHERE environment = ? and feature_name in (' + - featureNames.map(() => '?').join(',') + - ')) AS present', + `SELECT EXISTS (SELECT 1 FROM feature_strategies WHERE environment = ? and feature_name in (${joinedFeatureNames})) AS present`, [environment, ...featureNames], ); const { present } = result.rows[0]; diff --git a/src/lib/features/playground/feature-evaluator/helpers.ts b/src/lib/features/playground/feature-evaluator/helpers.ts index a7dc628ba630..4566a2031f18 100644 --- a/src/lib/features/playground/feature-evaluator/helpers.ts +++ b/src/lib/features/playground/feature-evaluator/helpers.ts @@ -30,7 +30,7 @@ export function resolveContextValue( if (context[field]) { return context[field] as string; } - if (context.properties && context.properties[field]) { + if (context.properties?.[field]) { return context.properties[field] as string; } return undefined; diff --git a/src/lib/features/playground/offline-unleash-client.ts b/src/lib/features/playground/offline-unleash-client.ts index 881512331901..316e173410df 100644 --- a/src/lib/features/playground/offline-unleash-client.ts +++ b/src/lib/features/playground/offline-unleash-client.ts @@ -35,14 +35,12 @@ export const mapFeaturesForClient = ( type: variant.payload.type as PayloadType, }, })), - constraints: - strategy.constraints && - strategy.constraints.map((constraint) => ({ - inverted: false, - values: [], - ...constraint, - operator: constraint.operator as unknown as Operator, - })), + constraints: strategy.constraints?.map((constraint) => ({ + inverted: false, + values: [], + ...constraint, + operator: constraint.operator as unknown as Operator, + })), })), })); diff --git a/src/lib/features/private-project/fakePrivateProjectChecker.ts b/src/lib/features/private-project/fakePrivateProjectChecker.ts index f53890847366..b483d2d117e5 100644 --- a/src/lib/features/private-project/fakePrivateProjectChecker.ts +++ b/src/lib/features/private-project/fakePrivateProjectChecker.ts @@ -1,5 +1,4 @@ import { IPrivateProjectChecker } from './privateProjectCheckerType'; -import { Promise } from 'ts-toolbelt/out/Any/Promise'; import { ProjectAccess } from './privateProjectStore'; export class FakePrivateProjectChecker implements IPrivateProjectChecker { diff --git a/src/lib/features/private-project/privateProjectStore.ts b/src/lib/features/private-project/privateProjectStore.ts index 9666cfe9e3dd..d509475660c5 100644 --- a/src/lib/features/private-project/privateProjectStore.ts +++ b/src/lib/features/private-project/privateProjectStore.ts @@ -42,7 +42,7 @@ class PrivateProjectStore implements IPrivateProjectStore { .count('*') .first(); - if (!isViewer || isViewer.count == 0) { + if (!isViewer || isViewer.count === 0) { return ALL_PROJECT_ACCESS; } diff --git a/src/lib/metrics.ts b/src/lib/metrics.ts index fbdc89937abb..ea871c09acad 100644 --- a/src/lib/metrics.ts +++ b/src/lib/metrics.ts @@ -351,7 +351,7 @@ export default class MetricsMonitor { } configureDbMetrics(db: Knex, eventBus: EventEmitter): void { - if (db && db.client) { + if (db?.client) { const dbPoolMin = new client.Gauge({ name: 'db_pool_min', help: 'Minimum DB pool size', diff --git a/src/lib/middleware/authorization-middleware.ts b/src/lib/middleware/authorization-middleware.ts index f7a780f0f43b..1f79253ff3cf 100644 --- a/src/lib/middleware/authorization-middleware.ts +++ b/src/lib/middleware/authorization-middleware.ts @@ -13,7 +13,7 @@ const authorizationMiddleware = ( logger.debug('Enabling Authorization middleware'); return async (req: IAuthRequest, res: Response, next: NextFunction) => { - if (req.session && req.session.user) { + if (req.session?.user) { req.user = req.session.user; return next(); } diff --git a/src/lib/middleware/demo-authentication.ts b/src/lib/middleware/demo-authentication.ts index 2a45b294d603..0542a1838b38 100644 --- a/src/lib/middleware/demo-authentication.ts +++ b/src/lib/middleware/demo-authentication.ts @@ -7,7 +7,7 @@ import { ApiTokenType } from '../types/models/api-token'; function demoAuthentication( app: Application, - basePath: string = '', // eslint-disable-line + basePath: string, // eslint-disable-line { userService }: Pick, { authentication }: Pick, ): void { @@ -30,7 +30,7 @@ function demoAuthentication( app.use(`${basePath}/api/admin/`, (req, res, next) => { // @ts-expect-error - if (req.session.user && req.session.user.email) { + if (req.session.user?.email) { // @ts-expect-error req.user = req.session.user; } diff --git a/src/lib/middleware/no-authentication.ts b/src/lib/middleware/no-authentication.ts index b6eefde151ee..c4fe1e2aa6ec 100644 --- a/src/lib/middleware/no-authentication.ts +++ b/src/lib/middleware/no-authentication.ts @@ -2,8 +2,8 @@ import { Application } from 'express'; import NoAuthUser from '../types/no-auth-user'; // eslint-disable-next-line -function noneAuthentication(basePath = '', app: Application): void { - app.use(`${basePath}/api/admin/`, (req, res, next) => { +function noneAuthentication(basePath: string, app: Application): void { + app.use(`${basePath || ''}/api/admin/`, (req, res, next) => { // @ts-expect-error if (!req.user) { // @ts-expect-error diff --git a/src/lib/middleware/pat-middleware.test.ts b/src/lib/middleware/pat-middleware.test.ts index 4927c67bb064..b23c71b4704f 100644 --- a/src/lib/middleware/pat-middleware.test.ts +++ b/src/lib/middleware/pat-middleware.test.ts @@ -111,7 +111,7 @@ test('should call next if accountService throws exception', async () => { }); test('Should not log at error level if user not found', async () => { - let fakeLogger = { + const fakeLogger = { debug: () => {}, info: () => {}, warn: jest.fn(), @@ -131,7 +131,7 @@ test('Should not log at error level if user not found', async () => { throw new NotFoundError('Could not find pat'); }), }; - let mw = patMiddleware(conf, { accountService }); + const mw = patMiddleware(conf, { accountService }); const cb = jest.fn(); const req = { diff --git a/src/lib/middleware/rbac-middleware.ts b/src/lib/middleware/rbac-middleware.ts index e9b857682f0d..78adb57b38b7 100644 --- a/src/lib/middleware/rbac-middleware.ts +++ b/src/lib/middleware/rbac-middleware.ts @@ -62,7 +62,7 @@ const rbacMiddleware = ( let projectId = findParam('projectId', req) || findParam('project', req); - let environment = + const environment = findParam('environment', req) || findParam('environmentId', req); @@ -80,7 +80,7 @@ const rbacMiddleware = ( projectId === undefined && permissionsArray.some( (permission) => - permission == CREATE_FEATURE || + permission === CREATE_FEATURE || permission.endsWith('FEATURE_STRATEGY'), ) ) { diff --git a/src/lib/openapi/index.test.ts b/src/lib/openapi/index.test.ts index 8350c52bb5b9..a0b77b214a1e 100644 --- a/src/lib/openapi/index.test.ts +++ b/src/lib/openapi/index.test.ts @@ -18,8 +18,9 @@ test('all schema files should be added to the schemas object', () => { }); test('removeJsonSchemaProps', () => { - expect(removeJsonSchemaProps({ a: 'b', $id: 'c', components: {} })) - .toMatchInlineSnapshot(` + expect( + removeJsonSchemaProps({ a: 'b', $id: 'c', components: {} }), + ).toMatchInlineSnapshot(` { "a": "b", } @@ -41,7 +42,7 @@ describe('createOpenApiSchema', () => { createOpenApiSchema({ unleashUrl: 'https://example.com/demo2', baseUriPath: '/demo2', - }).servers![0].url, + }).servers?.[0].url, ).toEqual('https://example.com/demo2'); }); @@ -50,7 +51,7 @@ describe('createOpenApiSchema', () => { createOpenApiSchema({ unleashUrl: 'https://example.com/demo2', baseUriPath: 'example', - }).servers![0].url, + }).servers?.[0].url, ).toEqual('https://example.com/demo2'); }); @@ -59,13 +60,13 @@ describe('createOpenApiSchema', () => { createOpenApiSchema({ unleashUrl: 'https://example.com/example/', baseUriPath: 'example', - }).servers![0].url, + }).servers?.[0].url, ).toEqual('https://example.com'); expect( createOpenApiSchema({ unleashUrl: 'https://example.com/example/', baseUriPath: '/example', - }).servers![0].url, + }).servers?.[0].url, ).toEqual('https://example.com/example'); }); }); diff --git a/src/lib/openapi/util/create-response-schema.ts b/src/lib/openapi/util/create-response-schema.ts index a6d7097ea1a2..5f4ab2ebb897 100644 --- a/src/lib/openapi/util/create-response-schema.ts +++ b/src/lib/openapi/util/create-response-schema.ts @@ -58,7 +58,7 @@ export const resourceCreatedResponseSchema = ( }, }, }, - description: `The resource was successfully created.`, + description: 'The resource was successfully created.', content: { 'application/json': { schema: { diff --git a/src/lib/proxy/proxy-repository.ts b/src/lib/proxy/proxy-repository.ts index 9c2f49995da7..4f832a349ce3 100644 --- a/src/lib/proxy/proxy-repository.ts +++ b/src/lib/proxy/proxy-repository.ts @@ -24,10 +24,7 @@ type Services = Pick< 'featureToggleServiceV2' | 'segmentService' | 'configurationRevisionService' >; -export class ProxyRepository - extends EventEmitter - implements RepositoryInterface -{ +export class ProxyRepository extends EventEmitter implements RepositoryInterface { private readonly config: Config; private readonly logger: Logger; diff --git a/src/lib/routes/admin-api/api-token.ts b/src/lib/routes/admin-api/api-token.ts index 352fe9c79b1c..714c7705c709 100644 --- a/src/lib/routes/admin-api/api-token.ts +++ b/src/lib/routes/admin-api/api-token.ts @@ -51,46 +51,44 @@ interface TokenParam { interface TokenNameParam { name: string; } -export const tokenTypeToCreatePermission: ( - tokenType: ApiTokenType, -) => string = (tokenType) => { - switch (tokenType) { - case ApiTokenType.ADMIN: - return ADMIN; - case ApiTokenType.CLIENT: - return CREATE_CLIENT_API_TOKEN; - case ApiTokenType.FRONTEND: - return CREATE_FRONTEND_API_TOKEN; - } -}; +export const tokenTypeToCreatePermission: (tokenType: ApiTokenType) => string = + (tokenType) => { + switch (tokenType) { + case ApiTokenType.ADMIN: + return ADMIN; + case ApiTokenType.CLIENT: + return CREATE_CLIENT_API_TOKEN; + case ApiTokenType.FRONTEND: + return CREATE_FRONTEND_API_TOKEN; + } + }; -const permissionToTokenType: ( - permission: string, -) => ApiTokenType | undefined = (permission) => { - if ( - [ - CREATE_FRONTEND_API_TOKEN, - READ_FRONTEND_API_TOKEN, - DELETE_FRONTEND_API_TOKEN, - UPDATE_FRONTEND_API_TOKEN, - ].includes(permission) - ) { - return ApiTokenType.FRONTEND; - } else if ( - [ - CREATE_CLIENT_API_TOKEN, - READ_CLIENT_API_TOKEN, - DELETE_CLIENT_API_TOKEN, - UPDATE_CLIENT_API_TOKEN, - ].includes(permission) - ) { - return ApiTokenType.CLIENT; - } else if (ADMIN === permission) { - return ApiTokenType.ADMIN; - } else { - return undefined; - } -}; +const permissionToTokenType: (permission: string) => ApiTokenType | undefined = + (permission) => { + if ( + [ + CREATE_FRONTEND_API_TOKEN, + READ_FRONTEND_API_TOKEN, + DELETE_FRONTEND_API_TOKEN, + UPDATE_FRONTEND_API_TOKEN, + ].includes(permission) + ) { + return ApiTokenType.FRONTEND; + } else if ( + [ + CREATE_CLIENT_API_TOKEN, + READ_CLIENT_API_TOKEN, + DELETE_CLIENT_API_TOKEN, + UPDATE_CLIENT_API_TOKEN, + ].includes(permission) + ) { + return ApiTokenType.CLIENT; + } else if (ADMIN === permission) { + return ApiTokenType.ADMIN; + } else { + return undefined; + } + }; const tokenTypeToUpdatePermission: (tokenType: ApiTokenType) => string = ( tokenType, @@ -386,7 +384,7 @@ export class ApiTokenController extends Controller { const permissionRequired = tokenTypeToDeletePermission( tokenToUpdate.type, ); - let hasPermission = await this.accessService.hasPermission( + const hasPermission = await this.accessService.hasPermission( req.user, permissionRequired, ); diff --git a/src/lib/routes/admin-api/config.ts b/src/lib/routes/admin-api/config.ts index 8dcc3ea6bdf0..040665df0f6f 100644 --- a/src/lib/routes/admin-api/config.ts +++ b/src/lib/routes/admin-api/config.ts @@ -120,7 +120,7 @@ class ConfigController extends Controller { const disablePasswordAuth = simpleAuthSettings?.disabled || - this.config.authentication.type == IAuthType.NONE; + this.config.authentication.type === IAuthType.NONE; const expFlags = this.config.flagResolver.getAll({ email: req.user.email, diff --git a/src/lib/routes/admin-api/project/project-features.ts b/src/lib/routes/admin-api/project/project-features.ts index fc168f03945d..8441f56eddc5 100644 --- a/src/lib/routes/admin-api/project/project-features.ts +++ b/src/lib/routes/admin-api/project/project-features.ts @@ -661,8 +661,8 @@ export default class ProjectFeaturesController extends Controller { featureName, projectId, name, - replaceGroupId, userName, + replaceGroupId, ); this.openApiService.respondWithValidation( diff --git a/src/lib/routes/admin-api/public-signup.test.ts b/src/lib/routes/admin-api/public-signup.test.ts index 84623301809f..011cbb618937 100644 --- a/src/lib/routes/admin-api/public-signup.test.ts +++ b/src/lib/routes/admin-api/public-signup.test.ts @@ -63,7 +63,7 @@ describe('Public Signup API', () => { destroy(); }); const expireAt = (addDays: number = 7): Date => { - let now = new Date(); + const now = new Date(); now.setDate(now.getDate() + addDays); return now; }; diff --git a/src/lib/routes/admin-api/user-admin.ts b/src/lib/routes/admin-api/user-admin.ts index 33f084633f0f..cc9070163430 100644 --- a/src/lib/routes/admin-api/user-admin.ts +++ b/src/lib/routes/admin-api/user-admin.ts @@ -425,7 +425,7 @@ export default class UserAdminController extends Controller { req: Request, res: Response, ): Promise { - let allUsers = await this.accountService.getAll(); + const allUsers = await this.accountService.getAll(); let users = allUsers.map((u) => { return { id: u.id, @@ -439,8 +439,8 @@ export default class UserAdminController extends Controller { users = this.anonymiseUsers(users); } - let allGroups = await this.groupService.getAll(); - let groups = allGroups.map((g) => { + const allGroups = await this.groupService.getAll(); + const groups = allGroups.map((g) => { return { id: g.id, name: g.name, diff --git a/src/lib/routes/controller.ts b/src/lib/routes/controller.ts index db0c8e56df62..092ccee797e4 100644 --- a/src/lib/routes/controller.ts +++ b/src/lib/routes/controller.ts @@ -39,8 +39,7 @@ interface IRouteOptionsNonGet extends IRouteOptionsBase { type IRouteOptions = IRouteOptionsNonGet | IRouteOptionsGet; const checkPermission = - (permission: Permission = []) => - async (req, res, next) => { + (permission: Permission = []) => async (req, res, next) => { const permissions = ( Array.isArray(permission) ? permission : [permission] ).filter((p) => p !== NONE); diff --git a/src/lib/routes/edge-api/index.ts b/src/lib/routes/edge-api/index.ts index 4dafd86c9b47..50870a7e68c1 100644 --- a/src/lib/routes/edge-api/index.ts +++ b/src/lib/routes/edge-api/index.ts @@ -118,7 +118,7 @@ export default class EdgeController extends Controller { const { metrics, applications } = body; try { - let promises: Promise[] = []; + const promises: Promise[] = []; for (const app of applications) { promises.push( this.clientInstanceService.registerClient(app, clientIp), diff --git a/src/lib/routes/logout.test.ts b/src/lib/routes/logout.test.ts index a6c68ed6267c..79b29f95f932 100644 --- a/src/lib/routes/logout.test.ts +++ b/src/lib/routes/logout.test.ts @@ -279,10 +279,10 @@ test('Should destroy sessions for user', async () => { }, expired: addDays(new Date(), 2), }); - let activeSessionsBeforeLogout = await sessionStore.getSessionsForUser(1); + const activeSessionsBeforeLogout = await sessionStore.getSessionsForUser(1); expect(activeSessionsBeforeLogout).toHaveLength(2); app.use('/logout', new LogoutController(config, { sessionService }).router); await supertest(app).post('/logout').expect(302); - let activeSessions = await sessionStore.getSessionsForUser(1); + const activeSessions = await sessionStore.getSessionsForUser(1); expect(activeSessions).toHaveLength(0); }); diff --git a/src/lib/routes/public-invite.test.ts b/src/lib/routes/public-invite.test.ts index e7015194e60b..cff14e7c6fca 100644 --- a/src/lib/routes/public-invite.test.ts +++ b/src/lib/routes/public-invite.test.ts @@ -69,7 +69,7 @@ describe('Public Signup API', () => { destroy(); }); const expireAt = (addDays: number = 7): Date => { - let now = new Date(); + const now = new Date(); now.setDate(now.getDate() + addDays); return now; }; diff --git a/src/lib/schema/api-token-schema.test.ts b/src/lib/schema/api-token-schema.test.ts index 9fed583f7e74..87e7455feb99 100644 --- a/src/lib/schema/api-token-schema.test.ts +++ b/src/lib/schema/api-token-schema.test.ts @@ -18,7 +18,7 @@ test('should reject token with projects and project', async () => { }); test('should not have default project set if projects is present', async () => { - let token = await createApiToken.validateAsync({ + const token = await createApiToken.validateAsync({ username: 'test', type: 'admin', projects: ['default'], @@ -27,7 +27,7 @@ test('should not have default project set if projects is present', async () => { }); test('should have project set to default if projects is missing', async () => { - let token = await createApiToken.validateAsync({ + const token = await createApiToken.validateAsync({ username: 'test', type: 'admin', }); @@ -35,7 +35,7 @@ test('should have project set to default if projects is missing', async () => { }); test('should not have projects set if project is present', async () => { - let token = await createApiToken.validateAsync({ + const token = await createApiToken.validateAsync({ username: 'test', type: 'admin', project: 'default', @@ -44,7 +44,7 @@ test('should not have projects set if project is present', async () => { }); test('should allow for embedded proxy (frontend) key', async () => { - let token = await createApiToken.validateAsync({ + const token = await createApiToken.validateAsync({ username: 'test', type: 'frontend', project: 'default', @@ -53,7 +53,7 @@ test('should allow for embedded proxy (frontend) key', async () => { }); test('should set environment to default for frontend key', async () => { - let token = await createApiToken.validateAsync({ + const token = await createApiToken.validateAsync({ username: 'test', type: 'frontend', project: 'default', diff --git a/src/lib/server-impl.test.ts b/src/lib/server-impl.test.ts index 346b5c68d395..4c5d1415e1c1 100644 --- a/src/lib/server-impl.test.ts +++ b/src/lib/server-impl.test.ts @@ -113,5 +113,5 @@ test('should shutdown the server when calling stop()', async () => { createTestConfig({ server: { port: 0 } }), ); await stop(); - expect(server!.address()).toBe(null); + expect(server?.address()).toBe(null); }); diff --git a/src/lib/services/access-service.ts b/src/lib/services/access-service.ts index 46a32cd59d8f..812aef1b08fc 100644 --- a/src/lib/services/access-service.ts +++ b/src/lib/services/access-service.ts @@ -500,7 +500,7 @@ export class AccessService { const userIdList = userRoleList.map((u) => u.userId); const users = await this.accountStore.getAllWithId(userIdList); return users.map((user) => { - const role = userRoleList.find((r) => r.userId == user.id)!; + const role = userRoleList.find((r) => r.userId === user.id)!; return { ...user, addedAt: role.addedAt!, diff --git a/src/lib/services/addon-service.ts b/src/lib/services/addon-service.ts index fc76fe696b3d..3f32bd96b83e 100644 --- a/src/lib/services/addon-service.ts +++ b/src/lib/services/addon-service.ts @@ -113,7 +113,7 @@ export default class AddonService { (addon) => !event.project || !addon.projects || - addon.projects.length == 0 || + addon.projects.length === 0 || addon.projects[0] === WILDCARD_OPTION || addon.projects.includes(event.project), ) @@ -121,7 +121,7 @@ export default class AddonService { (addon) => !event.environment || !addon.environments || - addon.environments.length == 0 || + addon.environments.length === 0 || addon.environments[0] === WILDCARD_OPTION || addon.environments.includes(event.environment), ) diff --git a/src/lib/services/api-token-service.test.ts b/src/lib/services/api-token-service.test.ts index 1e1f4b395236..0301f04c7cff 100644 --- a/src/lib/services/api-token-service.test.ts +++ b/src/lib/services/api-token-service.test.ts @@ -133,8 +133,8 @@ test('Api token operations should all have events attached', async () => { config, eventService, ); - let saved = await apiTokenService.createApiTokenWithProjects(token); - let newExpiry = addDays(new Date(), 30); + const saved = await apiTokenService.createApiTokenWithProjects(token); + const newExpiry = addDays(new Date(), 30); await apiTokenService.updateExpiry(saved.secret, newExpiry, 'test'); await apiTokenService.delete(saved.secret, 'test'); const { events } = await eventService.getEvents(); diff --git a/src/lib/services/api-token-service.ts b/src/lib/services/api-token-service.ts index 0c454c343336..064f08680eb1 100644 --- a/src/lib/services/api-token-service.ts +++ b/src/lib/services/api-token-service.ts @@ -81,7 +81,7 @@ export class ApiTokenService { try { this.activeTokens = await this.getAllActiveTokens(); } finally { - // eslint-disable-next-line no-unsafe-finally + // biome-ignore lint/correctness/noUnsafeFinally: We ignored this for eslint. Leaving this here for now, server-impl test fails without it return; } } @@ -259,7 +259,7 @@ export class ApiTokenService { if (!errorDetails) { return 'invalid'; } - let invalidProject = projects.find((project) => { + const invalidProject = projects.find((project) => { return errorDetails.includes(`=(${project})`); }); return invalidProject || 'invalid'; diff --git a/src/lib/services/email-service.ts b/src/lib/services/email-service.ts index 25a928f04df3..59793c0d1656 100644 --- a/src/lib/services/email-service.ts +++ b/src/lib/services/email-service.ts @@ -43,7 +43,7 @@ export class EmailService { constructor(email: IEmailOption, getLogger: LogProvider) { this.logger = getLogger('services/email-service.ts'); - if (email && email.host) { + if (email?.host) { this.sender = email.sender; if (email.host === 'test') { this.mailer = createTransport({ jsonTransport: true }); diff --git a/src/lib/services/environment-service.ts b/src/lib/services/environment-service.ts index dc53a127acf7..fcd2814c0b72 100644 --- a/src/lib/services/environment-service.ts +++ b/src/lib/services/environment-service.ts @@ -152,12 +152,9 @@ export default class EnvironmentService { } const environmentsNotAlreadyEnabled = - existingEnvironmentsToEnable.filter((env) => env.enabled == false); + existingEnvironmentsToEnable.filter((env) => !env.enabled); const environmentsToDisable = allEnvironments.filter((env) => { - return ( - !environmentNamesToEnable.includes(env.name) && - env.enabled == true - ); + return !environmentNamesToEnable.includes(env.name) && env.enabled; }); await this.environmentStore.disable(environmentsToDisable); @@ -190,13 +187,13 @@ export default class EnvironmentService { ...new Set(projectLinks.map((link) => link.projectId)), ]; - let linkTasks = uniqueProjects.map((project) => { + const linkTasks = uniqueProjects.flatMap((project) => { return toEnable.map((enabledEnv) => { return this.addEnvironmentToProject(enabledEnv.name, project); }); }); - await Promise.all(linkTasks.flat()); + await Promise.all(linkTasks); } async forceRemoveEnvironmentFromProject( diff --git a/src/lib/services/event-service.ts b/src/lib/services/event-service.ts index 82f641e4d832..35df38206c38 100644 --- a/src/lib/services/event-service.ts +++ b/src/lib/services/event-service.ts @@ -27,8 +27,8 @@ export default class EventService { } async getEvents(): Promise { - let totalEvents = await this.eventStore.count(); - let events = await this.eventStore.getEvents(); + const totalEvents = await this.eventStore.count(); + const events = await this.eventStore.getEvents(); return { events, totalEvents, @@ -36,8 +36,8 @@ export default class EventService { } async searchEvents(search: SearchEventsSchema): Promise { - let totalEvents = await this.eventStore.filteredCount(search); - let events = await this.eventStore.searchEvents(search); + const totalEvents = await this.eventStore.filteredCount(search); + const events = await this.eventStore.searchEvents(search); return { events, totalEvents, diff --git a/src/lib/services/feature-toggle-service.ts b/src/lib/services/feature-toggle-service.ts index 33c9df1483c5..711496826458 100644 --- a/src/lib/services/feature-toggle-service.ts +++ b/src/lib/services/feature-toggle-service.ts @@ -348,8 +348,7 @@ class FeatureToggleService { } if ( - contextDefinition && - contextDefinition.legalValues && + contextDefinition?.legalValues && contextDefinition.legalValues.length > 0 ) { const valuesToValidate = oneOf( @@ -1181,8 +1180,8 @@ class FeatureToggleService { featureName: string, projectId: string, newFeatureName: string, - replaceGroupId: boolean = true, // eslint-disable-line userName: string, + replaceGroupId: boolean = true, ): Promise { const changeRequestEnabled = await this.changeRequestAccessReadModel.isChangeRequestsEnabledForProject( @@ -1227,7 +1226,7 @@ class FeatureToggleService { if ( replaceGroupId && s.parameters && - s.parameters.hasOwnProperty('groupId') + Object.hasOwn(s.parameters, 'groupId') ) { s.parameters.groupId = newFeatureName; } @@ -1890,7 +1889,9 @@ class FeatureToggleService { env.name, newVariants, user, - ).then((resultingVariants) => (env.variants = resultingVariants)), + ).then((resultingVariants) => { + env.variants = resultingVariants; + }), ); await Promise.all(promises); ft.variants = ft.environments[0].variants; @@ -2077,11 +2078,11 @@ class FeatureToggleService { ); } - let fixedVariants = variants.filter((x) => { + const fixedVariants = variants.filter((x) => { return x.weightType === WeightType.FIX; }); - let fixedWeights = fixedVariants.reduce((a, v) => a + v.weight, 0); + const fixedWeights = fixedVariants.reduce((a, v) => a + v.weight, 0); if (fixedWeights > 1000) { throw new BadDataError( @@ -2089,7 +2090,7 @@ class FeatureToggleService { ); } - let averageWeight = Math.floor( + const averageWeight = Math.floor( (1000 - fixedWeights) / variableVariants.length, ); let remainder = (1000 - fixedWeights) % variableVariants.length; diff --git a/src/lib/services/group-service.ts b/src/lib/services/group-service.ts index 0129885d9a89..6de21866ec59 100644 --- a/src/lib/services/group-service.ts +++ b/src/lib/services/group-service.ts @@ -118,7 +118,7 @@ export class GroupService { const deletableUsers = existingUsers.filter( (existingUser) => !group.users.some( - (groupUser) => groupUser.user.id == existingUser.userId, + (groupUser) => groupUser.user.id === existingUser.userId, ), ); @@ -188,7 +188,7 @@ export class GroupService { throw new BadDataError('Group name cannot be empty'); } - if (!existingGroup || existingGroup.name != group.name) { + if (!existingGroup || existingGroup.name !== group.name) { if (await this.groupStore.existsWithName(group.name)) { throw new NameExistsError('Group name already exists'); } @@ -205,18 +205,18 @@ export class GroupService { allUsers: IUser[], ): IGroupModel { const groupUsers = allGroupUsers.filter( - (user) => user.groupId == group.id, + (user) => user.groupId === group.id, ); const groupUsersId = groupUsers.map((user) => user.userId); const selectedUsers = allUsers.filter((user) => groupUsersId.includes(user.id), ); const finalUsers = selectedUsers.map((user) => { - const roleUser = groupUsers.find((gu) => gu.userId == user.id); + const roleUser = groupUsers.find((gu) => gu.userId === user.id); return { user: user, - joinedAt: roleUser.joinedAt, - createdBy: roleUser.createdBy, + joinedAt: roleUser?.joinedAt, + createdBy: roleUser?.createdBy, }; }); return { ...group, users: finalUsers }; @@ -228,7 +228,7 @@ export class GroupService { createdBy?: string, ): Promise { if (Array.isArray(externalGroups)) { - let newGroups = await this.groupStore.getNewGroupsForExternalUser( + const newGroups = await this.groupStore.getNewGroupsForExternalUser( userId, externalGroups, ); @@ -237,7 +237,7 @@ export class GroupService { newGroups.map((g) => g.id), createdBy, ); - let oldGroups = await this.groupStore.getOldGroupsForExternalUser( + const oldGroups = await this.groupStore.getOldGroupsForExternalUser( userId, externalGroups, ); diff --git a/src/lib/services/openapi-service.ts b/src/lib/services/openapi-service.ts index a0cba82ab672..6a096ee33fa4 100644 --- a/src/lib/services/openapi-service.ts +++ b/src/lib/services/openapi-service.ts @@ -58,7 +58,7 @@ export class OpenApiService { useErrorHandler(app: Express): void { app.use((err, req, res, next) => { - if (err && err.status && err.validationErrors) { + if (err?.status && err.validationErrors) { const apiError = fromOpenApiValidationErrors( req.body, err.validationErrors, diff --git a/src/lib/services/project-service.ts b/src/lib/services/project-service.ts index 019e87002810..302a8e5a3a4a 100644 --- a/src/lib/services/project-service.ts +++ b/src/lib/services/project-service.ts @@ -756,7 +756,9 @@ export default class ProjectService { projectId, ); const groups = await this.groupService.getProjectGroups(projectId); - const roleGroups = groups.filter((g) => g.roleId == currentRole.id); + const roleGroups = groups.filter( + (g) => g.roleId === currentRole.id, + ); if (users.length + roleGroups.length < 2) { throw new ProjectWithoutOwnerError(); } diff --git a/src/lib/services/proxy-service.ts b/src/lib/services/proxy-service.ts index c583ed8d0131..b9e9086fbda6 100644 --- a/src/lib/services/proxy-service.ts +++ b/src/lib/services/proxy-service.ts @@ -141,7 +141,7 @@ export class ProxyService { } async deleteClientForProxyToken(secret: string): Promise { - let clientPromise = this.clients.get(secret); + const clientPromise = this.clients.get(secret); if (clientPromise) { const client = await clientPromise; client.destroy(); diff --git a/src/lib/services/state-service.ts b/src/lib/services/state-service.ts index 0d54c010f873..4906f083e442 100644 --- a/src/lib/services/state-service.ts +++ b/src/lib/services/state-service.ts @@ -153,7 +153,7 @@ export default class StateService { // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types moveVariantsToFeatureEnvironments(data: any) { data.featureEnvironments?.forEach((featureEnvironment) => { - let feature = data.features?.find( + const feature = data.features?.find( (f) => f.name === featureEnvironment.featureName, ); if (feature) { @@ -634,7 +634,7 @@ export default class StateService { async importTagTypes( tagTypes: ITagType[], keepExisting: boolean, - oldTagTypes: ITagType[] = [], // eslint-disable-line + oldTagTypes: ITagType[], userName: string, ): Promise { const tagTypesToInsert = tagTypes.filter((tagType) => diff --git a/src/lib/services/state-util.ts b/src/lib/services/state-util.ts index 730521c2a24a..38993efece9c 100644 --- a/src/lib/services/state-util.ts +++ b/src/lib/services/state-util.ts @@ -17,19 +17,16 @@ export const parseFile: (file: string, data: string) => any = ( export const filterExisting: ( keepExisting: boolean, existingArray: any[], -) => (item: any) => boolean = - (keepExisting, existingArray = []) => - (item) => { - if (keepExisting) { - const found = existingArray.find((t) => t.name === item.name); - return !found; - } - return true; - }; +) => (item: any) => boolean = (keepExisting, existingArray = []) => (item) => { + if (keepExisting) { + const found = existingArray.find((t) => t.name === item.name); + return !found; + } + return true; +}; export const filterEqual: (existingArray: any[]) => (item: any) => boolean = - (existingArray = []) => - (item) => { + (existingArray = []) => (item) => { const toggle = existingArray.find((t) => t.name === item.name); if (toggle) { return JSON.stringify(toggle) !== JSON.stringify(item); diff --git a/src/lib/services/tag-type-service.ts b/src/lib/services/tag-type-service.ts index 75c89fc5c9dd..6b55339eabe1 100644 --- a/src/lib/services/tag-type-service.ts +++ b/src/lib/services/tag-type-service.ts @@ -68,7 +68,7 @@ export default class TagTypeService { async validate(tagType: Partial | undefined): Promise { await tagTypeSchema.validateAsync(tagType); - if (tagType && tagType.name) { + if (tagType?.name) { await this.validateUnique(tagType.name); } } diff --git a/src/lib/services/user-service.ts b/src/lib/services/user-service.ts index b4c372a54fe0..c8be6bbf52e9 100644 --- a/src/lib/services/user-service.ts +++ b/src/lib/services/user-service.ts @@ -104,7 +104,7 @@ class UserService { this.emailService = services.emailService; this.sessionService = services.sessionService; this.settingService = services.settingService; - if (authentication && authentication.createAdminUser) { + if (authentication?.createAdminUser) { process.nextTick(() => this.initAdminUser()); } diff --git a/src/lib/util/findDuplicates.ts b/src/lib/util/findDuplicates.ts index a0c932fa5d4a..a595e6cca435 100644 --- a/src/lib/util/findDuplicates.ts +++ b/src/lib/util/findDuplicates.ts @@ -2,7 +2,7 @@ export const findDuplicates = (arr: T[]): T[] => { const seen: Set = new Set(); const duplicates: Set = new Set(); - for (let item of arr) { + for (const item of arr) { if (seen.has(item)) { duplicates.add(item); } else { diff --git a/src/test/arbitraries.test.ts b/src/test/arbitraries.test.ts index a4c5cd0db854..6de177c851f4 100644 --- a/src/test/arbitraries.test.ts +++ b/src/test/arbitraries.test.ts @@ -11,9 +11,15 @@ export const urlFriendlyString = (): Arbitrary => fc .array( fc.oneof( - fc.integer({ min: 0x30, max: 0x39 }).map(String.fromCharCode), // numbers - fc.integer({ min: 0x41, max: 0x5a }).map(String.fromCharCode), // UPPERCASE LETTERS - fc.integer({ min: 0x61, max: 0x7a }).map(String.fromCharCode), // lowercase letters + fc + .integer({ min: 0x30, max: 0x39 }) + .map(String.fromCharCode), // numbers + fc + .integer({ min: 0x41, max: 0x5a }) + .map(String.fromCharCode), // UPPERCASE LETTERS + fc + .integer({ min: 0x61, max: 0x7a }) + .map(String.fromCharCode), // lowercase letters fc.constantFrom('-', '_', '~', '.'), // rest fc.lorem({ maxCount: 1 }), // random words for more 'realistic' names ), diff --git a/src/test/e2e/api/admin/favorites.e2e.test.ts b/src/test/e2e/api/admin/favorites.e2e.test.ts index 4ab4dab94896..205b7b1819fe 100644 --- a/src/test/e2e/api/admin/favorites.e2e.test.ts +++ b/src/test/e2e/api/admin/favorites.e2e.test.ts @@ -24,7 +24,7 @@ const createFeature = async (featureName: string) => { const loginRegularUser = () => app.request - .post(`/auth/demo/login`) + .post('/auth/demo/login') .send({ email: `${regularUserName}@getunleash.io`, }) @@ -74,7 +74,7 @@ const getProject = async (projectName = 'default') => { const getProjects = async () => { return app.request - .get(`/api/admin/projects`) + .get('/api/admin/projects') .set('Content-Type', 'application/json') .expect(200); }; @@ -121,7 +121,7 @@ test('should be favorited in project endpoint', async () => { await favoriteProject(); const { body } = await app.request - .get(`/api/admin/projects/default`) + .get('/api/admin/projects/default') .set('Content-Type', 'application/json') .expect(200); @@ -157,7 +157,7 @@ test('should be favorited in admin endpoint', async () => { await favoriteFeature(featureName); const { body } = await app.request - .get(`/api/admin/features`) + .get('/api/admin/features') .set('Content-Type', 'application/json') .expect(200); diff --git a/src/test/e2e/api/admin/feature-type.test.ts b/src/test/e2e/api/admin/feature-type.test.ts index c1a1bf3a1166..8c450f0018c5 100644 --- a/src/test/e2e/api/admin/feature-type.test.ts +++ b/src/test/e2e/api/admin/feature-type.test.ts @@ -44,7 +44,7 @@ describe('updating lifetimes', () => { 'it updates to the lifetime correctly: `%s`', async (lifetimeDays) => { const { body } = await app.request - .put(`/api/admin/feature-types/release/lifetime`) + .put('/api/admin/feature-types/release/lifetime') .send({ lifetimeDays }) .expect(200); @@ -53,7 +53,7 @@ describe('updating lifetimes', () => { ); test("if the feature type doesn't exist, you get a 404", async () => { await app.request - .put(`/api/admin/feature-types/bogus-feature-type/lifetime`) + .put('/api/admin/feature-types/bogus-feature-type/lifetime') .send({ lifetimeDays: 45 }) .expect(404); }); @@ -72,7 +72,7 @@ describe('updating lifetimes', () => { test('the :id parameter is not case sensitive', async () => { const lifetimeDays = 45; const { body } = await app.request - .put(`/api/admin/feature-types/kIlL-SwItCh/lifetime`) + .put('/api/admin/feature-types/kIlL-SwItCh/lifetime') .send({ lifetimeDays }) .expect(200); diff --git a/src/test/e2e/api/admin/project/project.health.e2e.test.ts b/src/test/e2e/api/admin/project/project.health.e2e.test.ts index 5aeffb89da70..62de38120932 100644 --- a/src/test/e2e/api/admin/project/project.health.e2e.test.ts +++ b/src/test/e2e/api/admin/project/project.health.e2e.test.ts @@ -318,8 +318,8 @@ test('Update update_at when setHealth runs', async () => { .expect(200) .expect('Content-Type', /json/) .expect((res) => { - let now = new Date().getTime(); - let updatedAt = new Date(res.body.updatedAt).getTime(); + const now = new Date().getTime(); + const updatedAt = new Date(res.body.updatedAt).getTime(); expect(now - updatedAt).toBeLessThan(5000); }); }); diff --git a/src/test/e2e/api/admin/project/variants.e2e.test.ts b/src/test/e2e/api/admin/project/variants.e2e.test.ts index be72d6df3902..f1a143718200 100644 --- a/src/test/e2e/api/admin/project/variants.e2e.test.ts +++ b/src/test/e2e/api/admin/project/variants.e2e.test.ts @@ -88,7 +88,7 @@ test('Trying to do operations on a non-existing feature yields 404', async () => weight: 700, weightType: WeightType.VARIABLE, }); - let patch = jsonpatch.generate(observer); + const patch = jsonpatch.generate(observer); await app.request .patch('/api/admin/projects/default/features/${featureName}/variants') .send(patch) @@ -744,7 +744,7 @@ test('Patching with a fixed variant and variable variants splits remaining weigh .get(`/api/admin/projects/default/features/${featureName}/variants`) .expect(200) .expect((res) => { - let body = res.body; + const body = res.body; expect(body.variants).toHaveLength(7); expect( body.variants.reduce((total, v) => total + v.weight, 0), @@ -817,7 +817,7 @@ test('Multiple fixed variants gets added together to decide how much weight vari .get(`/api/admin/projects/default/features/${featureName}/variants`) .expect(200) .expect((res) => { - let body = res.body; + const body = res.body; expect(body.variants).toHaveLength(3); expect( body.variants.find((v) => v.name === 'variant3').weight, @@ -921,7 +921,7 @@ test('If sum of fixed variant weight equals 1000 variable variants gets weight 0 .get(`/api/admin/projects/default/features/${featureName}/variants`) .expect(200) .expect((res) => { - let body = res.body; + const body = res.body; expect(body.variants).toHaveLength(4); expect( body.variants.find((v) => v.name === 'variant3').weight, diff --git a/src/test/e2e/api/admin/public-signup-token.e2e.test.ts b/src/test/e2e/api/admin/public-signup-token.e2e.test.ts index 7d4850e4606e..45d5b9340677 100644 --- a/src/test/e2e/api/admin/public-signup-token.e2e.test.ts +++ b/src/test/e2e/api/admin/public-signup-token.e2e.test.ts @@ -25,7 +25,7 @@ afterAll(async () => { }); const expireAt = (addDays: number = 7): Date => { - let now = new Date(); + const now = new Date(); now.setDate(now.getDate() + addDays); return now; }; diff --git a/src/test/e2e/api/admin/state.e2e.test.ts b/src/test/e2e/api/admin/state.e2e.test.ts index 56083ae689fe..2c2f9a91c0bd 100644 --- a/src/test/e2e/api/admin/state.e2e.test.ts +++ b/src/test/e2e/api/admin/state.e2e.test.ts @@ -414,10 +414,10 @@ test(`should not show environment on feature toggle, when environment is disable .expect(200); const result = body.environments; - let dev = result.find((e) => e.name === 'development'); + const dev = result.find((e) => e.name === 'development'); expect(dev).toBeTruthy(); expect(dev.enabled).toBe(true); - let prod = result.find((e) => e.name === 'production'); + const prod = result.find((e) => e.name === 'production'); expect(prod).toBeTruthy(); expect(prod.enabled).toBe(false); }); diff --git a/src/test/e2e/api/admin/user-admin.e2e.test.ts b/src/test/e2e/api/admin/user-admin.e2e.test.ts index 04219dbcce54..d2a0adb532cc 100644 --- a/src/test/e2e/api/admin/user-admin.e2e.test.ts +++ b/src/test/e2e/api/admin/user-admin.e2e.test.ts @@ -380,7 +380,7 @@ test('generates USER_UPDATED event', async () => { }); test('Anonymises name, username and email fields if anonymiseEventLog flag is set', async () => { - let anonymisedApp = await setupAppWithCustomConfig( + const anonymisedApp = await setupAppWithCustomConfig( stores, { experimental: { flags: { anonymiseEventLog: true } } }, db, @@ -393,10 +393,10 @@ test('Anonymises name, username and email fields if anonymiseEventLog flag is se rootRole: editorRole.id, }) .set('Content-Type', 'application/json'); - let response = await anonymisedApp.request.get( + const response = await anonymisedApp.request.get( '/api/admin/user-admin/access', ); - let body = response.body; + const body = response.body; expect(body.users[0].email).toEqual('aeb83743e@unleash.run'); expect(body.users[0].name).toEqual('3a8b17647@unleash.run'); expect(body.users[0].username).toEqual(''); // Not set, so anonymise should return the empty string. diff --git a/src/test/e2e/api/admin/user/pat.e2e.test.ts b/src/test/e2e/api/admin/user/pat.e2e.test.ts index 2344e9d35e1a..561eee3172b7 100644 --- a/src/test/e2e/api/admin/user/pat.e2e.test.ts +++ b/src/test/e2e/api/admin/user/pat.e2e.test.ts @@ -9,7 +9,7 @@ let app: IUnleashTest; let db: ITestDb; let patStore: IPatStore; -let tomorrow = new Date(); +const tomorrow = new Date(); let firstSecret; let firstId; tomorrow.setDate(tomorrow.getDate() + 1); @@ -149,7 +149,7 @@ test('should get only current user PATs', async () => { test('should fail creation of PAT with passed expiry', async () => { const { request } = app; - let yesterday = new Date(); + const yesterday = new Date(); yesterday.setDate(yesterday.getDate() - 1); await request .post('/api/admin/user/tokens') diff --git a/src/test/e2e/api/auth/leading-slashes-are-stripped.e2e.test.ts b/src/test/e2e/api/auth/leading-slashes-are-stripped.e2e.test.ts index 2faf8fcda2e7..a173e6061160 100644 --- a/src/test/e2e/api/auth/leading-slashes-are-stripped.e2e.test.ts +++ b/src/test/e2e/api/auth/leading-slashes-are-stripped.e2e.test.ts @@ -46,13 +46,15 @@ test('multiple slashes after base path is also rejected with 404', async () => { await appWithBaseUrl.request.get('/demo/api/client/features').expect(401); }); -test(`Access with API token is granted`, async () => { - let token = await app.services.apiTokenService.createApiTokenWithProjects({ - environment: 'default', - projects: ['default'], - tokenName: 'test', - type: ApiTokenType.CLIENT, - }); +test('Access with API token is granted', async () => { + const token = await app.services.apiTokenService.createApiTokenWithProjects( + { + environment: 'default', + projects: ['default'], + tokenName: 'test', + type: ApiTokenType.CLIENT, + }, + ); await app.request .get('/api/client/features') .set('Authorization', token.secret) diff --git a/src/test/e2e/api/auth/simple-password-provider.e2e.test.ts b/src/test/e2e/api/auth/simple-password-provider.e2e.test.ts index c835253008a5..bca31bf1fc90 100644 --- a/src/test/e2e/api/auth/simple-password-provider.e2e.test.ts +++ b/src/test/e2e/api/auth/simple-password-provider.e2e.test.ts @@ -77,7 +77,7 @@ test('Can log in', async () => { }); test('Gets rate limited after 10 tries', async () => { - for (let statusCode of [...Array(10).fill(200), 429]) { + for (const statusCode of [...Array(10).fill(200), 429]) { await app.request .post('/auth/simple/login') .send({ diff --git a/src/test/e2e/api/client/segment.e2e.test.ts b/src/test/e2e/api/client/segment.e2e.test.ts index a0cbf7fffed3..92ab36cbf56d 100644 --- a/src/test/e2e/api/client/segment.e2e.test.ts +++ b/src/test/e2e/api/client/segment.e2e.test.ts @@ -380,8 +380,7 @@ test('should send all segments that are in use by feature', async () => { const globalSegmentIds = globalSegments.map((segment) => segment.id); const allSegmentIds = clientFeatures.features - .map((feat) => feat.strategies.map((strategy) => strategy.segments)) - .flat() + .flatMap((feat) => feat.strategies.map((strategy) => strategy.segments)) .flat() .filter((x) => !!x); const toggleSegmentIds = [...new Set(allSegmentIds)]; diff --git a/src/test/e2e/api/openapi/openapi.e2e.test.ts b/src/test/e2e/api/openapi/openapi.e2e.test.ts index 29ae6bbc009a..cbf998cb4d34 100644 --- a/src/test/e2e/api/openapi/openapi.e2e.test.ts +++ b/src/test/e2e/api/openapi/openapi.e2e.test.ts @@ -149,8 +149,7 @@ test('all tags are listed in the root "tags" list', async () => { // store other invalid tags that already exist on this // operation const preExistingTags = - (invalidTags[path] ?? {})[operation]?.invalidTags ?? []; - + invalidTags[path]?.[operation]?.invalidTags ?? []; // add information about the invalid tag to the invalid tags // dict. invalidTags = { diff --git a/src/test/e2e/api/proxy/proxy.concurrency.e2e.test.ts b/src/test/e2e/api/proxy/proxy.concurrency.e2e.test.ts index fdf53556b349..65ff72634faf 100644 --- a/src/test/e2e/api/proxy/proxy.concurrency.e2e.test.ts +++ b/src/test/e2e/api/proxy/proxy.concurrency.e2e.test.ts @@ -9,7 +9,7 @@ let db: ITestDb; let appErrorLogs: string[] = []; beforeAll(async () => { - db = await dbInit(`proxy_concurrency`, getLogger); + db = await dbInit('proxy_concurrency', getLogger); const baseLogger = getLogger(); const appLogger = { ...baseLogger, diff --git a/src/test/e2e/helpers/database-init.ts b/src/test/e2e/helpers/database-init.ts index b4b124dfa39d..a5b7f93121fb 100644 --- a/src/test/e2e/helpers/database-init.ts +++ b/src/test/e2e/helpers/database-init.ts @@ -34,7 +34,9 @@ async function resetDatabase(knex) { knex.table('tag_types').del(), knex.table('addons').del(), knex.table('users').del(), - knex.table('reset_tokens').del(), + knex + .table('reset_tokens') + .del(), // knex.table('settings').del(), ]); } @@ -80,7 +82,7 @@ export interface ITestDb { } export default async function init( - databaseSchema: string = 'test', + databaseSchema = 'test', getLogger: LogProvider = noLoggerProvider, configOverride: Partial = {}, ): Promise { diff --git a/src/test/e2e/services/access-service.e2e.test.ts b/src/test/e2e/services/access-service.e2e.test.ts index 16bb654eafc2..01a6e81f0f28 100644 --- a/src/test/e2e/services/access-service.e2e.test.ts +++ b/src/test/e2e/services/access-service.e2e.test.ts @@ -55,7 +55,7 @@ const createUser = async (role?: number) => { return user; }; -let groupIndex = 0; +const groupIndex = 0; const createGroup = async ({ users, role, @@ -1837,7 +1837,7 @@ test('access overview should have admin access and default project for admin use const accessOverView: IUserAccessOverview[] = await accessService.getUserAccessOverview(); const userAccess = accessOverView.find( - (overviewRow) => overviewRow.userId == user.id, + (overviewRow) => overviewRow.userId === user.id, )!; expect(userAccess.userId).toBe(user.id); @@ -1890,7 +1890,7 @@ test('access overview should have group access for groups that they are in', asy const accessOverView: IUserAccessOverview[] = await accessService.getUserAccessOverview(); const userAccess = accessOverView.find( - (overviewRow) => overviewRow.userId == user.id, + (overviewRow) => overviewRow.userId === user.id, )!; expect(userAccess.userId).toBe(user.id); diff --git a/src/test/e2e/services/environment-service.test.ts b/src/test/e2e/services/environment-service.test.ts index 39981838e51e..b94a2c0d92e2 100644 --- a/src/test/e2e/services/environment-service.test.ts +++ b/src/test/e2e/services/environment-service.test.ts @@ -159,11 +159,11 @@ test('Setting an override disables all other envs', async () => { const environments = await service.getAll(); const targetedEnvironment = environments.find( - (env) => env.name == enabledEnvName, + (env) => env.name === enabledEnvName, ); const allOtherEnvironments = environments - .filter((x) => x.name != enabledEnvName) + .filter((x) => x.name !== enabledEnvName) .map((env) => env.enabled); expect(targetedEnvironment?.enabled).toBe(true); @@ -184,7 +184,7 @@ test('Passing an empty override does nothing', async () => { const environments = await service.getAll(); const targetedEnvironment = environments.find( - (env) => env.name == enabledEnvName, + (env) => env.name === enabledEnvName, ); expect(targetedEnvironment?.enabled).toBe(true); @@ -255,11 +255,11 @@ test('Override works correctly when enabling default and disabling prod and dev' const environments = await service.getAll(); const targetedEnvironment = environments.find( - (env) => env.name == defaultEnvironment, + (env) => env.name === defaultEnvironment, ); const allOtherEnvironments = environments - .filter((x) => x.name != defaultEnvironment) + .filter((x) => x.name !== defaultEnvironment) .map((env) => env.enabled); const envNames = environments.map((x) => x.name); diff --git a/src/test/e2e/services/feature-toggle-service-v2.e2e.test.ts b/src/test/e2e/services/feature-toggle-service-v2.e2e.test.ts index b4b7b444afb7..724a2b1b9006 100644 --- a/src/test/e2e/services/feature-toggle-service-v2.e2e.test.ts +++ b/src/test/e2e/services/feature-toggle-service-v2.e2e.test.ts @@ -351,8 +351,8 @@ test('cloning a feature toggle copies variant environments correctly', async () newToggleName, 'default', clonedToggleName, - true, 'test-user', + true, ); const clonedToggle = @@ -379,8 +379,8 @@ test('cloning a feature toggle not allowed for change requests enabled', async ( 'newToggleName', 'default', 'clonedToggleName', - true, 'test-user', + true, ), ).rejects.toEqual( new ForbiddenError( @@ -407,7 +407,7 @@ test('Cloning a feature toggle also clones segments correctly', async () => { const featureName = 'ToggleWithSegments'; const clonedFeatureName = 'AWholeNewFeatureToggle'; - let segment = await segmentService.create( + const segment = await segmentService.create( { name: 'SomeSegment', constraints: mockConstraints(), @@ -442,11 +442,13 @@ test('Cloning a feature toggle also clones segments correctly', async () => { featureName, 'default', clonedFeatureName, - true, 'test-user', + true, ); - let feature = await service.getFeature({ featureName: clonedFeatureName }); + const feature = await service.getFeature({ + featureName: clonedFeatureName, + }); expect( feature.environments.find((x) => x.name === 'default')?.strategies[0] .segments, diff --git a/src/test/e2e/services/project-service.e2e.test.ts b/src/test/e2e/services/project-service.e2e.test.ts index 863d965f1f8a..5a7ec4aa13af 100644 --- a/src/test/e2e/services/project-service.e2e.test.ts +++ b/src/test/e2e/services/project-service.e2e.test.ts @@ -940,7 +940,7 @@ test('should change a users role in the project', async () => { await projectService.addUser(project.id, member.id, projectUser.id, 'test'); const { users } = await projectService.getAccessToProject(project.id); - let memberUser = users.filter((u) => u.roleId === member.id); + const memberUser = users.filter((u) => u.roleId === member.id); expect(memberUser).toHaveLength(1); expect(memberUser[0].id).toBe(projectUser.id); @@ -958,7 +958,7 @@ test('should change a users role in the project', async () => { 'test', ); - let { users: updatedUsers } = await projectService.getAccessToProject( + const { users: updatedUsers } = await projectService.getAccessToProject( project.id, ); const customUser = updatedUsers.filter((u) => u.roleId === customRole.id); diff --git a/src/test/e2e/services/state-service.e2e.test.ts b/src/test/e2e/services/state-service.e2e.test.ts index 9d8bb57ecc27..4f808f643735 100644 --- a/src/test/e2e/services/state-service.e2e.test.ts +++ b/src/test/e2e/services/state-service.e2e.test.ts @@ -141,7 +141,7 @@ test('Should import variants from old format and convert to new format (per envi keepExisting: false, dropBeforeImport: true, }); - let featureEnvironments = await stores.featureEnvironmentStore.getAll(); + const featureEnvironments = await stores.featureEnvironmentStore.getAll(); expect(featureEnvironments).toHaveLength(6); // There are 3 environments enabled and 2 features expect( featureEnvironments @@ -155,13 +155,13 @@ test('Should import variants in new format (per environment)', async () => { keepExisting: false, dropBeforeImport: true, }); - let exportedJson = await stateService.export({}); + const exportedJson = await stateService.export({}); await stateService.import({ data: exportedJson, keepExisting: false, dropBeforeImport: true, }); - let featureEnvironments = await stores.featureEnvironmentStore.getAll(); + const featureEnvironments = await stores.featureEnvironmentStore.getAll(); expect(featureEnvironments).toHaveLength(6); // 3 environments, 2 features === 6 rows }); diff --git a/src/test/e2e/services/user-service.e2e.test.ts b/src/test/e2e/services/user-service.e2e.test.ts index a9da62a0b3a1..95f1b3c7a507 100644 --- a/src/test/e2e/services/user-service.e2e.test.ts +++ b/src/test/e2e/services/user-service.e2e.test.ts @@ -120,7 +120,7 @@ test('should not be able to login with deleted user', async () => { userService.loginUser('deleted_user', 'unleash4all'), ).rejects.toThrow( new PasswordMismatch( - `The combination of password and username you provided is invalid. If you have forgotten your password, visit /forgotten-password or get in touch with your instance administrator.`, + 'The combination of password and username you provided is invalid. If you have forgotten your password, visit /forgotten-password or get in touch with your instance administrator.', ), ); }); @@ -139,7 +139,7 @@ test('should not be able to login without password_hash on user', async () => { userService.loginUser('deleted_user', 'anything-should-fail'), ).rejects.toThrow( new PasswordMismatch( - `The combination of password and username you provided is invalid. If you have forgotten your password, visit /forgotten-password or get in touch with your instance administrator.`, + 'The combination of password and username you provided is invalid. If you have forgotten your password, visit /forgotten-password or get in touch with your instance administrator.', ), ); }); @@ -273,7 +273,7 @@ test('should throw if rootRole is wrong via SSO', async () => { name: 'some', autoCreate: true, }), - ).rejects.toThrow(new BadDataError(`Could not find rootRole=Member`)); + ).rejects.toThrow(new BadDataError('Could not find rootRole=Member')); }); test('should update user name when signing in via SSO', async () => { @@ -330,5 +330,5 @@ test('should throw if autoCreate is false via SSO', async () => { name: 'some', autoCreate: false, }), - ).rejects.toThrow(new NotFoundError(`No user found`)); + ).rejects.toThrow(new NotFoundError('No user found')); }); diff --git a/src/test/e2e/stores/event-store.e2e.test.ts b/src/test/e2e/stores/event-store.e2e.test.ts index ea70108f4474..916fdf611007 100644 --- a/src/test/e2e/stores/event-store.e2e.test.ts +++ b/src/test/e2e/stores/event-store.e2e.test.ts @@ -192,7 +192,7 @@ test('Should get all events of type', async () => { await Promise.all( [0, 1, 2, 3, 4, 5].map(async (id) => { const event = - id % 2 == 0 + id % 2 === 0 ? new FeatureCreatedEvent({ project: data.project, featureName: data.name, diff --git a/src/test/e2e/stores/feature-environment-store.e2e.test.ts b/src/test/e2e/stores/feature-environment-store.e2e.test.ts index 0d21ed71d331..0420e39fd19e 100644 --- a/src/test/e2e/stores/feature-environment-store.e2e.test.ts +++ b/src/test/e2e/stores/feature-environment-store.e2e.test.ts @@ -24,8 +24,8 @@ afterEach(async () => { }); test('Setting enabled to same as existing value returns 0', async () => { - let envName = 'enabled-to-true'; - let featureName = 'enabled-to-true-feature'; + const envName = 'enabled-to-true'; + const featureName = 'enabled-to-true-feature'; await environmentStore.create({ name: envName, enabled: true, @@ -47,8 +47,8 @@ test('Setting enabled to same as existing value returns 0', async () => { }); test('Setting enabled to not existing value returns 1', async () => { - let envName = 'enabled-toggle'; - let featureName = 'enabled-toggle-feature'; + const envName = 'enabled-toggle'; + const featureName = 'enabled-toggle-feature'; await environmentStore.create({ name: envName, enabled: true, diff --git a/src/test/e2e/stores/feature-tag-store.e2e.test.ts b/src/test/e2e/stores/feature-tag-store.e2e.test.ts index 0eeee25be841..ede33d8677f7 100644 --- a/src/test/e2e/stores/feature-tag-store.e2e.test.ts +++ b/src/test/e2e/stores/feature-tag-store.e2e.test.ts @@ -112,6 +112,6 @@ test('should throw not found error if feature does not exist', async () => { test('Returns empty tag list for existing feature with no tags', async () => { const name = 'feature.with.no.tags'; await featureToggleStore.create('default', { name }); - let tags = await featureTagStore.getAllTagsForFeature(name); + const tags = await featureTagStore.getAllTagsForFeature(name); expect(tags).toHaveLength(0); }); diff --git a/src/test/fixtures/fake-environment-store.ts b/src/test/fixtures/fake-environment-store.ts index 6035fb68be53..775939fa37f4 100644 --- a/src/test/fixtures/fake-environment-store.ts +++ b/src/test/fixtures/fake-environment-store.ts @@ -11,7 +11,7 @@ export default class FakeEnvironmentStore implements IEnvironmentStore { environments: IEnvironment[] = []; disable(environments: IEnvironment[]): Promise { - for (let env of this.environments) { + for (const env of this.environments) { if (environments.map((e) => e.name).includes(env.name)) env.enabled = false; } @@ -19,7 +19,7 @@ export default class FakeEnvironmentStore implements IEnvironmentStore { } enable(environments: IEnvironment[]): Promise { - for (let env of this.environments) { + for (const env of this.environments) { if (environments.map((e) => e.name).includes(env.name)) env.enabled = true; } diff --git a/src/test/fixtures/fake-favorite-features-store.ts b/src/test/fixtures/fake-favorite-features-store.ts index 2a31b1f23c1e..603a7d46bc31 100644 --- a/src/test/fixtures/fake-favorite-features-store.ts +++ b/src/test/fixtures/fake-favorite-features-store.ts @@ -2,9 +2,7 @@ import { IFavoriteFeaturesStore } from '../../lib/types'; import { IFavoriteFeatureKey } from '../../lib/types/stores/favorite-features'; import { IFavoriteFeature } from '../../lib/types/favorites'; /* eslint-disable @typescript-eslint/no-unused-vars */ -export default class FakeFavoriteFeaturesStore - implements IFavoriteFeaturesStore -{ +export default class FakeFavoriteFeaturesStore implements IFavoriteFeaturesStore { addFavoriteFeature( favorite: IFavoriteFeatureKey, ): Promise { diff --git a/src/test/fixtures/fake-favorite-projects-store.ts b/src/test/fixtures/fake-favorite-projects-store.ts index e78889de36af..a609190f508f 100644 --- a/src/test/fixtures/fake-favorite-projects-store.ts +++ b/src/test/fixtures/fake-favorite-projects-store.ts @@ -2,9 +2,7 @@ import { IFavoriteProjectsStore } from '../../lib/types'; import { IFavoriteProjectKey } from '../../lib/types/stores/favorite-projects'; import { IFavoriteProject } from '../../lib/types/favorites'; /* eslint-disable @typescript-eslint/no-unused-vars */ -export default class FakeFavoriteProjectsStore - implements IFavoriteProjectsStore -{ +export default class FakeFavoriteProjectsStore implements IFavoriteProjectsStore { addFavoriteProject( favorite: IFavoriteProjectKey, ): Promise { diff --git a/src/test/fixtures/fake-feature-environment-store.ts b/src/test/fixtures/fake-feature-environment-store.ts index 0f4c5e54197a..4dff3aa62196 100644 --- a/src/test/fixtures/fake-feature-environment-store.ts +++ b/src/test/fixtures/fake-feature-environment-store.ts @@ -41,7 +41,9 @@ export default class FakeFeatureEnvironmentStore fe.featureName === featureName && environments.includes(fe.environment), ) - .map((fe) => (fe.variants = variants)); + .forEach((fe) => { + fe.variants = variants; + }); } async delete(key: FeatureEnvironmentKey): Promise { diff --git a/src/test/fixtures/fake-feature-toggle-store.ts b/src/test/fixtures/fake-feature-toggle-store.ts index 6acd59c937c3..19a191211cd9 100644 --- a/src/test/fixtures/fake-feature-toggle-store.ts +++ b/src/test/fixtures/fake-feature-toggle-store.ts @@ -198,8 +198,8 @@ export default class FakeFeatureToggleStore implements IFeatureToggleStore { } async getAllVariants(): Promise { - let features = await this.getAll(); - let variants = features.flatMap((feature) => ({ + const features = await this.getAll(); + const variants = features.flatMap((feature) => ({ featureName: feature.name, environment: 'development', variants: feature.variants, @@ -271,7 +271,9 @@ export default class FakeFeatureToggleStore implements IFeatureToggleStore { } dropAllVariants(): Promise { - this.features.forEach((feature) => (feature.variants = [])); + this.features.forEach((feature) => { + feature.variants = []; + }); return Promise.resolve(); } diff --git a/src/test/fixtures/fake-role-store.ts b/src/test/fixtures/fake-role-store.ts index 034d4586c231..e2f9bc7845de 100644 --- a/src/test/fixtures/fake-role-store.ts +++ b/src/test/fixtures/fake-role-store.ts @@ -60,7 +60,7 @@ export default class FakeRoleStore implements IRoleStore { } async getRoleByName(name: string): Promise { - return this.roles.find((r) => (r.name = name)) as IRole; + return this.roles.find((r) => r.name === name) as IRole; } getRolesForProject(projectId: string): Promise { diff --git a/yarn.lock b/yarn.lock index 0c26b29be9de..f5d890e6c4c0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,11 +2,6 @@ # 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== - "@ampproject/remapping@^2.1.0", "@ampproject/remapping@^2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" @@ -636,6 +631,48 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@biomejs/biome@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-1.2.2.tgz#cfcceae7f4e55ef057a9b9576ef89563ca0c6d07" + integrity sha512-fXwXi56ZdaKO/N3rTmhWw41UxstoviODk+wia4WWNSlm23r8xJ/NxjaZ88scV2IsmsFHqc8rmwb2dkrStAdIEw== + optionalDependencies: + "@biomejs/cli-darwin-arm64" "1.2.2" + "@biomejs/cli-darwin-x64" "1.2.2" + "@biomejs/cli-linux-arm64" "1.2.2" + "@biomejs/cli-linux-x64" "1.2.2" + "@biomejs/cli-win32-arm64" "1.2.2" + "@biomejs/cli-win32-x64" "1.2.2" + +"@biomejs/cli-darwin-arm64@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.2.2.tgz#459a337f574d1a78d9d6a443fc00724d82804ffe" + integrity sha512-Fx1IURKhoqH6wPawtKLT6wcfMSjRRcNK8+VWau0iDOjXvNtjJpSmICbU89B7Vt/gZRwPqkfDMBkFwm6V5vFTSQ== + +"@biomejs/cli-darwin-x64@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.2.2.tgz#892ea688b5d5ddbca9d0bc33c24aa2840a62b284" + integrity sha512-JNaAFOI/ZisnmzvcFNd73geJxaFaN2L4YsWM6cgBeKyLY/ycl9C/PBTFfEmeB1c7f5XIIal8P2cj47kLJpN5Ig== + +"@biomejs/cli-linux-arm64@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.2.2.tgz#b7a00f9d9e999daa36ee4581a37a0b13326ec899" + integrity sha512-JHXRnfhOLx8UO/Fcyn2c5pFRri0XKqRZm2wf5oH5GSfLVpckDw2X15dYGbu3nmfM/3pcAaTV46pUpjrCnaAieg== + +"@biomejs/cli-linux-x64@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-1.2.2.tgz#4c55181f8231e7aa05b2841944a48dd81af443b8" + integrity sha512-5Zr+iM7lUKsw81p9PkXRESuH2/AhRZ6RCWkgE+FSLcxMhXy/4RDR+o2YQDsJM6cWKIzOJM05vDHTGrDq7vXE4A== + +"@biomejs/cli-win32-arm64@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.2.2.tgz#6fa05d52903c3fff55bd693c5b1ca778504cd4cc" + integrity sha512-HvUcG2p++RvYP0zfOqh+DgiUUH+JI/uETr0kzWlOJ9F3lsG525pkywg4RSd4OvJd7Wpd3wt3UpN/A4IEJaVmbA== + +"@biomejs/cli-win32-x64@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-1.2.2.tgz#583e50d8a1a1cc81381200d3cb2f34669c6afd35" + integrity sha512-bfaFJwqJ9ApFga2o88OaROSd3pasYRzRGXHJWAE9VUUKdSNSTYxHOqVrNvV54yYPtL6Kt9xkuZa4HNu9it3TaA== + "@colors/colors@1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" @@ -648,43 +685,6 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@eslint-community/eslint-utils@^4.2.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.5.0": - version "4.5.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" - integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ== - -"@eslint-community/regexpp@^4.6.1": - version "4.8.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.8.1.tgz#8c4bb756cc2aa7eaf13cfa5e69c83afb3260c20c" - integrity sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ== - -"@eslint/eslintrc@^2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" - integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.49.0": - version "8.49.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.49.0.tgz#86f79756004a97fa4df866835093f1df3d03c333" - integrity sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w== - "@gar/promisify@^1.1.3": version "1.1.3" resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" @@ -702,25 +702,6 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@humanwhocodes/config-array@^0.11.11": - version "0.11.11" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844" - integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -1059,7 +1040,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": +"@nodelib/fs.walk@^1.2.3": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -1448,11 +1429,6 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - "@types/lodash.groupby@4.6.7": version "4.6.7" resolved "https://registry.yarnpkg.com/@types/lodash.groupby/-/lodash.groupby-4.6.7.tgz#35fdb9647f100450d1004f65f74cbd964cdb567a" @@ -1563,11 +1539,6 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.1.tgz#0480eeb7221eb9bc398ad7432c9d7e14b1a5a367" integrity sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg== -"@types/semver@^7.3.12": - version "7.3.13" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" - integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== - "@types/serve-static@*": version "1.15.0" resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" @@ -1641,90 +1612,6 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@5.62.0": - 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.62.0" - "@typescript-eslint/type-utils" "5.62.0" - "@typescript-eslint/utils" "5.62.0" - debug "^4.3.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.62.0": - 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.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - debug "^4.3.4" - -"@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.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@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.62.0" - "@typescript-eslint/utils" "5.62.0" - debug "^4.3.4" - tsutils "^3.21.0" - -"@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.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.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.62.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.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.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.62.0" - eslint-visitor-keys "^3.3.0" - "@unleash/express-openapi@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@unleash/express-openapi/-/express-openapi-0.3.0.tgz#3d65aeafc265732cf83c57b1d18452b5d0904856" @@ -1747,11 +1634,6 @@ accepts@~1.3.5, accepts@~1.3.7, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - acorn-walk@^8.1.1: version "8.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" @@ -1762,11 +1644,6 @@ acorn@^8.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== -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== - agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" @@ -1811,7 +1688,7 @@ ajv-formats@^2.1.1: dependencies: ajv "^8.0.0" -ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: +ajv@^6.10.2, ajv@^6.12.3: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1902,14 +1779,6 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== -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" - integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== - dependencies: - call-bind "^1.0.2" - is-array-buffer "^3.0.1" - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -1920,65 +1789,6 @@ array-flatten@3.0.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-3.0.0.tgz#6428ca2ee52c7b823192ec600fa3ed2f157cd541" integrity sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA== -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== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" - is-string "^1.0.7" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array.prototype.findlastindex@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz#bc229aef98f6bd0533a2bc61ff95209875526c9b" - integrity sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.1.3" - -array.prototype.flat@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" - integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" - integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - es-shim-unscopables "^1.0.0" - -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" @@ -2016,11 +1826,6 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== - aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -2264,7 +2069,7 @@ cacache@^17.0.0: tar "^6.1.11" unique-filename "^3.0.0" -call-bind@^1.0.0, call-bind@^1.0.2: +call-bind@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== @@ -2503,11 +2308,6 @@ commander@^9.4.1: resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== -comment-parser@^1.1.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.3.1.tgz#3d7ea3adaf9345594aedee6563f422348f165c1b" - integrity sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA== - component-emitter@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -2558,11 +2358,6 @@ concurrently@^8.0.1: tree-kill "^1.2.2" yargs "^17.7.2" -confusing-browser-globals@^1.0.10: - version "1.0.11" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" - integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== - connect-session-knex@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/connect-session-knex/-/connect-session-knex-3.0.1.tgz#2c7c8c77ea4a65b836b3011e9a28cfc924a5bb03" @@ -2717,7 +2512,7 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -2808,14 +2603,14 @@ debug@2.6.9: dependencies: ms "2.0.0" -debug@3.2.7, debug@^3.2.7: +debug@3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" -debug@4, debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: +debug@4, debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -2850,11 +2645,6 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - deep-object-diff@^1.1.9: version "1.1.9" resolved "https://registry.yarnpkg.com/deep-object-diff/-/deep-object-diff-1.1.9.tgz#6df7ef035ad6a0caa44479c536ed7b02570f4595" @@ -2865,22 +2655,6 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -define-properties@^1.1.3, define-properties@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== - dependencies: - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -define-properties@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== - dependencies: - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - del-cli@5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/del-cli/-/del-cli-5.1.0.tgz#740eca1c7a9eb13043e68d8a361cf0ff9a18d5c8" @@ -2958,20 +2732,6 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - dotenv@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" @@ -3062,107 +2822,6 @@ errorhandler@^1.5.1: accepts "~1.3.7" escape-html "~1.0.3" -es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.20.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.5.tgz#e6dc99177be37cacda5988e692c3fa8b218e95d2" - integrity sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.1.3" - get-symbol-description "^1.0.0" - gopd "^1.0.1" - has "^1.0.3" - has-property-descriptors "^1.0.0" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - is-callable "^1.2.7" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-weakref "^1.0.2" - object-inspect "^1.12.2" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" - safe-regex-test "^1.0.0" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" - unbox-primitive "^1.0.2" - -es-abstract@^1.21.2: - 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.1" - get-symbol-description "^1.0.0" - globalthis "^1.0.3" - gopd "^1.0.1" - has "^1.0.3" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" - has-symbols "^1.0.3" - internal-slot "^1.0.5" - is-array-buffer "^3.0.2" - is-callable "^1.2.7" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-typed-array "^1.1.10" - is-weakref "^1.0.2" - object-inspect "^1.12.3" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.5.0" - safe-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.10" - -es-set-tostringtag@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" - integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== - dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" - has-tostringtag "^1.0.0" - -es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== - dependencies: - has "^1.0.3" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - es5-ext@0.10.62, es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: version "0.10.62" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" @@ -3224,210 +2883,16 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-airbnb-base@15.0.0, eslint-config-airbnb-base@^15.0.0: - version "15.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz#6b09add90ac79c2f8d723a2580e07f3925afd236" - integrity sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig== - dependencies: - confusing-browser-globals "^1.0.10" - object.assign "^4.1.2" - object.entries "^1.1.5" - semver "^6.3.0" - -eslint-config-airbnb-typescript@17.1.0: - version "17.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz#fda960eee4a510f092a9a1c139035ac588937ddc" - integrity sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig== - dependencies: - eslint-config-airbnb-base "^15.0.0" - -eslint-config-prettier@8.10.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" - integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== - -eslint-import-resolver-node@^0.3.7: - version "0.3.7" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7" - integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA== - dependencies: - debug "^3.2.7" - is-core-module "^2.11.0" - resolve "^1.22.1" - -eslint-module-utils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" - integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== - dependencies: - debug "^3.2.7" - -eslint-plugin-import@2.28.1: - version "2.28.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4" - integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== - dependencies: - array-includes "^3.1.6" - array.prototype.findlastindex "^1.2.2" - array.prototype.flat "^1.3.1" - array.prototype.flatmap "^1.3.1" - debug "^3.2.7" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.7" - eslint-module-utils "^2.8.0" - has "^1.0.3" - is-core-module "^2.13.0" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.fromentries "^2.0.6" - object.groupby "^1.0.0" - object.values "^1.1.6" - semver "^6.3.1" - tsconfig-paths "^3.14.2" - -eslint-plugin-no-only-tests@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.1.0.tgz#f38e4935c6c6c4842bf158b64aaa20c366fe171b" - integrity sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw== - -eslint-plugin-prettier@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" - integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-plugin-regexp@^1.14.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-regexp/-/eslint-plugin-regexp-1.15.0.tgz#2717cd4867418287b36d9569c72fca7d242c59b3" - integrity sha512-YEtQPfdudafU7RBIFci81R/Q1yErm0mVh3BkGnXD2Dk8DLwTFdc2ITYH1wCnHKim2gnHfPFgrkh+b2ozyyU7ag== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.4.0" - comment-parser "^1.1.2" - grapheme-splitter "^1.0.4" - jsdoctypeparser "^9.0.0" - refa "^0.11.0" - regexp-ast-analysis "^0.6.0" - scslre "^0.2.0" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@^8.38.0: - version "8.49.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.49.0.tgz#09d80a89bdb4edee2efcf6964623af1054bf6d42" - integrity sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "8.49.0" - "@humanwhocodes/config-array" "^0.11.11" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - 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.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - esm@^3.2.25: version "3.2.25" resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== -espree@^9.6.0, espree@^9.6.1: - 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.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" @@ -3616,17 +3081,12 @@ fast-check@3.13.0: dependencies: pure-rand "^6.0.0" -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: +fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== - -fast-glob@^3.2.11, fast-glob@^3.2.9: +fast-glob@^3.2.11: version "3.2.12" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== @@ -3647,11 +3107,6 @@ fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - fast-safe-stringify@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" @@ -3687,13 +3142,6 @@ fetch-mock@9.11.0: querystring "^0.2.0" whatwg-url "^6.5.0" -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - fill-keys@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/fill-keys/-/fill-keys-1.0.2.tgz#9a8fa36f4e8ad634e3bf6b4f3c8882551452eb20" @@ -3746,15 +3194,6 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -flat-cache@^3.0.4: - version "3.1.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.0.tgz#0e54ab4a1a60fe87e2946b6b00657f1c99e1af3f" - integrity sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew== - dependencies: - flatted "^3.2.7" - keyv "^4.5.3" - rimraf "^3.0.2" - flatted@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" @@ -3765,13 +3204,6 @@ follow-redirects@^1.14.9: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - for-in@^0.1.3: version "0.1.8" resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" @@ -3911,21 +3343,6 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" - -functions-have-names@^1.2.2, functions-have-names@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -3936,7 +3353,7 @@ get-caller-file@^2.0.1, 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.0.2: version "1.1.3" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== @@ -3945,16 +3362,6 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: has "^1.0.3" has-symbols "^1.0.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== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-proto "^1.0.1" - has-symbols "^1.0.3" - get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -3965,14 +3372,6 @@ get-stream@^6.0.0, get-stream@^6.0.1: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - getopts@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.3.0.tgz#71e5593284807e03e2427449d4f6712a268666f4" @@ -3992,13 +3391,6 @@ glob-parent@^5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - glob-to-regexp@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" @@ -4043,32 +3435,6 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.19.0: - version "13.21.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.21.0.tgz#163aae12f34ef502f5153cfbdd3600f36c63c571" - integrity sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg== - dependencies: - type-fest "^0.20.2" - -globalthis@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== - dependencies: - define-properties "^1.1.3" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - globby@^13.1.2: version "13.1.3" resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.3.tgz#f62baf5720bcb2c1330c8d4ef222ee12318563ff" @@ -4080,13 +3446,6 @@ globby@^13.1.2: merge2 "^1.4.1" slash "^4.0.0" -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" @@ -4097,16 +3456,6 @@ graceful-fs@^4.2.10, graceful-fs@^4.2.9: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -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== - gravatar-url@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/gravatar-url/-/gravatar-url-3.1.0.tgz#0cbeedab7c00a7bc9b627b3716e331359efcc999" @@ -4133,11 +3482,6 @@ hard-rejection@^2.1.0: resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -4148,30 +3492,11 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== - dependencies: - get-intrinsic "^1.1.1" - -has-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== - -has-symbols@^1.0.2, has-symbols@^1.0.3: +has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -4300,14 +3625,6 @@ ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== -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== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - import-local@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" @@ -4359,24 +3676,6 @@ ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -internal-slot@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.4.tgz#8551e7baf74a7a6ba5f749cfb16aa60722f0d6f3" - integrity sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ== - dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" - side-channel "^1.0.4" - -internal-slot@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" - integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== - dependencies: - get-intrinsic "^1.2.0" - has "^1.0.3" - side-channel "^1.0.4" - interpret@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" @@ -4397,45 +3696,16 @@ ipaddr.js@1.9.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" - integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.0" - is-typed-array "^1.1.10" - is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - is-buffer@^1.0.2, is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - is-core-module@^2.11.0: version "2.12.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" @@ -4443,13 +3713,6 @@ is-core-module@^2.11.0: dependencies: has "^1.0.3" -is-core-module@^2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" - integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== - dependencies: - has "^1.0.3" - is-core-module@^2.5.0: version "2.11.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" @@ -4464,13 +3727,6 @@ is-core-module@^2.9.0: dependencies: has "^1.0.3" -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - is-electron@2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.2.tgz#3778902a2044d76de98036f5dc58089ac4d80bb9" @@ -4501,7 +3757,7 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: +is-glob@^4.0.1, is-glob@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -4513,18 +3769,6 @@ is-lambda@^1.0.1: resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -4540,11 +3784,6 @@ is-path-cwd@^3.0.0: resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-3.0.0.tgz#889b41e55c8588b1eb2a96a61d05740a674521c7" integrity sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA== -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - is-path-inside@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-4.0.0.tgz#805aeb62c47c1b12fc3fd13bfb3ed1e7430071db" @@ -4572,21 +3811,6 @@ is-promise@^2.2.2: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -4602,54 +3826,21 @@ is-stream@^3.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - is-subset@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" integrity sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw== -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.10, is-typed-array@^1.1.9: - 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: - 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-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -5193,21 +4384,11 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== -jsdoctypeparser@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz#8c97e2fb69315eb274b0f01377eaa5c940bd7b26" - integrity sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw== - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" @@ -5237,11 +4418,6 @@ json-schema@0.4.0, json-schema@^0.4.0: resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -5256,13 +4432,6 @@ json2csv@^5.0.7: jsonparse "^1.3.1" lodash.get "^4.4.2" -json5@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" - integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== - dependencies: - minimist "^1.2.0" - json5@^2.2.1, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" @@ -5302,13 +4471,6 @@ keygrip@~1.1.0: dependencies: tsscmp "1.0.6" -keyv@^4.5.3: - 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" - kind-of@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" @@ -5373,14 +4535,6 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - lilconfig@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" @@ -5458,11 +4612,6 @@ lodash.isequal@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -5730,7 +4879,7 @@ min-indent@^1.0.1: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2, minimatch@^5.0.0, minimatch@^5.0.1, minimatch@^9.0.1: +minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^5.0.0, minimatch@^5.0.1, minimatch@^9.0.1: version "5.1.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== @@ -5909,11 +5058,6 @@ nan@^2.15.0, nan@^2.16.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== -natural-compare-lite@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -6021,67 +5165,15 @@ object-assign@^4, object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-inspect@^1.12.2, object-inspect@^1.9.0: - version "1.12.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" - integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== - object-inspect@^1.12.3: version "1.12.3" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.2, 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== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.entries@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" - integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -object.fromentries@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" - integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -object.groupby@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.0.tgz#cb29259cf90f37e7bac6437686c1ea8c916d12a9" - integrity sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.21.2" - get-intrinsic "^1.2.1" - -object.values@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" - integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" +object-inspect@^1.9.0: + version "1.12.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== obuf@~1.1.2: version "1.1.2" @@ -6134,18 +5226,6 @@ openapi-types@^12.0.0: resolved "https://registry.yarnpkg.com/openapi-types/-/openapi-types-12.1.3.tgz#471995eb26c4b97b7bd356aacf7b91b73e777dd3" integrity sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw== -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" - owasp-password-strength-test@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/owasp-password-strength-test/-/owasp-password-strength-test-1.3.0.tgz#4f629e42903e8f6d279b230d657ab61e58e44b12" @@ -6231,13 +5311,6 @@ packet-reader@1.0.0: resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74" integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - parse-database-url@^0.3.0, parse-database-url@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/parse-database-url/-/parse-database-url-0.3.0.tgz#369666321e927c9ade63cdfc1aaaf6fb37453d0d" @@ -6482,23 +5555,6 @@ postgres-range@^1.1.1: resolved "https://registry.yarnpkg.com/postgres-range/-/postgres-range-1.1.3.tgz#9ccd7b01ca2789eb3c2e0888b3184225fa859f76" integrity sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g== -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.1.tgz#4e1fd11c34e2421bc1da9aea9bd8127cd0a35efc" - integrity sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg== - pretty-format@^29.0.0, pretty-format@^29.3.1: version "29.3.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.3.1.tgz#1841cac822b02b4da8971dacb03e8a871b4722da" @@ -6744,13 +5800,6 @@ redent@^4.0.0: indent-string "^5.0.0" strip-indent "^4.0.0" -refa@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/refa/-/refa-0.11.0.tgz#07d57a9f5f3ee2dd58e0d145a6a489fda2591ed0" - integrity sha512-486O8/pQXwj9jV0mVvUnTsxq0uknpBnNJ0eCUhkZqJRQ8KutrT1PhzmumdCeM1hSBF2eMlFPmwECRER4IbKXlQ== - dependencies: - "@eslint-community/regexpp" "^4.5.0" - regenerator-runtime@^0.13.11: version "0.13.11" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" @@ -6761,32 +5810,6 @@ regenerator-runtime@^0.14.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== -regexp-ast-analysis@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/regexp-ast-analysis/-/regexp-ast-analysis-0.6.0.tgz#c0b648728c85d266a409ce00a6440c01c9834c61" - integrity sha512-OLxjyjPkVH+rQlBLb1I/P/VTmamSjGkvN5PTV5BXP432k3uVz727J7H29GA5IFiY0m7e1xBN7049Wn59FY3DEQ== - dependencies: - "@eslint-community/regexpp" "^4.5.0" - refa "^0.11.0" - -regexp.prototype.flags@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" - integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - functions-have-names "^1.2.2" - -regexp.prototype.flags@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" - integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - functions-have-names "^1.2.3" - request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" @@ -6835,11 +5858,6 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - resolve-from@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" @@ -6850,7 +5868,7 @@ resolve.exports@^2.0.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.0.tgz#c1a0028c2d166ec2fbf7d0644584927e76e7400e" integrity sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg== -resolve@^1.1.6, resolve@^1.11.1, resolve@^1.22.1: +resolve@^1.1.6, resolve@^1.11.1: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -6955,16 +5973,6 @@ rxjs@^7.8.1: 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.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -6980,15 +5988,6 @@ safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.2: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-regex-test@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - is-regex "^1.1.4" - "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -7001,16 +6000,7 @@ sanitize-filename@^1.6.3: dependencies: truncate-utf8-bytes "^1.0.0" -scslre@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/scslre/-/scslre-0.2.0.tgz#b604eedbab76f87003738d00de44d7601a78609e" - integrity sha512-4hc49fUMmX3jM0XdFUAPBrs1xwEcdHa0KyjEsjFs+Zfc66mpFpq5YmRgDtl+Ffo6AtJIilfei+yKw8fUn3N88w== - dependencies: - "@eslint-community/regexpp" "^4.5.0" - refa "^0.11.0" - regexp-ast-analysis "^0.6.0" - -semver@^5.0.3, semver@^5.3.0, semver@^6.0.0, semver@^6.3.0, semver@^6.3.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: +semver@^5.0.3, semver@^5.3.0, semver@^6.0.0, semver@^6.3.0, semver@^6.3.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: 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== @@ -7372,33 +6362,6 @@ string-width@^5.0.0, string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string.prototype.trim@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" - integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -string.prototype.trimend@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" - integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -string.prototype.trimstart@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" - integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" @@ -7425,11 +6388,6 @@ strip-ansi@^7.0.1: dependencies: ansi-regex "^6.0.1" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - strip-bom@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" @@ -7573,11 +6531,6 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - through2@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -7697,21 +6650,6 @@ tsc-watch@6.0.4: ps-tree "^1.2.0" string-argv "^0.3.1" -tsconfig-paths@^3.14.2: - version "3.14.2" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" - integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - tslib@^2.1.0: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" @@ -7722,13 +6660,6 @@ tsscmp@1.0.6: resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -7750,23 +6681,11 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - type-fest@^0.21.3: version "0.21.3" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" @@ -7800,45 +6719,6 @@ 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" - integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== - dependencies: - call-bind "^1.0.2" - for-each "^0.3.3" - is-typed-array "^1.1.9" - typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -7856,16 +6736,6 @@ uid-safe@~2.1.5: dependencies: random-bytes "~1.0.0" -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - unique-filename@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" @@ -8050,33 +6920,11 @@ when@~2.0.1: resolved "https://registry.yarnpkg.com/when/-/when-2.0.1.tgz#8d872fe15e68424c91b4b724e848e0807dab6642" integrity sha512-h0l57vFJ4YQe1/U+C+oqBfAoopxXABUm6VqWM0x2gg4pARru4IUWo/PAxyawWgbGtndXrZbA41EzsfxacZVEXQ== -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== -which-typed-array@^1.1.10, which-typed-array@^1.1.11: - 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" - which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"