diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..836c46b8 --- /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 d98b9549..c6158628 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,7 @@ generated docker* azure-functions-core-tools/**/* + +# eslint section +!.eslintrc.js +.eslintcache diff --git a/CreateMessage/__tests__/handler.test.ts b/CreateMessage/__tests__/handler.test.ts index 0263c835..6e88ebf7 100644 --- a/CreateMessage/__tests__/handler.test.ts +++ b/CreateMessage/__tests__/handler.test.ts @@ -1,4 +1,4 @@ -/* tslint:disable: no-any */ +/* eslint-disable @typescript-eslint/no-explicit-any */ import * as fc from "fast-check"; @@ -214,7 +214,7 @@ describe("forkOrchestrator", () => { }; const getDfClient = jest.fn(() => mockDfClient); const response = await forkOrchestrator( - // tslint:disable-next-line: no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any getDfClient as any, newMessage.content, service, diff --git a/CreateMessage/handler.ts b/CreateMessage/handler.ts index 8874de2f..cb9cd482 100644 --- a/CreateMessage/handler.ts +++ b/CreateMessage/handler.ts @@ -78,8 +78,10 @@ import { import { NonEmptyString } from "italia-ts-commons/lib/strings"; import { PromiseType } from "italia-ts-commons/lib/types"; +// eslint-disable-next-line @typescript-eslint/naming-convention const ApiNewMessageWithDefaults = t.intersection([ ApiNewMessage, + // eslint-disable-next-line @typescript-eslint/naming-convention t.interface({ time_to_live: TimeToLiveSeconds }) ]); export type ApiNewMessageWithDefaults = t.TypeOf< @@ -89,17 +91,18 @@ export type ApiNewMessageWithDefaults = t.TypeOf< /** * A request middleware that validates the Message payload. */ +// eslint-disable-next-line @typescript-eslint/naming-convention export const MessagePayloadMiddleware: IRequestMiddleware< "IResponseErrorValidation", ApiNewMessageWithDefaults > = request => - new Promise(resolve => { - return resolve( + new Promise(resolve => + resolve( ApiNewMessageWithDefaults.decode(request.body).mapLeft( ResponseErrorFromValidationErrors(ApiNewMessageWithDefaults) ) - ); - }); + ) + ); /** * Type of a CreateMessage handler. @@ -117,7 +120,7 @@ type ICreateMessageHandler = ( messagePayload: ApiNewMessageWithDefaults, maybeFiscalCode: Option ) => Promise< - // tslint:disable-next-line:max-union-size + // eslint-disable-next-line @typescript-eslint/ban-types | IResponseSuccessRedirectToResource | IResponseErrorInternal | IResponseErrorQuery @@ -221,6 +224,7 @@ export const createMessageDocument = ( ): TaskEither< IResponseErrorInternal | IResponseErrorQuery, NewMessageWithoutContent + // eslint-disable-next-line max-params > => { // create a new message from the payload // this object contains only the message metadata, the content of the @@ -298,7 +302,8 @@ export const forkOrchestrator = ( // queue the message to the created messages queue by setting // the message to the output binding of this function - // tslint:disable-next-line:no-object-mutation + // eslint-disable-next-line functional/immutable-data + // eslint-disable-next-line extra-rules/no-commented-out-code // context.bindings.createdMessage = createdMessageEventOrError.value; const dfClient = getDfClient(); return tryCatch( @@ -317,6 +322,7 @@ export const forkOrchestrator = ( */ const redirectToNewMessage = ( newMessageWithoutContent: NewMessageWithoutContent + // eslint-disable-next-line @typescript-eslint/ban-types ): IResponseSuccessRedirectToResource => ResponseSuccessRedirectToResource( newMessageWithoutContent, @@ -327,11 +333,13 @@ const redirectToNewMessage = ( /** * Returns a type safe CreateMessage handler. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function CreateMessageHandler( telemetryClient: ReturnType, messageModel: MessageModel, generateObjectId: ObjectIdGenerator ): ICreateMessageHandler { + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type return async ( context, auth, @@ -339,6 +347,7 @@ export function CreateMessageHandler( userAttributes, messagePayload, maybeFiscalCodeInPath + // eslint-disable-next-line max-params ) => { const maybeFiscalCodeInPayload = fromNullable(messagePayload.fiscal_code); @@ -378,6 +387,7 @@ export function CreateMessageHandler( properties: { error: isSuccess ? undefined : r.kind, hasDefaultEmail: Boolean( + // eslint-disable-next-line @typescript-eslint/prefer-optional-chain messagePayload.default_addresses && messagePayload.default_addresses.email ).toString(), @@ -464,6 +474,7 @@ export function CreateMessageHandler( /** * Wraps a CreateMessage handler inside an Express request handler. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function CreateMessage( telemetryClient: ReturnType, serviceModel: ServiceModel, @@ -492,6 +503,7 @@ export function CreateMessage( ); return wrapRequestHandler( middlewaresWrap( + // eslint-disable-next-line @typescript-eslint/naming-convention, max-params checkSourceIpForHandler(handler, (_, __, c, u, ___, ____) => ipTuple(c, u) ) diff --git a/CreateMessage/index.ts b/CreateMessage/index.ts index 75b41687..29616c04 100644 --- a/CreateMessage/index.ts +++ b/CreateMessage/index.ts @@ -1,5 +1,4 @@ import { Context } from "@azure/functions"; -import { cosmosdbInstance } from "../utils/cosmosdb"; import * as cors from "cors"; import * as express from "express"; @@ -18,10 +17,11 @@ import { setAppContext } from "@pagopa/io-functions-commons/dist/src/utils/middl import createAzureFunctionHandler from "io-functions-express/dist/src/createAzureFunctionsHandler"; import { withAppInsightsContext } from "@pagopa/io-functions-commons/dist/src/utils/application_insights"; +import { cosmosdbInstance } from "../utils/cosmosdb"; import { initTelemetryClient } from "../utils/appinsights"; -import { CreateMessage } from "./handler"; import { getConfigOrThrow } from "../utils/config"; +import { CreateMessage } from "./handler"; const config = getConfigOrThrow(); @@ -53,6 +53,7 @@ app.post( const azureFunctionHandler = createAzureFunctionHandler(app); // Binds the express app to an Azure Function handler +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions function httpStart(context: Context): void { setAppContext(app, context); withAppInsightsContext(context, () => azureFunctionHandler(context)); diff --git a/CreateNotificationActivity/handler.ts b/CreateNotificationActivity/handler.ts index eba141d3..5d594426 100644 --- a/CreateNotificationActivity/handler.ts +++ b/CreateNotificationActivity/handler.ts @@ -46,6 +46,7 @@ const getEmailAddressFromProfile = ( /** * Try to create (save) a new notification */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions async function createNotification( lNotificationModel: NotificationModel, senderMetadata: CreatedMessageEventSenderMetadata, @@ -73,6 +74,7 @@ async function createNotification( }; } +// eslint-disable-next-line @typescript-eslint/naming-convention export const CreateNotificationActivityInput = t.interface({ createdMessageEvent: CreatedMessageEvent, storeMessageContentActivityResult: SuccessfulStoreMessageContentActivityResult @@ -82,6 +84,7 @@ export type CreateNotificationActivityInput = t.TypeOf< typeof CreateNotificationActivityInput >; +// eslint-disable-next-line @typescript-eslint/naming-convention const CreateNotificationActivitySomeResult = t.interface({ hasEmail: t.boolean, hasWebhook: t.boolean, @@ -93,6 +96,7 @@ type CreateNotificationActivitySomeResult = t.TypeOf< typeof CreateNotificationActivitySomeResult >; +// eslint-disable-next-line @typescript-eslint/naming-convention const CreateNotificationActivityNoneResult = t.interface({ kind: t.literal("none") }); @@ -101,6 +105,7 @@ type CreateNotificationActivityNoneResult = t.TypeOf< typeof CreateNotificationActivityNoneResult >; +// eslint-disable-next-line @typescript-eslint/naming-convention export const CreateNotificationActivityResult = t.taggedUnion("kind", [ CreateNotificationActivitySomeResult, CreateNotificationActivityNoneResult diff --git a/CreateNotificationActivity/index.ts b/CreateNotificationActivity/index.ts index 52da7586..660820dd 100644 --- a/CreateNotificationActivity/index.ts +++ b/CreateNotificationActivity/index.ts @@ -9,7 +9,6 @@ * function app in Kudu */ import { AzureFunction } from "@azure/functions"; -import { cosmosdbInstance } from "../utils/cosmosdb"; import { FiscalCode } from "@pagopa/io-functions-commons/dist/generated/definitions/FiscalCode"; import { HttpsUrl } from "@pagopa/io-functions-commons/dist/generated/definitions/HttpsUrl"; @@ -18,10 +17,10 @@ import { NOTIFICATION_COLLECTION_NAME, NotificationModel } from "@pagopa/io-functions-commons/dist/src/models/notification"; - -import { getCreateNotificationActivityHandler } from "./handler"; +import { cosmosdbInstance } from "../utils/cosmosdb"; import { getConfigOrThrow } from "../utils/config"; +import { getCreateNotificationActivityHandler } from "./handler"; const config = getConfigOrThrow(); diff --git a/CreateService/__tests__/handler.test.ts b/CreateService/__tests__/handler.test.ts index 332df281..8b6144c6 100644 --- a/CreateService/__tests__/handler.test.ts +++ b/CreateService/__tests__/handler.test.ts @@ -1,7 +1,7 @@ -/* tslint:disable:no-any */ -/* tslint:disable:no-duplicate-string */ -/* tslint:disable:no-big-function */ -/* tslint:disable: no-identical-functions */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable sonarjs/no-duplicate-string */ +/* eslint-disable sonar/sonar-max-lines-per-function */ +/* eslint-disable sonarjs/no-identical-functions */ import { IAzureApiAuthorization, @@ -28,7 +28,7 @@ import { ServicePayload } from "../../generated/definitions/ServicePayload"; import { CreateServiceHandler } from "../handler"; const mockContext = { - // tslint:disable: no-console + // eslint-disable no-console log: { error: console.error, info: console.log diff --git a/CreateService/handler.ts b/CreateService/handler.ts index 0a8530e9..a54a8bda 100644 --- a/CreateService/handler.ts +++ b/CreateService/handler.ts @@ -94,9 +94,11 @@ const createSubscriptionTask = ( () => apiClient.createSubscription({ body: { + // eslint-disable-next-line @typescript-eslint/naming-convention product_name: productName }, email: userEmail, + // eslint-disable-next-line @typescript-eslint/naming-convention subscription_id: subscriptionId }), 200 @@ -123,6 +125,7 @@ const createServiceTask = ( subscriptionId: NonEmptyString, sandboxFiscalCode: FiscalCode, adb2cTokenName: NonEmptyString + // eslint-disable-next-line max-params ): TaskEither => withApiRequestWrapper( logger, @@ -130,10 +133,14 @@ const createServiceTask = ( apiClient.createService({ body: { ...servicePayload, + // eslint-disable-next-line @typescript-eslint/naming-convention authorized_recipients: [sandboxFiscalCode], + // eslint-disable-next-line @typescript-eslint/naming-convention service_id: subscriptionId, + // eslint-disable-next-line @typescript-eslint/naming-convention service_metadata: { ...servicePayload.service_metadata, + // eslint-disable-next-line @typescript-eslint/naming-convention token_name: adb2cTokenName } } @@ -144,6 +151,7 @@ const createServiceTask = ( /** * Handles requests for create a service by a Service Payload. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function CreateServiceHandler( telemetryClient: ReturnType, apiClient: APIClient, @@ -151,6 +159,7 @@ export function CreateServiceHandler( productName: NonEmptyString, sandboxFiscalCode: NonEmptyString ): ICreateServiceHandler { + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/naming-convention return (context, __, ___, userAttributes, servicePayload) => { const subscriptionId = generateObjectId(); context.log.info( @@ -187,7 +196,9 @@ export function CreateServiceHandler( }); return ResponseSuccessJson({ ...service, + // eslint-disable-next-line @typescript-eslint/naming-convention primary_key: subscription.primary_key, + // eslint-disable-next-line @typescript-eslint/naming-convention secondary_key: subscription.secondary_key }); }) @@ -201,6 +212,7 @@ export function CreateServiceHandler( /** * Wraps a CreateService handler inside an Express request handler. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function CreateService( telemetryClient: ReturnType, serviceModel: ServiceModel, @@ -224,6 +236,7 @@ export function CreateService( ); return wrapRequestHandler( middlewaresWrap( + // eslint-disable-next-line @typescript-eslint/naming-convention checkSourceIpForHandler(handler, (_, __, c, u, ___) => ipTuple(c, u)) ) ); diff --git a/CreateService/index.ts b/CreateService/index.ts index f772d17e..33164332 100644 --- a/CreateService/index.ts +++ b/CreateService/index.ts @@ -1,7 +1,6 @@ import { Context } from "@azure/functions"; import * as cors from "cors"; import * as express from "express"; -import { cosmosdbInstance } from "../utils/cosmosdb"; import { SERVICE_COLLECTION_NAME, @@ -11,12 +10,13 @@ import { secureExpressApp } from "@pagopa/io-functions-commons/dist/src/utils/ex import { setAppContext } from "@pagopa/io-functions-commons/dist/src/utils/middlewares/context_middleware"; import createAzureFunctionHandler from "io-functions-express/dist/src/createAzureFunctionsHandler"; +import { cosmosdbInstance } from "../utils/cosmosdb"; import { apiClient } from "../clients/admin"; -import { CreateService } from "./handler"; import { initTelemetryClient } from "../utils/appinsights"; import { getConfigOrThrow } from "../utils/config"; +import { CreateService } from "./handler"; const config = getConfigOrThrow(); @@ -49,6 +49,7 @@ app.post( const azureFunctionHandler = createAzureFunctionHandler(app); // Binds the express app to an Azure Function handler +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions function httpStart(context: Context): void { setAppContext(app, context); azureFunctionHandler(context); diff --git a/CreatedMessageOrchestrator/index.ts b/CreatedMessageOrchestrator/index.ts index a7503e5a..4e39eb0a 100644 --- a/CreatedMessageOrchestrator/index.ts +++ b/CreatedMessageOrchestrator/index.ts @@ -32,7 +32,7 @@ import { MessageProcessingEventNames, trackMessageProcessing } from "./utils"; * See https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-checkpointing-and-replay * */ -// tslint:disable-next-line: cognitive-complexity no-big-function +// eslint-disable-next-line sonarjs/cognitive-complexity, max-lines-per-function function* handler(context: IOrchestrationFunctionContext): Generator { const input = context.df.getInput(); @@ -70,6 +70,7 @@ function* handler(context: IOrchestrationFunctionContext): Generator { context.log.verbose(`${logPrefix}|Starting`); + // eslint-disable-next-line extra-rules/no-commented-out-code // TODO: customize + backoff // see https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-error-handling#javascript-functions-2x-only-1 const retryOptions = new df.RetryOptions(5000, 10); diff --git a/CreatedMessageOrchestrator/utils.ts b/CreatedMessageOrchestrator/utils.ts index fd965a6c..b304c7ea 100644 --- a/CreatedMessageOrchestrator/utils.ts +++ b/CreatedMessageOrchestrator/utils.ts @@ -1,18 +1,18 @@ import { Function2 } from "fp-ts/lib/function"; +import * as t from "io-ts"; import { initTelemetryClient } from "../utils/appinsights"; import { getConfigOrThrow } from "../utils/config"; -import * as t from "io-ts"; - /** * Extracts the input type of an activity handler */ -// tslint:disable-next-line: no-any +// eslint-disable-next-line @typescript-eslint/no-explicit-any export type HandlerInputType = T extends Function2 ? A : never; +// eslint-disable-next-line @typescript-eslint/naming-convention const MessageProcessingEvent = t.interface({ name: t.string, properties: t.interface({ @@ -43,11 +43,18 @@ export const trackMessageProcessing = ( : null; export enum MessageProcessingEventNames { + // eslint-disable-next-line @typescript-eslint/naming-convention DECODE_INPUT = "api.messages.create.decodeinput", + // eslint-disable-next-line @typescript-eslint/naming-convention STORE_MESSAGE_DECODE = "api.messages.create.storemessagedecode", + // eslint-disable-next-line @typescript-eslint/naming-convention UPDATE_NOTIFICATION_STATUS = "api.messages.create.updatenotificationstatus", + // eslint-disable-next-line @typescript-eslint/naming-convention NO_CHANNEL = "api.messages.create.nochannel", + // eslint-disable-next-line @typescript-eslint/naming-convention EMAIL_SENT = "api.messages.create.emailsent", + // eslint-disable-next-line @typescript-eslint/naming-convention WEBHOOK = "api.messages.create.webhook", + // eslint-disable-next-line @typescript-eslint/naming-convention UPDATE_MESSAGE_STATUS = "api.messages.create.updatemessagestatus" } diff --git a/Dangerfile.ts b/Dangerfile.ts index e70360b8..3e3d6383 100644 --- a/Dangerfile.ts +++ b/Dangerfile.ts @@ -1,7 +1,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(); diff --git a/EmailNotificationActivity/__tests__/handler.test.ts b/EmailNotificationActivity/__tests__/handler.test.ts index 536fbef7..a47acf89 100644 --- a/EmailNotificationActivity/__tests__/handler.test.ts +++ b/EmailNotificationActivity/__tests__/handler.test.ts @@ -1,7 +1,7 @@ -/* tslint:disable:no-any */ -/* tslint:disable:no-duplicate-string */ -/* tslint:disable:no-big-function */ -/* tslint:disable: no-identical-functions */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable sonarjs/no-duplicate-string */ +/* eslint-disable sonar/sonar-max-lines-per-function */ +/* eslint-disable sonarjs/no-identical-functions */ import { NonEmptyString, @@ -36,13 +36,13 @@ beforeEach(() => jest.clearAllMocks()); const mockContext = { log: { - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console error: console.error, - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console info: console.log, - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console verbose: console.log, - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console warn: console.warn } } as any; diff --git a/EmailNotificationActivity/handler.ts b/EmailNotificationActivity/handler.ts index 780e9f9a..d75e7688 100644 --- a/EmailNotificationActivity/handler.ts +++ b/EmailNotificationActivity/handler.ts @@ -15,15 +15,17 @@ import { } from "@pagopa/io-functions-commons/dist/src/models/notification"; import { NotificationEvent } from "@pagopa/io-functions-commons/dist/src/models/notification_event"; -import { generateDocumentHtml } from "./utils"; - import { sendMail } from "@pagopa/io-functions-commons/dist/src/mailer"; +import { generateDocumentHtml } from "./utils"; export interface INotificationDefaults { + // eslint-disable-next-line @typescript-eslint/naming-convention readonly HTML_TO_TEXT_OPTIONS: HtmlToTextOptions; + // eslint-disable-next-line @typescript-eslint/naming-convention readonly MAIL_FROM: NonEmptyString; } +// eslint-disable-next-line @typescript-eslint/naming-convention export const EmailNotificationActivityInput = t.interface({ notificationEvent: NotificationEvent }); @@ -32,13 +34,16 @@ export type EmailNotificationActivityInput = t.TypeOf< typeof EmailNotificationActivityInput >; +// eslint-disable-next-line @typescript-eslint/naming-convention export const EmailNotificationActivityResult = t.taggedUnion("kind", [ t.interface({ kind: t.literal("SUCCESS"), + // eslint-disable-next-line @typescript-eslint/naming-convention, sort-keys result: t.keyof({ OK: null, EXPIRED: null }) }), t.interface({ kind: t.literal("FAILURE"), + // eslint-disable-next-line @typescript-eslint/naming-convention reason: t.keyof({ DECODE_ERROR: null }) }) ]); @@ -154,7 +159,9 @@ export const getEmailNotificationActivityHandler = ( await sendMail(lMailerTransporter, { from: notificationDefaultParams.MAIL_FROM, headers: { + // eslint-disable-next-line @typescript-eslint/naming-convention "X-Italia-Messages-MessageId": message.id, + // eslint-disable-next-line @typescript-eslint/naming-convention "X-Italia-Messages-NotificationId": notificationId }, html: documentHtml, diff --git a/EmailNotificationActivity/index.ts b/EmailNotificationActivity/index.ts index 7bbdbaf0..9985ab7e 100644 --- a/EmailNotificationActivity/index.ts +++ b/EmailNotificationActivity/index.ts @@ -9,17 +9,16 @@ * function app in Kudu */ import { AzureFunction } from "@azure/functions"; -import { cosmosdbInstance } from "../utils/cosmosdb"; import { NOTIFICATION_COLLECTION_NAME, NotificationModel } from "@pagopa/io-functions-commons/dist/src/models/notification"; -import { getEmailNotificationActivityHandler } from "./handler"; - import { getMailerTransporter } from "@pagopa/io-functions-commons/dist/src/mailer"; +import { cosmosdbInstance } from "../utils/cosmosdb"; import { getConfigOrThrow } from "../utils/config"; +import { getEmailNotificationActivityHandler } from "./handler"; const config = getConfigOrThrow(); @@ -45,7 +44,9 @@ const activityFunction: AzureFunction = getEmailNotificationActivityHandler( mailerTransporter, notificationModel, { + // eslint-disable-next-line @typescript-eslint/naming-convention HTML_TO_TEXT_OPTIONS, + // eslint-disable-next-line @typescript-eslint/naming-convention MAIL_FROM } ); diff --git a/EmailNotificationActivity/utils.ts b/EmailNotificationActivity/utils.ts index c2e772f8..dfac26b5 100644 --- a/EmailNotificationActivity/utils.ts +++ b/EmailNotificationActivity/utils.ts @@ -18,6 +18,7 @@ Puoi anche disattivare l’inoltro dei messaggi via email per tutti i servizi, s /** * Generates the HTML for the email from the Markdown content and the subject */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions export async function generateDocumentHtml( subject: MessageSubject, markdown: MessageBodyMarkdown, @@ -43,6 +44,7 @@ export async function generateDocumentHtml( // wrap the generated HTML into an email template return defaultEmailTemplate( subject, // title + // eslint-disable-next-line extra-rules/no-commented-out-code "", // TODO: headline senderMetadata.organizationName, // organization name senderServiceName, // service name @@ -56,6 +58,7 @@ export async function generateDocumentHtml( /** * Promise wrapper around Transporter#sendMail */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions export async function sendMail( transporter: NodeMailer.Transporter, options: NodeMailer.SendMailOptions diff --git a/GetLimitedProfile/__tests__/handler.test.ts b/GetLimitedProfile/__tests__/handler.test.ts index 9f434a46..53cb247d 100644 --- a/GetLimitedProfile/__tests__/handler.test.ts +++ b/GetLimitedProfile/__tests__/handler.test.ts @@ -26,7 +26,7 @@ import { import { retrievedProfileToLimitedProfile } from "../../utils/profile"; import { GetLimitedProfileHandler } from "../handler"; -// tslint:disable-next-line: no-big-function +// eslint-disable-next-line sonar/sonar-max-lines-per-function describe("GetLimitedProfileHandler", () => { const mockAzureApiAuthorization: IAzureApiAuthorization = { groups: new Set(), diff --git a/GetLimitedProfile/handler.ts b/GetLimitedProfile/handler.ts index a9774a46..d6a852ef 100644 --- a/GetLimitedProfile/handler.ts +++ b/GetLimitedProfile/handler.ts @@ -57,7 +57,6 @@ type IGetLimitedProfileHandler = ( userAttributes: IAzureUserAttributes, fiscalCode: FiscalCode ) => Promise< - // tslint:disable-next-line: max-union-size | IResponseSuccessJson | IResponseErrorNotFound | IResponseErrorQuery @@ -67,9 +66,11 @@ type IGetLimitedProfileHandler = ( /** * Returns a type safe GetLimitedProfile handler. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function GetLimitedProfileHandler( profileModel: ProfileModel ): IGetLimitedProfileHandler { + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type return async (auth, __, userAttributes, fiscalCode) => { // Sandboxed accounts will receive 403 // if they're not authorized to send a messages to this fiscal code. @@ -126,6 +127,7 @@ export function GetLimitedProfileHandler( /** * Wraps a GetLimitedProfile handler inside an Express request handler. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function GetLimitedProfile( serviceModel: ServiceModel, profileModel: ProfileModel diff --git a/GetLimitedProfile/index.ts b/GetLimitedProfile/index.ts index eb9032a6..9b112512 100644 --- a/GetLimitedProfile/index.ts +++ b/GetLimitedProfile/index.ts @@ -39,6 +39,7 @@ app.get( const azureFunctionHandler = createAzureFunctionHandler(app); // Binds the express app to an Azure Function handler +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions function httpStart(context: Context): void { setAppContext(app, context); azureFunctionHandler(context); diff --git a/GetLimitedProfileByPOST/__tests__/handler.test.ts b/GetLimitedProfileByPOST/__tests__/handler.test.ts index ebe1b8e5..8111cf12 100644 --- a/GetLimitedProfileByPOST/__tests__/handler.test.ts +++ b/GetLimitedProfileByPOST/__tests__/handler.test.ts @@ -24,7 +24,7 @@ import { import { retrievedProfileToLimitedProfile } from "../../utils/profile"; import { GetLimitedProfileByPOSTHandler } from "../handler"; -// tslint:disable-next-line: no-big-function +// eslint-disable-next-line sonar/sonar-max-lines-per-function describe("GetLimitedProfileByPOSTHandler", () => { const mockAzureApiAuthorization: IAzureApiAuthorization = { groups: new Set(), diff --git a/GetLimitedProfileByPOST/handler.ts b/GetLimitedProfileByPOST/handler.ts index 081710bc..06179289 100644 --- a/GetLimitedProfileByPOST/handler.ts +++ b/GetLimitedProfileByPOST/handler.ts @@ -59,7 +59,6 @@ type IGetLimitedProfileByPOSTHandler = ( userAttributes: IAzureUserAttributes, payload: GetLimitedProfileByPOSTPayload ) => Promise< - // tslint:disable-next-line: max-union-size | IResponseSuccessJson | IResponseErrorNotFound | IResponseErrorQuery @@ -69,9 +68,11 @@ type IGetLimitedProfileByPOSTHandler = ( /** * Returns a type safe GetLimitedProfileByPOST handler. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function GetLimitedProfileByPOSTHandler( profileModel: ProfileModel ): IGetLimitedProfileByPOSTHandler { + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type return async (auth, __, userAttributes, payload) => { // Sandboxed accounts will receive 403 // if they're not authorized to send a messages to this fiscal code. @@ -128,6 +129,7 @@ export function GetLimitedProfileByPOSTHandler( /** * Wraps a GetLimitedProfileByPOST handler inside an Express request handler. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function GetLimitedProfileByPOST( serviceModel: ServiceModel, profileModel: ProfileModel diff --git a/GetLimitedProfileByPOST/index.ts b/GetLimitedProfileByPOST/index.ts index bf2133ac..970f1213 100644 --- a/GetLimitedProfileByPOST/index.ts +++ b/GetLimitedProfileByPOST/index.ts @@ -39,6 +39,7 @@ app.post( const azureFunctionHandler = createAzureFunctionHandler(app); // Binds the express app to an Azure Function handler +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions function httpStart(context: Context): void { setAppContext(app, context); azureFunctionHandler(context); diff --git a/GetMessage/__tests__/handler.test.ts b/GetMessage/__tests__/handler.test.ts index e9d4adfa..9f45cea3 100644 --- a/GetMessage/__tests__/handler.test.ts +++ b/GetMessage/__tests__/handler.test.ts @@ -1,6 +1,6 @@ -/* tslint:disable:no-any */ -/* tslint:disable:no-duplicate-string */ -/* tslint:disable:no-big-function */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable sonarjs/no-duplicate-string */ +/* eslint-disable sonar/sonar-max-lines-per-function */ import { none, Option, some } from "fp-ts/lib/Option"; @@ -51,13 +51,13 @@ jest.useFakeTimers(); const mockContext = { log: { - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console error: console.error, - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console info: console.log, - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console verbose: console.log, - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console warn: console.warn } } as any; diff --git a/GetMessage/handler.ts b/GetMessage/handler.ts index f4640149..b49838f7 100644 --- a/GetMessage/handler.ts +++ b/GetMessage/handler.ts @@ -85,7 +85,6 @@ type IGetMessageHandler = ( fiscalCode: FiscalCode, messageId: string ) => Promise< - // tslint:disable-next-line:max-union-size | IResponseSuccessJson< MessageResponseWithContent | MessageResponseWithoutContent > @@ -99,6 +98,7 @@ type IGetMessageHandler = ( /** * Handles requests for getting a single message for a recipient. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function GetMessageHandler( messageModel: MessageModel, messageStatusModel: MessageStatusModel, @@ -106,6 +106,7 @@ export function GetMessageHandler( notificationStatusModel: NotificationStatusModel, blobService: BlobService ): IGetMessageHandler { + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type, max-params return async (context, _, __, userAttributes, fiscalCode, messageId) => { const errorOrMessageId = NonEmptyString.decode(messageId); @@ -213,6 +214,7 @@ export function GetMessageHandler( /** * Wraps a GetMessage handler inside an Express request handler. */ +// eslint-disable-next-line max-params, prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function GetMessage( serviceModel: ServiceModel, messageModel: MessageModel, @@ -238,6 +240,7 @@ export function GetMessage( ); return wrapRequestHandler( middlewaresWrap( + // eslint-disable-next-line @typescript-eslint/naming-convention, max-params checkSourceIpForHandler(handler, (_, __, c, u, ___, ____) => ipTuple(c, u) ) diff --git a/GetMessage/index.ts b/GetMessage/index.ts index d85658ee..4496e33a 100644 --- a/GetMessage/index.ts +++ b/GetMessage/index.ts @@ -2,7 +2,6 @@ import { Context } from "@azure/functions"; import { createBlobService } from "azure-storage"; import * as cors from "cors"; import * as express from "express"; -import { cosmosdbInstance } from "../utils/cosmosdb"; import { MESSAGE_COLLECTION_NAME, @@ -29,10 +28,10 @@ import { NOTIFICATION_STATUS_COLLECTION_NAME, NotificationStatusModel } from "@pagopa/io-functions-commons/dist/src/models/notification_status"; - -import { GetMessage } from "./handler"; +import { cosmosdbInstance } from "../utils/cosmosdb"; import { getConfigOrThrow } from "../utils/config"; +import { GetMessage } from "./handler"; const config = getConfigOrThrow(); @@ -81,6 +80,7 @@ app.get( const azureFunctionHandler = createAzureFunctionHandler(app); // Binds the express app to an Azure Function handler +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions function httpStart(context: Context): void { setAppContext(app, context); azureFunctionHandler(context); diff --git a/GetService/__tests__/handler.test.ts b/GetService/__tests__/handler.test.ts index 98863f8a..f16d2b22 100644 --- a/GetService/__tests__/handler.test.ts +++ b/GetService/__tests__/handler.test.ts @@ -1,7 +1,7 @@ -/* tslint:disable:no-any */ -/* tslint:disable:no-duplicate-string */ -/* tslint:disable:no-big-function */ -/* tslint:disable: no-identical-functions */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable sonarjs/no-duplicate-string */ +/* eslint-disable sonar/sonar-max-lines-per-function */ +/* eslint-disable sonarjs/no-identical-functions */ import { IAzureApiAuthorization, @@ -25,7 +25,7 @@ import * as reporters from "italia-ts-commons/lib/reporters"; import { GetServiceHandler } from "../handler"; const mockContext = { - // tslint:disable: no-console + // eslint-disable no-console log: { error: console.error } diff --git a/GetService/handler.ts b/GetService/handler.ts index 3e613d42..cfa75568 100644 --- a/GetService/handler.ts +++ b/GetService/handler.ts @@ -73,6 +73,7 @@ const getServiceTask = ( logger, () => apiClient.getService({ + // eslint-disable-next-line @typescript-eslint/naming-convention service_id: serviceId }), 200 @@ -87,6 +88,7 @@ const getSubscriptionKeysTask = ( logger, () => apiClient.getSubscriptionKeys({ + // eslint-disable-next-line @typescript-eslint/naming-convention service_id: serviceId }), 200 @@ -95,9 +97,11 @@ const getSubscriptionKeysTask = ( /** * Handles requests for getting a single service by a service ID. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function GetServiceHandler(apiClient: APIClient): IGetServiceHandler { - return (_, apiAuth, ___, ____, serviceId) => { - return serviceOwnerCheckTask(serviceId, apiAuth.subscriptionId) + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/naming-convention + return (_, apiAuth, ___, ____, serviceId) => + serviceOwnerCheckTask(serviceId, apiAuth.subscriptionId) .chain(() => getServiceTask( getLogger(_, logPrefix, "GetService"), @@ -121,12 +125,12 @@ export function GetServiceHandler(apiClient: APIClient): IGetServiceHandler { identity ) .run(); - }; } /** * Wraps a GetService handler inside an Express request handler. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function GetService( serviceModel: ServiceModel, client: APIClient @@ -141,6 +145,7 @@ export function GetService( ); return wrapRequestHandler( middlewaresWrap( + // eslint-disable-next-line @typescript-eslint/naming-convention checkSourceIpForHandler(handler, (_, __, c, u, ___) => ipTuple(c, u)) ) ); diff --git a/GetService/index.ts b/GetService/index.ts index 27f598d6..872972a8 100644 --- a/GetService/index.ts +++ b/GetService/index.ts @@ -1,7 +1,6 @@ import { Context } from "@azure/functions"; import * as cors from "cors"; import * as express from "express"; -import { cosmosdbInstance } from "../utils/cosmosdb"; import { SERVICE_COLLECTION_NAME, @@ -11,6 +10,7 @@ import { secureExpressApp } from "@pagopa/io-functions-commons/dist/src/utils/ex import { setAppContext } from "@pagopa/io-functions-commons/dist/src/utils/middlewares/context_middleware"; import createAzureFunctionHandler from "io-functions-express/dist/src/createAzureFunctionsHandler"; +import { cosmosdbInstance } from "../utils/cosmosdb"; import { apiClient } from "../clients/admin"; import { GetService } from "./handler"; @@ -31,6 +31,7 @@ app.get("/api/v1/services/:service_id", GetService(serviceModel, apiClient)); const azureFunctionHandler = createAzureFunctionHandler(app); // Binds the express app to an Azure Function handler +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions function httpStart(context: Context): void { setAppContext(app, context); azureFunctionHandler(context); diff --git a/GetSubscriptionsFeed/__tests__/handler.test.ts b/GetSubscriptionsFeed/__tests__/handler.test.ts index b185cf3d..6649b7dd 100644 --- a/GetSubscriptionsFeed/__tests__/handler.test.ts +++ b/GetSubscriptionsFeed/__tests__/handler.test.ts @@ -1,7 +1,7 @@ -/* tslint:disable:no-any */ -/* tslint:disable:no-duplicate-string */ -/* tslint:disable:no-big-function */ -/* tslint:disable: no-identical-functions */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable sonarjs/no-duplicate-string */ +/* eslint-disable sonar/sonar-max-lines-per-function */ +/* eslint-disable sonarjs/no-identical-functions */ import { TableService } from "azure-storage"; import * as dateFmt from "date-fns"; diff --git a/GetSubscriptionsFeed/handler.ts b/GetSubscriptionsFeed/handler.ts index c4c0e946..8931bce0 100644 --- a/GetSubscriptionsFeed/handler.ts +++ b/GetSubscriptionsFeed/handler.ts @@ -64,7 +64,6 @@ type IGetSubscriptionsFeedHandler = ( attrs: IAzureUserAttributes, date: string ) => Promise< - // tslint:disable-next-line:max-union-size | IResponseSuccessJson | IResponseErrorNotFound | IResponseErrorQuery @@ -76,10 +75,12 @@ type IGetSubscriptionsFeedHandler = ( /** * Handles requests for getting a single message for a recipient. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function GetSubscriptionsFeedHandler( tableService: TableService, subscriptionsFeedTable: string ): IGetSubscriptionsFeedHandler { + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type return async (_, __, userAttributes, subscriptionsDateUTC) => { // subscription data for a certain day becomes available at the begining of // the next day @@ -138,6 +139,7 @@ export function GetSubscriptionsFeedHandler( if (!serviceUnsubscriptionsSet.has(ps)) { // add new users to the new subscriptions, skipping those that // unsubscribed from this service + // eslint-disable-next-line functional/immutable-data subscriptions.push(ps); } }); @@ -149,6 +151,7 @@ export function GetSubscriptionsFeedHandler( // add all users that subscribed to this service, skipping those that // are new users as they're yet counted in as new subscribers in the // previous step + // eslint-disable-next-line functional/immutable-data subscriptions.push(ss); } }); @@ -157,6 +160,7 @@ export function GetSubscriptionsFeedHandler( profileUnsubscriptionsSet.forEach(pu => // add all users that deleted its own account + // eslint-disable-next-line functional/immutable-data unsubscriptions.push(pu) ); @@ -168,6 +172,7 @@ export function GetSubscriptionsFeedHandler( // add all users that unsubscribed from this service, skipping those // that created the profile on the same day as the service will not // yet know they exist or deleted their account + // eslint-disable-next-line functional/immutable-data unsubscriptions.push(su); } }); @@ -185,6 +190,7 @@ export function GetSubscriptionsFeedHandler( /** * A string that represents a date in the format YYYY-MM-DD */ +// eslint-disable-next-line @typescript-eslint/naming-convention const ShortDateString = t.refinement( PatternString("\\d\\d\\d\\d-\\d\\d-\\d\\d"), s => !isNaN(new Date(s).getTime()), @@ -194,6 +200,7 @@ const ShortDateString = t.refinement( /** * Wraps a GetMessage handler inside an Express request handler. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function GetSubscriptionsFeed( serviceModel: ServiceModel, tableService: TableService, diff --git a/GetSubscriptionsFeed/index.ts b/GetSubscriptionsFeed/index.ts index 8c945808..933164de 100644 --- a/GetSubscriptionsFeed/index.ts +++ b/GetSubscriptionsFeed/index.ts @@ -10,13 +10,11 @@ import { } from "@pagopa/io-functions-commons/dist/src/models/service"; import { secureExpressApp } from "@pagopa/io-functions-commons/dist/src/utils/express"; import { setAppContext } from "@pagopa/io-functions-commons/dist/src/utils/middlewares/context_middleware"; -import { cosmosdbInstance } from "../utils/cosmosdb"; - import createAzureFunctionHandler from "io-functions-express/dist/src/createAzureFunctionsHandler"; - -import { GetSubscriptionsFeed } from "./handler"; +import { cosmosdbInstance } from "../utils/cosmosdb"; import { getConfigOrThrow } from "../utils/config"; +import { GetSubscriptionsFeed } from "./handler"; const config = getConfigOrThrow(); @@ -45,6 +43,7 @@ app.get( const azureFunctionHandler = createAzureFunctionHandler(app); // Binds the express app to an Azure Function handler +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions function httpStart(context: Context): void { setAppContext(app, context); azureFunctionHandler(context); diff --git a/GetSubscriptionsFeed/utils.ts b/GetSubscriptionsFeed/utils.ts index 9ba27cfb..92b09055 100644 --- a/GetSubscriptionsFeed/utils.ts +++ b/GetSubscriptionsFeed/utils.ts @@ -8,8 +8,9 @@ import { FiscalCodeHash } from "../generated/definitions/FiscalCodeHash"; * A minimal storage table Entry */ type TableEntry = Readonly<{ - RowKey: Readonly<{ - _: string; + // eslint-disable-next-line @typescript-eslint/naming-convention + readonly RowKey: Readonly<{ + readonly _: string; }>; }>; @@ -27,6 +28,7 @@ export type PagedQuery = ( */ export const getPagedQuery = (tableService: TableService, table: string) => ( tableQuery: TableQuery + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type ): PagedQuery => currentToken => new Promise(resolve => tableService.queryEntities( @@ -50,7 +52,7 @@ export const getPagedQuery = (tableService: TableService, table: string) => ( async function* iterateOnPages( pagedQuery: PagedQuery ): AsyncIterableIterator> { - // tslint:disable-next-line: no-let + // eslint-disable-next-line functional/no-let let token: TableService.TableContinuationToken = null; do { // query for a page of entries @@ -96,6 +98,7 @@ const withHashFromEntry = (f: (s: FiscalCodeHash) => void) => ( /** * Fetches all user hashed returned by the provided paged query */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions export async function queryUsers( pagedQuery: PagedQuery ): Promise> { diff --git a/GetUserServices/__tests__/handler.test.ts b/GetUserServices/__tests__/handler.test.ts index 93be2028..c2a4f348 100644 --- a/GetUserServices/__tests__/handler.test.ts +++ b/GetUserServices/__tests__/handler.test.ts @@ -1,7 +1,7 @@ -/* tslint:disable:no-any */ -/* tslint:disable:no-duplicate-string */ -/* tslint:disable:no-big-function */ -/* tslint:disable: no-identical-functions */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable sonarjs/no-duplicate-string */ +/* eslint-disable sonar/sonar-max-lines-per-function */ +/* eslint-disable sonarjs/no-identical-functions */ import { IAzureApiAuthorization, @@ -27,7 +27,7 @@ import { UserInfo } from "../../generated/api-admin/UserInfo"; import { GetUserServicesHandler } from "../handler"; const mockContext = { - // tslint:disable: no-console + // eslint-disable no-console log: { error: console.error } diff --git a/GetUserServices/handler.ts b/GetUserServices/handler.ts index 2bd856a3..bfb1824e 100644 --- a/GetUserServices/handler.ts +++ b/GetUserServices/handler.ts @@ -73,11 +73,13 @@ const getUserTask = ( /** * Handles requests for getting an array of serviceID by providing the current user email. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function GetUserServicesHandler( apiClient: APIClient ): IGetUserServicesHandler { - return (_, __, ___, userAttributes) => { - return getUserTask( + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/naming-convention + return (_, __, ___, userAttributes) => + getUserTask( getLogger(_, logPrefix, "GetUser"), apiClient, userAttributes.email @@ -94,12 +96,12 @@ export function GetUserServicesHandler( identity ) .run(); - }; } /** * Wraps a GetUserServices handler inside an Express request handler. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function GetUserServices( serviceModel: ServiceModel, client: APIClient diff --git a/GetUserServices/index.ts b/GetUserServices/index.ts index 123d8544..414a2e9d 100644 --- a/GetUserServices/index.ts +++ b/GetUserServices/index.ts @@ -1,7 +1,6 @@ import { Context } from "@azure/functions"; import * as cors from "cors"; import * as express from "express"; -import { cosmosdbInstance } from "../utils/cosmosdb"; import { SERVICE_COLLECTION_NAME, @@ -11,6 +10,7 @@ import { secureExpressApp } from "@pagopa/io-functions-commons/dist/src/utils/ex import { setAppContext } from "@pagopa/io-functions-commons/dist/src/utils/middlewares/context_middleware"; import createAzureFunctionHandler from "io-functions-express/dist/src/createAzureFunctionsHandler"; +import { cosmosdbInstance } from "../utils/cosmosdb"; import { apiClient } from "../clients/admin"; import { GetUserServices } from "./handler"; @@ -31,6 +31,7 @@ app.get("/api/v1/services", GetUserServices(serviceModel, apiClient)); const azureFunctionHandler = createAzureFunctionHandler(app); // Binds the express app to an Azure Function handler +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions function httpStart(context: Context): void { setAppContext(app, context); azureFunctionHandler(context); diff --git a/Info/handler.ts b/Info/handler.ts index 9be3e1b8..eed8ba77 100644 --- a/Info/handler.ts +++ b/Info/handler.ts @@ -10,15 +10,17 @@ import * as packageJson from "../package.json"; import { checkApplicationHealth, HealthCheck } from "../utils/healthcheck"; interface IInfo { - name: string; - version: string; + readonly name: string; + readonly version: string; } type InfoHandler = () => Promise< IResponseSuccessJson | IResponseErrorInternal >; +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function InfoHandler(healthCheck: HealthCheck): InfoHandler { + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type return () => healthCheck .fold | IResponseErrorInternal>( @@ -32,6 +34,7 @@ export function InfoHandler(healthCheck: HealthCheck): InfoHandler { .run(); } +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function Info(): express.RequestHandler { const handler = InfoHandler(checkApplicationHealth()); diff --git a/MessageStatusUpdaterActivity/handler.ts b/MessageStatusUpdaterActivity/handler.ts index 62b72117..50635a35 100644 --- a/MessageStatusUpdaterActivity/handler.ts +++ b/MessageStatusUpdaterActivity/handler.ts @@ -11,13 +11,14 @@ import { } from "@pagopa/io-functions-commons/dist/src/models/message_status"; import { ReadableReporter } from "italia-ts-commons/lib/reporters"; +// eslint-disable-next-line @typescript-eslint/naming-convention export const Input = t.interface({ messageId: NonEmptyString, status: MessageStatusValue }); interface IResponse { - kind: "FAILURE" | "SUCCESS"; + readonly kind: "FAILURE" | "SUCCESS"; } export const getMessageStatusUpdaterActivityHandler = ( diff --git a/NotificationStatusUpdaterActivity/handler.ts b/NotificationStatusUpdaterActivity/handler.ts index ddef6158..49d68c23 100644 --- a/NotificationStatusUpdaterActivity/handler.ts +++ b/NotificationStatusUpdaterActivity/handler.ts @@ -14,10 +14,11 @@ import { ReadableReporter } from "italia-ts-commons/lib/reporters"; type INotificationStatusUpdaterResult = | { - kind: "SUCCESS"; + readonly kind: "SUCCESS"; } - | { kind: "FAILURE" }; + | { readonly kind: "FAILURE" }; +// eslint-disable-next-line @typescript-eslint/naming-convention export const NotificationStatusUpdaterActivityInput = t.interface({ channel: NotificationChannel, messageId: NonEmptyString, diff --git a/RegenerateServiceKey/__tests__/handler.test.ts b/RegenerateServiceKey/__tests__/handler.test.ts index 4fd0ee99..c40d3ef3 100644 --- a/RegenerateServiceKey/__tests__/handler.test.ts +++ b/RegenerateServiceKey/__tests__/handler.test.ts @@ -1,7 +1,7 @@ -/* tslint:disable:no-any */ -/* tslint:disable:no-duplicate-string */ -/* tslint:disable:no-big-function */ -/* tslint:disable: no-identical-functions */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable sonarjs/no-duplicate-string */ +/* eslint-disable sonar/sonar-max-lines-per-function */ +/* eslint-disable sonarjs/no-identical-functions */ import { IAzureApiAuthorization, @@ -27,7 +27,7 @@ import { SubscriptionKeyTypePayload } from "../../generated/api-admin/Subscripti import { RegenerateServiceKeyHandler } from "../handler"; const mockContext = { - // tslint:disable: no-console + // eslint-disable no-console log: { error: console.error } diff --git a/RegenerateServiceKey/handler.ts b/RegenerateServiceKey/handler.ts index 7e30933f..3e7a6c8d 100644 --- a/RegenerateServiceKey/handler.ts +++ b/RegenerateServiceKey/handler.ts @@ -85,6 +85,7 @@ const regenerateServiceKeyTask = ( () => apiClient.RegenerateSubscriptionKeys({ body: subscriptionKeyTypePayload, + // eslint-disable-next-line @typescript-eslint/naming-convention service_id: serviceId }), 200 @@ -93,11 +94,13 @@ const regenerateServiceKeyTask = ( /** * Handles requests for upload a service logo by a service ID and a base64 logo' s string. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function RegenerateServiceKeyHandler( apiClient: APIClient ): IRegenerateServiceKeyHandler { - return (_, apiAuth, ___, ____, serviceId, subscriptionKeyTypePayload) => { - return serviceOwnerCheckTask(serviceId, apiAuth.subscriptionId) + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/naming-convention, max-params + return (_, apiAuth, ___, ____, serviceId, subscriptionKeyTypePayload) => + serviceOwnerCheckTask(serviceId, apiAuth.subscriptionId) .chain(() => regenerateServiceKeyTask( getLogger(_, logPrefix, "RegenerateServiceKey"), @@ -108,12 +111,12 @@ export function RegenerateServiceKeyHandler( ) .fold(identity, identity) .run(); - }; } /** * Wraps a RegenerateServiceKey handler inside an Express request handler. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function RegenerateServiceKey( serviceModel: ServiceModel, client: APIClient @@ -129,6 +132,7 @@ export function RegenerateServiceKey( ); return wrapRequestHandler( middlewaresWrap( + // eslint-disable-next-line @typescript-eslint/naming-convention, max-params checkSourceIpForHandler(handler, (_, __, c, u, ___, ____) => ipTuple(c, u) ) diff --git a/RegenerateServiceKey/index.ts b/RegenerateServiceKey/index.ts index 2f3e0265..36850523 100644 --- a/RegenerateServiceKey/index.ts +++ b/RegenerateServiceKey/index.ts @@ -1,6 +1,5 @@ import { Context } from "@azure/functions"; import * as express from "express"; -import { cosmosdbInstance } from "../utils/cosmosdb"; import { SERVICE_COLLECTION_NAME, @@ -10,6 +9,7 @@ import { secureExpressApp } from "@pagopa/io-functions-commons/dist/src/utils/ex import { setAppContext } from "@pagopa/io-functions-commons/dist/src/utils/middlewares/context_middleware"; import createAzureFunctionHandler from "io-functions-express/dist/src/createAzureFunctionsHandler"; +import { cosmosdbInstance } from "../utils/cosmosdb"; import { apiClient } from "../clients/admin"; import { RegenerateServiceKey } from "./handler"; @@ -30,6 +30,7 @@ app.put( const azureFunctionHandler = createAzureFunctionHandler(app); // Binds the express app to an Azure Function handler +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions function httpStart(context: Context): void { setAppContext(app, context); azureFunctionHandler(context); diff --git a/StoreMessageContentActivity/handler.ts b/StoreMessageContentActivity/handler.ts index 5b7c114f..8a120e92 100644 --- a/StoreMessageContentActivity/handler.ts +++ b/StoreMessageContentActivity/handler.ts @@ -16,6 +16,7 @@ import { isLeft } from "fp-ts/lib/Either"; import { fromNullable, isNone } from "fp-ts/lib/Option"; import { readableReport } from "italia-ts-commons/lib/reporters"; +// eslint-disable-next-line @typescript-eslint/naming-convention export const SuccessfulStoreMessageContentActivityResult = t.interface({ blockedInboxOrChannels: t.readonlyArray(BlockedInboxOrChannel), kind: t.literal("SUCCESS"), @@ -26,14 +27,20 @@ export type SuccessfulStoreMessageContentActivityResult = t.TypeOf< typeof SuccessfulStoreMessageContentActivityResult >; +// eslint-disable-next-line @typescript-eslint/naming-convention export const FailedStoreMessageContentActivityResult = t.interface({ kind: t.literal("FAILURE"), reason: t.keyof({ // see https://github.com/gcanti/io-ts#union-of-string-literals + // eslint-disable-next-line @typescript-eslint/naming-convention BAD_DATA: null, + // eslint-disable-next-line @typescript-eslint/naming-convention MASTER_INBOX_DISABLED: null, + // eslint-disable-next-line @typescript-eslint/naming-convention PERMANENT_ERROR: null, + // eslint-disable-next-line @typescript-eslint/naming-convention PROFILE_NOT_FOUND: null, + // eslint-disable-next-line @typescript-eslint/naming-convention SENDER_BLOCKED: null }) }); @@ -42,6 +49,7 @@ export type FailedStoreMessageContentActivityResult = t.TypeOf< typeof FailedStoreMessageContentActivityResult >; +// eslint-disable-next-line @typescript-eslint/naming-convention export const StoreMessageContentActivityResult = t.taggedUnion("kind", [ SuccessfulStoreMessageContentActivityResult, FailedStoreMessageContentActivityResult diff --git a/StoreMessageContentActivity/index.ts b/StoreMessageContentActivity/index.ts index 9d54c7e1..798c2340 100644 --- a/StoreMessageContentActivity/index.ts +++ b/StoreMessageContentActivity/index.ts @@ -1,6 +1,5 @@ import { AzureFunction } from "@azure/functions"; import { createBlobService } from "azure-storage"; -import { cosmosdbInstance } from "../utils/cosmosdb"; import { MESSAGE_COLLECTION_NAME, @@ -10,9 +9,9 @@ import { PROFILE_COLLECTION_NAME, ProfileModel } from "@pagopa/io-functions-commons/dist/src/models/profile"; -import { getStoreMessageContentActivityHandler } from "./handler"; - +import { cosmosdbInstance } from "../utils/cosmosdb"; import { getConfigOrThrow } from "../utils/config"; +import { getStoreMessageContentActivityHandler } from "./handler"; const config = getConfigOrThrow(); diff --git a/UpdateService/__tests__/handler.test.ts b/UpdateService/__tests__/handler.test.ts index 6e8e8de0..70247692 100644 --- a/UpdateService/__tests__/handler.test.ts +++ b/UpdateService/__tests__/handler.test.ts @@ -1,7 +1,7 @@ -/* tslint:disable:no-any */ -/* tslint:disable:no-duplicate-string */ -/* tslint:disable:no-big-function */ -/* tslint:disable: no-identical-functions */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable sonarjs/no-duplicate-string */ +/* eslint-disable sonar/sonar-max-lines-per-function */ +/* eslint-disable sonarjs/no-identical-functions */ import { IAzureApiAuthorization, @@ -30,7 +30,7 @@ import { ServicePayload } from "../../generated/definitions/ServicePayload"; import { UpdateServiceHandler } from "../handler"; const mockContext = { - // tslint:disable: no-console + // eslint-disable no-console log: { error: console.error } diff --git a/UpdateService/handler.ts b/UpdateService/handler.ts index f8921441..cd911e40 100644 --- a/UpdateService/handler.ts +++ b/UpdateService/handler.ts @@ -86,6 +86,7 @@ const getSubscriptionKeysTask = ( logger, () => apiClient.getSubscriptionKeys({ + // eslint-disable-next-line @typescript-eslint/naming-convention service_id: serviceId }), 200 @@ -100,6 +101,7 @@ const getServiceTask = ( logger, () => apiClient.getService({ + // eslint-disable-next-line @typescript-eslint/naming-convention service_id: serviceId }), 200 @@ -126,6 +128,7 @@ const updateServiceTask = ( serviceId: NonEmptyString, retrievedService: Service, adb2cTokenName: NonEmptyString + // eslint-disable-next-line max-params ): TaskEither => withApiRequestWrapper( logger, @@ -134,12 +137,16 @@ const updateServiceTask = ( body: { ...retrievedService, ...servicePayload, + // eslint-disable-next-line @typescript-eslint/naming-convention service_id: serviceId, + // eslint-disable-next-line @typescript-eslint/naming-convention service_metadata: { ...servicePayload.service_metadata, + // eslint-disable-next-line @typescript-eslint/naming-convention token_name: adb2cTokenName } }, + // eslint-disable-next-line @typescript-eslint/naming-convention service_id: serviceId }), 200 @@ -148,12 +155,14 @@ const updateServiceTask = ( /** * Handles requests for updating a service by given serviceId and a Service Payload. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function UpdateServiceHandler( telemetryClient: ReturnType, apiClient: APIClient ): IUpdateServiceHandler { - return (_, apiAuth, ___, userAttributes, serviceId, servicePayload) => { - return serviceOwnerCheckTask(serviceId, apiAuth.subscriptionId) + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/naming-convention, max-params + return (_, apiAuth, ___, userAttributes, serviceId, servicePayload) => + serviceOwnerCheckTask(serviceId, apiAuth.subscriptionId) .chain(() => getServiceTask( getLogger(_, logPrefix, "GetService"), @@ -201,12 +210,12 @@ export function UpdateServiceHandler( ) .fold(identity, identity) .run(); - }; } /** * Wraps a UpdateService handler inside an Express request handler. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function UpdateService( telemetryClient: ReturnType, serviceModel: ServiceModel, @@ -223,6 +232,7 @@ export function UpdateService( ); return wrapRequestHandler( middlewaresWrap( + // eslint-disable-next-line @typescript-eslint/naming-convention, max-params checkSourceIpForHandler(handler, (_, __, c, u, ___, ____) => ipTuple(c, u) ) diff --git a/UpdateService/index.ts b/UpdateService/index.ts index 994adaff..75f9d2a9 100644 --- a/UpdateService/index.ts +++ b/UpdateService/index.ts @@ -1,7 +1,6 @@ import { Context } from "@azure/functions"; import * as cors from "cors"; import * as express from "express"; -import { cosmosdbInstance } from "../utils/cosmosdb"; import { SERVICE_COLLECTION_NAME, @@ -11,6 +10,7 @@ import { secureExpressApp } from "@pagopa/io-functions-commons/dist/src/utils/ex import { setAppContext } from "@pagopa/io-functions-commons/dist/src/utils/middlewares/context_middleware"; import createAzureFunctionHandler from "io-functions-express/dist/src/createAzureFunctionsHandler"; +import { cosmosdbInstance } from "../utils/cosmosdb"; import { apiClient } from "../clients/admin"; import { initTelemetryClient } from "../utils/appinsights"; @@ -42,6 +42,7 @@ app.put( const azureFunctionHandler = createAzureFunctionHandler(app); // Binds the express app to an Azure Function handler +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions function httpStart(context: Context): void { setAppContext(app, context); azureFunctionHandler(context); diff --git a/UploadOrganizationLogo/__tests__/handler.test.ts b/UploadOrganizationLogo/__tests__/handler.test.ts index ed9ca5b8..0bf11a7f 100644 --- a/UploadOrganizationLogo/__tests__/handler.test.ts +++ b/UploadOrganizationLogo/__tests__/handler.test.ts @@ -1,7 +1,7 @@ -/* tslint:disable:no-any */ -/* tslint:disable:no-duplicate-string */ -/* tslint:disable:no-big-function */ -/* tslint:disable: no-identical-functions */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable sonarjs/no-duplicate-string */ +/* eslint-disable sonar/sonar-max-lines-per-function */ +/* eslint-disable sonarjs/no-identical-functions */ import { IAzureApiAuthorization, @@ -26,7 +26,7 @@ import { Logo } from "../../generated/api-admin/Logo"; import { UploadOrganizationLogoHandler } from "../handler"; const mockContext = { - // tslint:disable: no-console + // eslint-disable no-console log: { error: console.error } diff --git a/UploadOrganizationLogo/handler.ts b/UploadOrganizationLogo/handler.ts index 9e59cddd..3899d0ee 100644 --- a/UploadOrganizationLogo/handler.ts +++ b/UploadOrganizationLogo/handler.ts @@ -85,6 +85,7 @@ const uploadOrganizationLogoTask = ( () => apiClient.uploadOrganizationLogo({ body: logo, + // eslint-disable-next-line @typescript-eslint/naming-convention organization_fiscal_code: organizationFiscalCode }), 201 @@ -93,11 +94,13 @@ const uploadOrganizationLogoTask = ( /** * Handles requests for upload an organization logo. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function UploadOrganizationLogoHandler( apiClient: APIClient ): IUploadOrganizationLogoHandler { - return (_, __, ___, ____, organizationFiscalCode, logoPayload) => { - return uploadOrganizationLogoTask( + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/naming-convention, max-params + return (_, __, ___, ____, organizationFiscalCode, logoPayload) => + uploadOrganizationLogoTask( getLogger(_, logPrefix, "UploadOrganizationLogo"), apiClient, organizationFiscalCode, @@ -111,12 +114,12 @@ export function UploadOrganizationLogoHandler( ) .fold(identity, identity) .run(); - }; } /** * Wraps a UploadOrganizationLogo handler inside an Express request handler. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function UploadOrganizationLogo( serviceModel: ServiceModel, client: APIClient @@ -132,6 +135,7 @@ export function UploadOrganizationLogo( ); return wrapRequestHandler( middlewaresWrap( + // eslint-disable-next-line @typescript-eslint/naming-convention, max-params checkSourceIpForHandler(handler, (_, __, c, u, ___, ____) => ipTuple(c, u) ) diff --git a/UploadOrganizationLogo/index.ts b/UploadOrganizationLogo/index.ts index 734f8d05..eb7814d6 100644 --- a/UploadOrganizationLogo/index.ts +++ b/UploadOrganizationLogo/index.ts @@ -1,6 +1,5 @@ import { Context } from "@azure/functions"; import * as express from "express"; -import { cosmosdbInstance } from "../utils/cosmosdb"; import { SERVICE_COLLECTION_NAME, @@ -10,6 +9,7 @@ import { secureExpressApp } from "@pagopa/io-functions-commons/dist/src/utils/ex import { setAppContext } from "@pagopa/io-functions-commons/dist/src/utils/middlewares/context_middleware"; import createAzureFunctionHandler from "io-functions-express/dist/src/createAzureFunctionsHandler"; +import { cosmosdbInstance } from "../utils/cosmosdb"; import { apiClient } from "../clients/admin"; import { UploadOrganizationLogo } from "./handler"; @@ -30,6 +30,7 @@ app.put( const azureFunctionHandler = createAzureFunctionHandler(app); // Binds the express app to an Azure Function handler +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions function httpStart(context: Context): void { setAppContext(app, context); azureFunctionHandler(context); diff --git a/UploadServiceLogo/__tests__/handler.test.ts b/UploadServiceLogo/__tests__/handler.test.ts index 19c29d97..a1bb636b 100644 --- a/UploadServiceLogo/__tests__/handler.test.ts +++ b/UploadServiceLogo/__tests__/handler.test.ts @@ -1,7 +1,7 @@ -/* tslint:disable:no-any */ -/* tslint:disable:no-duplicate-string */ -/* tslint:disable:no-big-function */ -/* tslint:disable: no-identical-functions */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable sonarjs/no-duplicate-string */ +/* eslint-disable sonar/sonar-max-lines-per-function */ +/* eslint-disable sonarjs/no-identical-functions */ import { IAzureApiAuthorization, @@ -26,7 +26,7 @@ import { Logo } from "../../generated/api-admin/Logo"; import { UploadServiceLogoHandler } from "../handler"; const mockContext = { - // tslint:disable: no-console + // eslint-disable no-console log: { error: console.error } diff --git a/UploadServiceLogo/handler.ts b/UploadServiceLogo/handler.ts index ad9aed76..bf5ee829 100644 --- a/UploadServiceLogo/handler.ts +++ b/UploadServiceLogo/handler.ts @@ -84,6 +84,7 @@ const uploadServiceLogoTask = ( () => apiClient.uploadServiceLogo({ body: logo, + // eslint-disable-next-line @typescript-eslint/naming-convention service_id: serviceId }), 201 @@ -92,11 +93,13 @@ const uploadServiceLogoTask = ( /** * Handles requests for upload a service logo by a service ID and a base64 logo' s string. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function UploadServiceLogoHandler( apiClient: APIClient ): IUploadServiceLogoHandler { - return (_, apiAuth, ___, ____, serviceId, logoPayload) => { - return serviceOwnerCheckTask(serviceId, apiAuth.subscriptionId) + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/naming-convention, max-params + return (_, apiAuth, ___, ____, serviceId, logoPayload) => + serviceOwnerCheckTask(serviceId, apiAuth.subscriptionId) .chain(() => uploadServiceLogoTask( getLogger(_, logPrefix, "UploadServiceLogo"), @@ -107,12 +110,12 @@ export function UploadServiceLogoHandler( ) .fold(identity, identity) .run(); - }; } /** * Wraps a UploadServiceLogo handler inside an Express request handler. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function UploadServiceLogo( serviceModel: ServiceModel, client: APIClient @@ -128,6 +131,7 @@ export function UploadServiceLogo( ); return wrapRequestHandler( middlewaresWrap( + // eslint-disable-next-line @typescript-eslint/naming-convention, max-params checkSourceIpForHandler(handler, (_, __, c, u, ___, ____) => ipTuple(c, u) ) diff --git a/UploadServiceLogo/index.ts b/UploadServiceLogo/index.ts index d4aeb8c1..6056dc06 100644 --- a/UploadServiceLogo/index.ts +++ b/UploadServiceLogo/index.ts @@ -1,6 +1,5 @@ import { Context } from "@azure/functions"; import * as express from "express"; -import { cosmosdbInstance } from "../utils/cosmosdb"; import { SERVICE_COLLECTION_NAME, @@ -10,6 +9,7 @@ import { secureExpressApp } from "@pagopa/io-functions-commons/dist/src/utils/ex import { setAppContext } from "@pagopa/io-functions-commons/dist/src/utils/middlewares/context_middleware"; import createAzureFunctionHandler from "io-functions-express/dist/src/createAzureFunctionsHandler"; +import { cosmosdbInstance } from "../utils/cosmosdb"; import { apiClient } from "../clients/admin"; import { UploadServiceLogo } from "./handler"; @@ -30,6 +30,7 @@ app.put( const azureFunctionHandler = createAzureFunctionHandler(app); // Binds the express app to an Azure Function handler +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions function httpStart(context: Context): void { setAppContext(app, context); azureFunctionHandler(context); diff --git a/WebhookNotificationActivity/__tests__/handler.test.ts b/WebhookNotificationActivity/__tests__/handler.test.ts index 5bae67ed..ff53fed7 100644 --- a/WebhookNotificationActivity/__tests__/handler.test.ts +++ b/WebhookNotificationActivity/__tests__/handler.test.ts @@ -1,6 +1,6 @@ -/* tslint:disable:no-any */ -/* tslint:disable:no-null-keyword */ -/* tslint:disable:no-big-function */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable no-null/no-null */ +/* eslint-disable sonar/sonar-max-lines-per-function */ jest.mock("applicationinsights"); jest.mock("azure-storage"); @@ -131,11 +131,11 @@ const aNotification: Notification = { }; const nullLog = { - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console error: console.error, - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console verbose: console.log, - // tslint:disable-next-line: no-console + // eslint-disable-next-line no-console warn: console.warn }; diff --git a/WebhookNotificationActivity/client.ts b/WebhookNotificationActivity/client.ts index 7683855e..75c702b3 100644 --- a/WebhookNotificationActivity/client.ts +++ b/WebhookNotificationActivity/client.ts @@ -14,7 +14,6 @@ export type WebhookNotifyT = r.IPostApiRequestType< { readonly notification: Notification; readonly webhookEndpoint: HttpsUrl }, "Content-Type", never, - // tslint:disable-next-line: max-union-size | r.IResponseType<200, SuccessResponse> | r.IResponseType<400, ProblemJson> | r.IResponseType<401, undefined> @@ -30,6 +29,7 @@ export const getNotifyClient = ( headers: ApiHeaderJson, method: "post", query: _ => ({}), + // eslint-disable-next-line @typescript-eslint/naming-convention response_decoder: notifyDefaultDecoder(), url: params => `${params.webhookEndpoint}` } as WebhookNotifyT, diff --git a/WebhookNotificationActivity/handler.ts b/WebhookNotificationActivity/handler.ts index 71a0125f..6527dda8 100644 --- a/WebhookNotificationActivity/handler.ts +++ b/WebhookNotificationActivity/handler.ts @@ -45,6 +45,7 @@ import { import { Notification } from "../generated/notifications/Notification"; import { WebhookNotifyT } from "./client"; +// eslint-disable-next-line @typescript-eslint/naming-convention export const WebhookNotificationActivityInput = t.interface({ notificationEvent: NotificationEvent }); @@ -53,13 +54,16 @@ export type WebhookNotificationActivityInput = t.TypeOf< typeof WebhookNotificationActivityInput >; +// eslint-disable-next-line @typescript-eslint/naming-convention export const WebhookNotificationActivityResult = t.taggedUnion("kind", [ t.interface({ kind: t.literal("SUCCESS"), + // eslint-disable-next-line @typescript-eslint/naming-convention, sort-keys result: t.keyof({ OK: null, EXPIRED: null }) }), t.interface({ kind: t.literal("FAILURE"), + // eslint-disable-next-line @typescript-eslint/naming-convention reason: t.keyof({ DECODE_ERROR: null, SEND_TO_WEBHOOK_FAILED: null }) }) ]); @@ -72,14 +76,18 @@ export type WebhookNotificationActivityResult = t.TypeOf< * Convert the internal representation of the message * to the one of the public NotificationAPI */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions function newMessageToPublic( newMessage: NewMessageWithoutContent, content?: MessageContent ): Notification["message"] { const message = { + // eslint-disable-next-line @typescript-eslint/naming-convention created_at: newMessage.createdAt, + // eslint-disable-next-line @typescript-eslint/naming-convention fiscal_code: newMessage.fiscalCode, id: newMessage.id, + // eslint-disable-next-line @typescript-eslint/naming-convention sender_service_id: newMessage.senderServiceId }; return content ? { ...message, content } : message; @@ -89,12 +97,16 @@ function newMessageToPublic( * Convert the internal representation of sender metadata * to the one of the public API */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions function senderMetadataToPublic( senderMetadata: CreatedMessageEventSenderMetadata ): SenderMetadata { return { + // eslint-disable-next-line @typescript-eslint/naming-convention department_name: senderMetadata.departmentName, + // eslint-disable-next-line @typescript-eslint/naming-convention organization_name: senderMetadata.organizationName, + // eslint-disable-next-line @typescript-eslint/naming-convention service_name: senderMetadata.serviceName }; } @@ -102,6 +114,7 @@ function senderMetadataToPublic( /** * Post data to the API proxy webhook endpoint. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions export function sendToWebhook( notifyApiCall: TypeofApiCall, webhookEndpoint: HttpsUrl, @@ -118,12 +131,13 @@ export function sendToWebhook( message: senderMetadata.requireSecureChannels ? newMessageToPublic(message) : newMessageToPublic(message, content), + // eslint-disable-next-line @typescript-eslint/naming-convention sender_metadata: senderMetadataToPublic(senderMetadata) }, webhookEndpoint }), err => - // tslint:disable-next-line: no-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any (err as any).name === "AbortError" ? (TransientError(`Timeout calling webhook: ${err}`) as RuntimeError) : (PermanentError( diff --git a/WebhookNotificationActivity/index.ts b/WebhookNotificationActivity/index.ts index 94436e2d..1e3ea8dd 100644 --- a/WebhookNotificationActivity/index.ts +++ b/WebhookNotificationActivity/index.ts @@ -3,7 +3,6 @@ import { NOTIFICATION_COLLECTION_NAME, NotificationModel } from "@pagopa/io-functions-commons/dist/src/models/notification"; -import { cosmosdbInstance } from "../utils/cosmosdb"; import { agent } from "italia-ts-commons"; @@ -13,6 +12,7 @@ import { toFetch } from "italia-ts-commons/lib/fetch"; import { Millisecond } from "italia-ts-commons/lib/units"; +import { cosmosdbInstance } from "../utils/cosmosdb"; import { getNotifyClient } from "./client"; import { getWebhookNotificationActivityHandler } from "./handler"; diff --git a/clients/admin.ts b/clients/admin.ts index f0cb3d64..60756164 100644 --- a/clients/admin.ts +++ b/clients/admin.ts @@ -23,12 +23,13 @@ const abortableFetch = AbortableFetch(agent.getHttpFetch(process.env)); const fetchWithTimeout = toFetch( setFetchTimeout(DEFAULT_REQUEST_TIMEOUT_MS as Millisecond, abortableFetch) ); -// tslint:disable-next-line: no-any +// eslint-disable-next-line @typescript-eslint/no-explicit-any const fetchApi: typeof fetchWithTimeout = (nodeFetch as any) as typeof fetchWithTimeout; export const apiClient = createClient<"SubscriptionKey">({ baseUrl: adminBaseUrl, fetchApi, + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/naming-convention withDefaults: op => params => op({ SubscriptionKey: adminToken, ...params }) }); diff --git a/package.json b/package.json index 00e55660..782003f2 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "test": "jest", "pretest:coverage": "npm-run-all generate:*", "test:coverage": "jest --coverage", - "lint": "tslint -p .", + "lint": "eslint . -c .eslintrc.js --ext .ts,.tsx", "generate": "npm-run-all generate:*", "generate:definitions": "rimraf ./generated/definitions && shx mkdir -p ./generated/definitions && gen-api-models --api-spec ./openapi/index.yaml --no-strict --out-dir ./generated/definitions", "generate:api-notifications": "rimraf ./generated/notifications && shx mkdir -p ./generated/notifications && gen-api-models --api-spec https://raw.githubusercontent.com/pagopa/io-backend/master/api_notifications.yaml --out-dir ./generated/notifications --response-decoders --request-types", @@ -28,6 +28,7 @@ "description": "", "devDependencies": { "@azure/functions": "^1.2.0", + "@pagopa/eslint-config": "^1.1.1", "@pagopa/openapi-codegen-ts": "^8.0.0", "@types/cors": "^2.8.4", "@types/documentdb": "^1.10.5", @@ -39,15 +40,14 @@ "danger": "^4.0.2", "danger-plugin-digitalcitizenship": "^0.3.1", "dependency-check": "^4.1.0", + "eslint-plugin-prettier": "^3.3.1", "fast-check": "^1.16.0", - "italia-tslint-rules": "^1.1.3", "jest": "^24.8.0", "modclean": "^3.0.0-beta.1", "npm-run-all": "^4.1.5", "prettier": "^1.18.2", "shx": "^0.3.2", "ts-jest": "^24.0.2", - "tslint": "^5.17.0", "typescript": "^3.3.3" }, "dependencies": { diff --git a/tslint.json b/tslint.json deleted file mode 100644 index 3cf75a43..00000000 --- a/tslint.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "defaultSeverity": "error", - "extends": [ - "italia-tslint-rules/strong" - ], - "jsRules": {}, - "rules": { - "no-submodule-imports": false - }, - "rulesDirectory": [], - "linterOptions": { - "exclude": ["generated/**/*"] - } -} \ No newline at end of file diff --git a/utils/__tests__/arbitraries.ts b/utils/__tests__/arbitraries.ts index 63dad142..09b09fd6 100644 --- a/utils/__tests__/arbitraries.ts +++ b/utils/__tests__/arbitraries.ts @@ -97,7 +97,7 @@ export const newMessageWithDefaultEmailArb = fc export const messageTimeToLiveArb = fc .integer(3600, 604800) - // tslint:disable-next-line:no-useless-cast + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion .map(_ => _ as number & WithinRangeInteger<3600, 604800>); export const amountArb = fc @@ -111,7 +111,7 @@ export const amountArb = fc export const maxAmountArb = fc .integer(0, 9999999999) - // tslint:disable-next-line:no-useless-cast + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion .map(_ => _ as number & WithinRangeInteger<0, 9999999999>); export const noticeNumberArb = fc diff --git a/utils/appinsights.ts b/utils/appinsights.ts index 97fa205a..62dd188c 100644 --- a/utils/appinsights.ts +++ b/utils/appinsights.ts @@ -8,6 +8,7 @@ import { NonEmptyString } from "italia-ts-commons/lib/strings"; const DEFAULT_SAMPLING_PERCENTAGE = 5; // Avoid to initialize Application Insights more than once +// eslint-disable-next-line @typescript-eslint/explicit-function-return-type export const initTelemetryClient = ( intrumentationKey: NonEmptyString, env = process.env diff --git a/utils/comma-separated-list.ts b/utils/comma-separated-list.ts index 4d7aa8dc..36b264ce 100644 --- a/utils/comma-separated-list.ts +++ b/utils/comma-separated-list.ts @@ -2,16 +2,18 @@ import * as t from "io-ts"; /** * Create a decoder that parses a list of comma-separated elements into an array of typed items, using the provided decoder + * * @param decoder a io-ts decoder * * @returns either a decode error or the array of decoded items */ +// eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/explicit-function-return-type export const CommaSeparatedListOf = (decoder: t.Mixed) => new t.Type>, string, unknown>( `CommaSeparatedListOf<${decoder.name}>`, (value: unknown): value is ReadonlyArray> => Array.isArray(value) && value.every(e => decoder.is(e)), - (input /*, context */) => + (input /* , context */) => t.readonlyArray(decoder).decode( typeof input === "string" ? input diff --git a/utils/config.ts b/utils/config.ts index 38830164..e0f7e15b 100644 --- a/utils/config.ts +++ b/utils/config.ts @@ -14,29 +14,44 @@ import { CommaSeparatedListOf } from "./comma-separated-list"; // global app configuration export type IConfig = t.TypeOf; +// eslint-disable-next-line @typescript-eslint/naming-convention export const IConfig = t.intersection([ t.interface({ + // eslint-disable-next-line @typescript-eslint/naming-convention APPINSIGHTS_INSTRUMENTATIONKEY: NonEmptyString, + // eslint-disable-next-line @typescript-eslint/naming-convention COSMOSDB_KEY: NonEmptyString, + // eslint-disable-next-line @typescript-eslint/naming-convention COSMOSDB_NAME: NonEmptyString, + // eslint-disable-next-line @typescript-eslint/naming-convention COSMOSDB_URI: NonEmptyString, + // eslint-disable-next-line @typescript-eslint/naming-convention DEFAULT_SUBSCRIPTION_PRODUCT_NAME: NonEmptyString, + // eslint-disable-next-line @typescript-eslint/naming-convention EMAIL_NOTIFICATION_SERVICE_BLACKLIST: CommaSeparatedListOf(ServiceId), + // eslint-disable-next-line @typescript-eslint/naming-convention WEBHOOK_NOTIFICATION_SERVICE_BLACKLIST: CommaSeparatedListOf(ServiceId), + // eslint-disable-next-line sort-keys, @typescript-eslint/naming-convention IO_FUNCTIONS_ADMIN_API_TOKEN: NonEmptyString, + // eslint-disable-next-line @typescript-eslint/naming-convention IO_FUNCTIONS_ADMIN_BASE_URL: NonEmptyString, + // eslint-disable-next-line @typescript-eslint/naming-convention MESSAGE_CONTAINER_NAME: NonEmptyString, + // eslint-disable-next-line @typescript-eslint/naming-convention QueueStorageConnection: NonEmptyString, + // eslint-disable-next-line @typescript-eslint/naming-convention SANDBOX_FISCAL_CODE: NonEmptyString, + // eslint-disable-next-line @typescript-eslint/naming-convention SUBSCRIPTIONS_FEED_TABLE: NonEmptyString, + // eslint-disable-next-line @typescript-eslint/naming-convention WEBHOOK_CHANNEL_URL: NonEmptyString, isProduction: t.boolean @@ -56,6 +71,7 @@ const errorOrConfig: t.Validation = IConfig.decode({ * * @returns either the configuration values or a list of validation errors */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions export function getConfig(): t.Validation { return errorOrConfig; } @@ -67,6 +83,7 @@ export function getConfig(): t.Validation { * @returns the configuration values * @throws validation errors found while parsing the application configuration */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions export function getConfigOrThrow(): IConfig { return errorOrConfig.getOrElseL(errors => { throw new Error(`Invalid configuration: ${readableReport(errors)}`); diff --git a/utils/healthcheck.ts b/utils/healthcheck.ts index 5914d288..e111a838 100644 --- a/utils/healthcheck.ts +++ b/utils/healthcheck.ts @@ -20,7 +20,10 @@ import fetch from "node-fetch"; import { getConfig, IConfig } from "./config"; type ProblemSource = "AzureCosmosDB" | "AzureStorage" | "Config" | "Url"; -export type HealthProblem = string & { __source: S }; +export type HealthProblem = string & { + // eslint-disable-next-line @typescript-eslint/naming-convention + readonly __source: S; +}; export type HealthCheck< S extends ProblemSource = ProblemSource, T = true @@ -99,6 +102,7 @@ export const checkAzureStorageHealth = ( azurestorageCommon.models.ServicePropertiesResult.ServiceProperties >((resolve, reject) => createService(connStr).getServiceProperties((err, result) => { + // eslint-disable-next-line @typescript-eslint/no-unused-expressions err ? reject(err.message.replace(/\n/gim, " ")) // avoid newlines : resolve(result); @@ -135,7 +139,7 @@ export const checkApplicationHealth = (): HealthCheck => // TODO: once we upgrade to fp-ts >= 1.19 we can use Validation to collect all errors, not just the first to happen sequenceT(taskEither)< ReadonlyArray>, - // tslint:disable readonly-array beacuse the following is actually mutable + // eslint-disable-next-line functional/prefer-readonly-type Array>, true>> >( checkAzureCosmosDbHealth(config.COSMOSDB_URI, config.COSMOSDB_KEY), diff --git a/utils/logging.ts b/utils/logging.ts index c3651c89..34494119 100644 --- a/utils/logging.ts +++ b/utils/logging.ts @@ -2,21 +2,22 @@ import { Context } from "@azure/functions"; import { Errors } from "io-ts"; import { errorsToReadableMessages } from "italia-ts-commons/lib/reporters"; +// eslint-disable-next-line @typescript-eslint/explicit-function-return-type export const getLogger = ( context: Context, logPrefix: string, name: string -) => { - return { - logErrors: (errs: Errors) => - context.log.error( - `${logPrefix}|${name}|ERROR=${errorsToReadableMessages(errs)}` - ), - logUnknown: (errs: unknown) => - context.log.error( - `${logPrefix}|${name}|UNKNOWN_ERROR=${JSON.stringify(errs)}` - ) - }; -}; +) => ({ + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type + logErrors: (errs: Errors) => + context.log.error( + `${logPrefix}|${name}|ERROR=${errorsToReadableMessages(errs)}` + ), + // eslint-disable-next-line @typescript-eslint/explicit-function-return-type + logUnknown: (errs: unknown) => + context.log.error( + `${logPrefix}|${name}|UNKNOWN_ERROR=${JSON.stringify(errs)}` + ) +}); export type ILogger = ReturnType; diff --git a/utils/profile.ts b/utils/profile.ts index 9e794e67..3f44c1df 100644 --- a/utils/profile.ts +++ b/utils/profile.ts @@ -10,6 +10,7 @@ import { GetLimitedProfileByPOSTPayload } from "../generated/definitions/GetLimi * Whether the sender service is allowed to send * messages to the user identified by this profile */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions export function isSenderAllowed( blockedInboxOrChannels: | RetrievedProfile["blockedInboxOrChannels"] @@ -19,24 +20,24 @@ export function isSenderAllowed( return ( blockedInboxOrChannels === undefined || blockedInboxOrChannels[serviceId] === undefined || - !( - blockedInboxOrChannels[serviceId].indexOf( - BlockedInboxOrChannelEnum.INBOX - ) >= 0 - ) + blockedInboxOrChannels[serviceId].indexOf(BlockedInboxOrChannelEnum.INBOX) < + 0 ); } /** * Converts the RetrievedProfile model to LimitedProfile type. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions export function retrievedProfileToLimitedProfile( retrivedProfile: RetrievedProfile, senderAllowed: boolean ): LimitedProfile { return { + // eslint-disable-next-line @typescript-eslint/naming-convention preferred_languages: retrivedProfile.preferredLanguages, // computed property + // eslint-disable-next-line @typescript-eslint/naming-convention sender_allowed: senderAllowed }; } @@ -44,6 +45,7 @@ export function retrievedProfileToLimitedProfile( /** * A middleware that extracts a GetLimitedProfileByPOSTPayload from a request. */ +// eslint-disable-next-line @typescript-eslint/naming-convention export const GetLimitedProfileByPOSTPayloadMiddleware: IRequestMiddleware< "IResponseErrorValidation", GetLimitedProfileByPOSTPayload diff --git a/utils/responses.ts b/utils/responses.ts index 035e8c4d..83dcfd42 100644 --- a/utils/responses.ts +++ b/utils/responses.ts @@ -15,9 +15,11 @@ import { ResponseErrorTooManyRequests } from "italia-ts-commons/lib/responses"; +// eslint-disable-next-line @typescript-eslint/explicit-function-return-type export const unhandledResponseStatus = (status: number) => ResponseErrorInternal(`unhandled API response status [${status}]`); +// eslint-disable-next-line @typescript-eslint/explicit-function-return-type export const toDefaultResponseErrorInternal = (errs: unknown | Errors) => ResponseErrorInternal(toError(errs).message); @@ -31,6 +33,7 @@ export interface IResponseErrorUnauthorized /** * Returns an unauthorized error response with status code 401. */ +// eslint-disable-next-line prefer-arrow/prefer-arrow-functions, @typescript-eslint/naming-convention export function ResponseErrorUnauthorized( title: string, detail: string @@ -51,6 +54,7 @@ export type ErrorResponses = | IResponseErrorInternal | IResponseErrorTooManyRequests; +// eslint-disable-next-line @typescript-eslint/explicit-function-return-type export const toErrorServerResponse = ( response: IResponseType ) => { diff --git a/utils/subscription.ts b/utils/subscription.ts index 0150f740..2e07193f 100644 --- a/utils/subscription.ts +++ b/utils/subscription.ts @@ -3,6 +3,7 @@ import { ResponseErrorForbiddenNotAuthorized } from "italia-ts-commons/lib/respo import { NonEmptyString } from "italia-ts-commons/lib/strings"; import { ErrorResponses } from "./responses"; +// eslint-disable-next-line @typescript-eslint/explicit-function-return-type export const serviceOwnerCheckTask = ( serviceId: NonEmptyString, ownerSubscriptionId: NonEmptyString diff --git a/yarn.lock b/yarn.lock index fa3e3d71..3080e9b0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,6 +23,13 @@ resolved "https://registry.yarnpkg.com/@azure/functions/-/functions-1.2.0.tgz#e668c3811c6effee93e4553e69de017e2f48acd3" integrity sha512-qkaQqTnr56xUnYNkKBM/2wsnf6imAJ3NF6Nbpk691Y6JYliA1YdZngsZsrpHS9tQ9/71MqARl8m50+EmEfLG3g== +"@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" @@ -142,6 +149,11 @@ dependencies: "@babel/types" "^7.8.3" +"@babel/helper-validator-identifier@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" + integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== + "@babel/helper-validator-identifier@^7.9.0", "@babel/helper-validator-identifier@^7.9.5": version "7.9.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" @@ -156,6 +168,15 @@ "@babel/traverse" "^7.9.0" "@babel/types" "^7.9.0" +"@babel/highlight@^7.10.4": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" + integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/highlight@^7.8.3": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" @@ -235,6 +256,21 @@ enabled "2.0.x" kuler "^2.0.0" +"@eslint/eslintrc@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.0.tgz#99cc0a0584d72f1df38b900fb062ba995f395547" + integrity sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + "@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" @@ -419,6 +455,28 @@ universal-user-agent "^2.0.0" url-template "^2.0.8" +"@pagopa/eslint-config@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@pagopa/eslint-config/-/eslint-config-1.1.1.tgz#09fdfa59708f44996c042451d4d16a624b276bcb" + integrity sha512-b4MBnPWFj1I/O3wpQfR475BoLcB7Nmze67eqLl+J1t7ajFKPi4FF8k7+Xpfct6Z1ziVSTYVjQgMuoBJRHADcrA== + 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 "^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-functions-commons@^19.2.0": version "19.2.0" resolved "https://registry.yarnpkg.com/@pagopa/io-functions-commons/-/io-functions-commons-19.2.0.tgz#5614523e861fc8480e2f9b6b51a6faa5e90c00e7" @@ -630,6 +688,16 @@ dependencies: jest-diff "^24.3.0" +"@types/json-schema@^7.0.3": + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" + integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + "@types/lodash@^4.14.119": version "4.14.150" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.150.tgz#649fe44684c3f1fcb6164d943c5a61977e8cf0bd" @@ -722,6 +790,101 @@ dependencies: "@types/yargs-parser" "*" +"@typescript-eslint/eslint-plugin-tslint@^4.10.0": + version "4.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-4.21.0.tgz#b9a927db2d1b872c40e23f2f7ebff4f1d29b4f8a" + integrity sha512-s8TgCHHcPsQ/b+k5q26i/1Ed2G7FLD5avLEgUhcHgs35F4HUrQh2CAgurzPn0PSfWGtBrJQa5B+p+RQ19T27qA== + dependencies: + "@typescript-eslint/experimental-utils" "4.21.0" + lodash "^4.17.15" + +"@typescript-eslint/eslint-plugin@^4.10.0": + version "4.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.21.0.tgz#3fce2bfa76d95c00ac4f33dff369cb593aab8878" + integrity sha512-FPUyCPKZbVGexmbCFI3EQHzCZdy2/5f+jv6k2EDljGdXSRc0cKvbndd2nHZkSLqCNOPk0jB6lGzwIkglXcYVsQ== + dependencies: + "@typescript-eslint/experimental-utils" "4.21.0" + "@typescript-eslint/scope-manager" "4.21.0" + debug "^4.1.1" + functional-red-black-tree "^1.0.1" + lodash "^4.17.15" + regexpp "^3.0.0" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@4.21.0": + version "4.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.21.0.tgz#0b0bb7c15d379140a660c003bdbafa71ae9134b6" + integrity sha512-cEbgosW/tUFvKmkg3cU7LBoZhvUs+ZPVM9alb25XvR0dal4qHL3SiUqHNrzoWSxaXA9gsifrYrS1xdDV6w/gIA== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/scope-manager" "4.21.0" + "@typescript-eslint/types" "4.21.0" + "@typescript-eslint/typescript-estree" "4.21.0" + eslint-scope "^5.0.0" + eslint-utils "^2.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: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "1.13.0" + eslint-scope "^4.0.0" + +"@typescript-eslint/parser@^4.10.0": + version "4.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.21.0.tgz#a227fc2af4001668c3e3f7415d4feee5093894c1" + integrity sha512-eyNf7QmE5O/l1smaQgN0Lj2M/1jOuNg2NrBm1dqqQN0sVngTLyw8tdCbih96ixlhbF1oINoN8fDCyEH9SjLeIA== + dependencies: + "@typescript-eslint/scope-manager" "4.21.0" + "@typescript-eslint/types" "4.21.0" + "@typescript-eslint/typescript-estree" "4.21.0" + debug "^4.1.1" + +"@typescript-eslint/scope-manager@4.21.0": + version "4.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.21.0.tgz#c81b661c4b8af1ec0c010d847a8f9ab76ab95b4d" + integrity sha512-kfOjF0w1Ix7+a5T1knOw00f7uAP9Gx44+OEsNQi0PvvTPLYeXJlsCJ4tYnDj5PQEYfpcgOH5yBlw7K+UEI9Agw== + dependencies: + "@typescript-eslint/types" "4.21.0" + "@typescript-eslint/visitor-keys" "4.21.0" + +"@typescript-eslint/types@4.21.0": + version "4.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.21.0.tgz#abdc3463bda5d31156984fa5bc316789c960edef" + integrity sha512-+OQaupjGVVc8iXbt6M1oZMwyKQNehAfLYJJ3SdvnofK2qcjfor9pEM62rVjBknhowTkh+2HF+/KdRAc/wGBN2w== + +"@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: + lodash.unescape "4.0.1" + semver "5.5.0" + +"@typescript-eslint/typescript-estree@4.21.0": + version "4.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.21.0.tgz#3817bd91857beeaeff90f69f1f112ea58d350b0a" + integrity sha512-ZD3M7yLaVGVYLw4nkkoGKumb7Rog7QID9YOWobFDMQKNl+vPxqVIW/uDk+MDeGc+OHcoG2nJ2HphwiPNajKw3w== + dependencies: + "@typescript-eslint/types" "4.21.0" + "@typescript-eslint/visitor-keys" "4.21.0" + debug "^4.1.1" + globby "^11.0.1" + is-glob "^4.0.1" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/visitor-keys@4.21.0": + version "4.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.21.0.tgz#990a9acdc124331f5863c2cf21c88ba65233cd8d" + integrity sha512-dH22dROWGi5Z6p+Igc8bLVLmwy7vEe8r+8c+raPQU0LxgogPUrRAtRGtvBWmlr9waTu3n+QLt/qrS/hWzk1x5w== + dependencies: + "@typescript-eslint/types" "4.21.0" + eslint-visitor-keys "^2.0.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" @@ -755,6 +918,18 @@ 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 sha1-Dt+YeKWGa8piX1KVWh7Z59jFEX4= + dependencies: + acorn "^2.0.1" + +acorn-jsx@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + acorn-node@^1.6.1: version "1.8.2" resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" @@ -774,6 +949,11 @@ acorn-walk@^7.0.0: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== +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 sha1-q259nYhqrKiwhbwzEreaGYQz8Oc= + acorn@^5.5.3: version "5.7.4" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" @@ -784,7 +964,7 @@ acorn@^6.0.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== -acorn@^7.0.0: +acorn@^7.0.0, 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== @@ -805,6 +985,16 @@ agentkeepalive@^4.1.2: depd "^1.1.2" humanize-ms "^1.2.1" +ajv@^6.10.0, 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== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ajv@^6.5.5: version "6.12.1" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.1.tgz#cce4d7dfcd62d3c57b1cd772e688eff5f5cd3839" @@ -816,6 +1006,21 @@ ajv@^6.5.5: opencollective-postinstall "^2.0.2" uri-js "^4.2.2" +ajv@^8.0.1: + version "8.0.5" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.0.5.tgz#f07d6fdeffcdbb80485570ce3f1bc845fcc812b9" + integrity sha512-RkiLa/AeJx7+9OvniQ/qeWu0w74A8DiPPBclQ6ji3ZQkv5KamO+QGpqmi7O4JIw3rHGUXZ6CoP9tsAkn3gyazg== + 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-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + ansi-escapes@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -836,6 +1041,11 @@ ansi-regex@^4.0.0, ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + 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" @@ -843,6 +1053,13 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.0.0, 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" @@ -913,6 +1130,17 @@ 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.1, array-includes@^3.1.2, array-includes@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" + integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + get-intrinsic "^1.1.1" + is-string "^1.0.5" + array-map@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" @@ -933,6 +1161,25 @@ array-unique@^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.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" + integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +array.prototype.flatmap@^1.2.1, array.prototype.flatmap@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" + integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + function-bind "^1.1.1" + asap@^2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -960,6 +1207,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" @@ -1234,11 +1486,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" @@ -1259,6 +1506,14 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -1310,6 +1565,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.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + character-entities-html4@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125" @@ -1426,12 +1689,19 @@ color-convert@^1.9.0, color-convert@^1.9.1: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@^1.0.0: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== @@ -1477,16 +1747,16 @@ comma-separated-tokens@^1.0.1: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== -commander@^2.12.1, commander@^2.7.1, commander@^2.9.0, commander@~2.20.3: - 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== - commander@^2.18.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== +commander@^2.7.1, commander@^2.9.0, commander@~2.20.3: + 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== + commander@^5.0.0, commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" @@ -1499,6 +1769,11 @@ commander@~2.9.0: dependencies: graceful-readlink ">= 1.0.0" +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.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -1509,6 +1784,16 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= +console-assert@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/console-assert/-/console-assert-1.0.0.tgz#70167028ef08ec1667a0c687205a8360eb117367" + integrity sha1-cBZwKO8I7BZnoMaHIFqDYOsRc2c= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + content-disposition@0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" @@ -1574,6 +1859,13 @@ cors@^2.8.4: object-assign "^4" vary "^1" +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 sha1-2VQ3LYbVeS/NZ+nyt5GxqxYkEbs= + 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" @@ -1594,6 +1886,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" + cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": version "0.3.8" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" @@ -1688,7 +1989,7 @@ date-fns@^1.28.5: 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.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9, 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== @@ -1709,7 +2010,7 @@ debug@^3.1.0: dependencies: ms "^2.1.1" -debug@^4.0.0: +debug@^4.0.0, debug@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== @@ -1733,11 +2034,16 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -deep-is@~0.1.3: +deep-is@^0.1.3, 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@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-3.3.0.tgz#d3c47fd6f3a93d517b14426b0628a17b0125f5f7" + integrity sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA== + deepmerge@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" @@ -1869,11 +2175,6 @@ 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" @@ -1881,13 +2182,27 @@ dir-glob@^3.0.1: 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@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= dependencies: - esutils "^1.1.6" - isarray "0.0.1" + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" documentdb@^1.12.2: version "1.15.3" @@ -1993,6 +2308,11 @@ emoji-regex@^7.0.1: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + empty-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/empty-dir/-/empty-dir-1.0.0.tgz#be3ea41ca6798dc27bb9407f035888150e4c2995" @@ -2022,12 +2342,19 @@ 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" + entities@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== -error-ex@^1.3.1: +error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== @@ -2051,6 +2378,28 @@ es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: string.prototype.trimleft "^2.1.1" string.prototype.trimright "^2.1.1" +es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: + version "1.18.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" + integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.2" + is-callable "^1.2.3" + is-negative-zero "^2.0.1" + is-regex "^1.1.2" + is-string "^1.0.5" + object-inspect "^1.9.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.0" + es-abstract@^1.4.3: version "1.13.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" @@ -2104,6 +2453,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== + escodegen@^1.9.1: version "1.14.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" @@ -2116,28 +2470,259 @@ 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@^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.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.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 sha1-w8Gu0whsOf2Dwbek+j35iEtKu0g= + 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 sha1-N20qEIcQ6YGYC9w4deO5kg2gSJw= + 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@^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/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.22.1: + version "2.22.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" + integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== + dependencies: + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.4" + eslint-module-utils "^2.6.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.1" + read-pkg-up "^2.0.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + +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-no-credentials@^2.0.9: + version "2.1.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-no-credentials/-/eslint-plugin-no-credentials-2.1.2.tgz#2314738cf4dc6cb8f3e18f2b140c1078c4314179" + integrity sha512-+vBko65fu/WCnpUWtK6sAZyseaveLDi0pivVVkBXDe9S6tM1kCJcd/PbSqR4DPrpN8Pv06wg2YiRq558I0f8YA== + 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@^3.3.0, eslint-plugin-prettier@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz#7079cfa2497078905011e6f82e8dd8453d1371b7" + integrity sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ== dependencies: - fast-diff "^1.1.1" - jest-docblock "^21.0.0" + prettier-linter-helpers "^1.0.0" + +eslint-plugin-react@^7.21.5: + version "7.23.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.23.2.tgz#2d2291b0f95c03728b55869f01102290e792d494" + integrity sha512-AfjgFQB+nYszudkxRkTFu0UR1zEQig0ArVMPloKhxwlwkzaw/fBiH0QWcBBhZONlXqQC51+nfqFrkn4EzHcGBw== + dependencies: + array-includes "^3.1.3" + array.prototype.flatmap "^1.2.4" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.0.4" + object.entries "^1.1.3" + object.fromentries "^2.0.4" + object.values "^1.1.3" + prop-types "^15.7.2" + resolve "^2.0.0-next.3" + string.prototype.matchall "^4.0.4" + +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.0.0, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.0.0, 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: + eslint-visitor-keys "^1.1.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.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + +eslint@^7.15.0: + version "7.23.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.23.0.tgz#8d029d252f6e8cf45894b4bee08f5493f8e94325" + integrity sha512-kqvNVbdkjzpFy0XOszNwjkKzZ+6TcwCQ/h+ozlcIWwaimBBuhlQ4nN6kbiM2L+OjDcznkTJxzYfRFH92sx4a0Q== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + 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" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.21" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.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.4" + 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 sha1-yhOAvYHy+ulLJjiufMRJtx+R6qM= + dependencies: + acorn "^2.6.4" + acorn-jsx "^2.0.1" + +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 "^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" 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.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: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== esutils@^2.0.2: version "2.0.3" @@ -2315,12 +2900,12 @@ 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-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.0.3: +fast-glob@^3.0.3, fast-glob@^3.1.1: version "3.2.5" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== @@ -2337,7 +2922,7 @@ fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.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= @@ -2378,6 +2963,13 @@ fecha@^4.2.0: resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.0.tgz#3ffb6395453e3f3efff850404f0a59b6747f5f41" integrity sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg== +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" @@ -2413,7 +3005,7 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-up@^2.1.0: +find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= @@ -2427,6 +3019,19 @@ find-up@^3.0.0: dependencies: locate-path "^3.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.1.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== + fn.name@1.x.x: version "1.1.0" resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" @@ -2535,6 +3140,11 @@ function-bind@^1.0.2, function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +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 sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + 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" @@ -2550,6 +3160,15 @@ 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.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== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-stdin@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" @@ -2588,7 +3207,7 @@ git-config-path@^1.0.1: fs-exists-sync "^0.1.0" homedir-polyfill "^1.0.0" -glob-parent@^5.1.0: +glob-parent@^5.0.0, glob-parent@^5.1.0: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -2612,6 +3231,20 @@ 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@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globals@^13.6.0: + version "13.8.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.8.0.tgz#3e20f504810ce87a8d72e55aecf8435b50f4c1b3" + integrity sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q== + dependencies: + type-fest "^0.20.2" + globby@^10.0.1: version "10.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" @@ -2626,6 +3259,18 @@ globby@^10.0.1: merge2 "^1.2.3" slash "^3.0.0" +globby@^11.0.1: + version "11.0.3" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" + integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" @@ -2670,6 +3315,11 @@ har-validator@~5.1.0, har-validator@~5.1.3: ajv "^6.5.5" har-schema "^2.0.0" +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" @@ -2680,11 +3330,21 @@ 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-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" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== +has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -2923,15 +3583,23 @@ iconv-lite@0.4.24, iconv-lite@~0.4.13: dependencies: safer-buffer ">= 2.1.2 < 3" -ignore@^5.1.1: +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.1, ignore@^5.1.4: version "5.1.8" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== -immutable@^3.8.2: - version "3.8.2" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" - integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= +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-local@^2.0.0: version "2.0.0" @@ -2974,6 +3642,15 @@ int64-buffer@^0.1.9: resolved "https://registry.yarnpkg.com/int64-buffer/-/int64-buffer-0.1.10.tgz#277b228a87d95ad777d07c13832022406a473423" integrity sha1-J3siiofZWtd30HwTgyAiQGpHNCM= +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" @@ -3058,6 +3735,18 @@ is-arrayish@^0.3.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== +is-bigint@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" + integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== + +is-boolean-object@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" + integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== + dependencies: + call-bind "^1.0.0" + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -3073,6 +3762,11 @@ is-callable@^1.1.4, is-callable@^1.1.5: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== +is-callable@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== + is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -3158,12 +3852,17 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-generator-fn@^2.0.0: version "2.1.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.1: +is-glob@^4.0.0, is-glob@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -3175,6 +3874,16 @@ is-hexadecimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number-object@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" + integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -3206,6 +3915,14 @@ is-regex@^1.0.4, is-regex@^1.0.5: dependencies: has "^1.0.3" +is-regex@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" + integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== + dependencies: + call-bind "^1.0.2" + has-symbols "^1.0.1" + is-relative@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" @@ -3223,7 +3940,12 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-symbol@^1.0.2: +is-string@^1.0.5: + version "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-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" integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== @@ -3267,12 +3989,7 @@ is_js@^0.9.0: resolved "https://registry.yarnpkg.com/is_js/-/is_js-0.9.0.tgz#0ab94540502ba7afa24c856aa985561669e9c52d" integrity sha1-CrlFQFArp6+iTIVqqYVWFmnpxS0= -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: +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -3358,19 +4075,6 @@ italia-ts-commons@^8.6.0: node-fetch "^2.6.0" validator "^10.1.0" -italia-tslint-rules@^1.1.3: - 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" @@ -3432,11 +4136,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" @@ -3755,6 +4454,11 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= +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" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" @@ -3832,6 +4536,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" @@ -3842,6 +4551,11 @@ json-set-map@^1.0.2: resolved "https://registry.yarnpkg.com/json-set-map/-/json-set-map-1.0.2.tgz#608aacb5464d9759158d06523a6e30be5650adc4" integrity sha1-YIqstUZNl1kVjQZSOm4wvlZQrcQ= +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 sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + 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" @@ -3854,6 +4568,13 @@ json5@2.x, json5@^2.1.0, json5@^2.1.2: dependencies: minimist "^1.2.5" +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" @@ -3912,6 +4633,14 @@ jsprim@^1.2.2, jsprim@^1.4.0: json-schema "0.2.3" verror "1.10.0" +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" + integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== + dependencies: + array-includes "^3.1.2" + 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" @@ -3992,6 +4721,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" @@ -4000,10 +4737,15 @@ 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@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" load-json-file@^4.0.0: version "4.0.0" @@ -4031,6 +4773,11 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + lodash.find@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.find/-/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1" @@ -4041,7 +4788,7 @@ lodash.flatten@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= -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= @@ -4106,6 +4853,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 sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= + +lodash.unescape@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" + integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -4116,6 +4873,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 sha1-7GZi5IlkCO1KtsVCo5kLcswIACA= + +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== + lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.4: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" @@ -4139,7 +4906,7 @@ logform@^2.2.0: 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== @@ -4154,6 +4921,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" + lunr@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.8.tgz#a8b89c31f30b5a044b97d2d28e2da191b6ba2072" @@ -4617,7 +5391,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.1.0: +object-assign@^4, object-assign@^4.1.0, 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= @@ -4636,6 +5410,11 @@ object-inspect@^1.7.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== +object-inspect@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== + object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -4658,6 +5437,36 @@ object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.entries@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" + integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has "^1.0.3" + +object.fromentries@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8" + integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + has "^1.0.3" + object.getownpropertydescriptors@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" @@ -4673,6 +5482,16 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" +object.values@^1.1.1, object.values@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.3.tgz#eaa8b1e17589f02f698db093f7c62ee1699742ee" + integrity sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + has "^1.0.3" + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -4750,6 +5569,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" @@ -4853,6 +5684,13 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +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" @@ -4884,6 +5722,13 @@ parse-github-url@^1.0.2: resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395" integrity sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw== +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -4934,6 +5779,11 @@ 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" @@ -4944,6 +5794,13 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -4971,6 +5828,11 @@ pidtree@^0.3.0: resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.0.tgz#f6fada10fccc9f99bf50e90d0b23d72c9ebc2e6b" integrity sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg== +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" @@ -5001,6 +5863,13 @@ pivotaljs@^1.0.3: request latest underscore latest +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -5025,16 +5894,33 @@ 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" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +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, prettier@^1.18.2: 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.1.2: + version "2.2.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" + integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== + pretty-format@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" @@ -5073,6 +5959,15 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.4" +prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + property-information@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/property-information/-/property-information-3.2.0.tgz#fd1483c8fbac61808f5fe359e7693a1f48a58331" @@ -5134,6 +6029,11 @@ queue-microtask@^1.2.2: 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" @@ -5149,7 +6049,7 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -react-is@^16.8.4: +react-is@^16.8.1, react-is@^16.8.4: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -5164,6 +6064,14 @@ read-package-json@^2.0.10: normalize-package-data "^2.0.0" npm-normalize-package-bin "^1.0.0" +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + read-pkg-up@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" @@ -5172,6 +6080,15 @@ read-pkg-up@^4.0.0: find-up "^3.0.0" read-pkg "^3.0.0" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -5252,6 +6169,24 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexp.prototype.flags@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +regexpp@^3.0.0, regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +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== + rehype-stringify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/rehype-stringify/-/rehype-stringify-3.0.0.tgz#9fef0868213c2dce2f780b76f3d0488c85e819eb" @@ -5315,6 +6250,11 @@ replace-ext@1.0.0: resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= +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-ip@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/request-ip/-/request-ip-2.1.3.tgz#99ab2bafdeaf2002626e28083cb10597511d9e14" @@ -5422,6 +6362,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" @@ -5439,7 +6384,7 @@ resolve@1.x, resolve@^1.1.6, resolve@^1.10.0, resolve@^1.3.2: dependencies: path-parse "^1.0.6" -resolve@^1.1.7: +resolve@^1.1.7, resolve@^1.13.1, resolve@^1.17.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -5447,6 +6392,14 @@ resolve@^1.1.7: is-core-module "^2.2.0" path-parse "^1.0.6" +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" @@ -5477,6 +6430,13 @@ 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" + rimraf@~2.5.4: version "2.5.4" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" @@ -5563,11 +6523,23 @@ semaphore@^1.0.5: 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.2.1, semver@^7.3.2, semver@^7.3.4: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + 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" @@ -5624,11 +6596,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.6.1" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" @@ -5667,6 +6651,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.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -5694,6 +6687,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" @@ -5784,6 +6786,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" @@ -5888,6 +6898,28 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^4.2.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" + integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.matchall@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz#608f255e93e072107f5de066f81a2dfb78cf6b29" + integrity sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + has-symbols "^1.0.1" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.3.1" + side-channel "^1.0.4" + string.prototype.padend@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0" @@ -5905,6 +6937,14 @@ string.prototype.trimend@^1.0.0: define-properties "^1.1.3" es-abstract "^1.17.5" +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + string.prototype.trimleft@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" @@ -5931,6 +6971,14 @@ string.prototype.trimstart@^1.0.0: define-properties "^1.1.3" es-abstract "^1.17.5" +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -5981,6 +7029,13 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -5991,6 +7046,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== + subdirs@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/subdirs/-/subdirs-1.0.1.tgz#d65264787476e4caf7efc5498fb740c69f626d48" @@ -6012,6 +7072,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" @@ -6049,6 +7116,21 @@ 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.4: + version "6.0.9" + resolved "https://registry.yarnpkg.com/table/-/table-6.0.9.tgz#790a12bf1e09b87b30e60419bafd6a1fd85536fb" + integrity sha512-F3cLs9a3hL1Z7N4+EkSscsel3z55XT950AvB05bwayrNg5T1/gykXtigioTAjbltvbMSJvvhFCbnf6mX+ntnJQ== + dependencies: + ajv "^8.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + lodash.clonedeep "^4.5.0" + lodash.flatten "^4.4.0" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.0" + test-exclude@^5.2.3: version "5.2.3" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" @@ -6064,6 +7146,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" @@ -6180,109 +7267,30 @@ ts-jest@^24.0.2: semver "^5.5" yargs-parser "10.x" -tslib@1.9.0, tslib@^1.7.1: - version "1.9.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" - integrity sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ== +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" -tslib@^1.8.0, tslib@^1.8.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" - integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.0.tgz#18d13fc2dce04051e20f074cc8387fd8089ce4f3" integrity sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g== -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.0.1" - resolved "https://registry.yarnpkg.com/tslint-plugin-prettier/-/tslint-plugin-prettier-2.0.1.tgz#95b6a3b766622ffc44375825d7760225c50c3680" - integrity sha512-4FX9JIx/1rKHIPJNfMb+ooX1gPk5Vg3vNi7+dyFYpLO+O57F4g+b/fo1+W/G0SUOkBLHB/YKScxjX/P+7ZT/Tw== - dependencies: - eslint-plugin-prettier "^2.2.0" - lines-and-columns "^1.1.6" - tslib "^1.7.1" - -tslint-react@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tslint-react/-/tslint-react-4.0.0.tgz#b4bb4c01c32448cb14d23f143a2f5e4989bb961e" - integrity sha512-9fNE0fm9zNDx1+b6hgy8rgDN2WsQLRiIrn3+fbqm0tazBVF6jiaCFAITxmU+WSFWYE03Xhp1joCircXOe1WVAQ== - 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.17.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== - dependencies: - tslib "^1.8.1" - -"tsutils@^2.28.0 || ^3.0.0", tsutils@^3.0.0, tsutils@^3.9.1: - version "3.14.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.14.0.tgz#bf8d5a7bae5369331fa0f2b0a5a10bd7f7396c77" - integrity sha512-SmzGbB0l+8I0QwsPgjooFRaRvHLBLNYM8SeQ0k6rtNDru5sCGeLJcZdwilNndN+GysuFjF5EIYgN8GfFG6UeUw== - dependencies: - tslib "^1.8.1" - -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.17.1: + 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" @@ -6303,6 +7311,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" @@ -6310,6 +7325,16 @@ 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-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + 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" @@ -6353,14 +7378,6 @@ typescript@^3.3.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== -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.9.1" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.9.1.tgz#a56a71c8caa2d36b5556cc1fd57df01ae3491539" @@ -6373,6 +7390,16 @@ ulid@^2.3.0: resolved "https://registry.yarnpkg.com/ulid/-/ulid-2.3.0.tgz#93063522771a9774121a84d126ecd3eb9804071f" integrity sha512-keqHubrlpvT6G2wH0OEfSW4mquYRcbe/J8NMmveoQOjUqmo+hXtO+ORCpWhdbZ7k72UtY61BL7haGxW6enBnjw== +unbox-primitive@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" @@ -6555,6 +7582,11 @@ uuid@^8.1.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.0.tgz#ab738085ca22dc9a8c92725e459b1d507df5d6ea" integrity sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ== +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" @@ -6687,6 +7719,17 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -6699,6 +7742,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" + windows-release@^3.1.0: version "3.3.0" resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.0.tgz#dce167e9f8be733f21c849ebd4d03fe66b29b9f0" @@ -6729,7 +7779,7 @@ winston@^3.1.0: triple-beam "^1.3.0" winston-transport "^4.4.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== @@ -6837,6 +7887,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"