From 6a7742bdc05774c2e7a0056bc3e8582e78df6c06 Mon Sep 17 00:00:00 2001 From: arcogabbo Date: Tue, 31 May 2022 17:32:14 +0200 Subject: [PATCH 1/9] migration from ts-lint to eslint --- .eslintrc.js | 26 + .gitignore | 5 +- Dangerfile.ts | 2 +- package.json | 6 +- src/__mocks__/request.ts | 2 +- src/app.ts | 124 +- src/clients/ade.ts | 9 +- src/clients/userregistry_client.ts | 9 +- src/handlers/general.ts | 8 +- src/handlers/spid.ts | 26 +- src/handlers/token.ts | 130 +- src/server.ts | 17 +- src/spid_const.ts | 1 + src/types/IDPEntityDescriptor.ts | 4 +- src/types/access_log.ts | 5 +- src/types/user.ts | 1 + src/utils/__mocks__/saml.ts | 2 +- src/utils/__tests__/redis_storage.test.ts | 2 +- src/utils/access_log.ts | 32 +- src/utils/appinsights.ts | 6 +- src/utils/attribute_authority.ts | 29 +- src/utils/blob.ts | 2 +- src/utils/config.ts | 109 +- src/utils/conversions.ts | 36 +- src/utils/jwt.ts | 34 +- src/utils/logger.ts | 6 +- src/utils/redis.ts | 34 +- src/utils/redis_storage.ts | 18 +- src/utils/user_registry.ts | 55 +- tslint.json | 18 - yarn.lock | 1424 ++++++++++++++++++--- 31 files changed, 1652 insertions(+), 530 deletions(-) create mode 100644 .eslintrc.js delete mode 100644 tslint.json diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..836c46b --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,26 @@ +module.exports = { + "env": { + "browser": true, + "es6": true, + "node": true + }, + "ignorePatterns": [ + "node_modules", + "generated", + "**/__tests__/*", + "**/__mocks__/*", + "Dangerfile.*", + "*.d.ts" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "project": "tsconfig.json", + "sourceType": "module" + }, + "extends": [ + "@pagopa/eslint-config/strong", + ], + "rules": { + + } +} diff --git a/.gitignore b/.gitignore index 410f289..eacd268 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,7 @@ idp.crt idp.key sp_metadata.xml temp -yarn-error.log \ No newline at end of file +yarn-error.log +# eslint section +!.eslintrc.js +.eslintcache diff --git a/Dangerfile.ts b/Dangerfile.ts index cb8e98c..80af2b5 100644 --- a/Dangerfile.ts +++ b/Dangerfile.ts @@ -2,7 +2,7 @@ // import custom DangerJS rules // see http://danger.systems/js // see https://github.com/teamdigitale/danger-plugin-digitalcitizenship/ -// tslint:disable-next-line:prettier +// eslint-disable-next-line prettier/prettier import checkDangers from "danger-plugin-digitalcitizenship"; checkDangers(); \ No newline at end of file diff --git a/package.json b/package.json index 812d257..f454eed 100644 --- a/package.json +++ b/package.json @@ -30,9 +30,10 @@ "predeploy": "npm-run-all build dist:modules", "test": "jest -i", "test:coverage": "jest -i --coverage", - "lint": "tslint --project ." + "lint": "eslint . -c .eslintrc.js --ext .ts,.tsx" }, "devDependencies": { + "@pagopa/eslint-config": "^3.0.0", "@pagopa/openapi-codegen-ts": "^10.0.6", "@types/cors": "^2.8.12", "@types/express": "4.17.0", @@ -52,7 +53,7 @@ "auto-changelog": "^2.2.1", "danger": "^7.0.0", "danger-plugin-digitalcitizenship": "^1.0.0", - "italia-tslint-rules": "*", + "eslint-plugin-prettier": "^4.0.0", "jest": "^24.8.0", "mock-redis-client": "^0.91.13", "modclean": "^3.0.0-beta.1", @@ -63,7 +64,6 @@ "shx": "^0.3.2", "supertest": "^4.0.2", "ts-jest": "^24.0.2", - "tslint": "^5.1.0", "typescript": "4.3" }, "dependencies": { diff --git a/src/__mocks__/request.ts b/src/__mocks__/request.ts index 13aa2e2..59c8e08 100644 --- a/src/__mocks__/request.ts +++ b/src/__mocks__/request.ts @@ -1,4 +1,4 @@ -// tslint:disable:no-any +// eslint-disable @typescript-eslint/no-explicit-any /** * mockReq diff --git a/src/app.ts b/src/app.ts index b8571c2..d472e4a 100644 --- a/src/app.ts +++ b/src/app.ts @@ -1,29 +1,42 @@ +import { debug } from "console"; import { AssertionConsumerServiceT, IApplicationConfig, IServiceProviderConfig, LogoutT, - withSpid, + withSpid } from "@pagopa/io-spid-commons"; import { SamlAttributeT } from "@pagopa/io-spid-commons/dist/utils/saml"; import * as bodyParser from "body-parser"; -import { debug } from "console"; import * as express from "express"; -import { generateToken } from "./handlers/token"; - import { ResponsePermanentRedirect } from "@pagopa/ts-commons/lib/responses"; import passport = require("passport"); import { SamlConfig } from "passport-saml"; +import { + AggregatorType, + ContactType, + EntityType +} from "@pagopa/io-spid-commons/dist/utils/middleware"; +import { withoutUndefinedValues } from "@pagopa/ts-commons/lib/types"; +import { createBlobService } from "azure-storage"; +import * as cors from "cors"; +import { pipe } from "fp-ts/lib/function"; +import * as T from "fp-ts/lib/Task"; +import * as TE from "fp-ts/lib/TaskEither"; +import * as O from "fp-ts/lib/Option"; +import { CertificationEnum } from "../generated/userregistry-api/Certification"; +import { generateToken } from "./handlers/token"; + import { accessLogHandler, errorHandler, metadataRefreshHandler, - successHandler, + successHandler } from "./handlers/spid"; import { introspectHandler, invalidateHandler, - upgradeTokenHandler, + upgradeTokenHandler } from "./handlers/token"; import { SpidUser, TokenUser, TokenUserL2 } from "./types/user"; import { getUserCompanies } from "./utils/attribute_authority"; @@ -32,28 +45,15 @@ import { errorsToError, toCommonTokenUser, toResponseErrorInternal, - toTokenUserL2, + toTokenUserL2 } from "./utils/conversions"; -import { - AggregatorType, - ContactType, - EntityType, -} from "@pagopa/io-spid-commons/dist/utils/middleware"; -import { withoutUndefinedValues } from "@pagopa/ts-commons/lib/types"; -import { createBlobService } from "azure-storage"; -import * as cors from "cors"; -import { CertificationEnum } from "../generated/userregistry-api/Certification"; import { AdeAPIClient } from "./clients/ade"; import { UserRegistryAPIClient } from "./clients/userregistry_client"; import { healthcheckHandler } from "./handlers/general"; import { logger } from "./utils/logger"; import { REDIS_CLIENT } from "./utils/redis"; import { blurUser } from "./utils/user_registry"; -import { pipe } from "fp-ts/lib/function"; -import * as T from "fp-ts/lib/Task"; -import * as TE from "fp-ts/lib/TaskEither"; -import * as O from "fp-ts/lib/Option"; const config = getConfigOrThrow(); @@ -69,10 +69,12 @@ export const appConfig: IApplicationConfig = { loginPath: config.ENDPOINT_LOGIN, metadataPath: config.ENDPOINT_METADATA, sloPath: config.ENDPOINT_LOGOUT, - spidLevelsWhitelist: ["SpidL1", "SpidL2", "SpidL3"], + spidLevelsWhitelist: ["SpidL1", "SpidL2", "SpidL3"] + // eslint-disable-next-line extra-rules/no-commented-out-code // startupIdpsMetadata: STARTUP_IDPS_METADATA }; +// eslint-disable-next-line @typescript-eslint/explicit-function-return-type const getContactPersons = () => config.ENABLE_FULL_OPERATOR_METADATA ? [ @@ -85,28 +87,28 @@ const getContactPersons = () => FiscalCode: config.COMPANY_FISCAL_CODE, IPACode: config.COMPANY_IPA_CODE, VATNumber: config.COMPANY_VAT_NUMBER, - aggregatorType: AggregatorType.PublicServicesFullOperator, + aggregatorType: AggregatorType.PublicServicesFullOperator }, - phone: config.COMPANY_PHONE_NUMBER, - }, + phone: config.COMPANY_PHONE_NUMBER + } ] : undefined; const serviceProviderConfig: IServiceProviderConfig = { + IDPMetadataUrl: config.IDP_METADATA_URL, contacts: getContactPersons(), - IDPMetadataUrl: config.IDP_METADATA_URL, organization: { URL: config.ORG_URL, displayName: config.ORG_DISPLAY_NAME, - name: config.ORG_NAME, + name: config.ORG_NAME }, publicCert: config.METADATA_PUBLIC_CERT, requiredAttributes: { attributes: config.SPID_ATTRIBUTES.split(",").map( - (item) => item as SamlAttributeT + item => item as SamlAttributeT ), - name: config.REQUIRED_ATTRIBUTES_SERVICE_NAME, + name: config.REQUIRED_ATTRIBUTES_SERVICE_NAME }, spidCieUrl: "https://preproduzione.idserver.servizicie.interno.gov.it/idp/shibboleth?Metadata", @@ -117,9 +119,9 @@ const serviceProviderConfig: IServiceProviderConfig = { config.SPID_VALIDATOR_URL !== undefined ? { [config.SPID_VALIDATOR_URL]: true, - [config.SPID_TESTENV_URL]: true, + [config.SPID_TESTENV_URL]: true } - : undefined, + : undefined }; const redisClient = REDIS_CLIENT; @@ -138,16 +140,16 @@ const samlConfig: SamlConfig = { issuer: config.ORG_ISSUER, logoutCallbackUrl: `${config.ACS_BASE_URL}/slo`, privateCert: config.METADATA_PRIVATE_CERT, - validateInResponseTo: true, + validateInResponseTo: true }; -const acs: AssertionConsumerServiceT = async (user) => +const acs: AssertionConsumerServiceT = async user => pipe( user, SpidUser.decode, TE.fromEither, - TE.mapLeft((errs) => toResponseErrorInternal(errorsToError(errs))), - TE.chain((_) => { + TE.mapLeft(errs => toResponseErrorInternal(errorsToError(errs))), + TE.chain(_ => { logger.info("ACS | Trying to map user to Common User"); return pipe( _, @@ -156,8 +158,8 @@ const acs: AssertionConsumerServiceT = async (user) => TE.mapLeft(toResponseErrorInternal) ); }), - (a) => a, - TE.chain((_) => { + a => a, + TE.chain(_ => { logger.info( "ACS | Trying to retreive UserCompanies or map over a default user" ); @@ -167,19 +169,19 @@ const acs: AssertionConsumerServiceT = async (user) => AdeAPIClient(config.ADE_AA_API_ENDPOINT), _.fiscal_number ), - TE.map((companies) => ({ + TE.map(companies => ({ ..._, companies, - from_aa: config.ENABLE_ADE_AA as boolean, + from_aa: config.ENABLE_ADE_AA as boolean })) ) : TE.of({ ..._, - from_aa: config.ENABLE_ADE_AA as boolean, + from_aa: config.ENABLE_ADE_AA as boolean }); }), - (b) => b, - TE.chainW((_) => { + b => b, + TE.chainW(_ => { logger.info( `USER REGISTRY | Check for User Registry | ${config.ENABLE_USER_REGISTRY}` ); @@ -191,36 +193,36 @@ const acs: AssertionConsumerServiceT = async (user) => certification: CertificationEnum.SPID, externalId: _.fiscal_number, extras: { - email: _.email, + email: _.email }, name: _.name, - surname: _.family_name, + surname: _.family_name }), _.fiscal_number, config.USER_REGISTRY_API_KEY ), - TE.map((maybeUid) => ({ + TE.map(maybeUid => ({ ..._, uid: pipe( maybeUid, - O.map((uid) => uid.id), + O.map(uid => uid.id), O.toUndefined - ), + ) })) ) : TE.of({ ..._ }); }), - TE.chainW((_) => { + TE.chainW(_ => { logger.info("ACS | Trying to decode TokenUser"); return pipe( _, TokenUser.decode, TE.fromEither, - TE.mapLeft((errs) => toResponseErrorInternal(errorsToError(errs))) + TE.mapLeft(errs => toResponseErrorInternal(errorsToError(errs))) ); }), // If User is related to one company we can directly release an L2 token - TE.chainW((a) => { + TE.chainW(a => { logger.info("ACS | Companies length decision making"); return a.from_aa ? a.companies.length === 1 @@ -233,10 +235,10 @@ const acs: AssertionConsumerServiceT = async (user) => : pipe( TokenUserL2.decode({ ...a, level: "L2" }), TE.fromEither, - TE.mapLeft((errs) => toResponseErrorInternal(errorsToError(errs))) + TE.mapLeft(errs => toResponseErrorInternal(errorsToError(errs))) ); }), - TE.chainW((tokenUser) => { + TE.chainW(tokenUser => { logger.info("ACS | Generating token"); return pipe( tokenUser, @@ -244,7 +246,7 @@ const acs: AssertionConsumerServiceT = async (user) => TE.mapLeft(toResponseErrorInternal) ); }), - TE.mapLeft((_) => { + TE.mapLeft(_ => { logger.info( `ACS | Assertion Consumer Service ERROR|${_.kind} ${JSON.stringify( _.detail @@ -259,10 +261,10 @@ const acs: AssertionConsumerServiceT = async (user) => logger.info("ACS | Redirect to success endpoint"); return config.ENABLE_ADE_AA && !TokenUserL2.is(tokenUser) ? ResponsePermanentRedirect({ - href: `${config.ENDPOINT_L1_SUCCESS}#token=${tokenStr}`, + href: `${config.ENDPOINT_L1_SUCCESS}#token=${tokenStr}` }) : ResponsePermanentRedirect({ - href: `${config.ENDPOINT_SUCCESS}#token=${tokenStr}`, + href: `${config.ENDPOINT_SUCCESS}#token=${tokenStr}` }); }), TE.toUnion @@ -270,7 +272,7 @@ const acs: AssertionConsumerServiceT = async (user) => const logout: LogoutT = async () => ResponsePermanentRedirect({ - href: `${process.env.ENDPOINT_SUCCESS}?logout`, + href: `${process.env.ENDPOINT_SUCCESS}?logout` }); const app = express(); @@ -289,7 +291,7 @@ const doneCb = config.ENABLE_SPID_ACCESS_LOGS config.SPID_LOGS_STORAGE_CONTAINER_NAME, config.SPID_LOGS_PUBLIC_KEY ) - : (ip: string | null, request: string, response: string) => { + : (ip: string | null, request: string, response: string): void => { debug("*************** done", ip); debug(request); debug(response); @@ -309,7 +311,7 @@ export const createAppTask = pipe( logout, redisClient, // redisClient for authN request samlConfig, - serviceProviderConfig, + serviceProviderConfig }), T.map(({ app: withSpidApp, idpMetadataRefresher }) => { withSpidApp.get(config.ENDPOINT_SUCCESS, successHandler); @@ -326,7 +328,7 @@ export const createAppTask = pipe( // Add info endpoint withSpidApp.get("/info", async (_, res) => { res.json({ - ping: "pong", + ping: "pong" }); }); @@ -344,18 +346,18 @@ export const createAppTask = pipe( ___: express.NextFunction ) => res.status(505).send({ - error: error.message, + error: error.message }) ); - // tslint:disable-next-line: no-let prefer-const + // eslint-disable-next-line functional/no-let, prefer-const let countInterval = 0; const startIdpMetadataRefreshTimer = setInterval(() => { countInterval += 1; if (countInterval > 10) { clearInterval(startIdpMetadataRefreshTimer); } - idpMetadataRefresher()().catch((e) => { + idpMetadataRefresher()().catch(e => { logger.error("idpMetadataRefresher|error:%s", e); }); }, 5000); diff --git a/src/clients/ade.ts b/src/clients/ade.ts index 6005fcd..db8da0f 100644 --- a/src/clients/ade.ts +++ b/src/clients/ade.ts @@ -1,16 +1,15 @@ import nodeFetch from "node-fetch"; import { Client, createClient } from "../../generated/ade-api/client"; -export function AdeAPIClient( +export const AdeAPIClient = ( baseUrl: string, - // tslint:disable-next-line: no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any fetchApi: typeof fetch = (nodeFetch as any) as typeof fetch -): Client { - return createClient({ +): Client => + createClient({ basePath: "", baseUrl, fetchApi }); -} export type AdeAPIClient = typeof AdeAPIClient; diff --git a/src/clients/userregistry_client.ts b/src/clients/userregistry_client.ts index a0bd2f2..40cf04e 100644 --- a/src/clients/userregistry_client.ts +++ b/src/clients/userregistry_client.ts @@ -1,16 +1,15 @@ import nodeFetch from "node-fetch"; import { Client, createClient } from "../../generated/userregistry-api/client"; -export function UserRegistryAPIClient( +export const UserRegistryAPIClient = ( baseUrl: string, - // tslint:disable-next-line: no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any fetchApi: typeof fetch = (nodeFetch as any) as typeof fetch -): Client { - return createClient({ +): Client => + createClient({ basePath: "", baseUrl, fetchApi }); -} export type UserRegistryAPIClient = typeof UserRegistryAPIClient; diff --git a/src/handlers/general.ts b/src/handlers/general.ts index c0cda68..0c59f3b 100644 --- a/src/handlers/general.ts +++ b/src/handlers/general.ts @@ -3,18 +3,18 @@ import { toError } from "fp-ts/lib/Either"; import * as TE from "fp-ts/lib/TaskEither"; import { RedisClient } from "redis"; +import { flow, pipe } from "fp-ts/lib/function"; import { AdeAPIClient } from "../clients/ade"; import { getConfigOrThrow } from "../utils/config"; import { errorsToError } from "../utils/conversions"; import { pingTask } from "../utils/redis_storage"; -import { flow, pipe } from "fp-ts/lib/function"; const config = getConfigOrThrow(); export const healthcheckHandler = (redisClient: RedisClient) => ( _: express.Request, res: express.Response -) => +): Promise => // first ping for redis pipe( pingTask(redisClient), @@ -27,7 +27,7 @@ export const healthcheckHandler = (redisClient: RedisClient) => ( toError ), TE.chain(flow(TE.fromEither, TE.mapLeft(errorsToError))), - TE.chain((response) => + TE.chain(response => response.status === 200 ? TE.right(true) : TE.left(new Error(response.value.detail)) @@ -35,7 +35,7 @@ export const healthcheckHandler = (redisClient: RedisClient) => ( ) : TE.right(true) ), - TE.mapLeft((err) => res.status(500).json(err.message)), + TE.mapLeft(err => res.status(500).json(err.message)), TE.map(() => res.status(200).json("OK")), TE.toUnion )(); diff --git a/src/handlers/spid.ts b/src/handlers/spid.ts index 9dea060..37f8ccf 100644 --- a/src/handlers/spid.ts +++ b/src/handlers/spid.ts @@ -13,28 +13,34 @@ import { SpidLogMsg } from "../types/access_log"; import { getFiscalNumberFromPayload, getRequestIDFromResponse, - storeSpidLogs, + storeSpidLogs } from "../utils/access_log"; import { logger } from "../utils/logger"; -export const successHandler = (req: express.Request, res: express.Response) => +export const successHandler = ( + req: express.Request, + res: express.Response +): express.Response => res.json({ success: "success", - token: req.query.token, + token: req.query.token }); -export const errorHandler = (_: express.Request, res: express.Response) => +export const errorHandler = ( + _: express.Request, + res: express.Response +): express.Response => res .json({ - error: "error", + error: "error" }) .status(400); export const metadataRefreshHandler = ( idpMetadataRefresher: () => Task -) => async (_: express.Request, res: express.Response) => { +) => async (_: express.Request, res: express.Response): Promise => { await idpMetadataRefresher()(); res.json({ - metadataUpdate: "completed", + metadataUpdate: "completed" }); }; @@ -82,7 +88,7 @@ export const accessLogHandler = ( ip: sourceIp as IPString, requestPayload, responsePayload, - spidRequestId: requestId, + spidRequestId: requestId } as SpidLogMsg); if (E.isLeft(errorOrSpidMsg)) { @@ -97,13 +103,13 @@ export const accessLogHandler = ( // We store Spid logs in a fire&forget pattern await pipe( storeSpidLogs(blobService, containerName, spidLogsPublicKey, spidMsg), - TE.mapLeft((err) => { + TE.mapLeft(err => { logger.error(`${logPrefix}|ERROR=Cannot store SPID log`); logger.debug(`${logPrefix}|ERROR_DETAILS=${err}`); }) )(); }, - (err) => { + err => { logger.error(`${logPrefix}|ERROR=${err}`); } ); diff --git a/src/handlers/token.ts b/src/handlers/token.ts index e07ba66..d5e25d2 100644 --- a/src/handlers/token.ts +++ b/src/handlers/token.ts @@ -1,24 +1,10 @@ -import * as express from "express"; -import { NonNegativeInteger } from "@pagopa/ts-commons/lib/numbers"; -import { NonEmptyString } from "@pagopa/ts-commons/lib/strings"; import * as crypto from "crypto"; -import { SESSION_INVALIDATE_TOKEN_PREFIX, SESSION_TOKEN_PREFIX } from "../app"; -import { UpgradeTokenBody } from "../types/request"; -import { TokenUser, TokenUserL2 } from "../types/user"; -import { getConfigOrThrow } from "../utils/config"; -import { toBadRequest, toTokenUserL2 } from "../utils/conversions"; -import { - extractJwtRemainingValidTime, - extractRawDataFromJwt, - getUserJwt, -} from "../utils/jwt"; -import { REDIS_CLIENT } from "../utils/redis"; +import * as express from "express"; import { - deleteTask, - existsKeyTask, - getTask, - setWithExpirationTask, -} from "../utils/redis_storage"; + INonNegativeIntegerTag, + NonNegativeInteger +} from "@pagopa/ts-commons/lib/numbers"; +import { NonEmptyString } from "@pagopa/ts-commons/lib/strings"; import { flow, pipe } from "fp-ts/lib/function"; import * as E from "fp-ts/lib/Either"; import * as TE from "fp-ts/lib/TaskEither"; @@ -28,6 +14,23 @@ import * as J from "fp-ts/Json"; import * as b from "fp-ts/boolean"; import * as t from "io-ts"; import { readableReport } from "@pagopa/ts-commons/lib/reporters"; +import { + deleteTask, + existsKeyTask, + getTask, + setWithExpirationTask +} from "../utils/redis_storage"; +import { REDIS_CLIENT } from "../utils/redis"; +import { + extractJwtRemainingValidTime, + extractRawDataFromJwt, + getUserJwt +} from "../utils/jwt"; +import { toBadRequest, toTokenUserL2 } from "../utils/conversions"; +import { getConfigOrThrow } from "../utils/config"; +import { TokenUser, TokenUserL2 } from "../types/user"; +import { UpgradeTokenBody } from "../types/request"; +import { SESSION_INVALIDATE_TOKEN_PREFIX, SESSION_TOKEN_PREFIX } from "../app"; const config = getConfigOrThrow(); @@ -38,21 +41,21 @@ const getRawTokenUserFromRedis = ( ): TE.TaskEither => pipe( getTask(redisClient, `${SESSION_TOKEN_PREFIX}${token}`), - (a) => a, + a => a, TE.mapLeft(() => res.status(500).json("Error while retrieving token")), - TE.chain((maybeToken) => + TE.chain(maybeToken => pipe( maybeToken, O.fold( () => TE.left(res.status(404).json("Token not found")), - (value) => + value => pipe( value, J.parse, - E.mapLeft((e) => + E.mapLeft(e => res.status(500).json({ detail: String(e), - error: "Error parsing token", + error: "Error parsing token" }) ), TE.fromEither @@ -62,17 +65,24 @@ const getRawTokenUserFromRedis = ( ) ); -export const getTokenExpiration = (tokenUser: TokenUser | TokenUserL2) => +export const getTokenExpiration = ( + tokenUser: TokenUser | TokenUserL2 +): number & INonNegativeIntegerTag => config.ENABLE_ADE_AA === true ? TokenUser.is(tokenUser) ? config.L1_TOKEN_EXPIRATION : config.L2_TOKEN_EXPIRATION : config.TOKEN_EXPIRATION; -export const generateToken = (tokenUser: TokenUser | TokenUserL2) => +export const generateToken = ( + tokenUser: TokenUser | TokenUserL2 +): TE.TaskEither< + Error, + { readonly tokenStr: string; readonly tokenUser: TokenUser | TokenUserL2 } +> => pipe( TE.of(getTokenExpiration(tokenUser)), - TE.chain((tokenExpiration) => + TE.chain(tokenExpiration => config.ENABLE_JWT ? pipe( getUserJwt( @@ -84,11 +94,11 @@ export const generateToken = (tokenUser: TokenUser | TokenUserL2) => config.JWT_TOKEN_AUDIENCE ), TE.mapLeft(() => new Error("Error generating JWT Token")), - TE.map((_) => ({ tokenUser, tokenStr: _ })) + TE.map(_ => ({ tokenStr: _, tokenUser })) ) : pipe( TE.of(crypto.randomBytes(32).toString("hex")), - TE.chain((_) => + TE.chain(_ => pipe( setWithExpirationTask( redisClient, @@ -99,7 +109,7 @@ export const generateToken = (tokenUser: TokenUser | TokenUserL2) => TE.mapLeft(() => new Error("Error storing Opaque Token")), TE.map(() => ({ tokenStr: _, - tokenUser, + tokenUser })) ) ) @@ -120,10 +130,10 @@ export const introspectHandler = async ( TE.mapLeft(() => res.status(500).json("Cannot introspect token")), TE.chain( TE.fromPredicate( - (_) => _ === false, + _ => _ === false, () => res.status(403).json({ - active: false, + active: false }) ) ), @@ -138,46 +148,46 @@ export const introspectHandler = async ( TE.chain( flow( t.union([TokenUser, TokenUserL2]).decode, - E.mapLeft((e) => + E.mapLeft(e => res.status(500).json({ detail: readableReport(e), - error: "Error decoding token", + error: "Error decoding token" }) ), TE.fromEither ) ), - TE.chain((token) => + TE.chain(token => pipe( token, TE.fromPredicate( () => config.INCLUDE_SPID_USER_ON_INTROSPECTION, - (_) => res.status(200).json({ active: true, level: token.level }) + _ => res.status(200).json({ active: true, level: token.level }) ) ) ), - TE.map((tokenUser) => ({ + TE.map(tokenUser => ({ active: true, level: tokenUser.level, - user: tokenUser, + user: tokenUser })), TE.fold( - (_) => T.of(_), - (_) => T.of(res.status(200).json(_)) + _ => T.of(_), + _ => T.of(res.status(200).json(_)) ) )(); export const invalidateHandler = async ( req: express.Request, res: express.Response // first check if token is blacklisted -) => +): Promise> => pipe( TE.of(config.ENABLE_JWT), - TE.chain((jwtEnabled) => + TE.chain(jwtEnabled => jwtEnabled ? pipe( extractJwtRemainingValidTime(req.body.token), - TE.chain((remainingExpTime) => + TE.chain(remainingExpTime => setWithExpirationTask( redisClient, `${SESSION_INVALIDATE_TOKEN_PREFIX}${req.body.token}`, @@ -190,32 +200,32 @@ export const invalidateHandler = async ( ), TE.fold( () => TE.of(res.status(500).json("Error while invalidating Token")), - (_) => TE.of(res.status(200).json(_)) + _ => TE.of(res.status(200).json(_)) ) )(); export const upgradeTokenHandler = (tokenHeaderName: NonEmptyString) => async ( req: express.Request, res: express.Response -) => { +): Promise => { const fromErrToBadRequest = toBadRequest(res); return pipe( req.body, UpgradeTokenBody.decode, E.mapLeft(fromErrToBadRequest), TE.fromEither, - TE.chain((body) => + TE.chain(body => pipe( req.headers[tokenHeaderName], NonEmptyString.decode, TE.fromEither, - TE.mapLeft((e) => + TE.mapLeft(e => fromErrToBadRequest(e, `Missing required header ${tokenHeaderName}`) ), - TE.map((header) => ({ + TE.map(header => ({ jwtEnabled: config.ENABLE_JWT, organizationFiscalCode: body.organization_fiscal_code, - rawToken: header, + rawToken: header })) ) ), @@ -226,9 +236,9 @@ export const upgradeTokenHandler = (tokenHeaderName: NonEmptyString) => async ( () => pipe( getRawTokenUserFromRedis(req.body.token, res), - TE.map((_) => ({ + TE.map(_ => ({ organizationFiscalCode, - rawTokenUser: _, + rawTokenUser: _ })) ), () => @@ -236,10 +246,10 @@ export const upgradeTokenHandler = (tokenHeaderName: NonEmptyString) => async ( rawToken, extractRawDataFromJwt, TE.fromEither, - TE.mapLeft((err) => fromErrToBadRequest(err, "Token not valid")), - TE.map((_) => ({ + TE.mapLeft(err => fromErrToBadRequest(err, "Token not valid")), + TE.map(_ => ({ organizationFiscalCode, - rawTokenUser: _, + rawTokenUser: _ })) ) ) @@ -255,16 +265,16 @@ export const upgradeTokenHandler = (tokenHeaderName: NonEmptyString) => async ( new Error("Cannot upgrade Token because it is not an L1 Token") ) ), - TE.chain((tokenUser) => + TE.chain(tokenUser => tokenUser.from_aa ? pipe( tokenUser.companies.find( - (e) => e.organization_fiscal_code === organizationFiscalCode + e => e.organization_fiscal_code === organizationFiscalCode ), O.fromNullable, O.fold( () => TE.left(res.status(404).json("Organization Not Found")), - (_) => + _ => pipe( toTokenUserL2(tokenUser, _), TE.fromEither, @@ -284,17 +294,17 @@ export const upgradeTokenHandler = (tokenHeaderName: NonEmptyString) => async ( ) ) ), - TE.chain((tokenUserL2) => + TE.chain(tokenUserL2 => pipe( generateToken(tokenUserL2), - TE.mapLeft((err) => + TE.mapLeft(err => res .status(500) .json({ detail: err.message, error: "Error generating L2 Token" }) ) ) ), - TE.map((_) => res.status(200).json({ token: _.tokenStr })), + TE.map(_ => res.status(200).json({ token: _.tokenStr })), TE.toUnion )(); }; diff --git a/src/server.ts b/src/server.ts index e2c4944..3e833cf 100644 --- a/src/server.ts +++ b/src/server.ts @@ -5,21 +5,18 @@ import { getConfigOrThrow } from "./utils/config"; const config = getConfigOrThrow(); const appInsights = initAppInsights(config.APPINSIGHTS_INSTRUMENTATIONKEY, { - disableAppInsights: config.APPINSIGHTS_DISABLED, + disableAppInsights: config.APPINSIGHTS_DISABLED }); -// tslint:disable-next-line: no-object-mutation +// eslint-disable-next-line functional/immutable-data appInsights.context.tags[appInsights.context.keys.cloudRole] = "hub-spid-login-ms"; -// tslint:disable-next-line: no-let -let server: http.Server; - createAppTask() - .then((app) => { - server = http.createServer(app).listen(config.SERVER_PORT); - // tslint:disable-next-line: no-console + .then(app => { + http.createServer(app).listen(config.SERVER_PORT); + // eslint-disable-next-line no-console console.log(`Server listening at port ${config.SERVER_PORT}`); }) - // tslint:disable-next-line: no-console - .catch((e) => console.error("Application error: ", e)); + // eslint-disable-next-line no-console + .catch(e => console.error("Application error: ", e)); diff --git a/src/spid_const.ts b/src/spid_const.ts index 8c39230..f5d62c5 100644 --- a/src/spid_const.ts +++ b/src/spid_const.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/naming-convention */ export const SPID_IDP_IDENTIFIERS = { "https://id.lepida.it/idp/shibboleth": "lepidaid", "https://identity.infocert.it": "infocertid", diff --git a/src/types/IDPEntityDescriptor.ts b/src/types/IDPEntityDescriptor.ts index 2dddafa..d07ee0c 100644 --- a/src/types/IDPEntityDescriptor.ts +++ b/src/types/IDPEntityDescriptor.ts @@ -1,5 +1,5 @@ import * as t from "io-ts"; -// tslint:disable-next-line: no-submodule-imports +// eslint-disable-next-line import/no-internal-modules import { createNonEmptyArrayFromArray } from "io-ts-types/lib/fp-ts/createNonEmptyArrayFromArray"; import { NonEmptyString } from "@pagopa/ts-commons/lib/strings"; @@ -10,7 +10,7 @@ export const IDPEntityDescriptor = t.interface({ entryPoint: t.string, - logoutUrl: t.string, + logoutUrl: t.string }); export type IDPEntityDescriptor = t.TypeOf; diff --git a/src/types/access_log.ts b/src/types/access_log.ts index 84e739b..f3e9637 100644 --- a/src/types/access_log.ts +++ b/src/types/access_log.ts @@ -15,14 +15,13 @@ export const SpidBlobItem = t.interface({ // Timestamp of Request/Response creation createdAt: UTCISODateFromString, - // IP of the client that made a SPID login action - ip: IPString, - // XML payload of the SPID Request encryptedRequestPayload: EncryptedPayload, // XML payload of the SPID Response encryptedResponsePayload: EncryptedPayload, + // IP of the client that made a SPID login action + ip: IPString, // SPID request ID spidRequestId: t.string diff --git a/src/types/user.ts b/src/types/user.ts index 5e4ff3f..5281673 100644 --- a/src/types/user.ts +++ b/src/types/user.ts @@ -1,3 +1,4 @@ +/* eslint-disable extra-rules/no-commented-out-code */ import { EmailString, FiscalCode, diff --git a/src/utils/__mocks__/saml.ts b/src/utils/__mocks__/saml.ts index 1482638..3ca2a48 100644 --- a/src/utils/__mocks__/saml.ts +++ b/src/utils/__mocks__/saml.ts @@ -129,7 +129,7 @@ export const getSamlResponse: (params?: IGetSAMLResponseParams) => string = ( ${ hasResponseSignature !== false - ? // tslint:disable-next-line: no-nested-template-literals + ? // eslint-disable-next-line sonar/no-nested-template-literals ` diff --git a/src/utils/__tests__/redis_storage.test.ts b/src/utils/__tests__/redis_storage.test.ts index 56e2090..be469bb 100644 --- a/src/utils/__tests__/redis_storage.test.ts +++ b/src/utils/__tests__/redis_storage.test.ts @@ -1,4 +1,4 @@ -// tslint:disable: no-any +// eslint-disable @typescript-eslint/no-explicit-any import { pipe, flow } from "fp-ts/lib/function"; import { diff --git a/src/utils/access_log.ts b/src/utils/access_log.ts index 8b535dd..40ac2f1 100644 --- a/src/utils/access_log.ts +++ b/src/utils/access_log.ts @@ -11,13 +11,13 @@ import * as t from "io-ts"; import { SpidBlobItem, SpidLogMsg } from "../types/access_log"; import { upsertBlobFromObject } from "./blob"; -const curry = (fn: (a: I, ...aa: II) => R) => ( - a: I -) => (...aa: II): R => fn(a, ...aa); +const curry = , R>( + fn: (a: I, ...aa: II) => R +) => (a: I) => (...aa: II): R => fn(a, ...aa); export const SAML_NAMESPACE = { ASSERTION: "urn:oasis:names:tc:SAML:2.0:assertion", - PROTOCOL: "urn:oasis:names:tc:SAML:2.0:protocol", + PROTOCOL: "urn:oasis:names:tc:SAML:2.0:protocol" }; export const getFiscalNumberFromPayload = ( @@ -27,13 +27,13 @@ export const getFiscalNumberFromPayload = ( O.fromNullable( doc.getElementsByTagNameNS(SAML_NAMESPACE.ASSERTION, "Attribute") ), - O.mapNullable((collection) => + O.mapNullable(collection => Array.from(collection).find( - (elem) => elem.getAttribute("Name") === "fiscalNumber" + elem => elem.getAttribute("Name") === "fiscalNumber" ) ), - O.mapNullable((_) => _.textContent?.trim().replace("TINIT-", "")), - O.chain((_) => O.fromEither(FiscalCode.decode(_))) + O.mapNullable(_ => _.textContent?.trim().replace("TINIT-", "")), + O.chain(_ => O.fromEither(FiscalCode.decode(_))) ); export const getRequestIDFromPayload = (tagName: string, attrName: string) => ( @@ -43,7 +43,7 @@ export const getRequestIDFromPayload = (tagName: string, attrName: string) => ( O.fromNullable( doc.getElementsByTagNameNS(SAML_NAMESPACE.PROTOCOL, tagName).item(0) ), - O.chain((element) => + O.chain(element => O.fromEither(NonEmptyString.decode(element.getAttribute(attrName))) ) ); @@ -63,19 +63,19 @@ export const storeSpidLogs = ( containerName: NonEmptyString, spidLogsPublicKey: NonEmptyString, spidLogMsg: SpidLogMsg -) => { +): TE.TaskEither> => { const encrypt = curry(toEncryptedPayload)(spidLogsPublicKey); return pipe( sequenceS(E.Applicative)({ encryptedRequestPayload: encrypt(spidLogMsg.requestPayload), - encryptedResponsePayload: encrypt(spidLogMsg.responsePayload), + encryptedResponsePayload: encrypt(spidLogMsg.responsePayload) }), - E.map((item) => ({ + E.map(item => ({ ...spidLogMsg, - ...item, + ...item })), E.fold( - (err) => + err => TE.left(new Error(`StoreSpidLogs|ERROR=Cannot encrypt payload|${err}`)), (encryptedBlobItem: SpidBlobItem) => pipe( @@ -83,14 +83,14 @@ export const storeSpidLogs = ( t.exact(SpidBlobItem).decode, TE.fromEither, TE.mapLeft( - (errs) => + errs => new Error( `StoreSpidLogs|ERROR=Cannot decode payload|ERROR_DETAILS=${readableReport( errs )}` ) ), - TE.chain((spidBlobItem) => + TE.chain(spidBlobItem => upsertBlobFromObject( blobService, containerName, diff --git a/src/utils/appinsights.ts b/src/utils/appinsights.ts index 0a8fc96..76b89d1 100644 --- a/src/utils/appinsights.ts +++ b/src/utils/appinsights.ts @@ -12,10 +12,10 @@ import * as appInsights from "applicationinsights"; * - Outcoming API Calls (dependencies) * - Realtime API metrics */ -export function initAppInsights( +export const initAppInsights = ( instrumentationKey: string, config: ApplicationInsightsConfig = {} -): appInsights.TelemetryClient { +): appInsights.TelemetryClient => { startAppInsights(instrumentationKey, config); return appInsights.defaultClient; -} +}; diff --git a/src/utils/attribute_authority.ts b/src/utils/attribute_authority.ts index b383180..50cfa9a 100644 --- a/src/utils/attribute_authority.ts +++ b/src/utils/attribute_authority.ts @@ -1,4 +1,8 @@ -import { ResponseErrorForbiddenNotAuthorized } from "@pagopa/ts-commons/lib/responses"; +import { + IResponseErrorForbiddenNotAuthorized, + IResponseErrorInternal, + ResponseErrorForbiddenNotAuthorized +} from "@pagopa/ts-commons/lib/responses"; import { FiscalCode } from "@pagopa/ts-commons/lib/strings"; import { pipe } from "fp-ts/lib/function"; import * as E from "fp-ts/lib/Either"; @@ -11,25 +15,28 @@ import { errorsToError, toResponseErrorInternal } from "./conversions"; export const getUserCompanies = ( apiClient: ReturnType, userFiscalCode: FiscalCode -) => +): TE.TaskEither< + IResponseErrorInternal | IResponseErrorForbiddenNotAuthorized, + UserCompanies +> => pipe( TE.tryCatch( () => apiClient.getUserCompanies({ - body: { fiscalCode: userFiscalCode }, + body: { fiscalCode: userFiscalCode } }), E.toError ), - TE.mapLeft((err) => toResponseErrorInternal(err)), + TE.mapLeft(err => toResponseErrorInternal(err)), - TE.chain((_) => + TE.chain(_ => pipe( TE.fromEither(_), - TE.mapLeft((errs) => toResponseErrorInternal(errorsToError(errs))) + TE.mapLeft(errs => toResponseErrorInternal(errorsToError(errs))) ) ), - TE.chainW((res) => + TE.chainW(res => res.status !== 200 ? TE.left(ResponseErrorForbiddenNotAuthorized) : TE.of(res.value) @@ -37,20 +44,20 @@ export const getUserCompanies = ( TE.chainW( TE.fromPredicate( - (arr) => arr.length > 0, + arr => arr.length > 0, () => ResponseErrorForbiddenNotAuthorized ) ), - TE.map((d) => + TE.map(d => pipe( UserCompanies.encode( - d.map((company) => + d.map(company => pipe( UserCompany.encode({ email: company.pec, organization_fiscal_code: company.fiscalCode, - organization_name: company.organizationName, + organization_name: company.organizationName }) ) ) diff --git a/src/utils/blob.ts b/src/utils/blob.ts index fd16e50..6dcb0d3 100644 --- a/src/utils/blob.ts +++ b/src/utils/blob.ts @@ -73,7 +73,7 @@ export const upsertBlobFromObject = ( ): TE.TaskEither> => pipe( TE.fromEither(E.tryCatch(() => JSON.stringify(content), E.toError)), - TE.chain((rawJson) => + TE.chain(rawJson => upsertBlobFromText(blobService, containerName, blobName, rawJson, options) ) ); diff --git a/src/utils/config.ts b/src/utils/config.ts index c55c041..83c52c2 100644 --- a/src/utils/config.ts +++ b/src/utils/config.ts @@ -7,11 +7,11 @@ import { IntegerFromString, - NonNegativeInteger, + NonNegativeInteger } from "@pagopa/ts-commons/lib/numbers"; import { EmailString, - OrganizationFiscalCode, + OrganizationFiscalCode } from "@pagopa/ts-commons/lib/strings"; import * as E from "fp-ts/lib/Either"; import * as O from "fp-ts/lib/Option"; @@ -22,14 +22,14 @@ import { NonEmptyString } from "@pagopa/ts-commons/lib/strings"; export const RedisParams = t.intersection([ t.interface({ - REDIS_URL: NonEmptyString, + REDIS_URL: NonEmptyString }), t.partial({ REDIS_CLUSTER_ENABLED: t.boolean, REDIS_PASSWORD: NonEmptyString, REDIS_PORT: NonEmptyString, - REDIS_TLS_ENABLED: t.boolean, - }), + REDIS_TLS_ENABLED: t.boolean + }) ]); export type RedisParams = t.TypeOf; @@ -39,11 +39,11 @@ export const ContactPersonParams = t.intersection([ COMPANY_FISCAL_CODE: OrganizationFiscalCode, COMPANY_IPA_CODE: NonEmptyString, COMPANY_NAME: NonEmptyString, - COMPANY_VAT_NUMBER: NonEmptyString, + COMPANY_VAT_NUMBER: NonEmptyString }), t.partial({ - COMPANY_PHONE_NUMBER: NonEmptyString, - }), + COMPANY_PHONE_NUMBER: NonEmptyString + }) ]); export type ContactPersonParams = t.TypeOf; @@ -53,20 +53,20 @@ const SpidLogsParams = t.union([ SPID_LOGS_PUBLIC_KEY: NonEmptyString, SPID_LOGS_STORAGE_CONNECTION_STRING: NonEmptyString, - SPID_LOGS_STORAGE_CONTAINER_NAME: NonEmptyString, + SPID_LOGS_STORAGE_CONTAINER_NAME: NonEmptyString }), t.interface({ - ENABLE_SPID_ACCESS_LOGS: t.literal(false), - }), + ENABLE_SPID_ACCESS_LOGS: t.literal(false) + }) ]); type SpidLogsParams = t.TypeOf; export const CommonSpidParams = t.intersection([ t.interface({ - AUTH_N_CONTEXT: NonEmptyString, - ACS_BASE_URL: NonEmptyString, ALLOW_CORS: t.boolean, + AUTH_N_CONTEXT: NonEmptyString, + ENDPOINT_ACS: NonEmptyString, ENDPOINT_ERROR: NonEmptyString, ENDPOINT_LOGIN: NonEmptyString, @@ -83,13 +83,13 @@ export const CommonSpidParams = t.intersection([ ORG_NAME: NonEmptyString, ORG_URL: NonEmptyString, REQUIRED_ATTRIBUTES_SERVICE_NAME: NonEmptyString, - SPID_ATTRIBUTES: NonEmptyString, + SPID_ATTRIBUTES: NonEmptyString }), t.partial({ SPID_TESTENV_URL: NonEmptyString, - SPID_VALIDATOR_URL: NonEmptyString, + SPID_VALIDATOR_URL: NonEmptyString }), - SpidLogsParams, + SpidLogsParams ]); export type CommonSpidParams = t.TypeOf; @@ -97,17 +97,17 @@ export type CommonSpidParams = t.TypeOf; export const SpidParams = t.union([ t.intersection([ t.interface({ - ENABLE_FULL_OPERATOR_METADATA: t.literal(false), + ENABLE_FULL_OPERATOR_METADATA: t.literal(false) }), - CommonSpidParams, + CommonSpidParams ]), t.intersection([ t.interface({ - ENABLE_FULL_OPERATOR_METADATA: t.literal(true), + ENABLE_FULL_OPERATOR_METADATA: t.literal(true) }), CommonSpidParams, - ContactPersonParams, - ]), + ContactPersonParams + ]) ]); export type SpidParams = t.TypeOf; @@ -115,11 +115,11 @@ export const UserRegistryParams = t.union([ t.interface({ ENABLE_USER_REGISTRY: t.literal(true), USER_REGISTRY_API_KEY: NonEmptyString, - USER_REGISTRY_URL: NonEmptyString, + USER_REGISTRY_URL: NonEmptyString }), t.interface({ - ENABLE_USER_REGISTRY: t.literal(false), - }), + ENABLE_USER_REGISTRY: t.literal(false) + }) ]); export type UserRegistryParams = t.TypeOf; @@ -129,18 +129,18 @@ export const JWTParams = t.union([ t.interface({ ENABLE_JWT: t.literal(true), JWT_TOKEN_ISSUER: NonEmptyString, - JWT_TOKEN_PRIVATE_KEY: NonEmptyString, + JWT_TOKEN_PRIVATE_KEY: NonEmptyString }), t.partial({ JWT_TOKEN_AUDIENCE: NonEmptyString, - JWT_TOKEN_KID: NonEmptyString, + JWT_TOKEN_KID: NonEmptyString }), - UserRegistryParams, + UserRegistryParams ]), t.interface({ ENABLE_JWT: t.literal(false), - ENABLE_USER_REGISTRY: t.literal(false), - }), + ENABLE_USER_REGISTRY: t.literal(false) + }) ]); export type JWTParams = t.TypeOf; @@ -151,12 +151,12 @@ const AttributeAuthorityParams = t.union([ ENDPOINT_L1_SUCCESS: NonEmptyString, L1_TOKEN_EXPIRATION: NonNegativeInteger, L1_TOKEN_HEADER_NAME: NonEmptyString, - L2_TOKEN_EXPIRATION: NonNegativeInteger, + L2_TOKEN_EXPIRATION: NonNegativeInteger }), t.interface({ ENABLE_ADE_AA: t.literal(false), - TOKEN_EXPIRATION: NonNegativeInteger, - }), + TOKEN_EXPIRATION: NonNegativeInteger + }) ]); type AttributeAuthorityParams = t.TypeOf; @@ -167,12 +167,12 @@ export const IConfig = t.intersection([ APPINSIGHTS_DISABLED: t.boolean, APPINSIGHTS_INSTRUMENTATIONKEY: NonEmptyString, SERVER_PORT: NonNegativeInteger, - isProduction: t.boolean, + isProduction: t.boolean }), RedisParams, SpidParams, JWTParams, - AttributeAuthorityParams, + AttributeAuthorityParams ]); const DEFAULT_SERVER_PORT = 8080; @@ -182,66 +182,68 @@ const errorOrConfig: t.Validation = IConfig.decode({ ...process.env, ALLOW_CORS: pipe( O.fromNullable(process.env.ALLOW_CORS), - O.map((_) => _.toLowerCase() === "true"), + O.map(_ => _.toLowerCase() === "true"), O.getOrElse(() => false) ), APPINSIGHTS_DISABLED: pipe( O.fromNullable(process.env.APPINSIGHTS_DISABLED), - O.map((_) => _.toLowerCase() === "true"), + O.map(_ => _.toLowerCase() === "true"), O.getOrElse(() => true) ), ENABLE_ADE_AA: pipe( O.fromNullable(process.env.ENABLE_ADE_AA), - O.map((_) => _.toLowerCase() === "true"), + O.map(_ => _.toLowerCase() === "true"), O.getOrElse(() => false) ), ENABLE_FULL_OPERATOR_METADATA: pipe( O.fromNullable(process.env.ENABLE_FULL_OPERATOR_METADATA), - O.map((_) => _.toLowerCase() === "true"), + O.map(_ => _.toLowerCase() === "true"), O.getOrElse(() => false) ), ENABLE_JWT: pipe( O.fromNullable(process.env.ENABLE_JWT), - O.map((_) => _.toLowerCase() === "true"), + O.map(_ => _.toLowerCase() === "true"), O.getOrElse(() => false) ), ENABLE_SPID_ACCESS_LOGS: pipe( O.fromNullable(process.env.ENABLE_SPID_ACCESS_LOGS), - O.map((_) => _.toLowerCase() === "true"), + O.map(_ => _.toLowerCase() === "true"), O.getOrElse(() => false) ), ENABLE_USER_REGISTRY: pipe( O.fromNullable(process.env.ENABLE_USER_REGISTRY), - O.map((_) => _.toLowerCase() === "true"), + O.map(_ => _.toLowerCase() === "true"), O.getOrElse(() => false) ), IDP_METADATA_URL: pipe( O.fromNullable(process.env.IDP_METADATA_URL), - O.getOrElse(() => "https://registry.spid.gov.it/metadata/idp/spid-entities-idps.xml") + O.getOrElse( + () => "https://registry.spid.gov.it/metadata/idp/spid-entities-idps.xml" + ) ), INCLUDE_SPID_USER_ON_INTROSPECTION: pipe( O.fromNullable(process.env.INCLUDE_SPID_USER_ON_INTROSPECTION), - O.map((_) => _.toLowerCase() === "true"), + O.map(_ => _.toLowerCase() === "true"), O.getOrElse(() => false) ), L1_TOKEN_EXPIRATION: pipe( process.env.L1_TOKEN_EXPIRATION, IntegerFromString.decode, - E.getOrElseW((_) => undefined) + E.getOrElseW(_ => undefined) ), L2_TOKEN_EXPIRATION: pipe( process.env.L2_TOKEN_EXPIRATION, IntegerFromString.decode, - E.getOrElseW((_) => undefined) + E.getOrElseW(_ => undefined) ), REDIS_CLUSTER_ENABLED: pipe( O.fromNullable(process.env.REDIS_CLUSTER_ENABLED), - O.map((_) => _.toLowerCase() === "true"), + O.map(_ => _.toLowerCase() === "true"), O.toUndefined ), REDIS_TLS_ENABLED: pipe( O.fromNullable(process.env.REDIS_TLS_ENABLED), - O.map((_) => _.toLowerCase() === "true"), + O.map(_ => _.toLowerCase() === "true"), O.toUndefined ), SERVER_PORT: pipe( @@ -268,7 +270,7 @@ const errorOrConfig: t.Validation = IConfig.decode({ ), E.fold(() => 3600, identity) ), - isProduction: process.env.NODE_ENV === "prod", + isProduction: process.env.NODE_ENV === "prod" }); /** @@ -277,9 +279,7 @@ const errorOrConfig: t.Validation = IConfig.decode({ * * @returns either the configuration values or a list of validation errors */ -export function getConfig(): t.Validation { - return errorOrConfig; -} +export const getConfig = (): t.Validation => errorOrConfig; /** * Read the application configuration and check for invalid values. @@ -288,11 +288,10 @@ export function getConfig(): t.Validation { * @returns the configuration values * @throws validation errors found while parsing the application configuration */ -export function getConfigOrThrow(): IConfig { - return pipe( +export const getConfigOrThrow = (): IConfig => + pipe( errorOrConfig, - E.getOrElseW((errors) => { + E.getOrElseW(errors => { throw new Error(`Invalid configuration: ${readableReport(errors)}`); }) ); -} diff --git a/src/utils/conversions.ts b/src/utils/conversions.ts index a4dad17..ceb45c1 100644 --- a/src/utils/conversions.ts +++ b/src/utils/conversions.ts @@ -1,23 +1,25 @@ -import { ResponseErrorInternal } from "@pagopa/ts-commons/lib/responses"; +import { + IResponseErrorInternal, + ResponseErrorInternal +} from "@pagopa/ts-commons/lib/responses"; import express = require("express"); import * as E from "fp-ts/lib/Either"; import * as TE from "fp-ts/lib/TaskEither"; import { Errors } from "io-ts"; import * as t from "io-ts"; import { errorsToReadableMessages } from "@pagopa/ts-commons/lib/reporters"; +import { pipe } from "fp-ts/lib/function"; import { CommonTokenUser, FISCAL_NUMBER_INTERNATIONAL_PREFIX, SpidUser, TokenUser, TokenUserL2, - UserCompany, + UserCompany } from "../types/user"; -import { pipe } from "fp-ts/lib/function"; -export function errorsToError(errors: Errors): Error { - return new Error(errorsToReadableMessages(errors).join(" / ")); -} +export const errorsToError = (errors: Errors): Error => + new Error(errorsToReadableMessages(errors).join(" / ")); export const toCommonTokenUser = ( from: SpidUser @@ -27,7 +29,7 @@ export const toCommonTokenUser = ( fiscalNumber: from.fiscalNumber.replace( FISCAL_NUMBER_INTERNATIONAL_PREFIX, "" - ), + ) }; return pipe( { @@ -35,7 +37,7 @@ export const toCommonTokenUser = ( family_name: normalizedUser.familyName, fiscal_number: normalizedUser.fiscalNumber, mobile_phone: normalizedUser.mobilePhone, - name: normalizedUser.name, + name: normalizedUser.name }, CommonTokenUser.decode, E.mapLeft(errorsToError) @@ -45,8 +47,8 @@ export const toCommonTokenUser = ( export const toTokenUserL2 = ( from: TokenUser, company: UserCompany -): E.Either => { - return pipe( +): E.Either => + pipe( { company, email: from.email, @@ -54,25 +56,27 @@ export const toTokenUserL2 = ( fiscal_number: from.fiscal_number, from_aa: from.from_aa, mobile_phone: from.mobile_phone, - name: from.name, + name: from.name }, TokenUserL2.decode, E.mapLeft(errorsToError) ); -}; -export const toResponseErrorInternal = (err: Error) => +export const toResponseErrorInternal = (err: Error): IResponseErrorInternal => ResponseErrorInternal(err.message); export const toBadRequest = (res: express.Response) => ( errs: Error | Errors, message: string = "" -) => +): express.Response => res.status(400).json({ detail: errs instanceof Error ? errs.message : errorsToError(errs).message, error: "Bad Request", - message, + message }); -export const mapDecoding = (type: t.Type, toDecode: unknown) => +export const mapDecoding = ( + type: t.Type, + toDecode: unknown +): TE.TaskEither => pipe(toDecode, type.decode, E.mapLeft(errorsToError), TE.fromEither); diff --git a/src/utils/jwt.ts b/src/utils/jwt.ts index 1133afc..c3bcf98 100644 --- a/src/utils/jwt.ts +++ b/src/utils/jwt.ts @@ -14,10 +14,12 @@ import { errorsToError } from "./conversions"; const ExpireJWT = t.exact( t.interface({ - exp: t.number, + exp: t.number }) ); +type ExpireJWT = t.TypeOf; + /** * Generates a new token containing the logged spid User. * @@ -33,9 +35,10 @@ export const getUserJwt = ( issuer: NonEmptyString, keyid?: NonEmptyString, audience?: NonEmptyString + // eslint-disable-next-line max-params ): TE.TaskEither => pipe( - TE.taskify((cb) => + TE.taskify(cb => jwt.sign( tokenUser, privateKey, @@ -46,7 +49,7 @@ export const getUserJwt = ( issuer, jwtid: ulid(), keyid, - subject: tokenUser.id, + subject: tokenUser.id }), cb ) @@ -54,13 +57,22 @@ export const getUserJwt = ( TE.mapLeft(E.toError) ); -export const extractRawDataFromJwt = (jwtToken: NonEmptyString) => - E.tryCatch(() => jwt.decode(jwtToken, { json: true }), E.toError); +export const extractRawDataFromJwt = ( + jwtToken: NonEmptyString +): E.Either< + Error, + | string + | { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + readonly [key: string]: any; + } + | null +> => E.tryCatch(() => jwt.decode(jwtToken, { json: true }), E.toError); export const extractTypeFromJwt = ( jwtToken: NonEmptyString, typeToExtract: t.Type -) => +): TE.TaskEither => pipe( jwtToken, extractRawDataFromJwt, @@ -68,12 +80,14 @@ export const extractTypeFromJwt = ( TE.fromEither ); -export const extractJwtRemainingValidTime = (jwtToken: string) => +export const extractJwtRemainingValidTime = ( + jwtToken: string +): TE.TaskEither => pipe( jwtToken, jwt.decode, ExpireJWT.decode, - E.mapLeft((err) => new Error(errorsToReadableMessages(err).join("|"))), + E.mapLeft(err => new Error(errorsToReadableMessages(err).join("|"))), TE.fromEither ); @@ -81,9 +95,9 @@ export const verifyToken = ( publicCert: NonEmptyString, token: string, issuer: NonEmptyString -) => +): TE.TaskEither => pipe( - TE.taskify((cb) => + TE.taskify(cb => jwt.verify(token, publicCert, { algorithms: ["RS256"], issuer }, cb) )(), TE.mapLeft(E.toError) diff --git a/src/utils/logger.ts b/src/utils/logger.ts index 70c73b5..a01d84c 100644 --- a/src/utils/logger.ts +++ b/src/utils/logger.ts @@ -6,9 +6,9 @@ export const logger = createLogger({ label({ label: "hub-spid-login-ms" }), timestamp(), format.splat(), - printf(info => { - return `${info.timestamp} [${info.label}] ${info.level}: ${info.message}`; - }) + printf( + info => `${info.timestamp} [${info.label}] ${info.level}: ${info.message}` + ) ), level: process.env.NODE_ENV !== "prod" ? "debug" : "info", transports: [new transports.Console()] diff --git a/src/utils/redis.ts b/src/utils/redis.ts index 1b8db65..64501e4 100644 --- a/src/utils/redis.ts +++ b/src/utils/redis.ts @@ -6,12 +6,12 @@ import { getConfigOrThrow } from "./config"; import { logger } from "./logger"; const config = getConfigOrThrow(); -function createSimpleRedisClient( +const createSimpleRedisClient = ( redisUrl: string, password?: string, port?: string, useTls: boolean = true -): redis.RedisClient { +): redis.RedisClient => { const DEFAULT_REDIS_PORT = "6379"; const redisPort: number = parseInt(port || DEFAULT_REDIS_PORT, 10); @@ -19,7 +19,7 @@ function createSimpleRedisClient( auth_pass: password, host: redisUrl, port: redisPort, - retry_strategy: (retryOptions) => { + retry_strategy: retryOptions => { if (retryOptions.error && retryOptions.error.code === "ECONNREFUSED") { // End reconnecting on a specific error and flush all commands with // a individual error @@ -41,15 +41,15 @@ function createSimpleRedisClient( return Math.min(retryOptions.attempt * 100, 3000); }, socket_keepalive: true, - tls: useTls ? { servername: redisUrl } : undefined, + tls: useTls ? { servername: redisUrl } : undefined }); -} +}; -function createClusterRedisClient( +const createClusterRedisClient = ( redisUrl: string, password?: string, port?: string -): redis.RedisClient { +): redis.RedisClient => { const DEFAULT_REDIS_PORT = "6379"; const redisPort: number = parseInt(port || DEFAULT_REDIS_PORT, 10); @@ -57,22 +57,22 @@ function createClusterRedisClient( redisOptions: { auth_pass: password, tls: { - servername: redisUrl, - }, + servername: redisUrl + } }, servers: [ { host: redisUrl, - port: redisPort, - }, - ], + port: redisPort + } + ] }) as redis.RedisClient; // Casting RedisClustr with missing typings to RedisClient (same usage). -} +}; export const REDIS_CLIENT = pipe( - O.fromPredicate((_) => _)(config.isProduction), - O.mapNullable((_) => config.REDIS_CLUSTER_ENABLED), - O.chain(O.fromPredicate((_) => _)), + O.fromPredicate(_ => _)(config.isProduction), + O.mapNullable(_ => config.REDIS_CLUSTER_ENABLED), + O.chain(O.fromPredicate(_ => _)), O.map(() => createClusterRedisClient( config.REDIS_URL, @@ -102,7 +102,7 @@ REDIS_CLIENT.on("reconnecting", () => { logger.info("Client reconnecting..."); }); -REDIS_CLIENT.on("error", (err) => { +REDIS_CLIENT.on("error", err => { logger.info(`Redis error: ${err}`); }); diff --git a/src/utils/redis_storage.ts b/src/utils/redis_storage.ts index 9e75b39..eaec2e2 100644 --- a/src/utils/redis_storage.ts +++ b/src/utils/redis_storage.ts @@ -94,7 +94,7 @@ export const setWithExpirationTask = ( pipe( TE.tryCatch( () => - new Promise>((resolve) => + new Promise>(resolve => redisClient.set( key, value, @@ -127,7 +127,8 @@ export const setTask = ( pipe( TE.tryCatch( () => - new Promise>((resolve) => + new Promise>(resolve => + // eslint-disable-next-line sonarjs/no-identical-functions redisClient.set(key, value, (err, response) => resolve( falsyResponseToError( @@ -144,11 +145,14 @@ export const setTask = ( TE.chain(TE.fromEither) ); -export const deleteTask = (redisClient: RedisClient, key: string) => +export const deleteTask = ( + redisClient: RedisClient, + key: string +): TE.TaskEither => pipe( TE.tryCatch( () => - new Promise>((resolve) => + new Promise>(resolve => redisClient.del(key, (err, response) => resolve( falsyResponseToError( @@ -170,7 +174,7 @@ export const getTask = ( pipe( TE.tryCatch( () => - new Promise>>((resolve) => + new Promise>>(resolve => redisClient.get(key, (err, response) => resolve(singleValueReply(err, response)) ) @@ -187,7 +191,7 @@ export const existsKeyTask = ( pipe( TE.tryCatch( () => - new Promise>((resolve) => + new Promise>(resolve => redisClient.exists(key, (err, response) => resolve(integerReply(err, response, 1)) ) @@ -203,7 +207,7 @@ export const pingTask = ( pipe( TE.tryCatch( () => - new Promise>((resolve) => + new Promise>(resolve => redisClient.ping("ping message", (err, response) => resolve( falsyResponseToError( diff --git a/src/utils/user_registry.ts b/src/utils/user_registry.ts index 5050fb4..de28d71 100644 --- a/src/utils/user_registry.ts +++ b/src/utils/user_registry.ts @@ -3,7 +3,7 @@ import { IResponseErrorInternal, IResponseErrorValidation, ResponseErrorForbiddenNotAuthorized, - ResponseErrorValidation, + ResponseErrorValidation } from "@pagopa/ts-commons/lib/responses"; import { FiscalCode, NonEmptyString } from "@pagopa/ts-commons/lib/strings"; import { toError } from "fp-ts/lib/Either"; @@ -25,7 +25,7 @@ export const getUserId = ( subscriptionKey: NonEmptyString ): TE.TaskEither< IResponseErrorInternal | IResponseErrorForbiddenNotAuthorized, - Option<{ id: string }> + Option<{ readonly id: string }> > => pipe( TE.tryCatch( @@ -33,24 +33,24 @@ export const getUserId = ( apiClient.getUserByExternalId({ SubscriptionKey: subscriptionKey, body: { - externalId, - }, + externalId + } }), toError ), - TE.mapLeft((err) => { + TE.mapLeft(err => { logger.error(`USER REGISTRY getUserByExternalId: ${err.message}`); return toResponseErrorInternal(err); }), // Validation (Either) -> taskEither - TE.chain((_) => + TE.chain(_ => pipe( _, - E.mapLeft((errs) => toResponseErrorInternal(errorsToError(errs))), + E.mapLeft(errs => toResponseErrorInternal(errorsToError(errs))), TE.fromEither ) ), - TE.chainW((res) => { + TE.chainW(res => { switch (res.status) { case 200: return TE.of(some({ id: res.value.id })); @@ -68,28 +68,30 @@ export const postUser = ( subscriptionKey: NonEmptyString ): TE.TaskEither => pipe( - TE.tryCatch(() => { - return apiClient.createUser({ - SubscriptionKey: subscriptionKey, - body: { - ...user, - }, - }); - }, toError), - TE.mapLeft((err) => { + TE.tryCatch( + () => + apiClient.createUser({ + SubscriptionKey: subscriptionKey, + body: { + ...user + } + }), + toError + ), + TE.mapLeft(err => { logger.error(`USER REGISTRY postUser: ${err.message}`); return toResponseErrorInternal(err); }), - TE.chainW((_) => + TE.chainW(_ => pipe( _, - E.mapLeft((errs) => + E.mapLeft(errs => ResponseErrorValidation("Validation Error", errs.join("/")) ), TE.fromEither ) ), - TE.chain((res) => + TE.chain(res => res.status === 201 ? TE.of(res.value) : TE.left( @@ -105,22 +107,21 @@ export const blurUser = ( ): TE.TaskEither< IResponseErrorInternal | IResponseErrorValidation, Option> -> => { - return pipe( +> => + pipe( getUserId(apiClient, fiscalCode, subscriptionKey), - TE.mapLeft((error) => toResponseErrorInternal(toError(error))), - TE.chain((maybeUserID) => + TE.mapLeft(error => toResponseErrorInternal(toError(error))), + TE.chain(maybeUserID => pipe( maybeUserID, O.fold( () => pipe( postUser(apiClient, user, subscriptionKey), - TE.map((u) => some({ id: u.id })) + TE.map(u => some({ id: u.id })) ), - (r) => TE.of(some(r)) + r => TE.of(some(r)) ) ) ) ); -}; diff --git a/tslint.json b/tslint.json deleted file mode 100644 index a6e3715..0000000 --- a/tslint.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "defaultSeverity": "error", - "extends": [ - "italia-tslint-rules/strong" - ], - "jsRules": {}, - "rules": { - "no-submodule-imports": false, - "prettier": false, - "ordered-imports": false - }, - "rulesDirectory": [], - "linterOptions": { - "exclude": [ - "generated/**/*" - ] - } -} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index a780e86..b2b0d03 100644 --- a/yarn.lock +++ b/yarn.lock @@ -147,6 +147,44 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@es-joy/jsdoccomment@~0.31.0": + version "0.31.0" + resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.31.0.tgz#dbc342cc38eb6878c12727985e693eaef34302bc" + integrity sha512-tc1/iuQcnaiSIUVad72PBierDFpsxdUHtEF/OrfqvM1CBAsIoMP51j52jTMb3dXriwhieTo289InzZj72jL3EQ== + dependencies: + comment-parser "1.3.1" + esquery "^1.4.0" + jsdoc-type-pratt-parser "~3.1.0" + +"@eslint/eslintrc@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" + integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.3.2" + globals "^13.15.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" + +"@humanwhocodes/config-array@^0.9.2": + version "0.9.5" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" + integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.4" + +"@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== + "@jest/console@^24.7.1", "@jest/console@^24.9.0": version "24.9.0" resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" @@ -295,6 +333,27 @@ "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^13.0.0" +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + 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": + 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== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + "@octokit/auth-token@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.0.tgz#b64178975218b99e4dfe948253f0673cbbb59d9f" @@ -360,6 +419,26 @@ dependencies: "@types/node" ">= 8" +"@pagopa/eslint-config@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@pagopa/eslint-config/-/eslint-config-3.0.0.tgz#a773121788299eaeb9ba71c2ad2bf5ea795028d6" + integrity sha512-eYIPdiuYRbRPR5k0OuteRNqYb0Z2nfJ/lZohejB7ylfBeSDWwkaV8Z19AXP4RymE6oEesyPDZ6i0yNaE9tQrHw== + dependencies: + "@typescript-eslint/eslint-plugin" "^5.18.0" + "@typescript-eslint/parser" "^5.18.0" + eslint "^8.12.0" + eslint-config-prettier "^8.5.0" + eslint-plugin-extra-rules "^0.0.0-development" + eslint-plugin-fp "^2.3.0" + eslint-plugin-functional "^4.2.1" + eslint-plugin-import "^2.26.0" + eslint-plugin-jsdoc "^39.0.0" + eslint-plugin-prefer-arrow "^1.2.3" + eslint-plugin-prettier "^4.0.0" + eslint-plugin-react "^7.29.4" + eslint-plugin-sonarjs "^0.13.0" + prettier "^2.6.2" + "@pagopa/io-spid-commons@^7.0.2": version "7.0.2" resolved "https://registry.yarnpkg.com/@pagopa/io-spid-commons/-/io-spid-commons-7.0.2.tgz#6270d392b43b84f4f83138b03f87474b2086c20b" @@ -526,6 +605,16 @@ dependencies: jest-diff "^24.3.0" +"@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@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/jsonwebtoken@7.2.7": version "7.2.7" resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-7.2.7.tgz#5dd62e0c0a0c6f211c3c1d13d322360894625b47" @@ -663,6 +752,86 @@ dependencies: "@types/yargs-parser" "*" +"@typescript-eslint/eslint-plugin@^5.18.0": + version "5.27.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.27.0.tgz#23d82a4f21aaafd8f69dbab7e716323bb6695cc8" + integrity sha512-DDrIA7GXtmHXr1VCcx9HivA39eprYBIFxbQEHI6NyraRDxCGpxAFiYQAT/1Y0vh1C+o2vfBiy4IuPoXxtTZCAQ== + dependencies: + "@typescript-eslint/scope-manager" "5.27.0" + "@typescript-eslint/type-utils" "5.27.0" + "@typescript-eslint/utils" "5.27.0" + debug "^4.3.4" + functional-red-black-tree "^1.0.1" + ignore "^5.2.0" + regexpp "^3.2.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.18.0": + version "5.27.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.27.0.tgz#62bb091ed5cf9c7e126e80021bb563dcf36b6b12" + integrity sha512-8oGjQF46c52l7fMiPPvX4It3u3V3JipssqDfHQ2hcR0AeR8Zge+OYyKUCm5b70X72N1qXt0qgHenwN6Gc2SXZA== + dependencies: + "@typescript-eslint/scope-manager" "5.27.0" + "@typescript-eslint/types" "5.27.0" + "@typescript-eslint/typescript-estree" "5.27.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.27.0": + version "5.27.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.27.0.tgz#a272178f613050ed62f51f69aae1e19e870a8bbb" + integrity sha512-VnykheBQ/sHd1Vt0LJ1JLrMH1GzHO+SzX6VTXuStISIsvRiurue/eRkTqSrG0CexHQgKG8shyJfR4o5VYioB9g== + dependencies: + "@typescript-eslint/types" "5.27.0" + "@typescript-eslint/visitor-keys" "5.27.0" + +"@typescript-eslint/type-utils@5.27.0": + version "5.27.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.27.0.tgz#36fd95f6747412251d79c795b586ba766cf0974b" + integrity sha512-vpTvRRchaf628Hb/Xzfek+85o//zEUotr1SmexKvTfs7czXfYjXVT/a5yDbpzLBX1rhbqxjDdr1Gyo0x1Fc64g== + dependencies: + "@typescript-eslint/utils" "5.27.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.27.0": + version "5.27.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.27.0.tgz#c3f44b9dda6177a9554f94a74745ca495ba9c001" + integrity sha512-lY6C7oGm9a/GWhmUDOs3xAVRz4ty/XKlQ2fOLr8GAIryGn0+UBOoJDWyHer3UgrHkenorwvBnphhP+zPmzmw0A== + +"@typescript-eslint/typescript-estree@5.27.0": + version "5.27.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.27.0.tgz#7965f5b553c634c5354a47dcce0b40b94611e995" + integrity sha512-QywPMFvgZ+MHSLRofLI7BDL+UczFFHyj0vF5ibeChDAJgdTV8k4xgEwF0geFhVlPc1p8r70eYewzpo6ps+9LJQ== + dependencies: + "@typescript-eslint/types" "5.27.0" + "@typescript-eslint/visitor-keys" "5.27.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.27.0", "@typescript-eslint/utils@^5.10.2": + version "5.27.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.27.0.tgz#d0021cbf686467a6a9499bd0589e19665f9f7e71" + integrity sha512-nZvCrkIJppym7cIbP3pOwIkAefXOmfGPnCM0LQfzNaKxJHI6VjI8NC662uoiPlaf5f6ymkTy9C3NQXev2mdXmA== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.27.0" + "@typescript-eslint/types" "5.27.0" + "@typescript-eslint/typescript-estree" "5.27.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/visitor-keys@5.27.0": + version "5.27.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.27.0.tgz#97aa9a5d2f3df8215e6d3b77f9d214a24db269bd" + integrity sha512-46cYrteA2MrIAjv9ai44OQDUoCZyHeGIc4lsjCUX2WT6r4C+kidz1bNiR4017wHOPUythYeH+Sc7/cFP97KEAA== + dependencies: + "@typescript-eslint/types" "5.27.0" + eslint-visitor-keys "^3.3.0" + a-sync-waterfall@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz#75b6b6aa72598b497a125e7a2770f14f4c8a1fa7" @@ -701,11 +870,28 @@ acorn-globals@^4.1.0: acorn "^6.0.1" acorn-walk "^6.0.1" +acorn-jsx@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-2.0.1.tgz#0edf9878a5866bca625f52955a1ed9e7d8c5117e" + integrity sha512-rbNtu2WkMJAZNnw2rh35whZO2e2N8Q1Dp4PBf/pKJAals6uFbPvVgVcKZ8poUnrkF50thOea1ApmF8W56apnwA== + dependencies: + acorn "^2.0.1" + +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@^6.0.1: version "6.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== +acorn@^2.0.1, acorn@^2.6.4: + version "2.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" + integrity sha512-pXK8ez/pVjqFdAgBkF1YPVRacuLQ9EXBKaKWaeh58WNfMkCmZhOZzu+NtKSPD5PHmCCHheQ5cD29qM1K4QTxIg== + acorn@^5.5.3: version "5.7.4" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" @@ -716,6 +902,11 @@ acorn@^6.0.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== +acorn@^8.7.1: + version "8.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" + integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== + agent-base@4, agent-base@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" @@ -732,7 +923,7 @@ agentkeepalive@^4.1.4: depd "^1.1.2" humanize-ms "^1.2.1" -ajv@^6.12.3: +ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -784,6 +975,11 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -799,6 +995,13 @@ ansi-styles@^4.0.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -862,11 +1065,47 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= +array-includes@^3.1.4, array-includes@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" + integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + get-intrinsic "^1.1.1" + 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-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array.prototype.flat@^1.2.5: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" + integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" + integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" + asap@^2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -1113,7 +1352,7 @@ braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" -braces@~3.0.2: +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -1166,11 +1405,6 @@ buffer-from@1.x, buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -builtin-modules@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= - bytes@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" @@ -1245,6 +1479,14 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4 escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chokidar@^3.2.2: version "3.3.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" @@ -1426,7 +1668,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.12.1, commander@^2.18.0, commander@^2.7.1, commander@^2.9.0: +commander@^2.18.0, commander@^2.7.1, commander@^2.9.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -1436,6 +1678,11 @@ commander@^5.0.0, commander@^5.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== +comment-parser@1.3.1: + 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.2.0, component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -1458,6 +1705,11 @@ configstore@^3.0.0: write-file-atomic "^2.0.0" xdg-basedir "^3.0.0" +console-assert@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/console-assert/-/console-assert-1.0.0.tgz#70167028ef08ec1667a0c687205a8360eb117367" + integrity sha512-YtowQtZLdzPUlXL+kxMEBclXVOrWzR/+9TAUbIdgnjCkRW8+Dj0y4ajMJtOoQFXEubMONX0fkFS3SNLxx4FQRA== + content-disposition@0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" @@ -1530,6 +1782,13 @@ create-error-class@^3.0.0: dependencies: capture-stack-trace "^1.0.0" +create-eslint-index@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/create-eslint-index/-/create-eslint-index-1.0.0.tgz#d954372d86d5792fcd67e9f2b791b1ab162411bb" + integrity sha512-nXvJjnfDytOOaPOonX0h0a1ggMoqrhdekGeZkD6hkcWYvlCWhU719tKFVh8eU04CnMwu3uwe1JjwuUF2C3k2qg== + dependencies: + lodash.get "^4.3.0" + cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -1550,6 +1809,15 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + crypto-random-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" @@ -1652,7 +1920,7 @@ date-fns@^1.28.5, date-fns@^1.30.1: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== -debug@2.6.9, debug@^2.2.0, debug@^2.3.3: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -1673,6 +1941,13 @@ debug@^3.1.0, debug@^3.2.6: dependencies: ms "^2.1.1" +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.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -1680,6 +1955,13 @@ debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" +debug@^4.3.2, 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== + dependencies: + ms "2.1.2" + decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -1695,11 +1977,23 @@ 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-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +deepmerge-ts@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/deepmerge-ts/-/deepmerge-ts-4.0.3.tgz#495b11315d082fc715e101a1b0e41cbb136becfb" + integrity sha512-kRBBqKdfhdZ+LEBkyE0Y7Yu7Lm277HOKpVmpecaEzzD3Krne9uO13Wqi7sNJ9S4FDmCgwjiWj8UhXo5OgjOIwg== + dependencies: + is-plain-object "^5.0.0" + defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -1714,6 +2008,14 @@ define-properties@^1.1.2, define-properties@^1.1.3: dependencies: object-keys "^1.0.12" +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-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -1792,18 +2094,26 @@ diff-sequences@^24.9.0: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" -doctrine@0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-0.7.2.tgz#7cb860359ba3be90e040b26b729ce4bfa654c523" - integrity sha1-fLhgNZujvpDgQLJrcpzkv6ZUxSM= +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 "^1.1.6" - isarray "0.0.1" + 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" domexception@^1.0.1: version "1.0.1" @@ -1951,6 +2261,42 @@ es-abstract@^1.18.0-next.2: string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.0" +es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: + version "1.20.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" + integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== + 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.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + is-callable "^1.2.4" + 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.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + regexp.prototype.flags "^1.4.3" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" + +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" @@ -1992,6 +2338,11 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +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== + escodegen@^1.9.1: version "1.13.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.13.0.tgz#c7adf9bd3f3cc675bb752f202f79a720189cab29" @@ -2004,28 +2355,251 @@ escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" -eslint-plugin-prettier@^2.2.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.7.0.tgz#b4312dcf2c1d965379d7f9d5b5f8aaadc6a45904" - integrity sha512-CStQYJgALoQBw3FsBzH0VOVDRnJ/ZimUlpLm226U8qgqYJfPOY/CPK6wyRInMxh73HSKg5wyRwdS4BVYYHwokA== +eslint-ast-utils@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-ast-utils/-/eslint-ast-utils-1.1.0.tgz#3d58ba557801cfb1c941d68131ee9f8c34bd1586" + integrity sha512-otzzTim2/1+lVrlH19EfQQJEhVJSu0zOb9ygb3iapN6UlyaDtyRq4b5U1FuW0v1lRa9Fp/GJyHkSwm6NqABgCA== + dependencies: + lodash.get "^4.4.2" + lodash.zip "^4.2.0" + +eslint-config-prettier@^8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" + integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== + +eslint-import-resolver-node@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" + integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== dependencies: - fast-diff "^1.1.1" - jest-docblock "^21.0.0" + debug "^3.2.7" + resolve "^1.20.0" + +eslint-module-utils@^2.7.3: + version "2.7.3" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" + integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== + dependencies: + debug "^3.2.7" + find-up "^2.1.0" + +eslint-plugin-extra-rules@^0.0.0-development: + version "0.0.0-development" + resolved "https://registry.yarnpkg.com/eslint-plugin-extra-rules/-/eslint-plugin-extra-rules-0.0.0-development.tgz#c3c1aed3086c39fd83c1b7a4fa3df9884b4abb48" + integrity sha512-Lib5tzYuLE8IneAYm8LY5oFhAaQ40IgO8BemKZGBpmZgQwgG7zzKLHs+pvUcgn5cjdoPdbZMcr2vTYmuss2l/g== + dependencies: + console-assert "1.0.0" + espree "3.0.0-alpha-1" + quote "0.4.0" + +eslint-plugin-fp@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-fp/-/eslint-plugin-fp-2.3.0.tgz#376d2a108710e981980bdc3875e3b9920da0489c" + integrity sha512-3n2oHibwoIxAht9/+ZaTldhI6brXORgl8oNXqZd+d9xuAQt2SBJ2/aml0oQRMWvXrgsz2WG6wfC++NjzSG3prA== + dependencies: + create-eslint-index "^1.0.0" + eslint-ast-utils "^1.0.0" + lodash "^4.13.1" + req-all "^0.1.0" + +eslint-plugin-functional@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-functional/-/eslint-plugin-functional-4.2.1.tgz#c486f15695a31f916847c89f0f85a09c8ee423c6" + integrity sha512-j16ozgXrr0UdPBirdbgDZgRBPr9Prj3j1xoisE435wzRDMWQlSHHJ41LCzNrlfGDb7OFAyXVcVatVwALz2jckw== + dependencies: + "@typescript-eslint/utils" "^5.10.2" + deepmerge-ts "^4.0.3" + escape-string-regexp "^4.0.0" + +eslint-plugin-import@^2.26.0: + version "2.26.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" + integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== + dependencies: + array-includes "^3.1.4" + array.prototype.flat "^1.2.5" + debug "^2.6.9" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.6" + eslint-module-utils "^2.7.3" + has "^1.0.3" + is-core-module "^2.8.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.5" + resolve "^1.22.0" + tsconfig-paths "^3.14.1" + +eslint-plugin-jsdoc@^39.0.0: + version "39.3.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-39.3.2.tgz#b9c3becdbd860a75b8bd07bd04a0eaaad7c79403" + integrity sha512-RSGN94RYzIJS/WfW3l6cXzRLfJWxvJgNQZ4w0WCaxJWDJMigtwTsILEAfKqmmPkT2rwMH/s3C7G5ChDE6cwPJg== + dependencies: + "@es-joy/jsdoccomment" "~0.31.0" + comment-parser "1.3.1" + debug "^4.3.4" + escape-string-regexp "^4.0.0" + esquery "^1.4.0" + semver "^7.3.7" + spdx-expression-parse "^3.0.1" + +eslint-plugin-prefer-arrow@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.3.tgz#e7fbb3fa4cd84ff1015b9c51ad86550e55041041" + integrity sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ== + +eslint-plugin-prettier@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz#8b99d1e4b8b24a762472b4567992023619cb98e0" + integrity sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-react@^7.29.4: + version "7.30.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.0.tgz#8e7b1b2934b8426ac067a0febade1b13bd7064e3" + integrity sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A== + dependencies: + array-includes "^3.1.5" + array.prototype.flatmap "^1.3.0" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.5" + object.fromentries "^2.0.5" + object.hasown "^1.1.1" + object.values "^1.1.5" + prop-types "^15.8.1" + resolve "^2.0.0-next.3" + semver "^6.3.0" + string.prototype.matchall "^4.0.7" + +eslint-plugin-sonarjs@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.13.0.tgz#c34d140cc90abaaed38f5a5201a2ccdebe398862" + integrity sha512-t3m7ta0EspzDxSOZh3cEOJIJVZgN/TlJYaBGnQlK6W/PZNbWep8q4RQskkJkA7/zwNpX0BaoEOSUUrqaADVoqA== + +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.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + +eslint@^8.12.0: + version "8.16.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.16.0.tgz#6d936e2d524599f2a86c708483b4c372c5d3bbae" + integrity sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA== + dependencies: + "@eslint/eslintrc" "^1.3.0" + "@humanwhocodes/config-array" "^0.9.2" + ajv "^6.10.0" + 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.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.3.2" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^6.0.1" + globals "^13.15.0" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@3.0.0-alpha-1: + version "3.0.0-alpha-1" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.0.0-alpha-1.tgz#ca1380bd81f2fae94b2638ae7cc449b71f91eaa3" + integrity sha512-HIv6P6qCt3ciLWri1KrO7EPigKPetBZwfCf0o9TuAxRBEPoUUisCepsZqvM76xRfQf2sheO4BC5R/w3UKhwx4w== + dependencies: + acorn "^2.6.4" + acorn-jsx "^2.0.1" + +espree@^9.3.2: + version "9.3.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" + integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== + dependencies: + acorn "^8.7.1" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -estraverse@^4.2.0: +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + 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, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -esutils@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.1.6.tgz#c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375" - integrity sha1-wBzKqa5LiXxtDD4hCuUvPHqEQ3U= +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.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" @@ -2195,17 +2769,33 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== -fast-diff@^1.1.1: +fast-deep-equal@^3.1.3: + 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.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "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: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -2215,6 +2805,13 @@ fast-safe-stringify@^2.0.4: resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + fb-watchman@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" @@ -2227,6 +2824,13 @@ fecha@^2.3.3: resolved "https://registry.yarnpkg.com/fecha/-/fecha-2.3.3.tgz#948e74157df1a32fd1b12c3a3c3cdcb6ec9d96cd" integrity sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg== +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" + file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" @@ -2284,6 +2888,19 @@ find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.5" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" + integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== + for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -2376,6 +2993,26 @@ 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" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + +functions-have-names@^1.2.2: + 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.1: version "1.0.0-beta.1" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -2391,7 +3028,7 @@ get-caller-file@^2.0.1: 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.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== @@ -2417,6 +3054,14 @@ get-stream@^4.0.0: dependencies: pump "^3.0.0" +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" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -2438,6 +3083,20 @@ git-config-path@^1.0.1: fs-exists-sync "^0.1.0" homedir-polyfill "^1.0.0" +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.1: + 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-parent@~5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" @@ -2469,6 +3128,25 @@ 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.15.0: + version "13.15.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.15.0.tgz#38113218c907d2f7e98658af246cef8b77e90bac" + integrity sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog== + dependencies: + type-fest "^0.20.2" + +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" + got@^6.7.1: version "6.7.1" resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" @@ -2539,6 +3217,11 @@ has-bigints@^1.0.1: resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== +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@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" @@ -2549,6 +3232,18 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-flag@^4.0.0: + version "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-symbols@^1.0.0, has-symbols@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" @@ -2559,6 +3254,18 @@ has-symbols@^1.0.2: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== +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-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -2701,10 +3408,18 @@ ignore-by-default@^1.0.1: resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= -immutable@^3.8.2: - version "3.8.2" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" - integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= +ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +import-fresh@^3.0.0, 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-lazy@^2.1.0: version "2.1.0" @@ -2747,6 +3462,15 @@ ini@^1.3.4, ini@^1.3.5, 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.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + interpret@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" @@ -2842,6 +3566,11 @@ is-callable@^1.2.3: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== +is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + is-ci@^1.0.10: version "1.2.1" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" @@ -2856,6 +3585,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-core-module@^2.2.0, is-core-module@^2.8.1: + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -2932,6 +3668,13 @@ 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.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" @@ -2952,6 +3695,11 @@ is-negative-zero@^2.0.1: resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== +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-npm@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" @@ -3000,6 +3748,11 @@ is-plain-object@^3.0.0: dependencies: isobject "^4.0.0" +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" @@ -3020,11 +3773,26 @@ is-regex@^1.1.2: call-bind "^1.0.2" has-symbols "^1.0.1" +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-retry-allowed@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== +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.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -3035,6 +3803,13 @@ is-string@^1.0.5: resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== +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-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -3047,6 +3822,13 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +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" + is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -3057,11 +3839,6 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -3139,19 +3916,6 @@ istanbul-reports@^2.2.6: dependencies: html-escaper "^2.0.0" -italia-tslint-rules@*: - version "1.1.3" - resolved "https://registry.yarnpkg.com/italia-tslint-rules/-/italia-tslint-rules-1.1.3.tgz#efac0c9638d14cef6cc907be74f0799b8bab0976" - integrity sha512-vu1LsSPaAnreitYlFnMFzKvZvXJz1M6B2AeY8CsGZ1DGHG5gJhiTKdyOR86I3q5TjegEYbi3nLLieJV0uKDKcA== - dependencies: - tslint-config-prettier "^1.18.0" - tslint-eslint-rules "^5.4.0" - tslint-immutable "^5.5.2" - tslint-plugin-prettier "^2.0.1" - tslint-react "^4.0.0" - tslint-sonarts "^1.9.0" - typestrict "^1.0.2" - jest-changed-files@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" @@ -3213,11 +3977,6 @@ jest-diff@^24.3.0, jest-diff@^24.9.0: jest-get-type "^24.9.0" pretty-format "^24.9.0" -jest-docblock@^21.0.0: - version "21.2.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" - integrity sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw== - jest-docblock@^24.3.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" @@ -3524,7 +4283,7 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^4.0.0: +js-yaml@^4.0.0, js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== @@ -3536,6 +4295,11 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= +jsdoc-type-pratt-parser@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.1.0.tgz#a4a56bdc6e82e5865ffd9febc5b1a227ff28e67e" + integrity sha512-MgtD0ZiCDk9B+eI73BextfRrVQl0oyzRG8B2BjORts6jbunj4ScKPcyXGTbB6eXL4y9TzxCm6hyeLq/2ASzNdw== + jsdom@^11.5.1: version "11.12.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" @@ -3618,6 +4382,11 @@ json-set-map@^1.1.2: resolved "https://registry.yarnpkg.com/json-set-map/-/json-set-map-1.1.2.tgz#536cbc6549d06e8af11f76cb4fbd441ed2389e6e" integrity sha512-x0TGwgcOG21jOa8wV1PWXDpSXUAKa1WuhMSHPBQhXU5Pb+4DdMrxOw5HMAWztVLP8KhSG5Kl5BoAOVF0aW63wA== +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" @@ -3630,6 +4399,13 @@ json5@2.x, json5@^2.1.0: dependencies: minimist "^1.2.0" +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -3683,6 +4459,14 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz#e624f259143b9062c92b6413ff92a164c80d3ccb" + integrity sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q== + dependencies: + array-includes "^3.1.4" + object.assign "^4.1.2" + jwa@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" @@ -3760,6 +4544,14 @@ 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" + levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -3768,11 +4560,6 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -3816,7 +4603,7 @@ lodash.flatten@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== -lodash.get@^4.4.2: +lodash.get@^4.3.0, lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= @@ -3876,6 +4663,11 @@ lodash.memoize@4.x, lodash.memoize@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= +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.once@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" @@ -3901,6 +4693,16 @@ lodash.uniqby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" integrity sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI= +lodash.zip@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.zip/-/lodash.zip-4.2.0.tgz#ec6662e4896408ed4ab6c542a3990b72cc080020" + integrity sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg== + +lodash@^4.13.1: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.5.0: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" @@ -3924,7 +4726,7 @@ logform@^2.1.1: ms "^2.1.1" triple-beam "^1.3.0" -loose-envify@^1.0.0: +loose-envify@^1.0.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -3944,6 +4746,13 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + macos-release@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" @@ -4037,6 +4846,11 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + methods@^1.1.1, methods@^1.1.2, methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -4061,6 +4875,14 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + mime-db@1.43.0: version "1.43.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" @@ -4095,6 +4917,13 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" +minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" @@ -4110,6 +4939,11 @@ minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -4165,16 +4999,16 @@ ms@2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== +ms@2.1.2, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + ms@^2.0.0: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - nan@^2.12.1: version "2.14.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" @@ -4370,7 +5204,7 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4: +object-assign@^4, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -4384,6 +5218,11 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" +object-inspect@^1.12.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.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" @@ -4426,6 +5265,24 @@ object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" +object.entries@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" + integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.fromentries@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" + integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + object.getownpropertydescriptors@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" @@ -4434,6 +5291,14 @@ object.getownpropertydescriptors@^2.1.0: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" +object.hasown@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" + integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== + dependencies: + define-properties "^1.1.4" + es-abstract "^1.19.5" + object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -4441,6 +5306,15 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" +object.values@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" + integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + octokit-pagination-methods@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" @@ -4508,6 +5382,18 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + ora@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ora/-/ora-2.1.0.tgz#6caf2830eb924941861ec53a173799e008b51e5b" @@ -4624,6 +5510,13 @@ package-json@^4.0.0: registry-url "^3.0.3" semver "^5.1.0" +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-diff@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/parse-diff/-/parse-diff-0.5.1.tgz#18b3e82a0765ac1c8796e3854e475073a691c4fb" @@ -4744,11 +5637,21 @@ path-key@^2.0.0, path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -4761,6 +5664,11 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + pause@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d" @@ -4776,6 +5684,11 @@ picomatch@^2.0.4, picomatch@^2.0.7: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + pidtree@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" @@ -4828,6 +5741,11 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +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== + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -4838,11 +5756,23 @@ prepend-http@^1.0.1: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= +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@^1.12.1: version "1.19.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== +prettier@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" + integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== + pretty-format@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" @@ -4876,6 +5806,15 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.3" +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + propagate@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/propagate/-/propagate-2.0.1.tgz#40cdedab18085c792334e64f0ac17256d38f9a45" @@ -4942,6 +5881,16 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quote@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/quote/-/quote-0.4.0.tgz#10839217f6c1362b89194044d29b233fd7f32f01" + integrity sha1-EIOSF/bBNiuJGUBE0psjP9fzLwE= + range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -4967,6 +5916,11 @@ rc@^1.0.1, rc@^1.1.6: minimist "^1.2.0" strip-json-comments "~2.0.1" +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + react-is@^16.8.4: version "16.12.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" @@ -5099,6 +6053,20 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexp.prototype.flags@^1.4.1, 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" + +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + registry-auth-token@^3.0.1: version "3.4.0" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" @@ -5129,6 +6097,11 @@ repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= +req-all@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/req-all/-/req-all-0.1.0.tgz#130051e2ace58a02eacbfc9d448577a736a9273a" + integrity sha1-EwBR4qzligLqy/ydRIV3pzapJzo= + request-promise-core@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" @@ -5229,6 +6202,11 @@ resolve-from@^3.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" integrity sha1-six699nWiBvItuZTM17rywoYh0g= +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-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -5246,6 +6224,23 @@ resolve@1.x, resolve@^1.1.6, resolve@^1.10.0, resolve@^1.3.2: dependencies: path-parse "^1.0.6" +resolve@^1.20.0, resolve@^1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + dependencies: + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.3: + version "2.0.0-next.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" + integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -5259,6 +6254,11 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + rfc6902@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/rfc6902/-/rfc6902-3.0.4.tgz#82965f13536fd20cb7799ce0376e9ce7cd3ebfe6" @@ -5271,11 +6271,25 @@ rimraf@^2.5.4, rimraf@^2.6.3: dependencies: glob "^7.1.3" +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + rsvp@^4.8.4: version "4.8.5" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -5350,6 +6364,13 @@ semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.3.7: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -5406,11 +6427,23 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + shell-quote@^1.6.1: version "1.7.2" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" @@ -5444,6 +6477,15 @@ shx@^0.3.2: minimist "^1.2.0" shelljs "^0.8.1" +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -5466,6 +6508,11 @@ slash@^2.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -5551,6 +6598,14 @@ spdx-expression-parse@^3.0.0: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" +spdx-expression-parse@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + spdx-license-ids@^3.0.0: version "3.0.5" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" @@ -5659,6 +6714,20 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string.prototype.matchall@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" + integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.1" + side-channel "^1.0.4" + string.prototype.padend@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz#6858ca4f35c5268ebd5e8615e1327d55f59ee311" @@ -5676,6 +6745,15 @@ string.prototype.trimend@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" +string.prototype.trimend@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" + integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + string.prototype.trimleft@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" @@ -5700,6 +6778,15 @@ string.prototype.trimstart@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" +string.prototype.trimstart@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" + integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -5747,6 +6834,13 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.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" @@ -5757,6 +6851,11 @@ strip-eof@^1.0.0: resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -5807,6 +6906,13 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + supports-hyperlinks@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz#71daedf36cc1060ac5100c351bb3da48c29c0ef7" @@ -5815,6 +6921,11 @@ supports-hyperlinks@^1.0.1: has-flag "^2.0.0" supports-color "^5.0.0" +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + swagger-methods@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/swagger-methods/-/swagger-methods-2.0.2.tgz#5891d5536e54d5ba8e7ae1007acc9170f41c9590" @@ -5866,6 +6977,11 @@ text-hex@1.0.x: resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + throat@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" @@ -5974,104 +7090,25 @@ ts-jest@^24.0.2: semver "^5.5" yargs-parser "10.x" -tslib@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" - integrity sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ== - -tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1: - version "1.10.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" - integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== - -tslint-config-prettier@^1.18.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz#75f140bde947d35d8f0d238e0ebf809d64592c37" - integrity sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg== - -tslint-eslint-rules@^5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/tslint-eslint-rules/-/tslint-eslint-rules-5.4.0.tgz#e488cc9181bf193fe5cd7bfca213a7695f1737b5" - integrity sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w== - dependencies: - doctrine "0.7.2" - tslib "1.9.0" - tsutils "^3.0.0" - -tslint-immutable@^5.5.2: - version "5.5.2" - resolved "https://registry.yarnpkg.com/tslint-immutable/-/tslint-immutable-5.5.2.tgz#57331f6100156fa7ac4503e121cd2616df5bab8a" - integrity sha512-+dSMhEeUyRMrBe9XcjfRXT/FmqWKXsSdxttWoDzhUFSNCg8wfXx29M/ClQ78HhmdTaK+DDQsNS3wTGpSIhOv3g== - dependencies: - tsutils "^2.28.0 || ^3.0.0" - -tslint-microsoft-contrib@^5.0.3: - version "5.2.1" - resolved "https://registry.yarnpkg.com/tslint-microsoft-contrib/-/tslint-microsoft-contrib-5.2.1.tgz#a6286839f800e2591d041ea2800c77487844ad81" - integrity sha512-PDYjvpo0gN9IfMULwKk0KpVOPMhU6cNoT9VwCOLeDl/QS8v8W2yspRpFFuUS7/c5EIH/n8ApMi8TxJAz1tfFUA== - dependencies: - tsutils "^2.27.2 <2.29.0" - -tslint-plugin-prettier@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tslint-plugin-prettier/-/tslint-plugin-prettier-2.1.0.tgz#e2522d273cb9672d93d0e68f2514fe3c19698c3a" - integrity sha512-nMCpU+QSpXtydcWXeZF+3ljIbG/K8SHVZwB7K/MtuoQQFXxXN6watqTSBpVXCInuPFvmjiWkhxeMoUW4N0zgSg== - dependencies: - eslint-plugin-prettier "^2.2.0" - lines-and-columns "^1.1.6" - tslib "^1.7.1" - -tslint-react@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/tslint-react/-/tslint-react-4.2.0.tgz#41b16e0438365f8d3ed4120501f02cabff9fd1e4" - integrity sha512-lO22+FKr9ZZGueGiuALzvZE/8ANoDoCHGCknX1Ge3ALrfcLQHQ1VGdyb1scZXQFdEQEfwBTIU40r5BUlJpn0JA== - dependencies: - tsutils "^3.9.1" - -tslint-sonarts@^1.8.0, tslint-sonarts@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/tslint-sonarts/-/tslint-sonarts-1.9.0.tgz#feb593e92db328c0328b430b838adbe65d504de9" - integrity sha512-CJWt+IiYI8qggb2O/JPkS6CkC5DY1IcqRsm9EHJ+AxoWK70lvtP7jguochyNDMP2vIz/giGdWCfEM39x/I/Vnw== - dependencies: - immutable "^3.8.2" - -tslint@^5.1.0: - version "5.20.1" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.20.1.tgz#e401e8aeda0152bc44dd07e614034f3f80c67b7d" - integrity sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg== - dependencies: - "@babel/code-frame" "^7.0.0" - builtin-modules "^1.1.1" - chalk "^2.3.0" - commander "^2.12.1" - diff "^4.0.1" - glob "^7.1.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - mkdirp "^0.5.1" - resolve "^1.3.2" - semver "^5.3.0" - tslib "^1.8.0" - tsutils "^2.29.0" - -"tsutils@^2.27.2 <2.29.0": - version "2.28.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.28.0.tgz#6bd71e160828f9d019b6f4e844742228f85169a1" - integrity sha512-bh5nAtW0tuhvOJnx1GLRn5ScraRLICGyJV5wJhtRWOLsxW70Kk5tZtpK3O/hW6LDnqKS9mlUMPZj9fEMJ0gxqA== +tsconfig-paths@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" + integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== dependencies: - tslib "^1.8.1" + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.6" + strip-bom "^3.0.0" -"tsutils@^2.28.0 || ^3.0.0", tsutils@^3.0.0, tsutils@^3.9.1: - version "3.17.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" - integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== - dependencies: - tslib "^1.8.1" +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== -tsutils@^2.29.0: - version "2.29.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" - integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== +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" @@ -6087,6 +7124,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +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-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -6094,6 +7138,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +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-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -6114,14 +7163,6 @@ typescript@4.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== -typestrict@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typestrict/-/typestrict-1.0.2.tgz#7167559a128508162920614ce58af6ac6b5ba29a" - integrity sha512-4wEr84NPc0ldINrgwgSBTmbWPiGVbwO3c9xumM0ujp0DlzhTs3jUT0NtVBOd5UXneSXcStNJWj80zerbW2YR6Q== - dependencies: - tslint-microsoft-contrib "^5.0.3" - tslint-sonarts "^1.8.0" - uglify-js@^3.1.4: version "3.12.4" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.12.4.tgz#93de48bb76bb3ec0fc36563f871ba46e2ee5c7ee" @@ -6142,6 +7183,16 @@ unbox-primitive@^1.0.0: has-symbols "^1.0.2" which-boxed-primitive "^1.0.2" +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" + undefsafe@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.2.tgz#225f6b9e0337663e0d8e7cfd686fc2836ccace76" @@ -6271,6 +7322,11 @@ uuid@^3.0.0, uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -6387,6 +7443,13 @@ which@^1.2.9, which@^1.3.0: dependencies: isexe "^2.0.0" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + widest-line@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" @@ -6424,7 +7487,7 @@ winston@^3.0.0: triple-beam "^1.3.0" winston-transport "^4.3.0" -word-wrap@~1.2.3: +word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== @@ -6612,6 +7675,11 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yargs-parser@10.x: version "10.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" From b8e2dc9b95ba2c932b4b82b6494f64b2a74cd491 Mon Sep 17 00:00:00 2001 From: arcogabbo Date: Tue, 31 May 2022 17:59:13 +0200 Subject: [PATCH 2/9] try fix azure pipeline --- package.json | 4 +- yarn.lock | 572 +++++++++++++++++++++++++++++++-------------------- 2 files changed, 351 insertions(+), 225 deletions(-) diff --git a/package.json b/package.json index f454eed..bed36ac 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "lint": "eslint . -c .eslintrc.js --ext .ts,.tsx" }, "devDependencies": { - "@pagopa/eslint-config": "^3.0.0", + "@pagopa/eslint-config": "^1.3.1", "@pagopa/openapi-codegen-ts": "^10.0.6", "@types/cors": "^2.8.12", "@types/express": "4.17.0", @@ -53,7 +53,7 @@ "auto-changelog": "^2.2.1", "danger": "^7.0.0", "danger-plugin-digitalcitizenship": "^1.0.0", - "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-prettier": "^3.0.0", "jest": "^24.8.0", "mock-redis-client": "^0.91.13", "modclean": "^3.0.0-beta.1", diff --git a/yarn.lock b/yarn.lock index b2b0d03..4ad8f09 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,13 @@ # yarn lockfile v1 +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" @@ -68,6 +75,11 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + "@babel/helpers@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.3.tgz#382fbb0382ce7c4ce905945ab9641d688336ce85" @@ -77,6 +89,15 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" +"@babel/highlight@^7.10.4": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" + integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/highlight@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" @@ -147,40 +168,31 @@ exec-sh "^0.3.2" minimist "^1.2.0" -"@es-joy/jsdoccomment@~0.31.0": - version "0.31.0" - resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.31.0.tgz#dbc342cc38eb6878c12727985e693eaef34302bc" - integrity sha512-tc1/iuQcnaiSIUVad72PBierDFpsxdUHtEF/OrfqvM1CBAsIoMP51j52jTMb3dXriwhieTo289InzZj72jL3EQ== - dependencies: - comment-parser "1.3.1" - esquery "^1.4.0" - jsdoc-type-pratt-parser "~3.1.0" - -"@eslint/eslintrc@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" - integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw== +"@eslint/eslintrc@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== dependencies: ajv "^6.12.4" - debug "^4.3.2" - espree "^9.3.2" - globals "^13.15.0" - ignore "^5.2.0" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" + js-yaml "^3.13.1" + minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@humanwhocodes/config-array@^0.9.2": - version "0.9.5" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" - integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" + "@humanwhocodes/object-schema" "^1.2.0" debug "^4.1.1" minimatch "^3.0.4" -"@humanwhocodes/object-schema@^1.2.1": +"@humanwhocodes/object-schema@^1.2.0": 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== @@ -419,25 +431,27 @@ dependencies: "@types/node" ">= 8" -"@pagopa/eslint-config@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@pagopa/eslint-config/-/eslint-config-3.0.0.tgz#a773121788299eaeb9ba71c2ad2bf5ea795028d6" - integrity sha512-eYIPdiuYRbRPR5k0OuteRNqYb0Z2nfJ/lZohejB7ylfBeSDWwkaV8Z19AXP4RymE6oEesyPDZ6i0yNaE9tQrHw== - dependencies: - "@typescript-eslint/eslint-plugin" "^5.18.0" - "@typescript-eslint/parser" "^5.18.0" - eslint "^8.12.0" - eslint-config-prettier "^8.5.0" +"@pagopa/eslint-config@^1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@pagopa/eslint-config/-/eslint-config-1.3.1.tgz#0c41ae939aa6d740fbc8d8dbe2c4395aa2ceaf95" + integrity sha512-UZvYeN1ivU5qMZDGXI/JlEoQ+2SMZfTjOeoZBd6Wm5UC98b6bYBG4ov3QmluM6TxsLLMyBALgP55lkg56+VjRw== + dependencies: + "@typescript-eslint/eslint-plugin" "^4.10.0" + "@typescript-eslint/eslint-plugin-tslint" "^4.10.0" + "@typescript-eslint/parser" "^4.10.0" + eslint "^7.15.0" + eslint-config-prettier "^7.0.0" eslint-plugin-extra-rules "^0.0.0-development" eslint-plugin-fp "^2.3.0" - eslint-plugin-functional "^4.2.1" - eslint-plugin-import "^2.26.0" - eslint-plugin-jsdoc "^39.0.0" - eslint-plugin-prefer-arrow "^1.2.3" - eslint-plugin-prettier "^4.0.0" - eslint-plugin-react "^7.29.4" - eslint-plugin-sonarjs "^0.13.0" - prettier "^2.6.2" + eslint-plugin-functional "^2.0.0" + eslint-plugin-import "^2.22.1" + eslint-plugin-jsdoc "^30.6.1" + eslint-plugin-no-credentials "^2.0.9" + eslint-plugin-prefer-arrow "^1.2.2" + eslint-plugin-prettier "^3.3.0" + eslint-plugin-react "^7.21.5" + eslint-plugin-sonarjs "^0.5.0" + prettier "^2.1.2" "@pagopa/io-spid-commons@^7.0.2": version "7.0.2" @@ -605,7 +619,7 @@ dependencies: jest-diff "^24.3.0" -"@types/json-schema@^7.0.9": +"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.7": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== @@ -752,85 +766,100 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.18.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.27.0.tgz#23d82a4f21aaafd8f69dbab7e716323bb6695cc8" - integrity sha512-DDrIA7GXtmHXr1VCcx9HivA39eprYBIFxbQEHI6NyraRDxCGpxAFiYQAT/1Y0vh1C+o2vfBiy4IuPoXxtTZCAQ== +"@typescript-eslint/eslint-plugin-tslint@^4.10.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-4.33.0.tgz#c0f2a5a8a53a915d6c24983888013b7e78e75b44" + integrity sha512-o3ujMErtZJPgiNRETRJefo1bFNrloocOa5dMU49OW/G+Rq92IbXTY6FSF5MOwrdQK1X+VBEcA8y6PhUPWGlYqA== + dependencies: + "@typescript-eslint/experimental-utils" "4.33.0" + lodash "^4.17.21" + +"@typescript-eslint/eslint-plugin@^4.10.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" + integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== dependencies: - "@typescript-eslint/scope-manager" "5.27.0" - "@typescript-eslint/type-utils" "5.27.0" - "@typescript-eslint/utils" "5.27.0" - debug "^4.3.4" + "@typescript-eslint/experimental-utils" "4.33.0" + "@typescript-eslint/scope-manager" "4.33.0" + debug "^4.3.1" functional-red-black-tree "^1.0.1" - ignore "^5.2.0" - regexpp "^3.2.0" - semver "^7.3.7" + ignore "^5.1.8" + regexpp "^3.1.0" + semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.18.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.27.0.tgz#62bb091ed5cf9c7e126e80021bb563dcf36b6b12" - integrity sha512-8oGjQF46c52l7fMiPPvX4It3u3V3JipssqDfHQ2hcR0AeR8Zge+OYyKUCm5b70X72N1qXt0qgHenwN6Gc2SXZA== +"@typescript-eslint/experimental-utils@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" + integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== + dependencies: + "@types/json-schema" "^7.0.7" + "@typescript-eslint/scope-manager" "4.33.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/typescript-estree" "4.33.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/experimental-utils@^1.11.0": + version "1.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz#b08c60d780c0067de2fb44b04b432f540138301e" + integrity sha512-zmpS6SyqG4ZF64ffaJ6uah6tWWWgZ8m+c54XXgwFtUv0jNz8aJAVx8chMCvnk7yl6xwn8d+d96+tWp7fXzTuDg== dependencies: - "@typescript-eslint/scope-manager" "5.27.0" - "@typescript-eslint/types" "5.27.0" - "@typescript-eslint/typescript-estree" "5.27.0" - debug "^4.3.4" + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "1.13.0" + eslint-scope "^4.0.0" -"@typescript-eslint/scope-manager@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.27.0.tgz#a272178f613050ed62f51f69aae1e19e870a8bbb" - integrity sha512-VnykheBQ/sHd1Vt0LJ1JLrMH1GzHO+SzX6VTXuStISIsvRiurue/eRkTqSrG0CexHQgKG8shyJfR4o5VYioB9g== +"@typescript-eslint/parser@^4.10.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" + integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== dependencies: - "@typescript-eslint/types" "5.27.0" - "@typescript-eslint/visitor-keys" "5.27.0" + "@typescript-eslint/scope-manager" "4.33.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/typescript-estree" "4.33.0" + debug "^4.3.1" -"@typescript-eslint/type-utils@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.27.0.tgz#36fd95f6747412251d79c795b586ba766cf0974b" - integrity sha512-vpTvRRchaf628Hb/Xzfek+85o//zEUotr1SmexKvTfs7czXfYjXVT/a5yDbpzLBX1rhbqxjDdr1Gyo0x1Fc64g== +"@typescript-eslint/scope-manager@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" + integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== dependencies: - "@typescript-eslint/utils" "5.27.0" - debug "^4.3.4" - tsutils "^3.21.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" -"@typescript-eslint/types@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.27.0.tgz#c3f44b9dda6177a9554f94a74745ca495ba9c001" - integrity sha512-lY6C7oGm9a/GWhmUDOs3xAVRz4ty/XKlQ2fOLr8GAIryGn0+UBOoJDWyHer3UgrHkenorwvBnphhP+zPmzmw0A== +"@typescript-eslint/types@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" + integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== -"@typescript-eslint/typescript-estree@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.27.0.tgz#7965f5b553c634c5354a47dcce0b40b94611e995" - integrity sha512-QywPMFvgZ+MHSLRofLI7BDL+UczFFHyj0vF5ibeChDAJgdTV8k4xgEwF0geFhVlPc1p8r70eYewzpo6ps+9LJQ== +"@typescript-eslint/typescript-estree@1.13.0": + version "1.13.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz#8140f17d0f60c03619798f1d628b8434913dc32e" + integrity sha512-b5rCmd2e6DCC6tCTN9GSUAuxdYwCM/k/2wdjHGrIRGPSJotWMCe/dGpi66u42bhuh8q3QBzqM4TMA1GUUCJvdw== dependencies: - "@typescript-eslint/types" "5.27.0" - "@typescript-eslint/visitor-keys" "5.27.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" + lodash.unescape "4.0.1" + semver "5.5.0" -"@typescript-eslint/utils@5.27.0", "@typescript-eslint/utils@^5.10.2": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.27.0.tgz#d0021cbf686467a6a9499bd0589e19665f9f7e71" - integrity sha512-nZvCrkIJppym7cIbP3pOwIkAefXOmfGPnCM0LQfzNaKxJHI6VjI8NC662uoiPlaf5f6ymkTy9C3NQXev2mdXmA== +"@typescript-eslint/typescript-estree@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" + integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== dependencies: - "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.27.0" - "@typescript-eslint/types" "5.27.0" - "@typescript-eslint/typescript-estree" "5.27.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" + debug "^4.3.1" + globby "^11.0.3" + is-glob "^4.0.1" + semver "^7.3.5" + tsutils "^3.21.0" -"@typescript-eslint/visitor-keys@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.27.0.tgz#97aa9a5d2f3df8215e6d3b77f9d214a24db269bd" - integrity sha512-46cYrteA2MrIAjv9ai44OQDUoCZyHeGIc4lsjCUX2WT6r4C+kidz1bNiR4017wHOPUythYeH+Sc7/cFP97KEAA== +"@typescript-eslint/visitor-keys@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" + integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== dependencies: - "@typescript-eslint/types" "5.27.0" - eslint-visitor-keys "^3.3.0" + "@typescript-eslint/types" "4.33.0" + eslint-visitor-keys "^2.0.0" a-sync-waterfall@^1.0.0: version "1.0.1" @@ -877,7 +906,7 @@ acorn-jsx@^2.0.1: dependencies: acorn "^2.0.1" -acorn-jsx@^5.3.2: +acorn-jsx@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== @@ -902,10 +931,10 @@ acorn@^6.0.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== -acorn@^8.7.1: - version "8.7.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" - integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== +acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== agent-base@4, agent-base@^4.3.0: version "4.3.0" @@ -943,6 +972,16 @@ ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.1: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" @@ -950,6 +989,11 @@ ansi-align@^2.0.0: dependencies: string-width "^2.0.0" +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + ansi-escapes@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -1096,7 +1140,7 @@ array.prototype.flat@^1.2.5: es-abstract "^1.19.2" es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.3.0: +array.prototype.flatmap@^1.2.1, array.prototype.flatmap@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== @@ -1133,6 +1177,11 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async-hook-jl@^1.7.6: version "1.7.6" resolved "https://registry.yarnpkg.com/async-hook-jl/-/async-hook-jl-1.7.6.tgz#4fd25c2f864dbaf279c610d73bf97b1b28595e68" @@ -1678,10 +1727,10 @@ commander@^5.0.0, commander@^5.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -comment-parser@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.3.1.tgz#3d7ea3adaf9345594aedee6563f422348f165c1b" - integrity sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA== +comment-parser@^0.7.6: + version "0.7.6" + resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-0.7.6.tgz#0e743a53c8e646c899a1323db31f6cd337b10f12" + integrity sha512-GKNxVA7/iuTnAqGADlTWX4tkhzxZKXp5fLJqKTlQLHkE65XDUKutZ3BHaJC5IGcper2tT3QRD1xr4o3jNpgXXg== component-emitter@^1.2.0, component-emitter@^1.2.1: version "1.3.0" @@ -1948,6 +1997,13 @@ debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.0.1, debug@^4.3.1: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -1955,13 +2011,6 @@ debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -debug@^4.3.2, 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== - dependencies: - ms "2.1.2" - decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -1987,12 +2036,10 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -deepmerge-ts@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/deepmerge-ts/-/deepmerge-ts-4.0.3.tgz#495b11315d082fc715e101a1b0e41cbb136becfb" - integrity sha512-kRBBqKdfhdZ+LEBkyE0Y7Yu7Lm277HOKpVmpecaEzzD3Krne9uO13Wqi7sNJ9S4FDmCgwjiWj8UhXo5OgjOIwg== - dependencies: - is-plain-object "^5.0.0" +deepmerge@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-3.3.0.tgz#d3c47fd6f3a93d517b14426b0628a17b0125f5f7" + integrity sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA== defaults@^1.0.3: version "1.0.3" @@ -2210,6 +2257,13 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + env-variable@0.0.x: version "0.0.5" resolved "https://registry.yarnpkg.com/env-variable/-/env-variable-0.0.5.tgz#913dd830bef11e96a039c038d4130604eba37f88" @@ -2338,6 +2392,11 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escape-string-regexp@^2.0.0: + version "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" @@ -2363,10 +2422,10 @@ eslint-ast-utils@^1.0.0: lodash.get "^4.4.2" lodash.zip "^4.2.0" -eslint-config-prettier@^8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" - integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== +eslint-config-prettier@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz#f4a4bd2832e810e8cc7c1411ec85b3e85c0c53f9" + integrity sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg== eslint-import-resolver-node@^0.3.6: version "0.3.6" @@ -2403,16 +2462,17 @@ eslint-plugin-fp@^2.3.0: lodash "^4.13.1" req-all "^0.1.0" -eslint-plugin-functional@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-functional/-/eslint-plugin-functional-4.2.1.tgz#c486f15695a31f916847c89f0f85a09c8ee423c6" - integrity sha512-j16ozgXrr0UdPBirdbgDZgRBPr9Prj3j1xoisE435wzRDMWQlSHHJ41LCzNrlfGDb7OFAyXVcVatVwALz2jckw== +eslint-plugin-functional@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-functional/-/eslint-plugin-functional-2.0.0.tgz#7f3a8fb4182319cddf11c3b8615f8095b2c740c5" + integrity sha512-8IV3wyYFGWvrx2klByu5O3qG7fo9/tedBaagPssv9MWmOTGVnCdk7r7DCDbVe8VTZe9Mz7r6KS+1tdkgQAqc9A== dependencies: - "@typescript-eslint/utils" "^5.10.2" - deepmerge-ts "^4.0.3" - escape-string-regexp "^4.0.0" + "@typescript-eslint/experimental-utils" "^1.11.0" + array.prototype.flatmap "^1.2.1" + deepmerge "^3.3.0" + escape-string-regexp "^2.0.0" -eslint-plugin-import@^2.26.0: +eslint-plugin-import@^2.22.1: version "2.26.0" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== @@ -2431,32 +2491,39 @@ eslint-plugin-import@^2.26.0: resolve "^1.22.0" tsconfig-paths "^3.14.1" -eslint-plugin-jsdoc@^39.0.0: - version "39.3.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-39.3.2.tgz#b9c3becdbd860a75b8bd07bd04a0eaaad7c79403" - integrity sha512-RSGN94RYzIJS/WfW3l6cXzRLfJWxvJgNQZ4w0WCaxJWDJMigtwTsILEAfKqmmPkT2rwMH/s3C7G5ChDE6cwPJg== - dependencies: - "@es-joy/jsdoccomment" "~0.31.0" - comment-parser "1.3.1" - debug "^4.3.4" - escape-string-regexp "^4.0.0" - esquery "^1.4.0" - semver "^7.3.7" +eslint-plugin-jsdoc@^30.6.1: + version "30.7.13" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-30.7.13.tgz#52e5c74fb806d3bbeb51d04a0c829508c3c6b563" + integrity sha512-YM4WIsmurrp0rHX6XiXQppqKB8Ne5ATiZLJe2+/fkp9l9ExXFr43BbAbjZaVrpCT+tuPYOZ8k1MICARHnURUNQ== + dependencies: + comment-parser "^0.7.6" + debug "^4.3.1" + jsdoctypeparser "^9.0.0" + lodash "^4.17.20" + regextras "^0.7.1" + semver "^7.3.4" spdx-expression-parse "^3.0.1" -eslint-plugin-prefer-arrow@^1.2.3: +eslint-plugin-no-credentials@^2.0.9: + version "2.1.10" + resolved "https://registry.yarnpkg.com/eslint-plugin-no-credentials/-/eslint-plugin-no-credentials-2.1.10.tgz#1a2b10858fed59cca3515eac3ee6f8d9219f1513" + integrity sha512-JxV9jxj6dlyBwhrR8yqpcsdfaER4V6p4itQgmkoCEBltsz0HCLTd9T66XPduznK4lKN/9BqblKBYokGoWxvpGA== + dependencies: + lodash "^4.17.21" + +eslint-plugin-prefer-arrow@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.3.tgz#e7fbb3fa4cd84ff1015b9c51ad86550e55041041" integrity sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ== -eslint-plugin-prettier@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz#8b99d1e4b8b24a762472b4567992023619cb98e0" - integrity sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ== +eslint-plugin-prettier@^3.0.0, eslint-plugin-prettier@^3.3.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz#e9ddb200efb6f3d05ffe83b1665a716af4a387e5" + integrity sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g== dependencies: prettier-linter-helpers "^1.0.0" -eslint-plugin-react@^7.29.4: +eslint-plugin-react@^7.21.5: version "7.30.0" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.0.tgz#8e7b1b2934b8426ac067a0febade1b13bd7064e3" integrity sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A== @@ -2476,10 +2543,18 @@ eslint-plugin-react@^7.29.4: semver "^6.3.0" string.prototype.matchall "^4.0.7" -eslint-plugin-sonarjs@^0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.13.0.tgz#c34d140cc90abaaed38f5a5201a2ccdebe398862" - integrity sha512-t3m7ta0EspzDxSOZh3cEOJIJVZgN/TlJYaBGnQlK6W/PZNbWep8q4RQskkJkA7/zwNpX0BaoEOSUUrqaADVoqA== +eslint-plugin-sonarjs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.5.0.tgz#ce17b2daba65a874c2862213a9e38e8986ad7d7d" + integrity sha512-XW5MnzlRjhXpIdbULC/qAdJYHWw3rRLws/DyawdlPU/IdVr9AmRK1r2LaCvabwKOAW2XYYSo3kDX58E4MrB7PQ== + +eslint-scope@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" eslint-scope@^5.1.1: version "5.1.1" @@ -2489,13 +2564,12 @@ eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" + eslint-visitor-keys "^1.1.0" eslint-utils@^3.0.0: version "3.0.0" @@ -2504,54 +2578,59 @@ eslint-utils@^3.0.0: dependencies: eslint-visitor-keys "^2.0.0" +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + eslint-visitor-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== - -eslint@^8.12.0: - version "8.16.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.16.0.tgz#6d936e2d524599f2a86c708483b4c372c5d3bbae" - integrity sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA== +eslint@^7.15.0: + version "7.32.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== dependencies: - "@eslint/eslintrc" "^1.3.0" - "@humanwhocodes/config-array" "^0.9.2" + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" - debug "^4.3.2" + debug "^4.0.1" doctrine "^3.0.0" + enquirer "^2.3.5" escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.3.2" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" functional-red-black-tree "^1.0.1" - glob-parent "^6.0.1" - globals "^13.15.0" - ignore "^5.2.0" + glob-parent "^5.1.2" + globals "^13.6.0" + ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-yaml "^4.1.0" + js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" - minimatch "^3.1.2" + minimatch "^3.0.4" natural-compare "^1.4.0" optionator "^0.9.1" - regexpp "^3.2.0" - strip-ansi "^6.0.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" strip-json-comments "^3.1.0" + table "^6.0.9" text-table "^0.2.0" v8-compile-cache "^2.0.3" @@ -2563,14 +2642,14 @@ espree@3.0.0-alpha-1: acorn "^2.6.4" acorn-jsx "^2.0.1" -espree@^9.3.2: - version "9.3.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" - integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== dependencies: - acorn "^8.7.1" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" @@ -2584,7 +2663,7 @@ esquery@^1.4.0: dependencies: estraverse "^5.1.0" -esrecurse@^4.3.0: +esrecurse@^4.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== @@ -3090,13 +3169,6 @@ glob-parent@^5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@^6.0.1: - 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-parent@~5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" @@ -3128,14 +3200,14 @@ 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.15.0: +globals@^13.6.0, globals@^13.9.0: version "13.15.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.15.0.tgz#38113218c907d2f7e98658af246cef8b77e90bac" integrity sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog== dependencies: type-fest "^0.20.2" -globby@^11.1.0: +globby@^11.0.3: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -3408,7 +3480,12 @@ ignore-by-default@^1.0.1: resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= -ignore@^5.2.0: +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.8, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== @@ -3748,11 +3825,6 @@ is-plain-object@^3.0.0: dependencies: isobject "^4.0.0" -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" @@ -4283,7 +4355,7 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^4.0.0, js-yaml@^4.1.0: +js-yaml@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== @@ -4295,10 +4367,10 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdoc-type-pratt-parser@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.1.0.tgz#a4a56bdc6e82e5865ffd9febc5b1a227ff28e67e" - integrity sha512-MgtD0ZiCDk9B+eI73BextfRrVQl0oyzRG8B2BjORts6jbunj4ScKPcyXGTbB6eXL4y9TzxCm6hyeLq/2ASzNdw== +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== jsdom@^11.5.1: version "11.12.0" @@ -4372,6 +4444,11 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -4683,6 +4760,16 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + +lodash.unescape@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" + integrity sha512-DhhGRshNS1aX6s5YdBE3njCCouPgnG29ebyHvImlZzXZf2SHgt+J08DHgytTPnpywNbO1Y8mNUFyQuIDBq2JZg== + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -4698,7 +4785,7 @@ lodash.zip@^4.2.0: resolved "https://registry.yarnpkg.com/lodash.zip/-/lodash.zip-4.2.0.tgz#ec6662e4896408ed4ab6c542a3990b72cc080020" integrity sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg== -lodash@^4.13.1: +lodash@^4.13.1, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -5768,7 +5855,7 @@ prettier@^1.12.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -prettier@^2.6.2: +prettier@^2.1.2: version "2.6.2" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== @@ -6062,11 +6149,16 @@ regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: define-properties "^1.1.3" functions-have-names "^1.2.2" -regexpp@^3.2.0: +regexpp@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== +regextras@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/regextras/-/regextras-0.7.1.tgz#be95719d5f43f9ef0b9fa07ad89b7c606995a3b2" + integrity sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w== + registry-auth-token@^3.0.1: version "3.4.0" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" @@ -6359,12 +6451,17 @@ semver-diff@^2.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== + semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.7: +semver@^7.2.1, semver@^7.3.4, semver@^7.3.5: version "7.3.7" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== @@ -6513,6 +6610,15 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -6714,6 +6820,15 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string.prototype.matchall@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" @@ -6955,6 +7070,17 @@ symbol-tree@^3.2.2: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +table@^6.0.9: + version "6.8.0" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" + integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" From 0c8761d8fde09db58bdbcd76a4cc629175840f56 Mon Sep 17 00:00:00 2001 From: arcogabbo Date: Wed, 1 Jun 2022 09:52:55 +0200 Subject: [PATCH 3/9] fix linter errors --- package.json | 2 +- src/utils/jwt.ts | 4 ++-- yarn.lock | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index bed36ac..158468c 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "@types/cors": "^2.8.12", "@types/express": "4.17.0", "@types/jest": "^24.0.13", - "@types/jsonwebtoken": "7.2.7", + "@types/jsonwebtoken": "8.5.4", "@types/node": "10.14.1", "@types/node-fetch": "^2.1.2", "@types/node-forge": "^0.9.1", diff --git a/src/utils/jwt.ts b/src/utils/jwt.ts index c3bcf98..59a22bf 100644 --- a/src/utils/jwt.ts +++ b/src/utils/jwt.ts @@ -95,9 +95,9 @@ export const verifyToken = ( publicCert: NonEmptyString, token: string, issuer: NonEmptyString -): TE.TaskEither => +): TE.TaskEither => pipe( - TE.taskify(cb => + TE.taskify(cb => jwt.verify(token, publicCert, { algorithms: ["RS256"], issuer }, cb) )(), TE.mapLeft(E.toError) diff --git a/yarn.lock b/yarn.lock index 4ad8f09..39156ea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -629,10 +629,10 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/jsonwebtoken@7.2.7": - version "7.2.7" - resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-7.2.7.tgz#5dd62e0c0a0c6f211c3c1d13d322360894625b47" - integrity sha512-lq9X76APpxGJDUe1VptL1P5GrogqhPCH+SDy94+gaBJw7Hhj6hwrVC6zuxAx2GrgktkBuwydESZBvPfrdBoOEg== +"@types/jsonwebtoken@8.5.4": + version "8.5.4" + resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.4.tgz#50ccaf0aa6f5d7b9956e70fe323b76e582991913" + integrity sha512-4L8msWK31oXwdtC81RmRBAULd0ShnAHjBuKT9MRQpjP0piNrZdXyTRcKY9/UIfhGeKIT4PvF5amOOUbbT/9Wpg== dependencies: "@types/node" "*" From 784d302a2cb8a2930353e5dcd897ac5f3ea8ff9c Mon Sep 17 00:00:00 2001 From: arcogabbo Date: Wed, 1 Jun 2022 14:23:26 +0200 Subject: [PATCH 4/9] improved return types --- src/app.ts | 3 +-- src/utils/jwt.ts | 11 ++--------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/app.ts b/src/app.ts index d472e4a..d8fdf52 100644 --- a/src/app.ts +++ b/src/app.ts @@ -74,8 +74,7 @@ export const appConfig: IApplicationConfig = { // startupIdpsMetadata: STARTUP_IDPS_METADATA }; -// eslint-disable-next-line @typescript-eslint/explicit-function-return-type -const getContactPersons = () => +const getContactPersons = (): IServiceProviderConfig["contacts"] => config.ENABLE_FULL_OPERATOR_METADATA ? [ { diff --git a/src/utils/jwt.ts b/src/utils/jwt.ts index 59a22bf..ff1e700 100644 --- a/src/utils/jwt.ts +++ b/src/utils/jwt.ts @@ -59,15 +59,8 @@ export const getUserJwt = ( export const extractRawDataFromJwt = ( jwtToken: NonEmptyString -): E.Either< - Error, - | string - | { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - readonly [key: string]: any; - } - | null -> => E.tryCatch(() => jwt.decode(jwtToken, { json: true }), E.toError); +): E.Either => + E.tryCatch(() => jwt.decode(jwtToken, { json: true }), E.toError); export const extractTypeFromJwt = ( jwtToken: NonEmptyString, From c8c31439c8c05ed3b1a4234cb6a343603ec63931 Mon Sep 17 00:00:00 2001 From: arcogabbo Date: Wed, 1 Jun 2022 15:37:57 +0200 Subject: [PATCH 5/9] removed linter ignoring comment regarding commented code --- src/types/user.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/types/user.ts b/src/types/user.ts index 5281673..7f8f209 100644 --- a/src/types/user.ts +++ b/src/types/user.ts @@ -1,4 +1,3 @@ -/* eslint-disable extra-rules/no-commented-out-code */ import { EmailString, FiscalCode, @@ -14,8 +13,8 @@ export const SpidUser = t.intersection([ t.interface({ // the following values may be set // by the calling application: - // authnContextClassRef: SpidLevel, - // issuer: Issuer + // authnContextClassRef -> SpidLevel, + // issuer -> Issuer fiscalNumber: NonEmptyString, getAssertionXml: t.Function }), From 3480697094c124da2535423ced0a64f72eb3c52d Mon Sep 17 00:00:00 2001 From: arcogabbo Date: Wed, 8 Jun 2022 09:39:25 +0200 Subject: [PATCH 6/9] removed linter ignoring comments on tests file --- src/__mocks__/request.ts | 2 -- src/utils/__mocks__/saml.ts | 2 +- src/utils/__tests__/redis_storage.test.ts | 1 - 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/__mocks__/request.ts b/src/__mocks__/request.ts index 59c8e08..9e13262 100644 --- a/src/__mocks__/request.ts +++ b/src/__mocks__/request.ts @@ -1,5 +1,3 @@ -// eslint-disable @typescript-eslint/no-explicit-any - /** * mockReq * @returns {{header, accepts, acceptsEncodings, acceptsEncoding, acceptsCharsets, acceptsCharset, acceptsLanguages, acceptsLanguage, range, param, is, reset: resetMock}} diff --git a/src/utils/__mocks__/saml.ts b/src/utils/__mocks__/saml.ts index 3ca2a48..31e5bed 100644 --- a/src/utils/__mocks__/saml.ts +++ b/src/utils/__mocks__/saml.ts @@ -129,7 +129,7 @@ export const getSamlResponse: (params?: IGetSAMLResponseParams) => string = ( ${ hasResponseSignature !== false - ? // eslint-disable-next-line sonar/no-nested-template-literals + ? ` diff --git a/src/utils/__tests__/redis_storage.test.ts b/src/utils/__tests__/redis_storage.test.ts index be469bb..38291c2 100644 --- a/src/utils/__tests__/redis_storage.test.ts +++ b/src/utils/__tests__/redis_storage.test.ts @@ -1,4 +1,3 @@ -// eslint-disable @typescript-eslint/no-explicit-any import { pipe, flow } from "fp-ts/lib/function"; import { From 34e0a3e1fcba7ff660b9c229ceb0028796bcc15d Mon Sep 17 00:00:00 2001 From: Emanuele De Cupis Date: Thu, 16 Jun 2022 18:07:33 +0200 Subject: [PATCH 7/9] [#IC-500] fix build by rename obsolete module --- src/app.ts | 96 +++++++++++++++++++++++++++--------------------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/src/app.ts b/src/app.ts index 6babcd0..175d65e 100644 --- a/src/app.ts +++ b/src/app.ts @@ -4,7 +4,7 @@ import { IApplicationConfig, IServiceProviderConfig, LogoutT, - withSpid + withSpid, } from "@pagopa/io-spid-commons"; import { SamlAttributeT } from "@pagopa/io-spid-commons/dist/utils/saml"; import * as bodyParser from "body-parser"; @@ -15,7 +15,7 @@ import { SamlConfig } from "passport-saml"; import { AggregatorType, ContactType, - EntityType + EntityType, } from "@pagopa/io-spid-commons/dist/utils/middleware"; import { withoutUndefinedValues } from "@pagopa/ts-commons/lib/types"; import { createBlobService } from "azure-storage"; @@ -23,19 +23,19 @@ import * as cors from "cors"; import { pipe } from "fp-ts/lib/function"; import * as T from "fp-ts/lib/Task"; import * as TE from "fp-ts/lib/TaskEither"; -import { CertificationEnum } from "../generated/userregistry-api/Certification"; +import { CertificationEnum } from "../generated/pdv-userregistry-api/CertifiableFieldResourceOfLocalDate"; import { generateToken } from "./handlers/token"; import { accessLogHandler, errorHandler, metadataRefreshHandler, - successHandler + successHandler, } from "./handlers/spid"; import { introspectHandler, invalidateHandler, - upgradeTokenHandler + upgradeTokenHandler, } from "./handlers/token"; import { SpidUser, TokenUser, TokenUserL2 } from "./types/user"; import { getUserCompanies } from "./utils/attribute_authority"; @@ -44,7 +44,7 @@ import { errorsToError, toCommonTokenUser, toResponseErrorInternal, - toTokenUserL2 + toTokenUserL2, } from "./utils/conversions"; import { AdeAPIClient } from "./clients/ade"; import { healthcheckHandler } from "./handlers/general"; @@ -67,7 +67,7 @@ export const appConfig: IApplicationConfig = { loginPath: config.ENDPOINT_LOGIN, metadataPath: config.ENDPOINT_METADATA, sloPath: config.ENDPOINT_LOGOUT, - spidLevelsWhitelist: ["SpidL1", "SpidL2", "SpidL3"] + spidLevelsWhitelist: ["SpidL1", "SpidL2", "SpidL3"], // eslint-disable-next-line extra-rules/no-commented-out-code // startupIdpsMetadata: STARTUP_IDPS_METADATA }; @@ -84,10 +84,10 @@ const getContactPersons = (): IServiceProviderConfig["contacts"] => FiscalCode: config.COMPANY_FISCAL_CODE, IPACode: config.COMPANY_IPA_CODE, VATNumber: config.COMPANY_VAT_NUMBER, - aggregatorType: AggregatorType.PublicServicesFullOperator + aggregatorType: AggregatorType.PublicServicesFullOperator, }, - phone: config.COMPANY_PHONE_NUMBER - } + phone: config.COMPANY_PHONE_NUMBER, + }, ] : undefined; @@ -98,14 +98,14 @@ const serviceProviderConfig: IServiceProviderConfig = { organization: { URL: config.ORG_URL, displayName: config.ORG_DISPLAY_NAME, - name: config.ORG_NAME + name: config.ORG_NAME, }, publicCert: config.METADATA_PUBLIC_CERT, requiredAttributes: { attributes: config.SPID_ATTRIBUTES.split(",").map( - item => item as SamlAttributeT + (item) => item as SamlAttributeT ), - name: config.REQUIRED_ATTRIBUTES_SERVICE_NAME + name: config.REQUIRED_ATTRIBUTES_SERVICE_NAME, }, spidCieUrl: config.CIE_URL, spidTestEnvUrl: config.SPID_TESTENV_URL, @@ -115,9 +115,9 @@ const serviceProviderConfig: IServiceProviderConfig = { config.SPID_VALIDATOR_URL !== undefined ? { [config.SPID_VALIDATOR_URL]: true, - [config.SPID_TESTENV_URL]: true + [config.SPID_TESTENV_URL]: true, } - : undefined + : undefined, }; const redisClient = REDIS_CLIENT; @@ -136,16 +136,16 @@ const samlConfig: SamlConfig = { issuer: config.ORG_ISSUER, logoutCallbackUrl: `${config.ACS_BASE_URL}/slo`, privateCert: config.METADATA_PRIVATE_CERT, - validateInResponseTo: true + validateInResponseTo: true, }; -const acs: AssertionConsumerServiceT = async user => +const acs: AssertionConsumerServiceT = async (user) => pipe( user, SpidUser.decode, TE.fromEither, - TE.mapLeft(errs => toResponseErrorInternal(errorsToError(errs))), - TE.chain(_ => { + TE.mapLeft((errs) => toResponseErrorInternal(errorsToError(errs))), + TE.chain((_) => { logger.info("ACS | Trying to map user to Common User"); return pipe( _, @@ -154,8 +154,8 @@ const acs: AssertionConsumerServiceT = async user => TE.mapLeft(toResponseErrorInternal) ); }), - a => a, - TE.chain(_ => { + (a) => a, + TE.chain((_) => { logger.info( "ACS | Trying to retreive UserCompanies or map over a default user" ); @@ -165,19 +165,19 @@ const acs: AssertionConsumerServiceT = async user => AdeAPIClient(config.ADE_AA_API_ENDPOINT), _.fiscal_number ), - TE.map(companies => ({ + TE.map((companies) => ({ ..._, companies, - from_aa: config.ENABLE_ADE_AA as boolean + from_aa: config.ENABLE_ADE_AA as boolean, })) ) : TE.of({ ..._, - from_aa: config.ENABLE_ADE_AA as boolean + from_aa: config.ENABLE_ADE_AA as boolean, }); }), - b => b, - TE.chainW(_ => { + (b) => b, + TE.chainW((_) => { logger.info( `ACS | Personal Data Vault - Check for User: ${config.ENABLE_USER_REGISTRY}` ); @@ -190,42 +190,42 @@ const acs: AssertionConsumerServiceT = async user => ...(_.email && { email: { certification: CertificationEnum.SPID, - value: _.email - } + value: _.email, + }, }), ...(_.family_name && { familyName: { certification: CertificationEnum.SPID, - value: _.family_name - } + value: _.family_name, + }, }), ...(_.name && { name: { certification: CertificationEnum.SPID, - value: _.name - } - }) + value: _.name, + }, + }), }), config.USER_REGISTRY_API_KEY ), - TE.map(uuid => ({ + TE.map((uuid) => ({ ..._, - uid: uuid + uid: uuid, })) ) : TE.of({ ..._ }); }), - TE.chainW(_ => { + TE.chainW((_) => { logger.info("ACS | Trying to decode TokenUser"); return pipe( _, TokenUser.decode, TE.fromEither, - TE.mapLeft(errs => toResponseErrorInternal(errorsToError(errs))) + TE.mapLeft((errs) => toResponseErrorInternal(errorsToError(errs))) ); }), // If User is related to one company we can directly release an L2 token - TE.chainW(a => { + TE.chainW((a) => { logger.info("ACS | Companies length decision making"); return a.from_aa ? a.companies.length === 1 @@ -238,10 +238,10 @@ const acs: AssertionConsumerServiceT = async user => : pipe( TokenUserL2.decode({ ...a, level: "L2" }), TE.fromEither, - TE.mapLeft(errs => toResponseErrorInternal(errorsToError(errs))) + TE.mapLeft((errs) => toResponseErrorInternal(errorsToError(errs))) ); }), - TE.chainW(tokenUser => { + TE.chainW((tokenUser) => { logger.info("ACS | Generating token"); return pipe( tokenUser, @@ -249,7 +249,7 @@ const acs: AssertionConsumerServiceT = async user => TE.mapLeft(toResponseErrorInternal) ); }), - TE.mapLeft(_ => { + TE.mapLeft((_) => { logger.info( `ACS | Assertion Consumer Service ERROR|${_.kind} ${JSON.stringify( _.detail @@ -264,10 +264,10 @@ const acs: AssertionConsumerServiceT = async user => logger.info("ACS | Redirect to success endpoint"); return config.ENABLE_ADE_AA && !TokenUserL2.is(tokenUser) ? ResponsePermanentRedirect({ - href: `${config.ENDPOINT_L1_SUCCESS}#token=${tokenStr}` + href: `${config.ENDPOINT_L1_SUCCESS}#token=${tokenStr}`, }) : ResponsePermanentRedirect({ - href: `${config.ENDPOINT_SUCCESS}#token=${tokenStr}` + href: `${config.ENDPOINT_SUCCESS}#token=${tokenStr}`, }); }), TE.toUnion @@ -275,7 +275,7 @@ const acs: AssertionConsumerServiceT = async user => const logout: LogoutT = async () => ResponsePermanentRedirect({ - href: `${process.env.ENDPOINT_SUCCESS}?logout` + href: `${process.env.ENDPOINT_SUCCESS}?logout`, }); const app = express(); @@ -314,7 +314,7 @@ export const createAppTask = pipe( logout, redisClient, // redisClient for authN request samlConfig, - serviceProviderConfig + serviceProviderConfig, }), T.map(({ app: withSpidApp, idpMetadataRefresher }) => { withSpidApp.get(config.ENDPOINT_SUCCESS, successHandler); @@ -331,7 +331,7 @@ export const createAppTask = pipe( // Add info endpoint withSpidApp.get("/info", async (_, res) => { res.json({ - ping: "pong" + ping: "pong", }); }); @@ -349,7 +349,7 @@ export const createAppTask = pipe( ___: express.NextFunction ) => res.status(505).send({ - error: error.message + error: error.message, }) ); @@ -360,7 +360,7 @@ export const createAppTask = pipe( if (countInterval > 10) { clearInterval(startIdpMetadataRefreshTimer); } - idpMetadataRefresher()().catch(e => { + idpMetadataRefresher()().catch((e) => { logger.error("idpMetadataRefresher|error:%s", e); }); }, 5000); From 8b338cf71a99faf828953e0c4561e14862c72db5 Mon Sep 17 00:00:00 2001 From: Emanuele De Cupis Date: Thu, 16 Jun 2022 18:30:09 +0200 Subject: [PATCH 8/9] [#IC-500] fix e2e tests --- e2e/scenarios/basic/env.scenario | 1 + e2e/scenarios/basic/index.test.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/e2e/scenarios/basic/env.scenario b/e2e/scenarios/basic/env.scenario index 52ac8dc..5aa39d7 100644 --- a/e2e/scenarios/basic/env.scenario +++ b/e2e/scenarios/basic/env.scenario @@ -57,4 +57,5 @@ COMPANY_VAT_NUMBER=12312312311 ENABLE_SPID_ACCESS_LOGS=false +CIE_URL=https://preproduzione.idserver.servizicie.interno.gov.it/idp/shibboleth?Metadata NODE_TLS_REJECT_UNAUTHORIZED=0 \ No newline at end of file diff --git a/e2e/scenarios/basic/index.test.ts b/e2e/scenarios/basic/index.test.ts index 6b20839..a97b1f3 100644 --- a/e2e/scenarios/basic/index.test.ts +++ b/e2e/scenarios/basic/index.test.ts @@ -13,7 +13,7 @@ jest.setTimeout(1e6); beforeAll(async () => { // somehow we need to wait idp metadata are loaded - await delay(bigTime * 4); + await delay(bigTime * 5); }); describe("Basic", () => { it("should login with an existing user", () => From 6f3c422a2eaea6eb75cd3fadbdd8fc0cd3584f8e Mon Sep 17 00:00:00 2001 From: Emanuele De Cupis Date: Thu, 16 Jun 2022 19:01:45 +0200 Subject: [PATCH 9/9] [#IC-500] fix lint --- src/app.ts | 94 +++++++++++++++++++++++++++--------------------------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/src/app.ts b/src/app.ts index 175d65e..98fba3d 100644 --- a/src/app.ts +++ b/src/app.ts @@ -4,7 +4,7 @@ import { IApplicationConfig, IServiceProviderConfig, LogoutT, - withSpid, + withSpid } from "@pagopa/io-spid-commons"; import { SamlAttributeT } from "@pagopa/io-spid-commons/dist/utils/saml"; import * as bodyParser from "body-parser"; @@ -15,7 +15,7 @@ import { SamlConfig } from "passport-saml"; import { AggregatorType, ContactType, - EntityType, + EntityType } from "@pagopa/io-spid-commons/dist/utils/middleware"; import { withoutUndefinedValues } from "@pagopa/ts-commons/lib/types"; import { createBlobService } from "azure-storage"; @@ -30,12 +30,12 @@ import { accessLogHandler, errorHandler, metadataRefreshHandler, - successHandler, + successHandler } from "./handlers/spid"; import { introspectHandler, invalidateHandler, - upgradeTokenHandler, + upgradeTokenHandler } from "./handlers/token"; import { SpidUser, TokenUser, TokenUserL2 } from "./types/user"; import { getUserCompanies } from "./utils/attribute_authority"; @@ -44,7 +44,7 @@ import { errorsToError, toCommonTokenUser, toResponseErrorInternal, - toTokenUserL2, + toTokenUserL2 } from "./utils/conversions"; import { AdeAPIClient } from "./clients/ade"; import { healthcheckHandler } from "./handlers/general"; @@ -67,7 +67,7 @@ export const appConfig: IApplicationConfig = { loginPath: config.ENDPOINT_LOGIN, metadataPath: config.ENDPOINT_METADATA, sloPath: config.ENDPOINT_LOGOUT, - spidLevelsWhitelist: ["SpidL1", "SpidL2", "SpidL3"], + spidLevelsWhitelist: ["SpidL1", "SpidL2", "SpidL3"] // eslint-disable-next-line extra-rules/no-commented-out-code // startupIdpsMetadata: STARTUP_IDPS_METADATA }; @@ -84,10 +84,10 @@ const getContactPersons = (): IServiceProviderConfig["contacts"] => FiscalCode: config.COMPANY_FISCAL_CODE, IPACode: config.COMPANY_IPA_CODE, VATNumber: config.COMPANY_VAT_NUMBER, - aggregatorType: AggregatorType.PublicServicesFullOperator, + aggregatorType: AggregatorType.PublicServicesFullOperator }, - phone: config.COMPANY_PHONE_NUMBER, - }, + phone: config.COMPANY_PHONE_NUMBER + } ] : undefined; @@ -98,14 +98,14 @@ const serviceProviderConfig: IServiceProviderConfig = { organization: { URL: config.ORG_URL, displayName: config.ORG_DISPLAY_NAME, - name: config.ORG_NAME, + name: config.ORG_NAME }, publicCert: config.METADATA_PUBLIC_CERT, requiredAttributes: { attributes: config.SPID_ATTRIBUTES.split(",").map( - (item) => item as SamlAttributeT + item => item as SamlAttributeT ), - name: config.REQUIRED_ATTRIBUTES_SERVICE_NAME, + name: config.REQUIRED_ATTRIBUTES_SERVICE_NAME }, spidCieUrl: config.CIE_URL, spidTestEnvUrl: config.SPID_TESTENV_URL, @@ -115,9 +115,9 @@ const serviceProviderConfig: IServiceProviderConfig = { config.SPID_VALIDATOR_URL !== undefined ? { [config.SPID_VALIDATOR_URL]: true, - [config.SPID_TESTENV_URL]: true, + [config.SPID_TESTENV_URL]: true } - : undefined, + : undefined }; const redisClient = REDIS_CLIENT; @@ -136,16 +136,16 @@ const samlConfig: SamlConfig = { issuer: config.ORG_ISSUER, logoutCallbackUrl: `${config.ACS_BASE_URL}/slo`, privateCert: config.METADATA_PRIVATE_CERT, - validateInResponseTo: true, + validateInResponseTo: true }; -const acs: AssertionConsumerServiceT = async (user) => +const acs: AssertionConsumerServiceT = async user => pipe( user, SpidUser.decode, TE.fromEither, - TE.mapLeft((errs) => toResponseErrorInternal(errorsToError(errs))), - TE.chain((_) => { + TE.mapLeft(errs => toResponseErrorInternal(errorsToError(errs))), + TE.chain(_ => { logger.info("ACS | Trying to map user to Common User"); return pipe( _, @@ -154,8 +154,8 @@ const acs: AssertionConsumerServiceT = async (user) => TE.mapLeft(toResponseErrorInternal) ); }), - (a) => a, - TE.chain((_) => { + a => a, + TE.chain(_ => { logger.info( "ACS | Trying to retreive UserCompanies or map over a default user" ); @@ -165,19 +165,19 @@ const acs: AssertionConsumerServiceT = async (user) => AdeAPIClient(config.ADE_AA_API_ENDPOINT), _.fiscal_number ), - TE.map((companies) => ({ + TE.map(companies => ({ ..._, companies, - from_aa: config.ENABLE_ADE_AA as boolean, + from_aa: config.ENABLE_ADE_AA as boolean })) ) : TE.of({ ..._, - from_aa: config.ENABLE_ADE_AA as boolean, + from_aa: config.ENABLE_ADE_AA as boolean }); }), - (b) => b, - TE.chainW((_) => { + b => b, + TE.chainW(_ => { logger.info( `ACS | Personal Data Vault - Check for User: ${config.ENABLE_USER_REGISTRY}` ); @@ -190,42 +190,42 @@ const acs: AssertionConsumerServiceT = async (user) => ...(_.email && { email: { certification: CertificationEnum.SPID, - value: _.email, - }, + value: _.email + } }), ...(_.family_name && { familyName: { certification: CertificationEnum.SPID, - value: _.family_name, - }, + value: _.family_name + } }), ...(_.name && { name: { certification: CertificationEnum.SPID, - value: _.name, - }, - }), + value: _.name + } + }) }), config.USER_REGISTRY_API_KEY ), - TE.map((uuid) => ({ + TE.map(uuid => ({ ..._, - uid: uuid, + uid: uuid })) ) : TE.of({ ..._ }); }), - TE.chainW((_) => { + TE.chainW(_ => { logger.info("ACS | Trying to decode TokenUser"); return pipe( _, TokenUser.decode, TE.fromEither, - TE.mapLeft((errs) => toResponseErrorInternal(errorsToError(errs))) + TE.mapLeft(errs => toResponseErrorInternal(errorsToError(errs))) ); }), // If User is related to one company we can directly release an L2 token - TE.chainW((a) => { + TE.chainW(a => { logger.info("ACS | Companies length decision making"); return a.from_aa ? a.companies.length === 1 @@ -238,10 +238,10 @@ const acs: AssertionConsumerServiceT = async (user) => : pipe( TokenUserL2.decode({ ...a, level: "L2" }), TE.fromEither, - TE.mapLeft((errs) => toResponseErrorInternal(errorsToError(errs))) + TE.mapLeft(errs => toResponseErrorInternal(errorsToError(errs))) ); }), - TE.chainW((tokenUser) => { + TE.chainW(tokenUser => { logger.info("ACS | Generating token"); return pipe( tokenUser, @@ -249,7 +249,7 @@ const acs: AssertionConsumerServiceT = async (user) => TE.mapLeft(toResponseErrorInternal) ); }), - TE.mapLeft((_) => { + TE.mapLeft(_ => { logger.info( `ACS | Assertion Consumer Service ERROR|${_.kind} ${JSON.stringify( _.detail @@ -264,10 +264,10 @@ const acs: AssertionConsumerServiceT = async (user) => logger.info("ACS | Redirect to success endpoint"); return config.ENABLE_ADE_AA && !TokenUserL2.is(tokenUser) ? ResponsePermanentRedirect({ - href: `${config.ENDPOINT_L1_SUCCESS}#token=${tokenStr}`, + href: `${config.ENDPOINT_L1_SUCCESS}#token=${tokenStr}` }) : ResponsePermanentRedirect({ - href: `${config.ENDPOINT_SUCCESS}#token=${tokenStr}`, + href: `${config.ENDPOINT_SUCCESS}#token=${tokenStr}` }); }), TE.toUnion @@ -275,7 +275,7 @@ const acs: AssertionConsumerServiceT = async (user) => const logout: LogoutT = async () => ResponsePermanentRedirect({ - href: `${process.env.ENDPOINT_SUCCESS}?logout`, + href: `${process.env.ENDPOINT_SUCCESS}?logout` }); const app = express(); @@ -314,7 +314,7 @@ export const createAppTask = pipe( logout, redisClient, // redisClient for authN request samlConfig, - serviceProviderConfig, + serviceProviderConfig }), T.map(({ app: withSpidApp, idpMetadataRefresher }) => { withSpidApp.get(config.ENDPOINT_SUCCESS, successHandler); @@ -331,7 +331,7 @@ export const createAppTask = pipe( // Add info endpoint withSpidApp.get("/info", async (_, res) => { res.json({ - ping: "pong", + ping: "pong" }); }); @@ -349,7 +349,7 @@ export const createAppTask = pipe( ___: express.NextFunction ) => res.status(505).send({ - error: error.message, + error: error.message }) ); @@ -360,7 +360,7 @@ export const createAppTask = pipe( if (countInterval > 10) { clearInterval(startIdpMetadataRefreshTimer); } - idpMetadataRefresher()().catch((e) => { + idpMetadataRefresher()().catch(e => { logger.error("idpMetadataRefresher|error:%s", e); }); }, 5000);