diff --git a/packages/core/package.json b/packages/core/package.json index 7868db4d3..f925d10d9 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -37,13 +37,14 @@ "module-alias": "^2.2.2", "nanoid": "^3.1.23", "oidc-provider": "^7.4.1", + "p-retry": "^4.6.1", "slonik": "^23.8.3", "slonik-interceptor-preset": "^1.2.10", "zod": "^3.8.1" }, "devDependencies": { - "@logto/eslint-config": "^0.1.3", - "@logto/ts-config": "^0.1.3", + "@logto/eslint-config": "^0.2.0", + "@logto/ts-config": "^0.2.0", "@types/jest": "^27.0.1", "@types/koa": "^2.13.3", "@types/koa-logger": "^3.1.1", diff --git a/packages/core/src/i18n/detect-language.ts b/packages/core/src/i18n/detect-language.ts index 24c5efed0..22eb8f1a9 100644 --- a/packages/core/src/i18n/detect-language.ts +++ b/packages/core/src/i18n/detect-language.ts @@ -40,7 +40,8 @@ const detectLanguageFromHeaders = (headers: IncomingHttpHeaders): string[] => ?.split(',') .map((string) => resolveLanguage(string)) .filter((value): value is NonNullable => Boolean(value)) - .sort((a, b) => b[1] - a[1]) // LOG-81: `.sort()` is a mutation, consider ban it later + .slice() + .sort((a, b) => b[1] - a[1]) .map(([locale]) => locale) ?? []; const detectLanguage = ( diff --git a/packages/core/src/middleware/koa-guard.ts b/packages/core/src/middleware/koa-guard.ts index c8e6e4ebf..d6a231e62 100644 --- a/packages/core/src/middleware/koa-guard.ts +++ b/packages/core/src/middleware/koa-guard.ts @@ -90,6 +90,8 @@ export default function koaGuard< return guard(ctx, next); }; + // Intended + // eslint-disable-next-line @silverhand/fp/no-mutation guardMiddleware.config = { query, body, params }; return guardMiddleware; diff --git a/packages/core/src/middleware/koa-ui-proxy.ts b/packages/core/src/middleware/koa-ui-proxy.ts index 44a39537a..752520b20 100644 --- a/packages/core/src/middleware/koa-ui-proxy.ts +++ b/packages/core/src/middleware/koa-ui-proxy.ts @@ -24,20 +24,20 @@ export default function koaUIProxy< }); const staticProxy: Middleware = serveStatic(PATH_TO_UI_DIST); - return async (context, next) => { + return async (ctx, next) => { // Route has been handled by one of mounted apps - if (mountedApps.some((app) => context.request.path.startsWith(`/${app}`))) { + if (mountedApps.some((app) => ctx.request.path.startsWith(`/${app}`))) { return next(); } if (!isProduction) { - return developmentProxy(context, next); + return developmentProxy(ctx, next); } - if (!uiDistFiles.some((file) => context.request.path.startsWith(`/${file}`))) { - context.request.path = '/'; + if (!uiDistFiles.some((file) => ctx.request.path.startsWith(`/${file}`))) { + ctx.request.path = '/'; } - return staticProxy(context, next); + return staticProxy(ctx, next); }; } diff --git a/packages/core/src/routes/user.ts b/packages/core/src/routes/user.ts index 622f77ce3..024035704 100644 --- a/packages/core/src/routes/user.ts +++ b/packages/core/src/routes/user.ts @@ -1,5 +1,6 @@ import { PasswordEncryptionMethod } from '@logto/schemas'; import { nanoid } from 'nanoid'; +import pRetry from 'p-retry'; import { object, string } from 'zod'; import RequestError from '@/errors/RequestError'; @@ -12,17 +13,20 @@ import { AnonymousRouter } from './types'; const userId = buildIdGenerator(12); -const generateUserId = async (maxRetries = 500) => { - for (let i = 0; i < maxRetries; ++i) { - const id = userId(); - // eslint-disable-next-line no-await-in-loop - if (!(await hasUserWithId(id))) { - return id; - } - } +// LOG-89: Add unit tests +const generateUserId = async (retries = 500) => + pRetry( + async () => { + const id = userId(); - throw new Error('Cannot generate user ID in reasonable retries'); -}; + if (!(await hasUserWithId(id))) { + return id; + } + + throw new Error('Cannot generate user ID in reasonable retries'); + }, + { retries } + ); export default function userRoutes(router: T) { router.post( diff --git a/packages/core/src/utils/password.ts b/packages/core/src/utils/password.ts index 3a0c07f1a..9add2bde7 100644 --- a/packages/core/src/utils/password.ts +++ b/packages/core/src/utils/password.ts @@ -6,6 +6,7 @@ import { number, string } from 'zod'; import assert from '@/utils/assert'; import { assertEnv } from './env'; +import repeat from './repeat'; const peppers = string() .array() @@ -31,13 +32,11 @@ export const encryptPassword = ( assert(pepper, 'password.pepper_not_found'); - let result = password; - - for (let i = 0; i < iterationCount; ++i) { - result = createHash('sha256') - .update(salt + result + pepper) - .digest('hex'); - } + const result = repeat(iterationCount, password, (password) => + createHash('sha256') + .update(salt + password + pepper) + .digest('hex') + ); return result; }; diff --git a/packages/core/src/utils/repeat.ts b/packages/core/src/utils/repeat.ts new file mode 100644 index 000000000..e8e93e632 --- /dev/null +++ b/packages/core/src/utils/repeat.ts @@ -0,0 +1,15 @@ +// LOG-79: Add this into `essentials` package +// Disable FP rules here to use the performant approach while keep the function itself "FP" +/* eslint-disable @silverhand/fp/no-let, @silverhand/fp/no-mutation */ +const repeat = (times: number, initial: T, iterate: (accumulator: T) => T) => { + let result = initial; + + while (times--) { + result = iterate(result); + } + + return result; +}; +/* eslint-enable @silverhand/fp/no-let, @silverhand/fp/no-mutation */ + +export default repeat; diff --git a/packages/phrases/package.json b/packages/phrases/package.json index 33f05e65f..a4e73c2d1 100644 --- a/packages/phrases/package.json +++ b/packages/phrases/package.json @@ -25,8 +25,8 @@ "url": "https://github.com/logto-io/logto/issues" }, "devDependencies": { - "@logto/eslint-config": "^0.1.3", - "@logto/ts-config": "^0.1.3", + "@logto/eslint-config": "^0.2.0", + "@logto/ts-config": "^0.2.0", "eslint": "^7.32.0", "lint-staged": "^11.1.1", "prettier": "^2.3.2", diff --git a/packages/schemas/package.json b/packages/schemas/package.json index c0abe6116..90dabdac4 100644 --- a/packages/schemas/package.json +++ b/packages/schemas/package.json @@ -21,9 +21,9 @@ "node": ">=14.15.0" }, "devDependencies": { - "@logto/eslint-config": "^0.1.3", + "@logto/eslint-config": "^0.2.0", "@logto/essentials": "^1.1.0-rc.2", - "@logto/ts-config": "^0.1.3", + "@logto/ts-config": "^0.2.0", "@types/lodash.uniq": "^4.5.6", "@types/node": "14", "@types/pluralize": "^0.0.29", diff --git a/packages/schemas/src/gen/index.ts b/packages/schemas/src/gen/index.ts index 4e3bf48f3..153467f71 100644 --- a/packages/schemas/src/gen/index.ts +++ b/packages/schemas/src/gen/index.ts @@ -133,6 +133,8 @@ const generate = async () => { // Generate DB entry types await Promise.all( generated.map(async ([file, { tables }]) => { + // LOG-88 Need refactor, disable mutation rules for now. + /* eslint-disable @silverhand/fp/no-mutating-methods */ const tsTypes: string[] = []; const customTypes: string[] = []; const tableWithTypes = tables.map(({ fields, ...rest }) => ({ @@ -155,6 +157,7 @@ const generate = async () => { if (tableWithTypes.length > 0) { tsTypes.push('GeneratedSchema', 'Guard'); } + /* eslint-enable @silverhand/fp/no-mutating-methods */ const importZod = conditionalString( tableWithTypes.length > 0 && "import { z } from 'zod';\n\n" diff --git a/packages/ui/package.json b/packages/ui/package.json index 55db53e3e..9e587f6c7 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -31,10 +31,10 @@ "devDependencies": { "@babel/core": "^7.14.6", "@jest/types": "^27.0.6", - "@logto/eslint-config": "^0.1.3", - "@logto/eslint-config-react": "^0.1.3", - "@logto/ts-config": "^0.1.3", - "@logto/ts-config-react": "^0.1.3", + "@logto/eslint-config": "^0.2.0", + "@logto/eslint-config-react": "^0.2.0", + "@logto/ts-config": "^0.2.0", + "@logto/ts-config-react": "^0.2.0", "@testing-library/react": "^12.0.0", "@types/jest": "^26.0.24", "@types/react": "^17.0.14", diff --git a/packages/ui/src/jest.setup.ts b/packages/ui/src/jest.setup.ts index 49b9cc863..6ce52b29f 100644 --- a/packages/ui/src/jest.setup.ts +++ b/packages/ui/src/jest.setup.ts @@ -1,5 +1,5 @@ // https://jestjs.io/docs/manual-mocks#mocking-methods-which-are-not-implemented-in-jsdom - +// eslint-disable-next-line @silverhand/fp/no-mutating-methods Object.defineProperty(window, 'matchMedia', { writable: true, value: jest.fn().mockImplementation((query) => ({ diff --git a/packages/ui/src/pages/Consent/index.tsx b/packages/ui/src/pages/Consent/index.tsx index 29026c034..856892a71 100644 --- a/packages/ui/src/pages/Consent/index.tsx +++ b/packages/ui/src/pages/Consent/index.tsx @@ -8,7 +8,7 @@ const Consent = () => { useEffect(() => { const autoConsent = async () => { - window.location.href = (await consent()).redirectTo; + window.location.assign((await consent()).redirectTo); }; void autoConsent(); diff --git a/packages/ui/src/pages/Register/index.tsx b/packages/ui/src/pages/Register/index.tsx index 7443a3cce..405280a1a 100644 --- a/packages/ui/src/pages/Register/index.tsx +++ b/packages/ui/src/pages/Register/index.tsx @@ -29,7 +29,7 @@ const Register: FC = () => { useEffect(() => { if (result?.redirectTo) { - window.location.href = result.redirectTo; + window.location.assign(result.redirectTo); } }, [result]); diff --git a/packages/ui/src/pages/SignIn/index.tsx b/packages/ui/src/pages/SignIn/index.tsx index b063f5024..9f1210d59 100644 --- a/packages/ui/src/pages/SignIn/index.tsx +++ b/packages/ui/src/pages/SignIn/index.tsx @@ -30,7 +30,7 @@ const SignIn: FC = () => { useEffect(() => { if (result?.redirectTo) { - window.location.href = result.redirectTo; + window.location.assign(result.redirectTo); } }, [result]); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7c65775b8..62bd0e22a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,11 +20,11 @@ importers: packages/core: specifiers: - '@logto/eslint-config': ^0.1.3 + '@logto/eslint-config': ^0.2.0 '@logto/essentials': ^1.1.0-rc.2 '@logto/phrases': ^0.1.0 '@logto/schemas': ^0.1.0 - '@logto/ts-config': ^0.1.3 + '@logto/ts-config': ^0.2.0 '@types/jest': ^27.0.1 '@types/koa': ^2.13.3 '@types/koa-logger': ^3.1.1 @@ -57,6 +57,7 @@ importers: nanoid: ^3.1.23 oidc-provider: ^7.4.1 openapi-types: ^9.1.0 + p-retry: ^4.6.1 prettier: ^2.3.2 slonik: ^23.8.3 slonik-interceptor-preset: ^1.2.10 @@ -86,12 +87,13 @@ importers: module-alias: 2.2.2 nanoid: 3.1.23 oidc-provider: 7.5.4 + p-retry: 4.6.1 slonik: 23.8.5 slonik-interceptor-preset: 1.2.10 zod: 3.8.1 devDependencies: - '@logto/eslint-config': 0.1.3_aff669e8eb0d21fc4e2068e6112ef4d0 - '@logto/ts-config': 0.1.3_typescript@4.3.5 + '@logto/eslint-config': 0.2.0_aff669e8eb0d21fc4e2068e6112ef4d0 + '@logto/ts-config': 0.2.0_typescript@4.3.5 '@types/jest': 27.0.1 '@types/koa': 2.13.4 '@types/koa-logger': 3.1.1 @@ -113,15 +115,15 @@ importers: packages/phrases: specifiers: - '@logto/eslint-config': ^0.1.3 - '@logto/ts-config': ^0.1.3 + '@logto/eslint-config': ^0.2.0 + '@logto/ts-config': ^0.2.0 eslint: ^7.32.0 lint-staged: ^11.1.1 prettier: ^2.3.2 typescript: ^4.3.5 devDependencies: - '@logto/eslint-config': 0.1.3_aff669e8eb0d21fc4e2068e6112ef4d0 - '@logto/ts-config': 0.1.3_typescript@4.3.5 + '@logto/eslint-config': 0.2.0_aff669e8eb0d21fc4e2068e6112ef4d0 + '@logto/ts-config': 0.2.0_typescript@4.3.5 eslint: 7.32.0 lint-staged: 11.1.1 prettier: 2.3.2 @@ -129,10 +131,10 @@ importers: packages/schemas: specifiers: - '@logto/eslint-config': ^0.1.3 + '@logto/eslint-config': ^0.2.0 '@logto/essentials': ^1.1.0-rc.2 '@logto/phrases': ^0.1.0 - '@logto/ts-config': ^0.1.3 + '@logto/ts-config': ^0.2.0 '@types/lodash.uniq': ^4.5.6 '@types/node': '14' '@types/pluralize': ^0.0.29 @@ -149,9 +151,9 @@ importers: '@logto/phrases': link:../phrases zod: 3.8.1 devDependencies: - '@logto/eslint-config': 0.1.3_aff669e8eb0d21fc4e2068e6112ef4d0 + '@logto/eslint-config': 0.2.0_aff669e8eb0d21fc4e2068e6112ef4d0 '@logto/essentials': 1.1.0-rc.2 - '@logto/ts-config': 0.1.3_typescript@4.3.5 + '@logto/ts-config': 0.2.0_typescript@4.3.5 '@types/lodash.uniq': 4.5.6 '@types/node': 14.17.6 '@types/pluralize': 0.0.29 @@ -168,12 +170,12 @@ importers: specifiers: '@babel/core': ^7.14.6 '@jest/types': ^27.0.6 - '@logto/eslint-config': ^0.1.3 - '@logto/eslint-config-react': ^0.1.3 + '@logto/eslint-config': ^0.2.0 + '@logto/eslint-config-react': ^0.2.0 '@logto/phrases': ^0.1.0 '@logto/schemas': ^0.1.0 - '@logto/ts-config': ^0.1.3 - '@logto/ts-config-react': ^0.1.3 + '@logto/ts-config': ^0.2.0 + '@logto/ts-config-react': ^0.2.0 '@testing-library/react': ^12.0.0 '@types/jest': ^26.0.24 '@types/react': ^17.0.14 @@ -218,10 +220,10 @@ importers: devDependencies: '@babel/core': 7.14.8 '@jest/types': 27.0.6 - '@logto/eslint-config': 0.1.3_aff669e8eb0d21fc4e2068e6112ef4d0 - '@logto/eslint-config-react': 0.1.3_8e322dd0e62beacbfb7b944fe3d15c43 - '@logto/ts-config': 0.1.3_typescript@4.3.5 - '@logto/ts-config-react': 0.1.3_typescript@4.3.5 + '@logto/eslint-config': 0.2.0_aff669e8eb0d21fc4e2068e6112ef4d0 + '@logto/eslint-config-react': 0.2.0_8e322dd0e62beacbfb7b944fe3d15c43 + '@logto/ts-config': 0.2.0_typescript@4.3.5 + '@logto/ts-config-react': 0.2.0_typescript@4.3.5 '@testing-library/react': 12.0.0_react-dom@17.0.2+react@17.0.2 '@types/jest': 26.0.24 '@types/react': 17.0.15 @@ -270,6 +272,11 @@ packages: engines: {node: '>=6.9.0'} dev: true + /@babel/compat-data/7.15.0: + resolution: {integrity: sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/core/7.14.8: resolution: {integrity: sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q==} engines: {node: '>=6.9.0'} @@ -293,14 +300,37 @@ packages: - supports-color dev: true - /@babel/eslint-parser/7.14.7_@babel+core@7.14.8+eslint@7.32.0: - resolution: {integrity: sha512-6WPwZqO5priAGIwV6msJcdc9TsEPzYeYdS/Xuoap+/ihkgN6dzHp2bcAAwyWZ5bLzk0vvjDmKvRwkqNaiJ8BiQ==} + /@babel/core/7.15.5: + resolution: {integrity: sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.14.5 + '@babel/generator': 7.15.4 + '@babel/helper-compilation-targets': 7.15.4_@babel+core@7.15.5 + '@babel/helper-module-transforms': 7.15.4 + '@babel/helpers': 7.15.4 + '@babel/parser': 7.15.5 + '@babel/template': 7.15.4 + '@babel/traverse': 7.15.4 + '@babel/types': 7.15.4 + convert-source-map: 1.8.0 + debug: 4.3.2 + gensync: 1.0.0-beta.2 + json5: 2.2.0 + semver: 6.3.0 + source-map: 0.5.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/eslint-parser/7.15.4_@babel+core@7.15.5+eslint@7.32.0: + resolution: {integrity: sha512-hPMIAmGNbmQzXJIo2P43Zj9UhRmGev5f9nqdBFOWNGDGh6XKmjby79woBvg6y0Jur6yRfQBneDbUQ8ZVc1krFw==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/core': '>=7.11.0' eslint: '>=7.5.0' dependencies: - '@babel/core': 7.14.8 + '@babel/core': 7.15.5 eslint: 7.32.0 eslint-scope: 5.1.1 eslint-visitor-keys: 2.1.0 @@ -316,6 +346,15 @@ packages: source-map: 0.5.7 dev: true + /@babel/generator/7.15.4: + resolution: {integrity: sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.15.4 + jsesc: 2.5.2 + source-map: 0.5.7 + dev: true + /@babel/helper-annotate-as-pure/7.14.5: resolution: {integrity: sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==} engines: {node: '>=6.9.0'} @@ -344,6 +383,19 @@ packages: semver: 6.3.0 dev: true + /@babel/helper-compilation-targets/7.15.4_@babel+core@7.15.5: + resolution: {integrity: sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.15.0 + '@babel/core': 7.15.5 + '@babel/helper-validator-option': 7.14.5 + browserslist: 4.17.0 + semver: 6.3.0 + dev: true + /@babel/helper-create-class-features-plugin/7.14.8_@babel+core@7.14.8: resolution: {integrity: sha512-bpYvH8zJBWzeqi1o+co8qOrw+EXzQ/0c74gVmY205AWXy9nifHrOg77y+1zwxX5lXE7Icq4sPlSQ4O2kWBrteQ==} engines: {node: '>=6.9.0'} @@ -406,6 +458,15 @@ packages: '@babel/types': 7.14.8 dev: true + /@babel/helper-function-name/7.15.4: + resolution: {integrity: sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-get-function-arity': 7.15.4 + '@babel/template': 7.15.4 + '@babel/types': 7.15.4 + dev: true + /@babel/helper-get-function-arity/7.14.5: resolution: {integrity: sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==} engines: {node: '>=6.9.0'} @@ -413,6 +474,13 @@ packages: '@babel/types': 7.14.8 dev: true + /@babel/helper-get-function-arity/7.15.4: + resolution: {integrity: sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.15.4 + dev: true + /@babel/helper-hoist-variables/7.14.5: resolution: {integrity: sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==} engines: {node: '>=6.9.0'} @@ -420,6 +488,13 @@ packages: '@babel/types': 7.14.8 dev: true + /@babel/helper-hoist-variables/7.15.4: + resolution: {integrity: sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.15.4 + dev: true + /@babel/helper-member-expression-to-functions/7.14.7: resolution: {integrity: sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==} engines: {node: '>=6.9.0'} @@ -427,6 +502,13 @@ packages: '@babel/types': 7.14.8 dev: true + /@babel/helper-member-expression-to-functions/7.15.4: + resolution: {integrity: sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.15.4 + dev: true + /@babel/helper-module-imports/7.14.5: resolution: {integrity: sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==} engines: {node: '>=6.9.0'} @@ -434,6 +516,13 @@ packages: '@babel/types': 7.14.8 dev: true + /@babel/helper-module-imports/7.15.4: + resolution: {integrity: sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.15.4 + dev: true + /@babel/helper-module-transforms/7.14.8: resolution: {integrity: sha512-RyE+NFOjXn5A9YU1dkpeBaduagTlZ0+fccnIcAGbv1KGUlReBj7utF7oEth8IdIBQPcux0DDgW5MFBH2xu9KcA==} engines: {node: '>=6.9.0'} @@ -450,6 +539,22 @@ packages: - supports-color dev: true + /@babel/helper-module-transforms/7.15.4: + resolution: {integrity: sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-module-imports': 7.15.4 + '@babel/helper-replace-supers': 7.15.4 + '@babel/helper-simple-access': 7.15.4 + '@babel/helper-split-export-declaration': 7.15.4 + '@babel/helper-validator-identifier': 7.14.9 + '@babel/template': 7.15.4 + '@babel/traverse': 7.15.4 + '@babel/types': 7.15.4 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-optimise-call-expression/7.14.5: resolution: {integrity: sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==} engines: {node: '>=6.9.0'} @@ -457,6 +562,13 @@ packages: '@babel/types': 7.14.8 dev: true + /@babel/helper-optimise-call-expression/7.15.4: + resolution: {integrity: sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.15.4 + dev: true + /@babel/helper-plugin-utils/7.14.5: resolution: {integrity: sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==} engines: {node: '>=6.9.0'} @@ -485,6 +597,18 @@ packages: - supports-color dev: true + /@babel/helper-replace-supers/7.15.4: + resolution: {integrity: sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-member-expression-to-functions': 7.15.4 + '@babel/helper-optimise-call-expression': 7.15.4 + '@babel/traverse': 7.15.4 + '@babel/types': 7.15.4 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-simple-access/7.14.8: resolution: {integrity: sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==} engines: {node: '>=6.9.0'} @@ -492,6 +616,13 @@ packages: '@babel/types': 7.14.8 dev: true + /@babel/helper-simple-access/7.15.4: + resolution: {integrity: sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.15.4 + dev: true + /@babel/helper-skip-transparent-expression-wrappers/7.14.5: resolution: {integrity: sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ==} engines: {node: '>=6.9.0'} @@ -506,10 +637,22 @@ packages: '@babel/types': 7.14.8 dev: true + /@babel/helper-split-export-declaration/7.15.4: + resolution: {integrity: sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.15.4 + dev: true + /@babel/helper-validator-identifier/7.14.8: resolution: {integrity: sha512-ZGy6/XQjllhYQrNw/3zfWRwZCTVSiBLZ9DHVZxn9n2gip/7ab8mv2TWlKPIBk26RwedCBoWdjLmn+t9na2Gcow==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier/7.14.9: + resolution: {integrity: sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-validator-option/7.14.5: resolution: {integrity: sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==} engines: {node: '>=6.9.0'} @@ -538,6 +681,17 @@ packages: - supports-color dev: true + /@babel/helpers/7.15.4: + resolution: {integrity: sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.15.4 + '@babel/traverse': 7.15.4 + '@babel/types': 7.15.4 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/highlight/7.14.5: resolution: {integrity: sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==} engines: {node: '>=6.9.0'} @@ -552,6 +706,12 @@ packages: hasBin: true dev: true + /@babel/parser/7.15.5: + resolution: {integrity: sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg==} + engines: {node: '>=6.0.0'} + hasBin: true + dev: true + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.14.5_@babel+core@7.14.8: resolution: {integrity: sha512-ZoJS2XCKPBfTmL122iP6NM9dOg+d4lc9fFk3zxc8iDjvt8Pk4+TlsHSKhIPf6X+L5ORCdBzqMZDjL/WHj7WknQ==} engines: {node: '>=6.9.0'} @@ -1497,6 +1657,15 @@ packages: '@babel/types': 7.14.8 dev: true + /@babel/template/7.15.4: + resolution: {integrity: sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.14.5 + '@babel/parser': 7.15.5 + '@babel/types': 7.15.4 + dev: true + /@babel/traverse/7.14.8: resolution: {integrity: sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg==} engines: {node: '>=6.9.0'} @@ -1514,6 +1683,23 @@ packages: - supports-color dev: true + /@babel/traverse/7.15.4: + resolution: {integrity: sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.14.5 + '@babel/generator': 7.15.4 + '@babel/helper-function-name': 7.15.4 + '@babel/helper-hoist-variables': 7.15.4 + '@babel/helper-split-export-declaration': 7.15.4 + '@babel/parser': 7.15.5 + '@babel/types': 7.15.4 + debug: 4.3.2 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/types/7.14.8: resolution: {integrity: sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q==} engines: {node: '>=6.9.0'} @@ -1521,6 +1707,14 @@ packages: '@babel/helper-validator-identifier': 7.14.8 to-fast-properties: 2.0.0 + /@babel/types/7.15.4: + resolution: {integrity: sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.14.9 + to-fast-properties: 2.0.0 + dev: true + /@bcoe/v8-coverage/0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true @@ -2792,14 +2986,14 @@ packages: write-file-atomic: 3.0.3 dev: true - /@logto/eslint-config-react/0.1.3_8e322dd0e62beacbfb7b944fe3d15c43: - resolution: {integrity: sha512-TGQ10/SPpT18KgL9oqX1YDeS3JPnaUdAVViXps+CaDNfuoIkStytnLKKeNqt4Jb9YeEo69345zsk0pdFoERoMw==} + /@logto/eslint-config-react/0.2.0_8e322dd0e62beacbfb7b944fe3d15c43: + resolution: {integrity: sha512-GN+0Sz9CqQMcGh2mPT3OWnLrPRtG5M7/yJA34ss9z3BXPkoUJku43h3zuCc9JRok8fvLx7KEM7SRP+KpUd6Mmg==} peerDependencies: stylelint: ^13.13.1 dependencies: - '@logto/eslint-config': 0.1.3_aff669e8eb0d21fc4e2068e6112ef4d0 - eslint-config-xo-react: 0.25.0_34cd3168eeae4de23db8343b5dfd9fdd - eslint-plugin-react: 7.25.0_eslint@7.32.0 + '@logto/eslint-config': 0.2.0_aff669e8eb0d21fc4e2068e6112ef4d0 + eslint-config-xo-react: 0.25.0_cf053d4ca6fd1617a5247de768e0eb43 + eslint-plugin-react: 7.25.1_eslint@7.32.0 eslint-plugin-react-hooks: 4.2.0_eslint@7.32.0 stylelint: 13.13.1 stylelint-config-xo-scss: 0.14.0_stylelint@13.13.1 @@ -2810,20 +3004,21 @@ packages: - typescript dev: true - /@logto/eslint-config/0.1.3_aff669e8eb0d21fc4e2068e6112ef4d0: - resolution: {integrity: sha512-Pv7sZHX/blbACaCzeg5ZxD6QNPg0J8wirwhyONVvAtiVPvIhCuIuygJF4xqhsuXUTl4ebEycbHPhbJHQGZRTTQ==} + /@logto/eslint-config/0.2.0_aff669e8eb0d21fc4e2068e6112ef4d0: + resolution: {integrity: sha512-KD5CQR4Xn0FwQCguml+JbKSdAgO9PpIjjs1rfgebTh8QRdLepLPZw+hSvI8UfB8Y1ZG7eXPh6o9hx7wuCTCung==} engines: {node: '>=14.15.0'} peerDependencies: eslint: ^7.32.0 prettier: ^2.3.2 typescript: ^4.3.5 dependencies: - '@typescript-eslint/eslint-plugin': 4.29.3_fd14c0002fbbfb85b8a0070d0dffb93d - '@typescript-eslint/parser': 4.29.3_eslint@7.32.0+typescript@4.3.5 + '@silverhand/eslint-plugin-fp': 2.4.1_eslint@7.32.0 + '@typescript-eslint/eslint-plugin': 4.31.0_d1dd20e6bac64435251dbfdf7965a8a7 + '@typescript-eslint/parser': 4.31.0_eslint@7.32.0+typescript@4.3.5 eslint: 7.32.0 eslint-config-prettier: 8.3.0_eslint@7.32.0 eslint-config-xo: 0.37.0_eslint@7.32.0 - eslint-config-xo-typescript: 0.43.0_54b83acd6dcf1e775af2568e1200082a + eslint-config-xo-typescript: 0.43.0_59b8c71ec84636ff235ea58edac960f4 eslint-import-resolver-typescript: 2.4.0_b7a4de75e7d0094cbe979e30a9a325ab eslint-plugin-consistent-default-export-name: 0.0.7 eslint-plugin-eslint-comments: 3.2.0_eslint@7.32.0 @@ -2846,18 +3041,18 @@ packages: lodash.orderby: 4.6.0 lodash.pick: 4.4.0 - /@logto/ts-config-react/0.1.3_typescript@4.3.5: - resolution: {integrity: sha512-whl0l8jRwSSBfoJ6kV1Kx0zvxvkPlf3BhHlC3u68HsxmK2Z0VJi+aIM/uaJ6pQfsMTTayEVmVAE2mZBHV1ez3g==} + /@logto/ts-config-react/0.2.0_typescript@4.3.5: + resolution: {integrity: sha512-cs2s9zsbn9pJ84sJJSjpyU8k71g7z8qob0d23TSDrrYQ2xMEjE1Lnja3SfZjhXGlwhgAHV5bDxuGWnbXHUGXlA==} engines: {node: '>=14.15.0'} peerDependencies: typescript: ^4.3.5 dependencies: - '@logto/ts-config': 0.1.3_typescript@4.3.5 + '@logto/ts-config': 0.2.0_typescript@4.3.5 typescript: 4.3.5 dev: true - /@logto/ts-config/0.1.3_typescript@4.3.5: - resolution: {integrity: sha512-AN3RBa2P0zVtRhwvLfHbUdco1II421iwHYAnshlqpKSbnu++lnYGfA+EYg6p5F6bKaQ8beYRakKqBUlVDtyGug==} + /@logto/ts-config/0.2.0_typescript@4.3.5: + resolution: {integrity: sha512-2fXZG5lv2mvAB+Yy/aMcdxs6EZDXK39aULUzQfsEZSCNRihleXXAkOySgqemPeImB+CEM8RYXTp70D9VpKB1Aw==} engines: {node: '>=14.15.0'} peerDependencies: typescript: ^4.3.5 @@ -3081,6 +3276,19 @@ packages: webpack-dev-server: 3.11.2_webpack@4.46.0 dev: true + /@silverhand/eslint-plugin-fp/2.4.1_eslint@7.32.0: + resolution: {integrity: sha512-AI89umZbXqK4s1rjB8MAmiNbrOBUzM0jmAVlYLFrS0tLYwKptSg5SeCBU57LbmZcdJd8IGzOqGPgln294OiDbQ==} + engines: {node: '>=14.15.0'} + peerDependencies: + eslint: ^7.32.0 + dependencies: + create-eslint-index: 1.0.0 + eslint: 7.32.0 + eslint-ast-utils: 1.1.0 + import-modules: 2.1.0 + lodash: 4.17.21 + dev: true + /@sindresorhus/is/4.0.1: resolution: {integrity: sha512-Qm9hBEBu18wt1PO2flE7LPb30BHMQt1eQgbV76YntdNk73XZGpn3izvGTYxbGgzXKgbCjiia0uxTd3aTNQrY/g==} engines: {node: '>=10'} @@ -3350,6 +3558,10 @@ packages: resolution: {integrity: sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg==} dev: true + /@types/json-schema/7.0.9: + resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==} + dev: true + /@types/json5/0.0.29: resolution: {integrity: sha1-7ihweulOEdK4J7y+UnC86n8+ce4=} dev: true @@ -3531,6 +3743,10 @@ packages: '@types/node': 16.4.6 dev: false + /@types/retry/0.12.1: + resolution: {integrity: sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==} + dev: false + /@types/scheduler/0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} dev: true @@ -3603,8 +3819,8 @@ packages: '@types/yargs-parser': 20.2.1 dev: true - /@typescript-eslint/eslint-plugin/4.29.3_fd14c0002fbbfb85b8a0070d0dffb93d: - resolution: {integrity: sha512-tBgfA3K/3TsZY46ROGvoRxQr1wBkclbVqRQep97MjVHJzcRBURRY3sNFqLk0/Xr//BY5hM9H2p/kp+6qim85SA==} + /@typescript-eslint/eslint-plugin/4.31.0_d1dd20e6bac64435251dbfdf7965a8a7: + resolution: {integrity: sha512-iPKZTZNavAlOhfF4gymiSuUkgLne/nh5Oz2/mdiUmuZVD42m9PapnCnzjxuDsnpnbH3wT5s2D8bw6S39TC6GNw==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: '@typescript-eslint/parser': ^4.0.0 @@ -3614,9 +3830,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 4.29.3_eslint@7.32.0+typescript@4.3.5 - '@typescript-eslint/parser': 4.29.3_eslint@7.32.0+typescript@4.3.5 - '@typescript-eslint/scope-manager': 4.29.3 + '@typescript-eslint/experimental-utils': 4.31.0_eslint@7.32.0+typescript@4.3.5 + '@typescript-eslint/parser': 4.31.0_eslint@7.32.0+typescript@4.3.5 + '@typescript-eslint/scope-manager': 4.31.0 debug: 4.3.2 eslint: 7.32.0 functional-red-black-tree: 1.0.1 @@ -3628,16 +3844,16 @@ packages: - supports-color dev: true - /@typescript-eslint/experimental-utils/4.29.3_eslint@7.32.0+typescript@4.3.5: - resolution: {integrity: sha512-ffIvbytTVWz+3keg+Sy94FG1QeOvmV9dP2YSdLFHw/ieLXWCa3U1TYu8IRCOpMv2/SPS8XqhM1+ou1YHsdzKrg==} + /@typescript-eslint/experimental-utils/4.31.0_eslint@7.32.0+typescript@4.3.5: + resolution: {integrity: sha512-Hld+EQiKLMppgKKkdUsLeVIeEOrwKc2G983NmznY/r5/ZtZCDvIOXnXtwqJIgYz/ymsy7n7RGvMyrzf1WaSQrw==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: eslint: '*' dependencies: - '@types/json-schema': 7.0.8 - '@typescript-eslint/scope-manager': 4.29.3 - '@typescript-eslint/types': 4.29.3 - '@typescript-eslint/typescript-estree': 4.29.3_typescript@4.3.5 + '@types/json-schema': 7.0.9 + '@typescript-eslint/scope-manager': 4.31.0 + '@typescript-eslint/types': 4.31.0 + '@typescript-eslint/typescript-estree': 4.31.0_typescript@4.3.5 eslint: 7.32.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@7.32.0 @@ -3646,8 +3862,8 @@ packages: - typescript dev: true - /@typescript-eslint/parser/4.29.3_eslint@7.32.0+typescript@4.3.5: - resolution: {integrity: sha512-jrHOV5g2u8ROghmspKoW7pN8T/qUzk0+DITun0MELptvngtMrwUJ1tv5zMI04CYVEUsSrN4jV7AKSv+I0y0EfQ==} + /@typescript-eslint/parser/4.31.0_eslint@7.32.0+typescript@4.3.5: + resolution: {integrity: sha512-oWbzvPh5amMuTmKaf1wp0ySxPt2ZXHnFQBN2Szu1O//7LmOvgaKTCIDNLK2NvzpmVd5A2M/1j/rujBqO37hj3w==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 @@ -3656,9 +3872,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 4.29.3 - '@typescript-eslint/types': 4.29.3 - '@typescript-eslint/typescript-estree': 4.29.3_typescript@4.3.5 + '@typescript-eslint/scope-manager': 4.31.0 + '@typescript-eslint/types': 4.31.0 + '@typescript-eslint/typescript-estree': 4.31.0_typescript@4.3.5 debug: 4.3.2 eslint: 7.32.0 typescript: 4.3.5 @@ -3666,21 +3882,21 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager/4.29.3: - resolution: {integrity: sha512-x+w8BLXO7iWPkG5mEy9bA1iFRnk36p/goVlYobVWHyDw69YmaH9q6eA+Fgl7kYHmFvWlebUTUfhtIg4zbbl8PA==} + /@typescript-eslint/scope-manager/4.31.0: + resolution: {integrity: sha512-LJ+xtl34W76JMRLjbaQorhR0hfRAlp3Lscdiz9NeI/8i+q0hdBZ7BsiYieLoYWqy+AnRigaD3hUwPFugSzdocg==} engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dependencies: - '@typescript-eslint/types': 4.29.3 - '@typescript-eslint/visitor-keys': 4.29.3 + '@typescript-eslint/types': 4.31.0 + '@typescript-eslint/visitor-keys': 4.31.0 dev: true - /@typescript-eslint/types/4.29.3: - resolution: {integrity: sha512-s1eV1lKNgoIYLAl1JUba8NhULmf+jOmmeFO1G5MN/RBCyyzg4TIOfIOICVNC06lor+Xmy4FypIIhFiJXOknhIg==} + /@typescript-eslint/types/4.31.0: + resolution: {integrity: sha512-9XR5q9mk7DCXgXLS7REIVs+BaAswfdHhx91XqlJklmqWpTALGjygWVIb/UnLh4NWhfwhR5wNe1yTyCInxVhLqQ==} engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dev: true - /@typescript-eslint/typescript-estree/4.29.3_typescript@4.3.5: - resolution: {integrity: sha512-45oQJA0bxna4O5TMwz55/TpgjX1YrAPOI/rb6kPgmdnemRZx/dB0rsx+Ku8jpDvqTxcE1C/qEbVHbS3h0hflag==} + /@typescript-eslint/typescript-estree/4.31.0_typescript@4.3.5: + resolution: {integrity: sha512-QHl2014t3ptg+xpmOSSPn5hm4mY8D4s97ftzyk9BZ8RxYQ3j73XcwuijnJ9cMa6DO4aLXeo8XS3z1omT9LA/Eg==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: typescript: '*' @@ -3688,8 +3904,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 4.29.3 - '@typescript-eslint/visitor-keys': 4.29.3 + '@typescript-eslint/types': 4.31.0 + '@typescript-eslint/visitor-keys': 4.31.0 debug: 4.3.2 globby: 11.0.4 is-glob: 4.0.1 @@ -3700,11 +3916,11 @@ packages: - supports-color dev: true - /@typescript-eslint/visitor-keys/4.29.3: - resolution: {integrity: sha512-MGGfJvXT4asUTeVs0Q2m+sY63UsfnA+C/FDgBKV3itLBmM9H0u+URcneePtkd0at1YELmZK6HSolCqM4Fzs6yA==} + /@typescript-eslint/visitor-keys/4.31.0: + resolution: {integrity: sha512-HUcRp2a9I+P21+O21yu3ezv3GEPGjyGiXoEUQwZXjR8UxRApGeLyWH4ZIIUSalE28aG4YsV6GjtaAVB3QKOu0w==} engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dependencies: - '@typescript-eslint/types': 4.29.3 + '@typescript-eslint/types': 4.31.0 eslint-visitor-keys: 2.1.0 dev: true @@ -4133,9 +4349,9 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.3 + es-abstract: 1.18.5 get-intrinsic: 1.1.1 - is-string: 1.0.6 + is-string: 1.0.7 dev: true /array-union/1.0.2: @@ -4166,7 +4382,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.3 + es-abstract: 1.18.5 dev: true /array.prototype.flatmap/1.2.4: @@ -4175,7 +4391,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.3 + es-abstract: 1.18.5 function-bind: 1.1.1 dev: true @@ -4753,6 +4969,18 @@ packages: node-releases: 1.1.73 dev: true + /browserslist/4.17.0: + resolution: {integrity: sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001255 + colorette: 1.3.0 + electron-to-chromium: 1.3.830 + escalade: 3.1.1 + node-releases: 1.1.75 + dev: true + /bs-logger/0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} @@ -5021,6 +5249,10 @@ packages: resolution: {integrity: sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw==} dev: true + /caniuse-lite/1.0.30001255: + resolution: {integrity: sha512-F+A3N9jTZL882f/fg/WWVnKSu6IOo3ueLz4zwaOPbPYHNmM/ZaDUyzyJwS1mZhX7Ex5jqTyW599Gdelh5PDYLQ==} + dev: true + /capture-exit/2.0.0: resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} engines: {node: 6.* || 8.* || >= 10.*} @@ -5340,6 +5572,10 @@ packages: resolution: {integrity: sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==} dev: true + /colorette/1.3.0: + resolution: {integrity: sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==} + dev: true + /columnify/1.5.4: resolution: {integrity: sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=} dependencies: @@ -5718,6 +5954,13 @@ packages: elliptic: 6.5.4 dev: true + /create-eslint-index/1.0.0: + resolution: {integrity: sha1-2VQ3LYbVeS/NZ+nyt5GxqxYkEbs=} + engines: {node: '>=4.0.0'} + dependencies: + lodash.get: 4.4.2 + dev: true + /create-hash/1.2.0: resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} dependencies: @@ -6476,6 +6719,10 @@ packages: resolution: {integrity: sha512-epMH/S2MkhBv+Y0+nHK8dC7bzmOaPwcmiYqt+VwxSUJLgPzkqZnGUEQ8eVhy5zGmgWm9tDDdXkHDzOEsVU979A==} dev: true + /electron-to-chromium/1.3.830: + resolution: {integrity: sha512-gBN7wNAxV5vl1430dG+XRcQhD4pIeYeak6p6rjdCtlz5wWNwDad8jwvphe5oi1chL5MV6RNRikfffBBiFuj+rQ==} + dev: true + /elliptic/6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: @@ -6609,12 +6856,35 @@ packages: unbox-primitive: 1.0.1 dev: true + /es-abstract/1.18.5: + resolution: {integrity: sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + es-to-primitive: 1.2.1 + function-bind: 1.1.1 + get-intrinsic: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.2 + internal-slot: 1.0.3 + is-callable: 1.2.4 + is-negative-zero: 2.0.1 + is-regex: 1.1.4 + is-string: 1.0.7 + object-inspect: 1.11.0 + object-keys: 1.1.1 + object.assign: 4.1.2 + string.prototype.trimend: 1.0.4 + string.prototype.trimstart: 1.0.4 + unbox-primitive: 1.0.1 + dev: true + /es-to-primitive/1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: - is-callable: 1.2.3 - is-date-object: 1.0.4 + is-callable: 1.2.4 + is-date-object: 1.0.5 is-symbol: 1.0.4 dev: true @@ -6680,6 +6950,14 @@ packages: source-map: 0.6.1 dev: true + /eslint-ast-utils/1.1.0: + resolution: {integrity: sha512-otzzTim2/1+lVrlH19EfQQJEhVJSu0zOb9ygb3iapN6UlyaDtyRq4b5U1FuW0v1lRa9Fp/GJyHkSwm6NqABgCA==} + engines: {node: '>=4'} + dependencies: + lodash.get: 4.4.2 + lodash.zip: 4.2.0 + dev: true + /eslint-config-prettier/8.3.0_eslint@7.32.0: resolution: {integrity: sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==} hasBin: true @@ -6689,7 +6967,7 @@ packages: eslint: 7.32.0 dev: true - /eslint-config-xo-react/0.25.0_34cd3168eeae4de23db8343b5dfd9fdd: + /eslint-config-xo-react/0.25.0_cf053d4ca6fd1617a5247de768e0eb43: resolution: {integrity: sha512-YpABFxnoATAYtxsZQChZEbOkWqzCtcQDRdiUqHhLgG7hzbAEzPDmsRUWnTP8oTVLVFWrbgdf913b8kQJaR1cBA==} engines: {node: '>=10'} peerDependencies: @@ -6698,20 +6976,20 @@ packages: eslint-plugin-react-hooks: '>=4.2.0' dependencies: eslint: 7.32.0 - eslint-plugin-react: 7.25.0_eslint@7.32.0 + eslint-plugin-react: 7.25.1_eslint@7.32.0 eslint-plugin-react-hooks: 4.2.0_eslint@7.32.0 dev: true - /eslint-config-xo-typescript/0.43.0_54b83acd6dcf1e775af2568e1200082a: + /eslint-config-xo-typescript/0.43.0_59b8c71ec84636ff235ea58edac960f4: resolution: {integrity: sha512-8T4O7Dy4c5/TeOPxBOTw7DI8fgS+u5ni0xA6alcJDyiMCuBq7O+FUMsOkz2vAOQ3C3HMkYmkpAXA/gZFX4QUrg==} engines: {node: '>=12'} peerDependencies: '@typescript-eslint/eslint-plugin': '>=4.28.1' eslint: '>=7.30.0' dependencies: - '@typescript-eslint/eslint-plugin': 4.29.3_fd14c0002fbbfb85b8a0070d0dffb93d + '@typescript-eslint/eslint-plugin': 4.31.0_d1dd20e6bac64435251dbfdf7965a8a7 eslint: 7.32.0 - typescript: 4.3.5 + typescript: 4.4.2 dev: true /eslint-config-xo/0.37.0_eslint@7.32.0: @@ -6744,7 +7022,7 @@ packages: glob: 7.1.7 is-glob: 4.0.1 resolve: 1.20.0 - tsconfig-paths: 3.10.1 + tsconfig-paths: 3.11.0 transitivePeerDependencies: - supports-color dev: true @@ -6873,8 +7151,8 @@ packages: eslint: 7.32.0 dev: true - /eslint-plugin-react/7.25.0_eslint@7.32.0: - resolution: {integrity: sha512-bZL+HeB+Qaimb4ryOc+OYYOX0XnOr6FX30ZXkzL8iSJA3tATTtZ1YgYyjK3jGvVDcZMejfUaeS/5wKDfTgyfVw==} + /eslint-plugin-react/7.25.1_eslint@7.32.0: + resolution: {integrity: sha512-P4j9K1dHoFXxDNP05AtixcJEvIT6ht8FhYKsrkY0MPCPaUMYijhpWwNiRDZVtA8KFuZOkGSeft6QwH8KuVpJug==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 @@ -6939,8 +7217,8 @@ packages: peerDependencies: eslint: '>=7.0.0' dependencies: - '@babel/core': 7.14.8 - '@babel/eslint-parser': 7.14.7_@babel+core@7.14.8+eslint@7.32.0 + '@babel/core': 7.15.5 + '@babel/eslint-parser': 7.15.4_@babel+core@7.15.5+eslint@7.32.0 eslint: 7.32.0 eslint-visitor-keys: 2.1.0 esquery: 1.4.0 @@ -7963,6 +8241,10 @@ packages: resolution: {integrity: sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==} dev: true + /graceful-fs/4.2.8: + resolution: {integrity: sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==} + dev: true + /growly/1.3.0: resolution: {integrity: sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=} dev: true @@ -8036,6 +8318,13 @@ packages: resolution: {integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==} engines: {node: '>= 0.4'} + /has-tostringtag/1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.2 + dev: true + /has-unicode/2.0.1: resolution: {integrity: sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=} dev: true @@ -8524,6 +8813,11 @@ packages: resolve-cwd: 3.0.0 dev: true + /import-modules/2.1.0: + resolution: {integrity: sha512-8HEWcnkbGpovH9yInoisxaSoIg9Brbul+Ju3Kqe2UsYDUBJD/iQjSgEj0zPcTDPKfPp2fs5xlv1i+JSye/m1/A==} + engines: {node: '>=8'} + dev: true + /imurmurhash/0.1.4: resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} engines: {node: '>=0.8.19'} @@ -8692,8 +8986,10 @@ packages: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} dev: true - /is-bigint/1.0.2: - resolution: {integrity: sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==} + /is-bigint/1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.1 dev: true /is-binary-path/1.0.1: @@ -8710,11 +9006,12 @@ packages: binary-extensions: 2.2.0 dev: true - /is-boolean-object/1.1.1: - resolution: {integrity: sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==} + /is-boolean-object/1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 + has-tostringtag: 1.0.0 dev: true /is-buffer/1.1.6: @@ -8738,6 +9035,11 @@ packages: engines: {node: '>= 0.4'} dev: true + /is-callable/1.2.4: + resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==} + engines: {node: '>= 0.4'} + dev: true + /is-ci/2.0.0: resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} hasBin: true @@ -8797,6 +9099,13 @@ packages: engines: {node: '>= 0.4'} dev: true + /is-date-object/1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + /is-decimal/1.0.4: resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} dev: true @@ -8912,9 +9221,11 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-number-object/1.0.5: - resolution: {integrity: sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==} + /is-number-object/1.0.6: + resolution: {integrity: sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==} engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 dev: true /is-number/3.0.0: @@ -9005,6 +9316,14 @@ packages: has-symbols: 1.0.2 dev: true + /is-regex/1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + /is-regexp/1.0.0: resolution: {integrity: sha1-/S2INUXEa6xaYz57mgnof6LLUGk=} engines: {node: '>=0.10.0'} @@ -9045,6 +9364,13 @@ packages: engines: {node: '>= 0.4'} dev: true + /is-string/1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + /is-symbol/1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} @@ -10549,7 +10875,7 @@ packages: resolution: {integrity: sha1-L19Fq5HjMhYjT9U62rZo607AmTs=} engines: {node: '>=4'} dependencies: - graceful-fs: 4.2.6 + graceful-fs: 4.2.8 parse-json: 4.0.0 pify: 3.0.0 strip-bom: 3.0.0 @@ -10643,6 +10969,10 @@ packages: resolution: {integrity: sha1-gteb/zCmfEAF/9XiUVMArZyk168=} dev: true + /lodash.get/4.4.2: + resolution: {integrity: sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=} + dev: true + /lodash.ismatch/4.4.0: resolution: {integrity: sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=} dev: true @@ -10698,6 +11028,10 @@ packages: resolution: {integrity: sha1-E2Xt9DFIBIHvDRxolXpe2Z1J984=} dev: true + /lodash.zip/4.2.0: + resolution: {integrity: sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=} + dev: true + /lodash/4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -11497,6 +11831,10 @@ packages: resolution: {integrity: sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==} dev: true + /node-releases/1.1.75: + resolution: {integrity: sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==} + dev: true + /nopt/4.0.3: resolution: {integrity: sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==} hasBin: true @@ -11785,7 +12123,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.3 + es-abstract: 1.18.5 dev: true /object.fromentries/2.0.4: @@ -11794,7 +12132,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.3 + es-abstract: 1.18.5 has: 1.0.3 dev: true @@ -11820,7 +12158,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.3 + es-abstract: 1.18.5 dev: true /obuf/1.1.2: @@ -12064,6 +12402,14 @@ packages: retry: 0.12.0 dev: true + /p-retry/4.6.1: + resolution: {integrity: sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==} + engines: {node: '>=8'} + dependencies: + '@types/retry': 0.12.1 + retry: 0.13.1 + dev: false + /p-timeout/3.2.0: resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} engines: {node: '>=8'} @@ -13977,7 +14323,7 @@ packages: /resolve/2.0.0-next.3: resolution: {integrity: sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==} dependencies: - is-core-module: 2.5.0 + is-core-module: 2.6.0 path-parse: 1.0.7 dev: true @@ -14005,6 +14351,11 @@ packages: engines: {node: '>= 4'} dev: true + /retry/0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + dev: false + /reusify/1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -15009,7 +15360,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.3 - es-abstract: 1.18.3 + es-abstract: 1.18.5 get-intrinsic: 1.1.1 has-symbols: 1.0.2 internal-slot: 1.0.3 @@ -15726,14 +16077,6 @@ packages: typescript: 4.3.5 dev: true - /tsconfig-paths/3.10.1: - resolution: {integrity: sha512-rETidPDgCpltxF7MjBZlAFPUHv5aHH2MymyPvh+vEyWAED4Eb/WeMbsnD/JDr4OKPOA1TssDHgIcpTN5Kh0p6Q==} - dependencies: - json5: 2.2.0 - minimist: 1.2.5 - strip-bom: 3.0.0 - dev: true - /tsconfig-paths/3.11.0: resolution: {integrity: sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==} dependencies: @@ -15861,6 +16204,12 @@ packages: hasBin: true dev: true + /typescript/4.4.2: + resolution: {integrity: sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + /uglify-js/3.14.1: resolution: {integrity: sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g==} engines: {node: '>=0.8.0'} @@ -16453,10 +16802,10 @@ packages: /which-boxed-primitive/1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: - is-bigint: 1.0.2 - is-boolean-object: 1.1.1 - is-number-object: 1.0.5 - is-string: 1.0.6 + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.6 + is-string: 1.0.7 is-symbol: 1.0.4 dev: true