├── src ├── core │ ├── index.ts │ └── handlers.ts ├── interfaces │ ├── web-hook-config.interface.ts │ ├── dialog-flow-fulfillment-response.interface.ts │ └── dialog-flow-response.interface.ts ├── constant.ts ├── index.ts ├── decorators │ ├── dialog-flow-param.decorator.ts │ ├── dialog-flow-action.decorator.ts │ └── dialog-flow-intent.decorator.ts ├── middlewares │ └── dialog-flow-authorization.middleware.ts ├── utils.ts └── module │ ├── dialog-flow.provider.ts │ ├── dialog-flow.controller.ts │ └── dialog-flow.module.ts ├── samples └── 01-dialogflow-handlers │ ├── .prettierrc │ ├── nodemon.json │ ├── src │ ├── main.ts │ ├── app.provider2.ts │ ├── app.module.ts │ └── app.provider.ts │ ├── .snyk │ ├── jest.json │ ├── jest-e2e.json │ ├── tsconfig.json │ ├── README.md │ ├── tslint.json │ ├── package.json │ ├── .gitignore │ └── yarn.lock ├── .prettierrc ├── .travis.yml ├── tsconfig.json ├── __tests__ ├── dialog-flow-intent.decorator.spec.ts ├── dialog-flow-action.decorator.spec.ts ├── fixtures │ └── data.ts ├── dialog-flow.controller.spec.ts ├── dialog-flow-params.decorator.spec.ts └── dialog-flow.provider.spec.ts ├── tslint.json ├── LICENCE ├── package.json ├── CHANGELOG.md ├── README.md └── .gitignore /src/core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './handlers'; 2 | -------------------------------------------------------------------------------- /samples/01-dialogflow-handlers/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "trailingComma": "all" 4 | } -------------------------------------------------------------------------------- /src/interfaces/web-hook-config.interface.ts: -------------------------------------------------------------------------------- 1 | export interface WebHookConfig { 2 | basePath?: string; 3 | postPath?: string; 4 | } 5 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": true, 3 | "useTabs": true, 4 | "singleQuote": true, 5 | "printWidth": 100, 6 | "trailingComma": "all" 7 | } -------------------------------------------------------------------------------- /samples/01-dialogflow-handlers/nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "watch": ["src"], 3 | "ext": "ts", 4 | "ignore": ["src/**/*.spec.ts"], 5 | "exec": "ts-node -r tsconfig-paths/register src/main.ts" 6 | } 7 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "8" 4 | - "10" 5 | install: 6 | - npm install 7 | script: 8 | - npm run test 9 | after_success: 10 | - npm run test:cov 11 | notifications: 12 | email: 13 | - adrien.deperetti@gmail.com -------------------------------------------------------------------------------- /samples/01-dialogflow-handlers/src/main.ts: -------------------------------------------------------------------------------- 1 | import { NestFactory } from '@nestjs/core'; 2 | import { AppModule } from './app.module'; 3 | 4 | async function bootstrap() { 5 | const app = await NestFactory.create(AppModule); 6 | await app.listen(3000); 7 | } 8 | bootstrap(); 9 | -------------------------------------------------------------------------------- /samples/01-dialogflow-handlers/src/app.provider2.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@nestjs/common'; 2 | 3 | @Injectable() 4 | export class AppProvider2 { 5 | public haveBeenCalled(intentOrAction: string): void { 6 | console.log(`intent or action ${intentOrAction} have been called`); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/constant.ts: -------------------------------------------------------------------------------- 1 | export const DIALOG_FLOW_ACTION = '__dfAction__'; 2 | export const DIALOG_FLOW_INTENT = '__dfIntent__'; 3 | export const DIALOG_FLOW_PARAMS = '__dfParams__'; 4 | export const nestMetadata = { PROVIDERS: 'providers' }; 5 | export const PATH_METADATA = 'path'; 6 | export const METHOD_METADATA = 'method'; 7 | -------------------------------------------------------------------------------- /samples/01-dialogflow-handlers/.snyk: -------------------------------------------------------------------------------- 1 | # Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities. 2 | version: v1.14.1 3 | ignore: {} 4 | # patches apply the minimum changes required to fix a vulnerability 5 | patch: 6 | SNYK-JS-LODASH-567746: 7 | - '@nestjs/core > @nuxtjs/opencollective > consola > lodash': 8 | patched: '2020-05-01T02:36:55.965Z' 9 | -------------------------------------------------------------------------------- /samples/01-dialogflow-handlers/src/app.module.ts: -------------------------------------------------------------------------------- 1 | import { AppProvider } from './app.provider'; 2 | import { DialogFlowModule } from 'nestjs-dialogflow'; 3 | import { Module } from '@nestjs/common'; 4 | import { AppProvider2 } from './app.provider2'; 5 | 6 | @Module({ 7 | imports: [DialogFlowModule.forRoot()], 8 | providers: [AppProvider, AppProvider2] 9 | }) 10 | export class AppModule {} 11 | -------------------------------------------------------------------------------- /samples/01-dialogflow-handlers/jest.json: -------------------------------------------------------------------------------- 1 | { 2 | "moduleFileExtensions": [ 3 | "ts", 4 | "tsx", 5 | "js", 6 | "json" 7 | ], 8 | "transform": { 9 | "^.+\\.tsx?$": "/node_modules/ts-jest/preprocessor.js" 10 | }, 11 | "testRegex": "/src/.*\\.(test|spec).(ts|tsx|js)$", 12 | "collectCoverageFrom" : ["src/**/*.{js,jsx,tsx,ts}", "!**/node_modules/**", "!**/vendor/**"], 13 | "coverageReporters": ["json", "lcov"] 14 | } -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './decorators/dialog-flow-action.decorator'; 2 | export * from './decorators/dialog-flow-intent.decorator'; 3 | export * from './decorators/dialog-flow-param.decorator'; 4 | export * from './interfaces/dialog-flow-fulfillment-response.interface'; 5 | export * from './interfaces/dialog-flow-response.interface'; 6 | export * from './middlewares/dialog-flow-authorization.middleware'; 7 | export * from './module/dialog-flow.module'; 8 | -------------------------------------------------------------------------------- /samples/01-dialogflow-handlers/jest-e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "moduleFileExtensions": [ 3 | "ts", 4 | "tsx", 5 | "js", 6 | "json" 7 | ], 8 | "transform": { 9 | "^.+\\.tsx?$": "/../node_modules/ts-jest/preprocessor.js" 10 | }, 11 | "testRegex": "/e2e/.*\\.(e2e-test|e2e-spec).(ts|tsx|js)$", 12 | "collectCoverageFrom" : ["src/**/*.{js,jsx,tsx,ts}", "!**/node_modules/**", "!**/vendor/**"], 13 | "coverageReporters": ["json", "lcov"] 14 | } -------------------------------------------------------------------------------- /src/decorators/dialog-flow-param.decorator.ts: -------------------------------------------------------------------------------- 1 | import 'reflect-metadata'; 2 | import { DIALOG_FLOW_PARAMS } from '../constant'; 3 | 4 | export const DialogFlowParam = (property?: string) => { 5 | return (target, key, index) => { 6 | const metadataValue = Reflect.getMetadata(DIALOG_FLOW_PARAMS, target) || []; 7 | metadataValue.push({ key, property, index }); 8 | Reflect.defineMetadata(DIALOG_FLOW_PARAMS, metadataValue, target); 9 | return target; 10 | }; 11 | }; 12 | -------------------------------------------------------------------------------- /src/interfaces/dialog-flow-fulfillment-response.interface.ts: -------------------------------------------------------------------------------- 1 | export interface DialogFlowFulfillmentResponse { 2 | followupEventInput?: { 3 | name: string; 4 | languageCode: number; 5 | parameters: { 6 | [param: string]: any; 7 | }; 8 | }; 9 | fulfillmentMessages?: Array; 10 | fulfillmentText?: string; 11 | outputContexts?: { 12 | name: string; 13 | lifeSpan: number; 14 | parameters: { 15 | [param: string]: any; 16 | }; 17 | }; 18 | payload?: any; 19 | source?: string; 20 | } 21 | -------------------------------------------------------------------------------- /src/middlewares/dialog-flow-authorization.middleware.ts: -------------------------------------------------------------------------------- 1 | import { Injectable, NestMiddleware } from '@nestjs/common'; 2 | 3 | @Injectable() 4 | export class DialogFlowAuthorizationMiddleware implements NestMiddleware { 5 | use(req, res, next) { 6 | if (!req.headers.authorization) return next('Missing authorization header'); 7 | 8 | if (process.env.DIALOG_FLOW_AUTHORIZATION_TOKEN === req.headers.authorization) { 9 | return next(); 10 | } else { 11 | return next('Unrecognized authorization token'); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "declaration": true, 5 | "noImplicitAny": false, 6 | "removeComments": true, 7 | "noLib": false, 8 | "emitDecoratorMetadata": true, 9 | "experimentalDecorators": true, 10 | "target": "es6", 11 | "sourceMap": false, 12 | "outDir": "./lib", 13 | "rootDir": "./src", 14 | "skipLibCheck": true 15 | }, 16 | "include": [ 17 | "src/**/*", 18 | "../index.ts" 19 | ], 20 | "exclude": [ 21 | "node_modules", 22 | "**/*.spec.ts" 23 | ] 24 | } -------------------------------------------------------------------------------- /samples/01-dialogflow-handlers/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "declaration": false, 5 | "noImplicitAny": false, 6 | "removeComments": true, 7 | "noLib": false, 8 | "allowSyntheticDefaultImports": true, 9 | "emitDecoratorMetadata": true, 10 | "experimentalDecorators": true, 11 | "target": "es6", 12 | "sourceMap": true, 13 | "allowJs": true, 14 | "outDir": "./dist", 15 | "baseUrl": "./src" 16 | }, 17 | "include": [ 18 | "src/**/*" 19 | ], 20 | "exclude": [ 21 | "node_modules", 22 | "**/*.spec.ts" 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | export function applyParamsMetadataDecorator(paramsMetadata: any[], args: any[]): any[] { 2 | if (paramsMetadata.length && args.length) { 3 | /* Override the original parameter value with the expected property of the value even a deep property. */ 4 | for (const param of paramsMetadata) { 5 | if (typeof args[param.index] === 'object') { 6 | if (!param.property) continue; 7 | args[param.index] = param.property 8 | .split('.') 9 | .reduce((accumulator, property) => accumulator[property], args[param.index]); 10 | } 11 | } 12 | } 13 | return args; 14 | } 15 | -------------------------------------------------------------------------------- /__tests__/dialog-flow-intent.decorator.spec.ts: -------------------------------------------------------------------------------- 1 | import 'reflect-metadata' 2 | import { DIALOG_FLOW_INTENT } from '../src/constant'; 3 | import { DialogFlowIntent } from '../src/decorators/dialog-flow-intent.decorator'; 4 | import { expect } from 'chai'; 5 | 6 | describe('@DialogFlowIntent', () => { 7 | class TestWithMethod { 8 | @DialogFlowIntent('myIntent') 9 | public action() {} 10 | } 11 | 12 | it('should enhance method add action string into method metadata', () => { 13 | const metadata = Reflect.getMetadata(DIALOG_FLOW_INTENT, Reflect.getOwnPropertyDescriptor(TestWithMethod.prototype, 'action').value); 14 | expect(metadata).to.be.deep.equal('myIntent'); 15 | }); 16 | }); -------------------------------------------------------------------------------- /__tests__/dialog-flow-action.decorator.spec.ts: -------------------------------------------------------------------------------- 1 | import 'reflect-metadata' 2 | import { DIALOG_FLOW_ACTION } from '../src/constant'; 3 | import { DialogFlowAction } from '../src/decorators/dialog-flow-action.decorator'; 4 | import { expect } from 'chai'; 5 | 6 | describe('@DialogFlowAction', () => { 7 | class TestWithMethod { 8 | @DialogFlowAction('myAction') 9 | public action() {} 10 | } 11 | 12 | it('should enhance method add action string into method metadata', () => { 13 | const metadata = Reflect.getMetadata(DIALOG_FLOW_ACTION, Reflect.getOwnPropertyDescriptor(TestWithMethod.prototype, 'action').value); 14 | expect(metadata).to.be.deep.equal('myAction'); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /src/interfaces/dialog-flow-response.interface.ts: -------------------------------------------------------------------------------- 1 | export interface DialogFlowResponse { 2 | originalDetectIntentRequest: any; 3 | queryResult: QueryResult; 4 | responseId: string; 5 | session: string; 6 | } 7 | 8 | export interface QueryResult { 9 | action: string; 10 | allRequiredParamsPresent: boolean; 11 | diagnosticInfo: { webhook_latency_ms: number }; 12 | fulfillmentMessages: any; 13 | fulfillmentText: string; 14 | intent: { name: string; displayName: string }; 15 | intentDetectionConfidence: Number; 16 | languageCode: string; 17 | outputContexts: OutputContexts; 18 | parameters: { param: string; value: any }; 19 | queryText: string; 20 | } 21 | 22 | export interface OutputContexts { 23 | name: string; 24 | lifespanCount: number; 25 | parameters: { param: string; value: any }; 26 | } 27 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultSeverity": "error", 3 | "extends": ["tslint:recommended"], 4 | "jsRules": { 5 | "no-unused-expression": true 6 | }, 7 | "rules": { 8 | "eofline": true, 9 | "quotemark": [true, "single"], 10 | "indent": true, 11 | "ordered-imports": [true], 12 | "max-line-length": [true, 100], 13 | "member-ordering": [true], 14 | "curly": false, 15 | "interface-name": [false], 16 | "array-type": [false], 17 | "no-empty-interface": false, 18 | "no-empty": false, 19 | "arrow-parens": false, 20 | "object-literal-sort-keys": false, 21 | "no-unused-expression": false, 22 | "max-classes-per-file": [false], 23 | "ban-types": false, 24 | "variable-name": [false], 25 | "one-line": [false], 26 | "one-variable-per-declaration": [false] 27 | }, 28 | "rulesDirectory": [] 29 | } -------------------------------------------------------------------------------- /src/decorators/dialog-flow-action.decorator.ts: -------------------------------------------------------------------------------- 1 | import 'reflect-metadata'; 2 | import { applyParamsMetadataDecorator } from '../utils'; 3 | import { DIALOG_FLOW_ACTION, DIALOG_FLOW_PARAMS } from '../constant'; 4 | 5 | export const DialogFlowAction = (action: string) => { 6 | return (target: Object, key: string | symbol, descriptor: PropertyDescriptor) => { 7 | const originalMethod = descriptor.value; 8 | descriptor.value = function(...args: any[]) { 9 | const paramsMetadata = (Reflect.getMetadata(DIALOG_FLOW_PARAMS, target) || []).filter(p => { 10 | return p.key === key; 11 | }); 12 | return originalMethod.apply(this, applyParamsMetadataDecorator(paramsMetadata, args)); 13 | }; 14 | 15 | /* Apply the intent value on the descriptor to be handled. */ 16 | Reflect.defineMetadata(DIALOG_FLOW_ACTION, action, descriptor.value); 17 | return descriptor; 18 | }; 19 | }; 20 | -------------------------------------------------------------------------------- /src/decorators/dialog-flow-intent.decorator.ts: -------------------------------------------------------------------------------- 1 | import 'reflect-metadata'; 2 | import { applyParamsMetadataDecorator } from '../utils'; 3 | import { DIALOG_FLOW_INTENT, DIALOG_FLOW_PARAMS } from '../constant'; 4 | 5 | export const DialogFlowIntent = (intent: string) => { 6 | return (target: Object, key: string | symbol, descriptor: PropertyDescriptor) => { 7 | const originalMethod = descriptor.value; 8 | descriptor.value = function(...args: any[]) { 9 | const paramsMetadata = (Reflect.getMetadata(DIALOG_FLOW_PARAMS, target) || []).filter(p => { 10 | return p.key === key; 11 | }); 12 | return originalMethod.apply(this, applyParamsMetadataDecorator(paramsMetadata, args)); 13 | }; 14 | 15 | /* Apply the intent value on the descriptor to be handled. */ 16 | Reflect.defineMetadata(DIALOG_FLOW_INTENT, intent, descriptor.value); 17 | return descriptor; 18 | }; 19 | }; 20 | -------------------------------------------------------------------------------- /src/module/dialog-flow.provider.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@nestjs/common'; 2 | import { DialogFlowFulfillmentResponse } from '../interfaces/dialog-flow-fulfillment-response.interface'; 3 | import { DialogFlowResponse } from '../interfaces/dialog-flow-response.interface'; 4 | import { HandlerContainer } from './../core'; 5 | 6 | @Injectable() 7 | export class DialogFlowProvider { 8 | constructor(private readonly handlerContainer: HandlerContainer) {} 9 | 10 | public async handleIntentOrAction( 11 | dialogFlowResponse: DialogFlowResponse, 12 | ): Promise { 13 | const intent = dialogFlowResponse.queryResult.intent.displayName; 14 | const action = dialogFlowResponse.queryResult.action; 15 | 16 | const fulfillment = this.handlerContainer.findAndCallHandlers(dialogFlowResponse, { 17 | intent, 18 | action, 19 | }); 20 | return fulfillment as DialogFlowFulfillmentResponse; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /samples/01-dialogflow-handlers/README.md: -------------------------------------------------------------------------------- 1 |

2 | Nest Logo 3 |

4 | 5 | [travis-image]: https://api.travis-ci.org/nestjs/nest.svg?branch=master 6 | [travis-url]: https://travis-ci.org/nestjs/nest 7 | [linux-image]: https://img.shields.io/travis/nestjs/nest/master.svg?label=linux 8 | [linux-url]: https://travis-ci.org/nestjs/nest 9 | 10 | ## Description 11 | 12 | [Nest](https://github.com/nestjs/nest) framework TypeScript starter repository. 13 | 14 | ## Installation 15 | 16 | ```bash 17 | $ npm install 18 | ``` 19 | 20 | ## Running the app 21 | 22 | ```bash 23 | # development 24 | $ npm run start 25 | 26 | # watch mode 27 | $ npm run start:dev 28 | 29 | # production mode 30 | npm run start:prod 31 | ``` 32 | 33 | ## Test 34 | 35 | ```bash 36 | # unit tests 37 | $ npm run test 38 | 39 | # e2e tests 40 | $ npm run test:e2e 41 | 42 | # test coverage 43 | $ npm run test:cov 44 | ``` -------------------------------------------------------------------------------- /LICENCE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 de Peretti Adrien 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /samples/01-dialogflow-handlers/src/app.provider.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@nestjs/common'; 2 | import { AppProvider2 } from './app.provider2'; 3 | import { 4 | DialogFlowAction, 5 | DialogFlowFulfillmentResponse, 6 | DialogFlowIntent, 7 | DialogFlowResponse, 8 | } from 'nestjs-dialogflow'; 9 | 10 | @Injectable() 11 | export class AppProvider { 12 | constructor(private appProvider2: AppProvider2) {} 13 | 14 | @DialogFlowAction('events.debug') 15 | public handleEventDebug(dialogFlowResponse: DialogFlowResponse): DialogFlowFulfillmentResponse { 16 | this.appProvider2.haveBeenCalled('events.debug'); 17 | return { 18 | fulfillmentText: 'events.debug action well received.', 19 | fulfillmentMessages: [], 20 | }; 21 | } 22 | 23 | @DialogFlowIntent('Event:debug') 24 | public handleEventDebug2(dialogFlowResponse: DialogFlowResponse): DialogFlowFulfillmentResponse { 25 | this.appProvider2.haveBeenCalled('Event:debug'); 26 | return { 27 | fulfillmentText: 'Events:debug intent well received.', 28 | fulfillmentMessages: [], 29 | }; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/core/handlers.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@nestjs/common'; 2 | import { DialogFlowFulfillmentResponse } from '../interfaces/dialog-flow-fulfillment-response.interface'; 3 | import { DialogFlowResponse } from '../interfaces/dialog-flow-response.interface'; 4 | 5 | @Injectable() 6 | export class HandlerContainer { 7 | private container: Map = new Map(); 8 | 9 | constructor() {} 10 | 11 | public register(actionOrIntent: string, provider: any, methodName: string): void { 12 | if (this.container.has(actionOrIntent)) { 13 | throw new Error(`Cannot have duplicate handlers for intent [${actionOrIntent}]`); 14 | } 15 | 16 | this.container.set(actionOrIntent, { provider, methodName }); 17 | } 18 | 19 | public async findAndCallHandlers( 20 | dialogFlowResponse: DialogFlowResponse, 21 | { intent, action }: { intent: string; action: string }, 22 | ): Promise { 23 | if (!this.container.has(intent) && !this.container.has(action)) { 24 | throw new Error( 25 | `Unknown handler for ${intent ? '[intent: ' + intent + ']' : ''}${ 26 | action ? '[action: ' + action + ']' : '' 27 | }.`, 28 | ); 29 | } 30 | 31 | const { provider, methodName } = this.container.get(intent) || this.container.get(action); 32 | return await provider[methodName](dialogFlowResponse); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/module/dialog-flow.controller.ts: -------------------------------------------------------------------------------- 1 | import { Body, Controller, HttpStatus, RequestMethod, Res } from '@nestjs/common'; 2 | import { DialogFlowResponse } from '../interfaces/dialog-flow-response.interface'; 3 | import { DialogFlowProvider } from './dialog-flow.provider'; 4 | import { METHOD_METADATA, PATH_METADATA } from '../constant'; 5 | import { WebHookConfig } from '../interfaces/web-hook-config.interface'; 6 | 7 | @Controller() 8 | export class DialogFlowController { 9 | constructor(private readonly dialogFlowProvider: DialogFlowProvider) {} 10 | 11 | public static forRoot(webHookConfig: WebHookConfig) { 12 | Reflect.defineMetadata(PATH_METADATA, webHookConfig.basePath, DialogFlowController); 13 | Reflect.defineMetadata( 14 | PATH_METADATA, 15 | webHookConfig.postPath, 16 | Object.getOwnPropertyDescriptor(DialogFlowController.prototype, 'dialogFlowWebHook').value, 17 | ); 18 | Reflect.defineMetadata( 19 | METHOD_METADATA, 20 | RequestMethod.POST, 21 | Object.getOwnPropertyDescriptor(DialogFlowController.prototype, 'dialogFlowWebHook').value, 22 | ); 23 | return DialogFlowController; 24 | } 25 | 26 | async dialogFlowWebHook(@Body() dialogFlowResponse: DialogFlowResponse, @Res() res) { 27 | const fulfillment = await this.dialogFlowProvider.handleIntentOrAction(dialogFlowResponse); 28 | return res.status(HttpStatus.OK).send(fulfillment); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /samples/01-dialogflow-handlers/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultSeverity": "error", 3 | "extends": [ 4 | "tslint:recommended" 5 | ], 6 | "jsRules": { 7 | "no-unused-expression": true 8 | }, 9 | "rules": { 10 | "eofline": false, 11 | "quotemark": [ 12 | true, 13 | "single" 14 | ], 15 | "indent": false, 16 | "member-access": [ 17 | false 18 | ], 19 | "ordered-imports": [ 20 | false 21 | ], 22 | "max-line-length": [ 23 | true, 24 | 150 25 | ], 26 | "member-ordering": [ 27 | false 28 | ], 29 | "curly": false, 30 | "interface-name": [ 31 | false 32 | ], 33 | "array-type": [ 34 | false 35 | ], 36 | "no-empty-interface": false, 37 | "no-empty": false, 38 | "arrow-parens": false, 39 | "object-literal-sort-keys": false, 40 | "no-unused-expression": false, 41 | "max-classes-per-file": [ 42 | false 43 | ], 44 | "variable-name": [ 45 | false 46 | ], 47 | "one-line": [ 48 | false 49 | ], 50 | "one-variable-per-declaration": [ 51 | false 52 | ] 53 | }, 54 | "rulesDirectory": [] 55 | } 56 | -------------------------------------------------------------------------------- /samples/01-dialogflow-handlers/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nest-typescript-starter", 3 | "version": "1.0.0", 4 | "description": "Nest TypeScript starter repository", 5 | "license": "MIT", 6 | "scripts": { 7 | "format": "prettier --write \"**/*.ts\"", 8 | "start": "ts-node -r tsconfig-paths/register src/main.ts", 9 | "start:dev": "nodemon", 10 | "prestart:prod": "rm -rf dist && tsc", 11 | "start:prod": "node dist/main.js", 12 | "test": "jest --config=jest.json", 13 | "test:cov": "--config=jest.json --coverage --coverageDirectory=coverage", 14 | "test:e2e": "jest --config=jest-e2e.json", 15 | "snyk-protect": "snyk protect", 16 | "prepare": "npm run snyk-protect" 17 | }, 18 | "dependencies": { 19 | "@nestjs/common": "^8.2.6", 20 | "@nestjs/core": "^8.2.6", 21 | "@nestjs/testing": "^8.2.6", 22 | "nestjs-dialogflow": "file:../..", 23 | "reflect-metadata": "^0.1.13", 24 | "rxjs": "^7.5.2", 25 | "typescript": "^4.5.5", 26 | "snyk": "^1.836.0" 27 | }, 28 | "devDependencies": { 29 | "@types/express": "^4.0.39", 30 | "@types/jest": "^27.4.0", 31 | "@types/node": "^12.20.42", 32 | "@types/supertest": "^2.0.4", 33 | "jest": "^27.4.7", 34 | "nodemon": "^2.0.15", 35 | "prettier": "^2.5.1", 36 | "supertest": "^6.2.2", 37 | "ts-jest": "^27.1.3", 38 | "ts-node": "^10.4.0", 39 | "tsconfig-paths": "^3.12.0", 40 | "tslint": "6.1.3" 41 | }, 42 | "snyk": true 43 | } 44 | -------------------------------------------------------------------------------- /__tests__/fixtures/data.ts: -------------------------------------------------------------------------------- 1 | export const dialogFlowResponseData = { 2 | "responseId": "1d05835a-1092-442e-b363-910c34c6e735", 3 | "queryResult": { 4 | "queryText": "Météo de demain à marseille", 5 | "parameters": { 6 | "date": "2018-05-16T12:00:00+02:00", 7 | "geo-city": "Marseille" 8 | }, 9 | "allRequiredParamsPresent": true, 10 | "fulfillmentMessages": [ 11 | { 12 | "text": { 13 | "text": [ 14 | "" 15 | ] 16 | } 17 | } 18 | ], 19 | "outputContexts": [ 20 | { 21 | "name": "projects/hermes-d8e54/agent/sessions/f060c5a3-f95e-4551-aedd-3d970d0d4dc4/contexts/weather_question", 22 | "lifespanCount": 5, 23 | "parameters": { 24 | "date.original": "de demain", 25 | "date": "2018-05-16T12:00:00+02:00", 26 | "geo-city.original": "marseille", 27 | "geo-city": "Marseille" 28 | } 29 | } 30 | ], 31 | "intent": { 32 | "name": "projects/hermes-d8e54/agent/intents/62e2d690-bf1b-4eaa-af39-c9c0d48b8c41", 33 | "displayName": "Question:weather" 34 | }, 35 | "intentDetectionConfidence": 1, 36 | "diagnosticInfo": { 37 | "webhook_latency_ms": 75 38 | }, 39 | "languageCode": "fr" 40 | }, 41 | "webhookStatus": { 42 | "code": 5, 43 | "message": "Webhook call failed. Error: 404 Not Found" 44 | } 45 | }; 46 | -------------------------------------------------------------------------------- /src/module/dialog-flow.module.ts: -------------------------------------------------------------------------------- 1 | import 'reflect-metadata'; 2 | import { DIALOG_FLOW_ACTION, DIALOG_FLOW_INTENT } from '../constant'; 3 | import { DialogFlowAuthorizationMiddleware } from '../middlewares/dialog-flow-authorization.middleware'; 4 | import { DialogFlowController } from './dialog-flow.controller'; 5 | import { DialogFlowProvider } from './dialog-flow.provider'; 6 | import { DiscoveryModule, DiscoveryService } from '@nestjs-plus/discovery'; 7 | import { 8 | DynamicModule, 9 | MiddlewareConsumer, 10 | Module, 11 | NestModule, 12 | OnModuleInit, 13 | } from '@nestjs/common'; 14 | import { HandlerContainer } from '../core'; 15 | import { WebHookConfig } from '../interfaces/web-hook-config.interface'; 16 | 17 | @Module({ 18 | imports: [DiscoveryModule], 19 | providers: [DialogFlowProvider, HandlerContainer], 20 | controllers: [DialogFlowController], 21 | }) 22 | export class DialogFlowModule implements NestModule, OnModuleInit { 23 | public static forRoot(webHookConfig?: WebHookConfig): DynamicModule { 24 | webHookConfig = { 25 | basePath: 'web-hooks', 26 | postPath: 'dialog-flow', 27 | ...webHookConfig, 28 | }; 29 | 30 | return { 31 | module: DialogFlowModule, 32 | providers: [DialogFlowProvider, HandlerContainer], 33 | controllers: [DialogFlowController.forRoot(webHookConfig)], 34 | }; 35 | } 36 | 37 | constructor( 38 | private readonly discoveryService: DiscoveryService, 39 | private readonly handlerContainer: HandlerContainer, 40 | ) {} 41 | 42 | public async onModuleInit(): Promise { 43 | const providersMethodAndMetaForIntent = await this.discoveryService.providerMethodsWithMetaAtKey< 44 | string 45 | >(DIALOG_FLOW_INTENT); 46 | const providersMethodAndMetaForAction = await this.discoveryService.providerMethodsWithMetaAtKey< 47 | string 48 | >(DIALOG_FLOW_ACTION); 49 | 50 | const providersMethodAndMeta = [ 51 | ...providersMethodAndMetaForIntent, 52 | ...providersMethodAndMetaForAction, 53 | ]; 54 | 55 | for (const providerMethodAndMeta of providersMethodAndMeta) { 56 | this.handlerContainer.register( 57 | providerMethodAndMeta.meta, 58 | providerMethodAndMeta.discoveredMethod.parentClass.instance, 59 | providerMethodAndMeta.discoveredMethod.methodName, 60 | ); 61 | } 62 | } 63 | 64 | public configure(consumer: MiddlewareConsumer) { 65 | return consumer.apply(DialogFlowAuthorizationMiddleware).forRoutes(DialogFlowController); 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nestjs-dialogflow", 3 | "version": "3.1.0", 4 | "description": "Dialog flow module that simplify the web hook handling for your NLP application using NestJS :satellite:", 5 | "keywords": [ 6 | "NestJS", 7 | "dialogflow", 8 | "google-dialogflow", 9 | "NLP", 10 | "webhook", 11 | "typescript", 12 | "addons" 13 | ], 14 | "author": "Adrien de Peretti", 15 | "license": "MIT", 16 | "main": "lib/index.js", 17 | "types": "lib/index.d.ts", 18 | "files": [ 19 | "/lib" 20 | ], 21 | "homepage": "https://github.com/adrien2p/nestjs-dialogflow#readme", 22 | "repository": { 23 | "type": "git", 24 | "url": "https://github.com/adrien2p/nestjs-dialogflow" 25 | }, 26 | "bugs": { 27 | "url": "https://github.com/adrien2p/nestjs-dialogflow/issues" 28 | }, 29 | "engines": { 30 | "node": ">= 8.9.0" 31 | }, 32 | "scripts": { 33 | "format": "prettier src/**/*.ts --write", 34 | "build": "tsc -p tsconfig.json", 35 | "test": "node_modules/.bin/jest", 36 | "test:cov": "node_modules/.bin/jest --coverage", 37 | "prepublish:npm": "npm run build", 38 | "publish:npm": "npm run prepublish:npm && npm publish --access public" 39 | }, 40 | "devDependencies": { 41 | "@nestjs/common": "^8.2.6", 42 | "@nestjs/core": "^8.2.6", 43 | "@nestjs/platform-express": "^8.2.6", 44 | "@nestjs/testing": "^8.2.6", 45 | "@types/chai": "^4.3.0", 46 | "@types/express": "^4.17.13", 47 | "@types/jest": "^27.4.0", 48 | "@types/node": "^12.20.42", 49 | "@types/supertest": "^2.0.11", 50 | "chai": "^4.3.4", 51 | "coveralls": "^3.1.1", 52 | "jest": "^27.4.7", 53 | "prettier": "^2.5.1", 54 | "reflect-metadata": "^0.1.13", 55 | "rxjs": "^7.5.2", 56 | "sinon": "^12.0.1", 57 | "sinon-express-mock": "^2.2.1", 58 | "supertest": "^6.2.2", 59 | "ts-jest": "^27.1.3", 60 | "typescript": "^4.5.5" 61 | }, 62 | "peerDependencies": { 63 | "@nestjs/common": ">=8.2.6", 64 | "@nestjs/core": ">=8.2.6", 65 | "rxjs": "^7.5.0" 66 | }, 67 | "dependencies": { 68 | "@nestjs-plus/discovery": "^2.0.2" 69 | }, 70 | "jest": { 71 | "rootDir": "./", 72 | "preset": "ts-jest", 73 | "testEnvironment": "node", 74 | "testMatch": [ 75 | "**/?(*.)+(spec|test).[jt]s?(x)" 76 | ], 77 | "coveragePathIgnorePatterns": [ 78 | "node_modules/", 79 | "__tests__/" 80 | ], 81 | "coverageReporters": [ 82 | "lcov" 83 | ], 84 | "coverageDirectory": "../coverage", 85 | "collectCoverage": true 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /__tests__/dialog-flow.controller.spec.ts: -------------------------------------------------------------------------------- 1 | import 'reflect-metadata'; 2 | import { Injectable, RequestMethod } from '@nestjs/common'; 3 | import { DialogFlowController } from '../src/module/dialog-flow.controller'; 4 | import { DialogFlowFulfillmentResponse } from '../src/interfaces/dialog-flow-fulfillment-response.interface'; 5 | import { DialogFlowIntent } from '../src/decorators/dialog-flow-intent.decorator'; 6 | import { DialogFlowResponse } from '../src/interfaces/dialog-flow-response.interface'; 7 | import { METHOD_METADATA, PATH_METADATA } from '../src/constant'; 8 | import { mockRes } from 'sinon-express-mock'; 9 | import { Test } from '@nestjs/testing'; 10 | import { WebHookConfig } from '../src/interfaces/web-hook-config.interface'; 11 | import { DialogFlowModule } from '../src/module/dialog-flow.module'; 12 | 13 | describe('dialog flow controller', () => { 14 | const webHookConfig: WebHookConfig = { basePath: 'basePath', postPath: 'postPath' }; 15 | let controller: DialogFlowController; 16 | let app; 17 | 18 | @Injectable() 19 | class FakeService { 20 | @DialogFlowIntent('intent') 21 | public handlerIntent() { 22 | return { fulfillmentText: 'fulfilled' } as DialogFlowFulfillmentResponse; 23 | } 24 | } 25 | 26 | beforeAll(async () => { 27 | const module = await Test.createTestingModule({ 28 | imports: [DialogFlowModule.forRoot()], 29 | providers: [FakeService], 30 | }).compile(); 31 | 32 | app = module.createNestApplication(); 33 | await app.init(); 34 | 35 | controller = module.get(DialogFlowController); 36 | }); 37 | 38 | it('should be able to return the controller with new reflected metadata', () => { 39 | const _controller = DialogFlowController.forRoot(webHookConfig); 40 | 41 | const pathMetadata = Reflect.getMetadata(PATH_METADATA, _controller); 42 | const methodMetadata = Reflect.getMetadata(METHOD_METADATA, Reflect.getOwnPropertyDescriptor(_controller.prototype, 'dialogFlowWebHook').value); 43 | const methodPathMetadata = Reflect.getMetadata(PATH_METADATA, Reflect.getOwnPropertyDescriptor(_controller.prototype, 'dialogFlowWebHook').value); 44 | 45 | expect(pathMetadata).toEqual(webHookConfig.basePath); 46 | expect(methodMetadata).toEqual(RequestMethod.POST); 47 | expect(methodPathMetadata).toEqual(webHookConfig.postPath); 48 | }); 49 | 50 | it('should call the appropriate handler and call res', async () => { 51 | const res = mockRes(); 52 | const dialogFlowResponse = { queryResult: { intent: { displayName: 'intent' } } } as DialogFlowResponse; 53 | 54 | await controller.dialogFlowWebHook(dialogFlowResponse, res); 55 | expect(res.status.called).toBe(true); 56 | expect(res.send.called).toBe(true); 57 | expect(res.send.calledWith({ fulfillmentText: 'fulfilled' })).toBe(true); 58 | }); 59 | 60 | afterAll(async () => { 61 | await app.close(); 62 | }); 63 | }); 64 | -------------------------------------------------------------------------------- /__tests__/dialog-flow-params.decorator.spec.ts: -------------------------------------------------------------------------------- 1 | import 'reflect-metadata' 2 | import { DialogFlowAction } from '../src/decorators/dialog-flow-action.decorator'; 3 | import { DialogFlowIntent } from '../src/decorators/dialog-flow-intent.decorator'; 4 | import { DialogFlowParam } from '../src/decorators/dialog-flow-param.decorator'; 5 | import { DialogFlowResponse } from '../src/interfaces/dialog-flow-response.interface'; 6 | import { dialogFlowResponseData } from './fixtures/data'; 7 | import { OutputContexts, QueryResult } from '../src/interfaces/dialog-flow-response.interface'; 8 | 9 | describe('@DialogFlowParams', () => { 10 | class TestWithIntentDecorator { 11 | @DialogFlowIntent('myIntent') 12 | public action(@DialogFlowParam('queryResult.outputContexts') outputContexts: OutputContexts) { 13 | return outputContexts; 14 | } 15 | 16 | @DialogFlowIntent('myIntent2') 17 | public action2(@DialogFlowParam('queryResult') queryResult: QueryResult) { 18 | return queryResult; 19 | } 20 | 21 | @DialogFlowIntent('myIntent2') 22 | public action3(@DialogFlowParam() dialogFlowResponse: DialogFlowResponse) { 23 | return dialogFlowResponse; 24 | } 25 | 26 | @DialogFlowIntent('myIntent2') 27 | public action4(dialogFlowResponse: DialogFlowResponse) { 28 | return dialogFlowResponse; 29 | } 30 | } 31 | 32 | class TestWithActionDecorator { 33 | @DialogFlowAction('myIntent') 34 | public action(@DialogFlowParam('queryResult.outputContexts') outputContexts: OutputContexts) { 35 | return outputContexts; 36 | } 37 | 38 | @DialogFlowAction('myIntent2') 39 | public action2(@DialogFlowParam('queryResult') queryResult: QueryResult) { 40 | return queryResult; 41 | } 42 | 43 | @DialogFlowAction('myIntent2') 44 | public action3(@DialogFlowParam() dialogFlowResponse: DialogFlowResponse) { 45 | return dialogFlowResponse; 46 | } 47 | 48 | @DialogFlowAction('myIntent2') 49 | public action4(dialogFlowResponse: DialogFlowResponse) { 50 | return dialogFlowResponse; 51 | } 52 | } 53 | 54 | it('should override method parameter with the property set through the intent decorator', () => { 55 | const instance = new TestWithIntentDecorator(); 56 | expect(instance.action(dialogFlowResponseData as any)).toBe(dialogFlowResponseData.queryResult.outputContexts); 57 | expect(instance.action2(dialogFlowResponseData as any)).toBe(dialogFlowResponseData.queryResult); 58 | expect(instance.action3(dialogFlowResponseData as any)).toBe(dialogFlowResponseData); 59 | expect(instance.action4(dialogFlowResponseData as any)).toBe(dialogFlowResponseData); 60 | }); 61 | 62 | it('should override method parameter with the property set through the action decorator', () => { 63 | const instance = new TestWithActionDecorator(); 64 | expect(instance.action(dialogFlowResponseData as any)).toBe(dialogFlowResponseData.queryResult.outputContexts); 65 | expect(instance.action2(dialogFlowResponseData as any)).toBe(dialogFlowResponseData.queryResult); 66 | expect(instance.action3(dialogFlowResponseData as any)).toBe(dialogFlowResponseData); 67 | expect(instance.action4(dialogFlowResponseData as any)).toBe(dialogFlowResponseData); 68 | }); 69 | }); -------------------------------------------------------------------------------- /__tests__/dialog-flow.provider.spec.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@nestjs/common'; 2 | import { DialogFlowFulfillmentResponse } from '../src/interfaces/dialog-flow-fulfillment-response.interface'; 3 | import { DialogFlowIntent } from '../src/decorators/dialog-flow-intent.decorator'; 4 | import { DialogFlowAction } from '../src/decorators/dialog-flow-action.decorator'; 5 | import { DialogFlowResponse } from '../src/interfaces/dialog-flow-response.interface'; 6 | import { DialogFlowProvider } from '../src/module/dialog-flow.provider'; 7 | import { DialogFlowModule } from '../src/module/dialog-flow.module'; 8 | import { Test, TestingModule } from '@nestjs/testing'; 9 | 10 | describe('dialog flow service', () => { 11 | let dialogFlowProvider: DialogFlowProvider; 12 | let app; 13 | 14 | @Injectable() 15 | class FakeService { 16 | @DialogFlowIntent('intent') 17 | public handlerIntent() { 18 | return { fulfillmentText: 'fulfilled' } as DialogFlowFulfillmentResponse; 19 | } 20 | } 21 | 22 | beforeAll(async () => { 23 | const module = await Test.createTestingModule({ 24 | imports: [DialogFlowModule.forRoot()], 25 | providers: [FakeService], 26 | }).compile(); 27 | 28 | app = module.createNestApplication(); 29 | await app.init(); 30 | 31 | dialogFlowProvider = module.get(DialogFlowProvider); 32 | 33 | }); 34 | 35 | it('should return a fulfillment response', async () => { 36 | const dialogFlowResponse = { queryResult: { intent: { displayName: 'intent' } } } as DialogFlowResponse; 37 | const fulfillment = await dialogFlowProvider.handleIntentOrAction(dialogFlowResponse); 38 | expect(fulfillment).toEqual({ fulfillmentText: 'fulfilled' }); 39 | }); 40 | 41 | it('should throw an error if no intent or action has been found', async () => { 42 | const dialogFlowResponse = { queryResult: { intent: { displayName: 'intent2' } } } as DialogFlowResponse; 43 | 44 | let error; 45 | try { 46 | await dialogFlowProvider.handleIntentOrAction(dialogFlowResponse); 47 | } catch (e) { 48 | error = e; 49 | } 50 | 51 | expect(error).not.toEqual(null); 52 | expect(error.message).toEqual('Unknown handler for [intent: intent2].'); 53 | }); 54 | 55 | afterAll(async () => { 56 | await app.close(); 57 | }); 58 | }); 59 | 60 | describe('Dialog Flow Handlers', () => { 61 | it('Duplicate handler exception', async () => { 62 | 63 | @Injectable() 64 | class ExpectionService { 65 | 66 | @DialogFlowAction('duplicate') 67 | public handlerAction() { 68 | return { fulfillmentText: 'fulfilled' } as DialogFlowFulfillmentResponse; 69 | } 70 | 71 | @DialogFlowIntent('duplicate') 72 | public handlerIntent() { 73 | return { fulfillmentText: 'fulfilled' } as DialogFlowFulfillmentResponse; 74 | } 75 | } 76 | 77 | let error; 78 | let app; 79 | 80 | try { 81 | const module: TestingModule = await Test.createTestingModule({ 82 | imports: [DialogFlowModule.forRoot()], 83 | providers: [ExpectionService], 84 | }).compile(); 85 | 86 | app = module.createNestApplication(); 87 | 88 | await app.init(); 89 | 90 | } catch (e) { 91 | error = e; 92 | } 93 | 94 | expect(error).not.toBeNull(); 95 | expect(error.message).toEqual('Cannot have duplicate handlers for intent [duplicate]'); 96 | 97 | app.close(); 98 | }); 99 | }); 100 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) 6 | and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). 7 | 8 | ## [3.1.0] - 2021-01-25 9 | 10 | Update packages to NestJs V8 - [#63](https://github.com/adrien2p/nestjs-dialogflow/pull/63) Thanks to @vincent-benbria 11 | 12 | ## [3.0.0] - 2019-03-30 13 | 14 | Update package according to the new api of nestjs V6 15 | Take advantage of discovery module provided by nestjs-plus 16 | 17 | ## [2.2.0] - 2019-03-04 18 | 19 | Setup DiscoveryModule and cleanup the lib 20 | 21 | ## [2.1.0] - 2018-10-24 22 | 23 | Refactor module 24 | Remove provider 25 | Add core directory (handler/scanner) 26 | 27 | ## [2.0.0] - 2018-06-20 28 | 29 | Update library to be used with nestjs V5 30 | 31 | ## [1.2.0] - 2018-05-17 32 | 33 | ### Add 34 | 35 | * `@DialogFlowParam()` decorator in order to pick properties from `DialogFlowResponse` param and apply as new method parameters 36 | * `Utils` internal usage 37 | * `DIALOG_FLOW_PARAMS` constant for the new metadata key of `@DialogFlowParam()` decorator 38 | 39 | ### Update 40 | 41 | * Improve and add tests, better coverage 42 | * Constants has been updated to avoid any collision 43 | * `OutputContexts` and `QueryResult` interfaces are now exposed 44 | 45 | ## [1.1.9] - 2018-05-12 46 | 47 | ### Update 48 | 49 | * Rename `static forRoute` by `static forRoot` 50 | 51 | ## [1.1.6] - 2018-05-12 52 | 53 | ### Update 54 | 55 | * README 56 | 57 | ## [1.1.5] - 2018-05-12 58 | 59 | ### Add 60 | 61 | * `DialogFlowProvider` in order to handle the controller logic and dispatch intent 62 | * tests in order to have well test suite 63 | * `Decorators/` tested 64 | * `module/[provider, provider, controller]` tested 65 | 66 | ### Update 67 | 68 | * `DialogFlowController` logic now delegated to the `DialogFlowProvider` 69 | 70 | ### Fixes 71 | 72 | * `Handlers` provider stored handler method when no intent or action was found 73 | 74 | ## [1.1.4] - 2018-05-08 75 | 76 | ### Update 77 | 78 | * Rename `DialogController` to `DialogFlowController` in order to keep coherence 79 | 80 | ## [1.1.3] - 2018-05-08 81 | 82 | ### Fixes 83 | 84 | * Typo in the default config path in the module 85 | * Remove console.log in the controller 86 | 87 | ### Add 88 | 89 | * Samples directory 90 | * Add `01-dialogflow-handlers` that show how to use the library 91 | 92 | ## [1.1.2] - 2018-05-08 93 | 94 | ### Fixes 95 | 96 | * Action support with `@DialogFlowAction()` 97 | 98 | ## [1.1.1] - 2018-05-07 99 | 100 | ### Fixes 101 | 102 | * Regenerate the lib directory 103 | 104 | ## [1.1.0] - 2018-05-07 105 | 106 | ### Update 107 | 108 | * `DialogFlowModule` now apply the `DialogFlowAuthorizationMiddleware` middleware to validate the token sent by `DialogFlow` 109 | 110 | ### Add 111 | 112 | * `DialogFlowAuthorizationMiddleware` the middleware compare the token sent by `DialogFlow` to the token set in the env variable 113 | `DIALOG_FLOW_AUTHORIZATION_TOKEN` 114 | 115 | ## [1.0.1] - 2018-05-07 116 | 117 | ### Update 118 | 119 | Change project name. 120 | 121 | ## [1.0.0] - 2018-05-07 122 | 123 | ### Add 124 | 125 | * Decorators to handle the intent/action sent from `DialogFlow` 126 | * `@DialogFlowIntent()` decorator to define the concerned intent instead of the action 127 | * `@DialogFlowAction()` decorator to define the concerned action instead of the intent 128 | * `DialogFlowModule` Which provide the features 129 | * `DialogFlowController` configurable controller through `DialogFlowModule.forRoute(webHookConfig)` 130 | * `Handlers` provider which get the metadata from the providers in order to store and return the handlers map 131 | * Some interfaces to defined the response get from `DialogFlow` and the expected result await by `Dialogflow` 132 | * `DialogFlowFulfilmentResponse` which defined the expected response await by `DialogFlow` 133 | * `DialogFlowResponse` the response sent from `DialogFlow` and pass as argument to the handler 134 | * `WebHookConfig` which defined the expected parameters in order to configure the controller of `DialogFlowModule` 135 | * Base files as `README`, `CHANGELOG`, `LICENCE` -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Build Status](https://travis-ci.org/adrien2p/nestjs-dialogflow.svg?branch=master)](https://travis-ci.org/adrien2p/nestjs-dialogflow.svg?branch=master) 2 | [![Coverage Status](https://coveralls.io/repos/github/adrien2p/nestjs-dialogflow/badge.svg?branch=master)](https://coveralls.io/github/adrien2p/nestjs-dialogflow?branch=master) 3 | [![npm version](https://badge.fury.io/js/nestjs-dialogflow.svg)](https://badge.fury.io/js/nestjs-dialogflow) 4 | [![npm](https://img.shields.io/npm/dm/nestjs-dialogflow.svg)](https://badge.fury.io/js/nestjs-dialogflow) 5 | [![Known Vulnerabilities](https://snyk.io/test/github/adrien2p/nestjs-dialogflow:package.json/badge.svg?targetFile=package.json)](https://snyk.io/test/github/adrien2p/nestjs-dialogflow:package.json?targetFile=package.json) 6 | 7 | # DialogFlow module for NestJS :satellite: 8 | 9 | Dialog flow module that simplify the web hook handling for your NLP application using NestJS 10 | 11 | ## Getting Started 12 | 13 | To start using this module you should run the following command 14 | 15 | `npm i nestjs-dialogflow @nestjs/common @nestjs/core reflect-metadata` 16 | 17 | ### Features 18 | 19 | There are 3 decorators provided by the module that allow you to handle intent/action or pick properties from the response. 20 | 21 | 22 | | Name | behavior | 23 | |:-----|:--------:| 24 | |`@DialogFlowIntent('myIntent')`
`public method(param: DialogFlowResponse)`| Handle the specified intent into the decorated method | 25 | |`@DialogFlowAction('myAction')`
`public method(param: DialogFlowResponse)`| Handle the specified action into the decorated method | 26 | |`@DialogFlowIntent('myIntent')`
`public method(@DialogFlowParam('queryResult') param: QueryResult)`| Get the value of the property specified through the parameter decorator | 27 | 28 | 29 | ### Set up 30 | 31 | To use the module, you have to import it into your `ApplicationModule` and call the `forRoot` in order 32 | to initialize the module. The `forRoot` method can take as parameters an object with a `basePath` and a `postPath` 33 | in order to configure the controller used for the web hook. 34 | 35 | ```ts 36 | @Module({ 37 | imports: [ 38 | DialogFlowModule.forRoot({ 39 | basePath: 'web-hooks', 40 | postPath: 'dialog-flow' 41 | }) 42 | ] 43 | }) 44 | export class ApplicationModule { } 45 | ``` 46 | 47 | After that, you have to go to your dialogFlow account to set up the url that should be reach to provide the result of 48 | your NLP request into the `Fulfillment` section of your agent. The url with the default config should looks like `https://myurl.me/web-hooks/dialog-flow` 49 | 50 | To handle an intent, you have to create your own Injectable that will implement all the methods needed in order to handle 51 | the concerned intents/action. 52 | 53 | ```ts 54 | @Injectable() 55 | export class MyDialogFlowProvider { 56 | 57 | @DialogFlowIntent('My:intent1') 58 | public async handleMyIntent1(dialogFlowResponse: DialogFlowResponse): Promise { 59 | /* Your code here */ 60 | return {} as DialogFlowFulfillmentResponse; 61 | } 62 | 63 | @DialogFlowIntent('My:intent2') 64 | public async handleMyIntent2(dialogFlowResponse: DialogFlowResponse): Promise { 65 | /* Your code here */ 66 | return {} as DialogFlowFulfillmentResponse; 67 | } 68 | 69 | } 70 | ``` 71 | 72 | You also have the possibility to pick any properties that you need directly from the `dialogFlowResponse`, to get them from 73 | the handler parameters. To do that, you can use the `@DialogFlowParam` decorator and pass as parameter a string path to 74 | the property that you want to pick. 75 | 76 | ```ts 77 | @Injectable() 78 | export class MyDialogFlowProvider { 79 | 80 | @DialogFlowIntent('My:intent1') 81 | public async handleMyIntent1(@DialogFlowParam('queryResult.outputContexts') outputContexts: OutputContexts): Promise { 82 | /* Your code here */ 83 | return {} as DialogFlowFulfillmentResponse; 84 | } 85 | 86 | @DialogFlowIntent('My:intent2') 87 | public async handleMyIntent2(@DialogFlowParam('queryResult') queryResult: QueryResult): Promise { 88 | /* Your code here */ 89 | return {} as DialogFlowFulfillmentResponse; 90 | } 91 | 92 | } 93 | ``` 94 | 95 | Inside the `DialogFlowModule` a middleware is apply in order to validate the token sent by `dialogFlow`, so when your start 96 | your server, you will have to set the `DIALOG_FLOW_AUTHORIZATION_TOKEN` env variable. 97 | 98 | That's it, you can run your application and test it !! :) 99 | 100 | ## Built With 101 | 102 | * [NestJS](https://github.com/nestjs/nest) A progressive Node.js framework for building efficient and scalable server-side applications on top of TypeScript & JavaScript (ES6 / ES7 / ES8) heavily inspired by Angular 103 | 104 | 105 | ## Versioning 106 | 107 | We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/adrien2p/nestjs-dialogflow/tags). 108 | 109 | ## Authors 110 | 111 | * **Adrien de Peretti** 112 | 113 | ## License 114 | 115 | This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details 116 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### JetBrains template 3 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm 4 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 5 | 6 | # User-specific stuff: 7 | .idea/**/workspace.xml 8 | .idea/**/tasks.xml 9 | .idea/dictionaries 10 | 11 | # Sensitive or high-churn files: 12 | .idea/**/dataSources/ 13 | .idea/**/dataSources.ids 14 | .idea/**/dataSources.xml 15 | .idea/**/dataSources.local.xml 16 | .idea/**/sqlDataSources.xml 17 | .idea/**/dynamic.xml 18 | .idea/**/uiDesigner.xml 19 | 20 | # Gradle: 21 | .idea/**/gradle.xml 22 | .idea/**/libraries 23 | 24 | # CMake 25 | cmake-build-debug/ 26 | 27 | # Mongo Explorer plugin: 28 | .idea/**/mongoSettings.xml 29 | 30 | ## File-based project format: 31 | *.iws 32 | 33 | ## Plugin-specific files: 34 | 35 | # IntelliJ 36 | out/ 37 | 38 | # mpeltonen/sbt-idea plugin 39 | .idea_modules/ 40 | 41 | # JIRA plugin 42 | atlassian-ide-plugin.xml 43 | 44 | # Cursive Clojure plugin 45 | .idea/replstate.xml 46 | 47 | # Crashlytics plugin (for Android Studio and IntelliJ) 48 | com_crashlytics_export_strings.xml 49 | crashlytics.properties 50 | crashlytics-build.properties 51 | fabric.properties 52 | ### VisualStudio template 53 | ## Ignore Visual Studio temporary files, build results, and 54 | ## files generated by popular Visual Studio add-ons. 55 | ## 56 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 57 | 58 | # User-specific files 59 | *.suo 60 | *.user 61 | *.userosscache 62 | *.sln.docstates 63 | 64 | # User-specific files (MonoDevelop/Xamarin Studio) 65 | *.userprefs 66 | 67 | # Build results 68 | [Dd]ebug/ 69 | [Dd]ebugPublic/ 70 | [Rr]elease/ 71 | [Rr]eleases/ 72 | x64/ 73 | x86/ 74 | bld/ 75 | [Bb]in/ 76 | [Oo]bj/ 77 | [Ll]og/ 78 | 79 | # Visual Studio 2015 cache/options directory 80 | .vs/ 81 | # Uncomment if you have tasks that create the project's static files in wwwroot 82 | #wwwroot/ 83 | 84 | # MSTest test Results 85 | [Tt]est[Rr]esult*/ 86 | [Bb]uild[Ll]og.* 87 | 88 | # NUNIT 89 | *.VisualState.xml 90 | TestResult.xml 91 | 92 | # Build Results of an ATL Project 93 | [Dd]ebugPS/ 94 | [Rr]eleasePS/ 95 | dlldata.c 96 | 97 | # Benchmark Results 98 | BenchmarkDotNet.Artifacts/ 99 | 100 | # .NET Core 101 | project.lock.json 102 | project.fragment.lock.json 103 | artifacts/ 104 | **/Properties/launchSettings.json 105 | 106 | *_i.c 107 | *_p.c 108 | *_i.h 109 | *.ilk 110 | *.meta 111 | *.obj 112 | *.pch 113 | *.pdb 114 | *.pgc 115 | *.pgd 116 | *.rsp 117 | *.sbr 118 | *.tlb 119 | *.tli 120 | *.tlh 121 | *.tmp 122 | *.tmp_proj 123 | *.log 124 | *.vspscc 125 | *.vssscc 126 | .builds 127 | *.pidb 128 | *.svclog 129 | *.scc 130 | 131 | # Chutzpah Test files 132 | _Chutzpah* 133 | 134 | # Visual C++ cache files 135 | ipch/ 136 | *.aps 137 | *.ncb 138 | *.opendb 139 | *.opensdf 140 | *.sdf 141 | *.cachefile 142 | *.VC.db 143 | *.VC.VC.opendb 144 | 145 | # Visual Studio profiler 146 | *.psess 147 | *.vsp 148 | *.vspx 149 | *.sap 150 | 151 | # Visual Studio Trace Files 152 | *.e2e 153 | 154 | # TFS 2012 Local Workspace 155 | $tf/ 156 | 157 | # Guidance Automation Toolkit 158 | *.gpState 159 | 160 | # ReSharper is a .NET coding add-in 161 | _ReSharper*/ 162 | *.[Rr]e[Ss]harper 163 | *.DotSettings.user 164 | 165 | # JustCode is a .NET coding add-in 166 | .JustCode 167 | 168 | # TeamCity is a build add-in 169 | _TeamCity* 170 | 171 | # DotCover is a Code Coverage Tool 172 | *.dotCover 173 | 174 | # AxoCover is a Code Coverage Tool 175 | .axoCover/* 176 | !.axoCover/settings.json 177 | 178 | # Visual Studio code coverage results 179 | *.coverage 180 | *.coveragexml 181 | 182 | # NCrunch 183 | _NCrunch_* 184 | .*crunch*.local.xml 185 | nCrunchTemp_* 186 | 187 | # MightyMoose 188 | *.mm.* 189 | AutoTest.Net/ 190 | 191 | # Web workbench (sass) 192 | .sass-cache/ 193 | 194 | # Installshield output folder 195 | [Ee]xpress/ 196 | 197 | # DocProject is a documentation generator add-in 198 | DocProject/buildhelp/ 199 | DocProject/Help/*.HxT 200 | DocProject/Help/*.HxC 201 | DocProject/Help/*.hhc 202 | DocProject/Help/*.hhk 203 | DocProject/Help/*.hhp 204 | DocProject/Help/Html2 205 | DocProject/Help/html 206 | 207 | # Click-Once directory 208 | publish/ 209 | 210 | # Publish Web Output 211 | *.[Pp]ublish.xml 212 | *.azurePubxml 213 | # Note: Comment the next line if you want to checkin your web deploy settings, 214 | # but database connection strings (with potential passwords) will be unencrypted 215 | *.pubxml 216 | *.publishproj 217 | 218 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 219 | # checkin your Azure Web App publish settings, but sensitive information contained 220 | # in these scripts will be unencrypted 221 | PublishScripts/ 222 | 223 | # NuGet Packages 224 | *.nupkg 225 | # The packages folder can be ignored because of Package Restore 226 | **/[Pp]ackages/* 227 | # except build/, which is used as an MSBuild target. 228 | !**/[Pp]ackages/build/ 229 | # Uncomment if necessary however generally it will be regenerated when needed 230 | #!**/[Pp]ackages/repositories.config 231 | # NuGet v3's project.json files produces more ignorable files 232 | *.nuget.props 233 | *.nuget.targets 234 | 235 | # Microsoft Azure Build Output 236 | csx/ 237 | *.build.csdef 238 | 239 | # Microsoft Azure Emulator 240 | ecf/ 241 | rcf/ 242 | 243 | # Windows Store app package directories and files 244 | AppPackages/ 245 | BundleArtifacts/ 246 | Package.StoreAssociation.xml 247 | _pkginfo.txt 248 | *.appx 249 | 250 | # Visual Studio cache files 251 | # files ending in .cache can be ignored 252 | *.[Cc]ache 253 | # but keep track of directories ending in .cache 254 | !*.[Cc]ache/ 255 | 256 | # Others 257 | ClientBin/ 258 | ~$* 259 | *~ 260 | *.dbmdl 261 | *.dbproj.schemaview 262 | *.jfm 263 | *.pfx 264 | *.publishsettings 265 | orleans.codegen.cs 266 | 267 | # Since there are multiple workflows, uncomment next line to ignore bower_providers 268 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 269 | #bower_providers/ 270 | 271 | # RIA/Silverlight projects 272 | Generated_Code/ 273 | 274 | # Backup & report files from converting an old project file 275 | # to a newer Visual Studio version. Backup files are not needed, 276 | # because we have git ;-) 277 | _UpgradeReport_Files/ 278 | Backup*/ 279 | UpgradeLog*.XML 280 | UpgradeLog*.htm 281 | 282 | # SQL Server files 283 | *.mdf 284 | *.ldf 285 | *.ndf 286 | 287 | # Business Intelligence projects 288 | *.rdl.data 289 | *.bim.layout 290 | *.bim_*.settings 291 | 292 | # Microsoft Fakes 293 | FakesAssemblies/ 294 | 295 | # GhostDoc plugin setting file 296 | *.GhostDoc.xml 297 | 298 | # Node.js Tools for Visual Studio 299 | .ntvs_analysis.dat 300 | node_modules/ 301 | 302 | # Typescript v1 declaration files 303 | typings/ 304 | 305 | # Visual Studio 6 build log 306 | *.plg 307 | 308 | # Visual Studio 6 workspace options file 309 | *.opt 310 | 311 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 312 | *.vbw 313 | 314 | # Visual Studio LightSwitch build output 315 | **/*.HTMLClient/GeneratedArtifacts 316 | **/*.DesktopClient/GeneratedArtifacts 317 | **/*.DesktopClient/ModelManifest.xml 318 | **/*.Server/GeneratedArtifacts 319 | **/*.Server/ModelManifest.xml 320 | _Pvt_Extensions 321 | 322 | # Paket dependency manager 323 | .paket/paket.exe 324 | paket-files/ 325 | 326 | # FAKE - F# Make 327 | .fake/ 328 | 329 | # JetBrains Rider 330 | .idea/ 331 | *.sln.iml 332 | 333 | # CodeRush 334 | .cr/ 335 | 336 | # Python Tools for Visual Studio (PTVS) 337 | __pycache__/ 338 | *.pyc 339 | 340 | # Cake - Uncomment if you are using it 341 | # tools/** 342 | # !tools/packages.config 343 | 344 | # Tabs Studio 345 | *.tss 346 | 347 | # Telerik's JustMock configuration file 348 | *.jmconfig 349 | 350 | # BizTalk build output 351 | *.btp.cs 352 | *.btm.cs 353 | *.odx.cs 354 | *.xsd.cs 355 | 356 | # OpenCover UI analysis results 357 | OpenCover/ 358 | coverage/ 359 | 360 | ### macOS template 361 | # General 362 | .DS_Store 363 | .AppleDouble 364 | .LSOverride 365 | 366 | # Icon must end with two \r 367 | Icon 368 | 369 | # Thumbnails 370 | ._* 371 | 372 | # Files that might appear in the root of a volume 373 | .DocumentRevisions-V100 374 | .fseventsd 375 | .Spotlight-V100 376 | .TemporaryItems 377 | .Trashes 378 | .VolumeIcon.icns 379 | .com.apple.timemachine.donotpresent 380 | 381 | # Directories potentially created on remote AFP share 382 | .AppleDB 383 | .AppleDesktop 384 | Network Trash Folder 385 | Temporary Items 386 | .apdisk 387 | 388 | ======= 389 | # Local 390 | docker-compose.yml 391 | .env 392 | 393 | lib/ -------------------------------------------------------------------------------- /samples/01-dialogflow-handlers/.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### JetBrains template 3 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm 4 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 5 | 6 | # User-specific stuff: 7 | .idea/**/workspace.xml 8 | .idea/**/tasks.xml 9 | .idea/dictionaries 10 | 11 | # Sensitive or high-churn files: 12 | .idea/**/dataSources/ 13 | .idea/**/dataSources.ids 14 | .idea/**/dataSources.xml 15 | .idea/**/dataSources.local.xml 16 | .idea/**/sqlDataSources.xml 17 | .idea/**/dynamic.xml 18 | .idea/**/uiDesigner.xml 19 | 20 | # Gradle: 21 | .idea/**/gradle.xml 22 | .idea/**/libraries 23 | 24 | # CMake 25 | cmake-build-debug/ 26 | 27 | # Mongo Explorer plugin: 28 | .idea/**/mongoSettings.xml 29 | 30 | ## File-based project format: 31 | *.iws 32 | 33 | ## Plugin-specific files: 34 | 35 | # IntelliJ 36 | out/ 37 | 38 | # mpeltonen/sbt-idea plugin 39 | .idea_modules/ 40 | 41 | # JIRA plugin 42 | atlassian-ide-plugin.xml 43 | 44 | # Cursive Clojure plugin 45 | .idea/replstate.xml 46 | 47 | # Crashlytics plugin (for Android Studio and IntelliJ) 48 | com_crashlytics_export_strings.xml 49 | crashlytics.properties 50 | crashlytics-build.properties 51 | fabric.properties 52 | ### VisualStudio template 53 | ## Ignore Visual Studio temporary files, build results, and 54 | ## files generated by popular Visual Studio add-ons. 55 | ## 56 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 57 | 58 | # User-specific files 59 | *.suo 60 | *.user 61 | *.userosscache 62 | *.sln.docstates 63 | 64 | # User-specific files (MonoDevelop/Xamarin Studio) 65 | *.userprefs 66 | 67 | # Build results 68 | [Dd]ebug/ 69 | [Dd]ebugPublic/ 70 | [Rr]elease/ 71 | [Rr]eleases/ 72 | x64/ 73 | x86/ 74 | bld/ 75 | [Bb]in/ 76 | [Oo]bj/ 77 | [Ll]og/ 78 | 79 | # Visual Studio 2015 cache/options directory 80 | .vs/ 81 | # Uncomment if you have tasks that create the project's static files in wwwroot 82 | #wwwroot/ 83 | 84 | # MSTest test Results 85 | [Tt]est[Rr]esult*/ 86 | [Bb]uild[Ll]og.* 87 | 88 | # NUNIT 89 | *.VisualState.xml 90 | TestResult.xml 91 | 92 | # Build Results of an ATL Project 93 | [Dd]ebugPS/ 94 | [Rr]eleasePS/ 95 | dlldata.c 96 | 97 | # Benchmark Results 98 | BenchmarkDotNet.Artifacts/ 99 | 100 | # .NET Core 101 | project.lock.json 102 | project.fragment.lock.json 103 | artifacts/ 104 | **/Properties/launchSettings.json 105 | 106 | *_i.c 107 | *_p.c 108 | *_i.h 109 | *.ilk 110 | *.meta 111 | *.obj 112 | *.pch 113 | *.pdb 114 | *.pgc 115 | *.pgd 116 | *.rsp 117 | *.sbr 118 | *.tlb 119 | *.tli 120 | *.tlh 121 | *.tmp 122 | *.tmp_proj 123 | *.log 124 | *.vspscc 125 | *.vssscc 126 | .builds 127 | *.pidb 128 | *.svclog 129 | *.scc 130 | 131 | # Chutzpah Test files 132 | _Chutzpah* 133 | 134 | # Visual C++ cache files 135 | ipch/ 136 | *.aps 137 | *.ncb 138 | *.opendb 139 | *.opensdf 140 | *.sdf 141 | *.cachefile 142 | *.VC.db 143 | *.VC.VC.opendb 144 | 145 | # Visual Studio profiler 146 | *.psess 147 | *.vsp 148 | *.vspx 149 | *.sap 150 | 151 | # Visual Studio Trace Files 152 | *.e2e 153 | 154 | # TFS 2012 Local Workspace 155 | $tf/ 156 | 157 | # Guidance Automation Toolkit 158 | *.gpState 159 | 160 | # ReSharper is a .NET coding add-in 161 | _ReSharper*/ 162 | *.[Rr]e[Ss]harper 163 | *.DotSettings.user 164 | 165 | # JustCode is a .NET coding add-in 166 | .JustCode 167 | 168 | # TeamCity is a build add-in 169 | _TeamCity* 170 | 171 | # DotCover is a Code Coverage Tool 172 | *.dotCover 173 | 174 | # AxoCover is a Code Coverage Tool 175 | .axoCover/* 176 | !.axoCover/settings.json 177 | 178 | # Visual Studio code coverage results 179 | *.coverage 180 | *.coveragexml 181 | 182 | # NCrunch 183 | _NCrunch_* 184 | .*crunch*.local.xml 185 | nCrunchTemp_* 186 | 187 | # MightyMoose 188 | *.mm.* 189 | AutoTest.Net/ 190 | 191 | # Web workbench (sass) 192 | .sass-cache/ 193 | 194 | # Installshield output folder 195 | [Ee]xpress/ 196 | 197 | # DocProject is a documentation generator add-in 198 | DocProject/buildhelp/ 199 | DocProject/Help/*.HxT 200 | DocProject/Help/*.HxC 201 | DocProject/Help/*.hhc 202 | DocProject/Help/*.hhk 203 | DocProject/Help/*.hhp 204 | DocProject/Help/Html2 205 | DocProject/Help/html 206 | 207 | # Click-Once directory 208 | publish/ 209 | 210 | # Publish Web Output 211 | *.[Pp]ublish.xml 212 | *.azurePubxml 213 | # Note: Comment the next line if you want to checkin your web deploy settings, 214 | # but database connection strings (with potential passwords) will be unencrypted 215 | *.pubxml 216 | *.publishproj 217 | 218 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 219 | # checkin your Azure Web App publish settings, but sensitive information contained 220 | # in these scripts will be unencrypted 221 | PublishScripts/ 222 | 223 | # NuGet Packages 224 | *.nupkg 225 | # The packages folder can be ignored because of Package Restore 226 | **/[Pp]ackages/* 227 | # except build/, which is used as an MSBuild target. 228 | !**/[Pp]ackages/build/ 229 | # Uncomment if necessary however generally it will be regenerated when needed 230 | #!**/[Pp]ackages/repositories.config 231 | # NuGet v3's project.json files produces more ignorable files 232 | *.nuget.props 233 | *.nuget.targets 234 | 235 | # Microsoft Azure Build Output 236 | csx/ 237 | *.build.csdef 238 | 239 | # Microsoft Azure Emulator 240 | ecf/ 241 | rcf/ 242 | 243 | # Windows Store app package directories and files 244 | AppPackages/ 245 | BundleArtifacts/ 246 | Package.StoreAssociation.xml 247 | _pkginfo.txt 248 | *.appx 249 | 250 | # Visual Studio cache files 251 | # files ending in .cache can be ignored 252 | *.[Cc]ache 253 | # but keep track of directories ending in .cache 254 | !*.[Cc]ache/ 255 | 256 | # Others 257 | ClientBin/ 258 | ~$* 259 | *~ 260 | *.dbmdl 261 | *.dbproj.schemaview 262 | *.jfm 263 | *.pfx 264 | *.publishsettings 265 | orleans.codegen.cs 266 | 267 | # Since there are multiple workflows, uncomment next line to ignore bower_providers 268 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 269 | #bower_providers/ 270 | 271 | # RIA/Silverlight projects 272 | Generated_Code/ 273 | 274 | # Backup & report files from converting an old project file 275 | # to a newer Visual Studio version. Backup files are not needed, 276 | # because we have git ;-) 277 | _UpgradeReport_Files/ 278 | Backup*/ 279 | UpgradeLog*.XML 280 | UpgradeLog*.htm 281 | 282 | # SQL Server files 283 | *.mdf 284 | *.ldf 285 | *.ndf 286 | 287 | # Business Intelligence projects 288 | *.rdl.data 289 | *.bim.layout 290 | *.bim_*.settings 291 | 292 | # Microsoft Fakes 293 | FakesAssemblies/ 294 | 295 | # GhostDoc plugin setting file 296 | *.GhostDoc.xml 297 | 298 | # Node.js Tools for Visual Studio 299 | .ntvs_analysis.dat 300 | node_modules/ 301 | 302 | # Typescript v1 declaration files 303 | typings/ 304 | 305 | # Visual Studio 6 build log 306 | *.plg 307 | 308 | # Visual Studio 6 workspace options file 309 | *.opt 310 | 311 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 312 | *.vbw 313 | 314 | # Visual Studio LightSwitch build output 315 | **/*.HTMLClient/GeneratedArtifacts 316 | **/*.DesktopClient/GeneratedArtifacts 317 | **/*.DesktopClient/ModelManifest.xml 318 | **/*.Server/GeneratedArtifacts 319 | **/*.Server/ModelManifest.xml 320 | _Pvt_Extensions 321 | 322 | # Paket dependency manager 323 | .paket/paket.exe 324 | paket-files/ 325 | 326 | # FAKE - F# Make 327 | .fake/ 328 | 329 | # JetBrains Rider 330 | .idea/ 331 | *.sln.iml 332 | 333 | # CodeRush 334 | .cr/ 335 | 336 | # Python Tools for Visual Studio (PTVS) 337 | __pycache__/ 338 | *.pyc 339 | 340 | # Cake - Uncomment if you are using it 341 | # tools/** 342 | # !tools/packages.config 343 | 344 | # Tabs Studio 345 | *.tss 346 | 347 | # Telerik's JustMock configuration file 348 | *.jmconfig 349 | 350 | # BizTalk build output 351 | *.btp.cs 352 | *.btm.cs 353 | *.odx.cs 354 | *.xsd.cs 355 | 356 | # OpenCover UI analysis results 357 | OpenCover/ 358 | coverage/ 359 | 360 | ### macOS template 361 | # General 362 | .DS_Store 363 | .AppleDouble 364 | .LSOverride 365 | 366 | # Icon must end with two \r 367 | Icon 368 | 369 | # Thumbnails 370 | ._* 371 | 372 | # Files that might appear in the root of a volume 373 | .DocumentRevisions-V100 374 | .fseventsd 375 | .Spotlight-V100 376 | .TemporaryItems 377 | .Trashes 378 | .VolumeIcon.icns 379 | .com.apple.timemachine.donotpresent 380 | 381 | # Directories potentially created on remote AFP share 382 | .AppleDB 383 | .AppleDesktop 384 | Network Trash Folder 385 | Temporary Items 386 | .apdisk 387 | 388 | ======= 389 | # Local 390 | docker-compose.yml 391 | .env 392 | -------------------------------------------------------------------------------- /samples/01-dialogflow-handlers/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7": 6 | version "7.16.7" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" 8 | dependencies: 9 | "@babel/highlight" "^7.16.7" 10 | 11 | "@babel/compat-data@^7.16.4": 12 | version "7.16.8" 13 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" 14 | 15 | "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": 16 | version "7.16.12" 17 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.12.tgz#5edc53c1b71e54881315923ae2aedea2522bb784" 18 | dependencies: 19 | "@babel/code-frame" "^7.16.7" 20 | "@babel/generator" "^7.16.8" 21 | "@babel/helper-compilation-targets" "^7.16.7" 22 | "@babel/helper-module-transforms" "^7.16.7" 23 | "@babel/helpers" "^7.16.7" 24 | "@babel/parser" "^7.16.12" 25 | "@babel/template" "^7.16.7" 26 | "@babel/traverse" "^7.16.10" 27 | "@babel/types" "^7.16.8" 28 | convert-source-map "^1.7.0" 29 | debug "^4.1.0" 30 | gensync "^1.0.0-beta.2" 31 | json5 "^2.1.2" 32 | semver "^6.3.0" 33 | source-map "^0.5.0" 34 | 35 | "@babel/generator@^7.16.8", "@babel/generator@^7.7.2": 36 | version "7.16.8" 37 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.8.tgz#359d44d966b8cd059d543250ce79596f792f2ebe" 38 | dependencies: 39 | "@babel/types" "^7.16.8" 40 | jsesc "^2.5.1" 41 | source-map "^0.5.0" 42 | 43 | "@babel/helper-compilation-targets@^7.16.7": 44 | version "7.16.7" 45 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" 46 | dependencies: 47 | "@babel/compat-data" "^7.16.4" 48 | "@babel/helper-validator-option" "^7.16.7" 49 | browserslist "^4.17.5" 50 | semver "^6.3.0" 51 | 52 | "@babel/helper-environment-visitor@^7.16.7": 53 | version "7.16.7" 54 | resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" 55 | dependencies: 56 | "@babel/types" "^7.16.7" 57 | 58 | "@babel/helper-function-name@^7.16.7": 59 | version "7.16.7" 60 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" 61 | dependencies: 62 | "@babel/helper-get-function-arity" "^7.16.7" 63 | "@babel/template" "^7.16.7" 64 | "@babel/types" "^7.16.7" 65 | 66 | "@babel/helper-get-function-arity@^7.16.7": 67 | version "7.16.7" 68 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" 69 | dependencies: 70 | "@babel/types" "^7.16.7" 71 | 72 | "@babel/helper-hoist-variables@^7.16.7": 73 | version "7.16.7" 74 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" 75 | dependencies: 76 | "@babel/types" "^7.16.7" 77 | 78 | "@babel/helper-module-imports@^7.16.7": 79 | version "7.16.7" 80 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" 81 | dependencies: 82 | "@babel/types" "^7.16.7" 83 | 84 | "@babel/helper-module-transforms@^7.16.7": 85 | version "7.16.7" 86 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41" 87 | dependencies: 88 | "@babel/helper-environment-visitor" "^7.16.7" 89 | "@babel/helper-module-imports" "^7.16.7" 90 | "@babel/helper-simple-access" "^7.16.7" 91 | "@babel/helper-split-export-declaration" "^7.16.7" 92 | "@babel/helper-validator-identifier" "^7.16.7" 93 | "@babel/template" "^7.16.7" 94 | "@babel/traverse" "^7.16.7" 95 | "@babel/types" "^7.16.7" 96 | 97 | "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0": 98 | version "7.16.7" 99 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" 100 | 101 | "@babel/helper-simple-access@^7.16.7": 102 | version "7.16.7" 103 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" 104 | dependencies: 105 | "@babel/types" "^7.16.7" 106 | 107 | "@babel/helper-split-export-declaration@^7.16.7": 108 | version "7.16.7" 109 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" 110 | dependencies: 111 | "@babel/types" "^7.16.7" 112 | 113 | "@babel/helper-validator-identifier@^7.16.7": 114 | version "7.16.7" 115 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" 116 | 117 | "@babel/helper-validator-option@^7.16.7": 118 | version "7.16.7" 119 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" 120 | 121 | "@babel/helpers@^7.16.7": 122 | version "7.16.7" 123 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc" 124 | dependencies: 125 | "@babel/template" "^7.16.7" 126 | "@babel/traverse" "^7.16.7" 127 | "@babel/types" "^7.16.7" 128 | 129 | "@babel/highlight@^7.16.7": 130 | version "7.16.10" 131 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" 132 | dependencies: 133 | "@babel/helper-validator-identifier" "^7.16.7" 134 | chalk "^2.0.0" 135 | js-tokens "^4.0.0" 136 | 137 | "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.10", "@babel/parser@^7.16.12", "@babel/parser@^7.16.7": 138 | version "7.16.12" 139 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.12.tgz#9474794f9a650cf5e2f892444227f98e28cdf8b6" 140 | 141 | "@babel/plugin-syntax-async-generators@^7.8.4": 142 | version "7.8.4" 143 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" 144 | dependencies: 145 | "@babel/helper-plugin-utils" "^7.8.0" 146 | 147 | "@babel/plugin-syntax-bigint@^7.8.3": 148 | version "7.8.3" 149 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" 150 | dependencies: 151 | "@babel/helper-plugin-utils" "^7.8.0" 152 | 153 | "@babel/plugin-syntax-class-properties@^7.8.3": 154 | version "7.12.13" 155 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" 156 | dependencies: 157 | "@babel/helper-plugin-utils" "^7.12.13" 158 | 159 | "@babel/plugin-syntax-import-meta@^7.8.3": 160 | version "7.10.4" 161 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" 162 | dependencies: 163 | "@babel/helper-plugin-utils" "^7.10.4" 164 | 165 | "@babel/plugin-syntax-json-strings@^7.8.3": 166 | version "7.8.3" 167 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" 168 | dependencies: 169 | "@babel/helper-plugin-utils" "^7.8.0" 170 | 171 | "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": 172 | version "7.10.4" 173 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" 174 | dependencies: 175 | "@babel/helper-plugin-utils" "^7.10.4" 176 | 177 | "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": 178 | version "7.8.3" 179 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" 180 | dependencies: 181 | "@babel/helper-plugin-utils" "^7.8.0" 182 | 183 | "@babel/plugin-syntax-numeric-separator@^7.8.3": 184 | version "7.10.4" 185 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" 186 | dependencies: 187 | "@babel/helper-plugin-utils" "^7.10.4" 188 | 189 | "@babel/plugin-syntax-object-rest-spread@^7.8.3": 190 | version "7.8.3" 191 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" 192 | dependencies: 193 | "@babel/helper-plugin-utils" "^7.8.0" 194 | 195 | "@babel/plugin-syntax-optional-catch-binding@^7.8.3": 196 | version "7.8.3" 197 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" 198 | dependencies: 199 | "@babel/helper-plugin-utils" "^7.8.0" 200 | 201 | "@babel/plugin-syntax-optional-chaining@^7.8.3": 202 | version "7.8.3" 203 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" 204 | dependencies: 205 | "@babel/helper-plugin-utils" "^7.8.0" 206 | 207 | "@babel/plugin-syntax-top-level-await@^7.8.3": 208 | version "7.14.5" 209 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" 210 | dependencies: 211 | "@babel/helper-plugin-utils" "^7.14.5" 212 | 213 | "@babel/plugin-syntax-typescript@^7.7.2": 214 | version "7.16.7" 215 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" 216 | dependencies: 217 | "@babel/helper-plugin-utils" "^7.16.7" 218 | 219 | "@babel/template@^7.16.7", "@babel/template@^7.3.3": 220 | version "7.16.7" 221 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" 222 | dependencies: 223 | "@babel/code-frame" "^7.16.7" 224 | "@babel/parser" "^7.16.7" 225 | "@babel/types" "^7.16.7" 226 | 227 | "@babel/traverse@^7.16.10", "@babel/traverse@^7.16.7", "@babel/traverse@^7.7.2": 228 | version "7.16.10" 229 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.10.tgz#448f940defbe95b5a8029975b051f75993e8239f" 230 | dependencies: 231 | "@babel/code-frame" "^7.16.7" 232 | "@babel/generator" "^7.16.8" 233 | "@babel/helper-environment-visitor" "^7.16.7" 234 | "@babel/helper-function-name" "^7.16.7" 235 | "@babel/helper-hoist-variables" "^7.16.7" 236 | "@babel/helper-split-export-declaration" "^7.16.7" 237 | "@babel/parser" "^7.16.10" 238 | "@babel/types" "^7.16.8" 239 | debug "^4.1.0" 240 | globals "^11.1.0" 241 | 242 | "@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.3.0", "@babel/types@^7.3.3": 243 | version "7.16.8" 244 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.8.tgz#0ba5da91dd71e0a4e7781a30f22770831062e3c1" 245 | dependencies: 246 | "@babel/helper-validator-identifier" "^7.16.7" 247 | to-fast-properties "^2.0.0" 248 | 249 | "@bcoe/v8-coverage@^0.2.3": 250 | version "0.2.3" 251 | resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" 252 | 253 | "@cspotcode/source-map-consumer@0.8.0": 254 | version "0.8.0" 255 | resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" 256 | 257 | "@cspotcode/source-map-support@0.7.0": 258 | version "0.7.0" 259 | resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz#4789840aa859e46d2f3173727ab707c66bf344f5" 260 | dependencies: 261 | "@cspotcode/source-map-consumer" "0.8.0" 262 | 263 | "@istanbuljs/load-nyc-config@^1.0.0": 264 | version "1.1.0" 265 | resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" 266 | dependencies: 267 | camelcase "^5.3.1" 268 | find-up "^4.1.0" 269 | get-package-type "^0.1.0" 270 | js-yaml "^3.13.1" 271 | resolve-from "^5.0.0" 272 | 273 | "@istanbuljs/schema@^0.1.2": 274 | version "0.1.3" 275 | resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" 276 | 277 | "@jest/console@^27.4.6": 278 | version "27.4.6" 279 | resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.4.6.tgz#0742e6787f682b22bdad56f9db2a8a77f6a86107" 280 | dependencies: 281 | "@jest/types" "^27.4.2" 282 | "@types/node" "*" 283 | chalk "^4.0.0" 284 | jest-message-util "^27.4.6" 285 | jest-util "^27.4.2" 286 | slash "^3.0.0" 287 | 288 | "@jest/core@^27.4.7": 289 | version "27.4.7" 290 | resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.4.7.tgz#84eabdf42a25f1fa138272ed229bcf0a1b5e6913" 291 | dependencies: 292 | "@jest/console" "^27.4.6" 293 | "@jest/reporters" "^27.4.6" 294 | "@jest/test-result" "^27.4.6" 295 | "@jest/transform" "^27.4.6" 296 | "@jest/types" "^27.4.2" 297 | "@types/node" "*" 298 | ansi-escapes "^4.2.1" 299 | chalk "^4.0.0" 300 | emittery "^0.8.1" 301 | exit "^0.1.2" 302 | graceful-fs "^4.2.4" 303 | jest-changed-files "^27.4.2" 304 | jest-config "^27.4.7" 305 | jest-haste-map "^27.4.6" 306 | jest-message-util "^27.4.6" 307 | jest-regex-util "^27.4.0" 308 | jest-resolve "^27.4.6" 309 | jest-resolve-dependencies "^27.4.6" 310 | jest-runner "^27.4.6" 311 | jest-runtime "^27.4.6" 312 | jest-snapshot "^27.4.6" 313 | jest-util "^27.4.2" 314 | jest-validate "^27.4.6" 315 | jest-watcher "^27.4.6" 316 | micromatch "^4.0.4" 317 | rimraf "^3.0.0" 318 | slash "^3.0.0" 319 | strip-ansi "^6.0.0" 320 | 321 | "@jest/environment@^27.4.6": 322 | version "27.4.6" 323 | resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.4.6.tgz#1e92885d64f48c8454df35ed9779fbcf31c56d8b" 324 | dependencies: 325 | "@jest/fake-timers" "^27.4.6" 326 | "@jest/types" "^27.4.2" 327 | "@types/node" "*" 328 | jest-mock "^27.4.6" 329 | 330 | "@jest/fake-timers@^27.4.6": 331 | version "27.4.6" 332 | resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.4.6.tgz#e026ae1671316dbd04a56945be2fa251204324e8" 333 | dependencies: 334 | "@jest/types" "^27.4.2" 335 | "@sinonjs/fake-timers" "^8.0.1" 336 | "@types/node" "*" 337 | jest-message-util "^27.4.6" 338 | jest-mock "^27.4.6" 339 | jest-util "^27.4.2" 340 | 341 | "@jest/globals@^27.4.6": 342 | version "27.4.6" 343 | resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.4.6.tgz#3f09bed64b0fd7f5f996920258bd4be8f52f060a" 344 | dependencies: 345 | "@jest/environment" "^27.4.6" 346 | "@jest/types" "^27.4.2" 347 | expect "^27.4.6" 348 | 349 | "@jest/reporters@^27.4.6": 350 | version "27.4.6" 351 | resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.4.6.tgz#b53dec3a93baf9b00826abf95b932de919d6d8dd" 352 | dependencies: 353 | "@bcoe/v8-coverage" "^0.2.3" 354 | "@jest/console" "^27.4.6" 355 | "@jest/test-result" "^27.4.6" 356 | "@jest/transform" "^27.4.6" 357 | "@jest/types" "^27.4.2" 358 | "@types/node" "*" 359 | chalk "^4.0.0" 360 | collect-v8-coverage "^1.0.0" 361 | exit "^0.1.2" 362 | glob "^7.1.2" 363 | graceful-fs "^4.2.4" 364 | istanbul-lib-coverage "^3.0.0" 365 | istanbul-lib-instrument "^5.1.0" 366 | istanbul-lib-report "^3.0.0" 367 | istanbul-lib-source-maps "^4.0.0" 368 | istanbul-reports "^3.1.3" 369 | jest-haste-map "^27.4.6" 370 | jest-resolve "^27.4.6" 371 | jest-util "^27.4.2" 372 | jest-worker "^27.4.6" 373 | slash "^3.0.0" 374 | source-map "^0.6.0" 375 | string-length "^4.0.1" 376 | terminal-link "^2.0.0" 377 | v8-to-istanbul "^8.1.0" 378 | 379 | "@jest/source-map@^27.4.0": 380 | version "27.4.0" 381 | resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.4.0.tgz#2f0385d0d884fb3e2554e8f71f8fa957af9a74b6" 382 | dependencies: 383 | callsites "^3.0.0" 384 | graceful-fs "^4.2.4" 385 | source-map "^0.6.0" 386 | 387 | "@jest/test-result@^27.4.6": 388 | version "27.4.6" 389 | resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.4.6.tgz#b3df94c3d899c040f602cea296979844f61bdf69" 390 | dependencies: 391 | "@jest/console" "^27.4.6" 392 | "@jest/types" "^27.4.2" 393 | "@types/istanbul-lib-coverage" "^2.0.0" 394 | collect-v8-coverage "^1.0.0" 395 | 396 | "@jest/test-sequencer@^27.4.6": 397 | version "27.4.6" 398 | resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.4.6.tgz#447339b8a3d7b5436f50934df30854e442a9d904" 399 | dependencies: 400 | "@jest/test-result" "^27.4.6" 401 | graceful-fs "^4.2.4" 402 | jest-haste-map "^27.4.6" 403 | jest-runtime "^27.4.6" 404 | 405 | "@jest/transform@^27.4.6": 406 | version "27.4.6" 407 | resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.4.6.tgz#153621940b1ed500305eacdb31105d415dc30231" 408 | dependencies: 409 | "@babel/core" "^7.1.0" 410 | "@jest/types" "^27.4.2" 411 | babel-plugin-istanbul "^6.1.1" 412 | chalk "^4.0.0" 413 | convert-source-map "^1.4.0" 414 | fast-json-stable-stringify "^2.0.0" 415 | graceful-fs "^4.2.4" 416 | jest-haste-map "^27.4.6" 417 | jest-regex-util "^27.4.0" 418 | jest-util "^27.4.2" 419 | micromatch "^4.0.4" 420 | pirates "^4.0.4" 421 | slash "^3.0.0" 422 | source-map "^0.6.1" 423 | write-file-atomic "^3.0.0" 424 | 425 | "@jest/types@^27.4.2": 426 | version "27.4.2" 427 | resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.4.2.tgz#96536ebd34da6392c2b7c7737d693885b5dd44a5" 428 | dependencies: 429 | "@types/istanbul-lib-coverage" "^2.0.0" 430 | "@types/istanbul-reports" "^3.0.0" 431 | "@types/node" "*" 432 | "@types/yargs" "^16.0.0" 433 | chalk "^4.0.0" 434 | 435 | "@nestjs-plus/discovery@^2.0.2": 436 | version "2.0.2" 437 | resolved "https://registry.yarnpkg.com/@nestjs-plus/discovery/-/discovery-2.0.2.tgz#c29a2d70ddecf58082fa3f2574ef511b916c1e8d" 438 | 439 | "@nestjs/common@^8.2.6": 440 | version "8.2.6" 441 | resolved "https://registry.yarnpkg.com/@nestjs/common/-/common-8.2.6.tgz#34cd5cc44082d3525c56c95db42ca0e5277b7d85" 442 | dependencies: 443 | axios "0.24.0" 444 | iterare "1.2.1" 445 | tslib "2.3.1" 446 | uuid "8.3.2" 447 | 448 | "@nestjs/core@^8.2.6": 449 | version "8.2.6" 450 | resolved "https://registry.yarnpkg.com/@nestjs/core/-/core-8.2.6.tgz#08eb38203fb01a828227ea25972d38bfef5c818f" 451 | dependencies: 452 | "@nuxtjs/opencollective" "0.3.2" 453 | fast-safe-stringify "2.1.1" 454 | iterare "1.2.1" 455 | object-hash "2.2.0" 456 | path-to-regexp "3.2.0" 457 | tslib "2.3.1" 458 | uuid "8.3.2" 459 | 460 | "@nestjs/testing@^8.2.6": 461 | version "8.2.6" 462 | resolved "https://registry.yarnpkg.com/@nestjs/testing/-/testing-8.2.6.tgz#a0677d6b2e774cc805f6fa9e46a74584ca82d8f9" 463 | dependencies: 464 | optional "0.1.4" 465 | tslib "2.3.1" 466 | 467 | "@nuxtjs/opencollective@0.3.2": 468 | version "0.3.2" 469 | resolved "https://registry.yarnpkg.com/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz#620ce1044f7ac77185e825e1936115bb38e2681c" 470 | dependencies: 471 | chalk "^4.1.0" 472 | consola "^2.15.0" 473 | node-fetch "^2.6.1" 474 | 475 | "@sindresorhus/is@^0.14.0": 476 | version "0.14.0" 477 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" 478 | 479 | "@sinonjs/commons@^1.7.0": 480 | version "1.8.3" 481 | resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" 482 | dependencies: 483 | type-detect "4.0.8" 484 | 485 | "@sinonjs/fake-timers@^8.0.1": 486 | version "8.1.0" 487 | resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" 488 | dependencies: 489 | "@sinonjs/commons" "^1.7.0" 490 | 491 | "@szmarczak/http-timer@^1.1.2": 492 | version "1.1.2" 493 | resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" 494 | dependencies: 495 | defer-to-connect "^1.0.1" 496 | 497 | "@tootallnate/once@1": 498 | version "1.1.2" 499 | resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" 500 | 501 | "@tsconfig/node10@^1.0.7": 502 | version "1.0.8" 503 | resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" 504 | 505 | "@tsconfig/node12@^1.0.7": 506 | version "1.0.9" 507 | resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" 508 | 509 | "@tsconfig/node14@^1.0.0": 510 | version "1.0.1" 511 | resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" 512 | 513 | "@tsconfig/node16@^1.0.2": 514 | version "1.0.2" 515 | resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" 516 | 517 | "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": 518 | version "7.1.18" 519 | resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8" 520 | dependencies: 521 | "@babel/parser" "^7.1.0" 522 | "@babel/types" "^7.0.0" 523 | "@types/babel__generator" "*" 524 | "@types/babel__template" "*" 525 | "@types/babel__traverse" "*" 526 | 527 | "@types/babel__generator@*": 528 | version "7.6.4" 529 | resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" 530 | dependencies: 531 | "@babel/types" "^7.0.0" 532 | 533 | "@types/babel__template@*": 534 | version "7.4.1" 535 | resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" 536 | dependencies: 537 | "@babel/parser" "^7.1.0" 538 | "@babel/types" "^7.0.0" 539 | 540 | "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": 541 | version "7.14.2" 542 | resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" 543 | dependencies: 544 | "@babel/types" "^7.3.0" 545 | 546 | "@types/body-parser@*": 547 | version "1.16.8" 548 | resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.16.8.tgz#687ec34140624a3bec2b1a8ea9268478ae8f3be3" 549 | dependencies: 550 | "@types/express" "*" 551 | "@types/node" "*" 552 | 553 | "@types/color-name@^1.1.1": 554 | version "1.1.1" 555 | resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 556 | 557 | "@types/express-serve-static-core@*": 558 | version "4.0.57" 559 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.0.57.tgz#3cd8ab4b11d5ecd70393bada7fc1c480491537dd" 560 | dependencies: 561 | "@types/node" "*" 562 | 563 | "@types/express@*", "@types/express@^4.0.39": 564 | version "4.0.39" 565 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.0.39.tgz#1441f21d52b33be8d4fa8a865c15a6a91cd0fa09" 566 | dependencies: 567 | "@types/body-parser" "*" 568 | "@types/express-serve-static-core" "*" 569 | "@types/serve-static" "*" 570 | 571 | "@types/graceful-fs@^4.1.2": 572 | version "4.1.5" 573 | resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" 574 | dependencies: 575 | "@types/node" "*" 576 | 577 | "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": 578 | version "2.0.4" 579 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" 580 | 581 | "@types/istanbul-lib-report@*": 582 | version "3.0.0" 583 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" 584 | dependencies: 585 | "@types/istanbul-lib-coverage" "*" 586 | 587 | "@types/istanbul-reports@^3.0.0": 588 | version "3.0.1" 589 | resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" 590 | dependencies: 591 | "@types/istanbul-lib-report" "*" 592 | 593 | "@types/jest@^27.4.0": 594 | version "27.4.0" 595 | resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.0.tgz#037ab8b872067cae842a320841693080f9cb84ed" 596 | dependencies: 597 | jest-diff "^27.0.0" 598 | pretty-format "^27.0.0" 599 | 600 | "@types/json5@^0.0.29": 601 | version "0.0.29" 602 | resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" 603 | 604 | "@types/mime@*": 605 | version "2.0.0" 606 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.0.tgz#5a7306e367c539b9f6543499de8dd519fac37a8b" 607 | 608 | "@types/node@*": 609 | version "8.5.1" 610 | resolved "https://registry.yarnpkg.com/@types/node/-/node-8.5.1.tgz#4ec3020bcdfe2abffeef9ba3fbf26fca097514b5" 611 | 612 | "@types/node@^12.20.42": 613 | version "12.20.42" 614 | resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.42.tgz#2f021733232c2130c26f9eabbdd3bfd881774733" 615 | 616 | "@types/prettier@^2.1.5": 617 | version "2.4.3" 618 | resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.3.tgz#a3c65525b91fca7da00ab1a3ac2b5a2a4afbffbf" 619 | 620 | "@types/serve-static@*": 621 | version "1.13.1" 622 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.1.tgz#1d2801fa635d274cd97d4ec07e26b21b44127492" 623 | dependencies: 624 | "@types/express-serve-static-core" "*" 625 | "@types/mime" "*" 626 | 627 | "@types/stack-utils@^2.0.0": 628 | version "2.0.1" 629 | resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" 630 | 631 | "@types/superagent@*": 632 | version "3.5.6" 633 | resolved "https://registry.yarnpkg.com/@types/superagent/-/superagent-3.5.6.tgz#9cf2632c075ba9e601f6a610aadc23992d02394c" 634 | dependencies: 635 | "@types/node" "*" 636 | 637 | "@types/supertest@^2.0.4": 638 | version "2.0.4" 639 | resolved "https://registry.yarnpkg.com/@types/supertest/-/supertest-2.0.4.tgz#28770e13293365e240a842d7d5c5a1b3d2dee593" 640 | dependencies: 641 | "@types/superagent" "*" 642 | 643 | "@types/yargs-parser@*": 644 | version "20.2.1" 645 | resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" 646 | 647 | "@types/yargs@^16.0.0": 648 | version "16.0.4" 649 | resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" 650 | dependencies: 651 | "@types/yargs-parser" "*" 652 | 653 | abab@^2.0.3, abab@^2.0.5: 654 | version "2.0.5" 655 | resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" 656 | 657 | abbrev@1: 658 | version "1.1.1" 659 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 660 | 661 | acorn-globals@^6.0.0: 662 | version "6.0.0" 663 | resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" 664 | dependencies: 665 | acorn "^7.1.1" 666 | acorn-walk "^7.1.1" 667 | 668 | acorn-walk@^7.1.1: 669 | version "7.2.0" 670 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" 671 | 672 | acorn-walk@^8.1.1: 673 | version "8.2.0" 674 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" 675 | 676 | acorn@^7.1.1: 677 | version "7.4.1" 678 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 679 | 680 | acorn@^8.2.4, acorn@^8.4.1: 681 | version "8.7.0" 682 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" 683 | 684 | agent-base@6: 685 | version "6.0.2" 686 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 687 | dependencies: 688 | debug "4" 689 | 690 | ansi-align@^3.0.0: 691 | version "3.0.0" 692 | resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" 693 | dependencies: 694 | string-width "^3.0.0" 695 | 696 | ansi-escapes@^4.2.1: 697 | version "4.3.2" 698 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" 699 | dependencies: 700 | type-fest "^0.21.3" 701 | 702 | ansi-regex@^4.1.0: 703 | version "4.1.0" 704 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 705 | 706 | ansi-regex@^5.0.0: 707 | version "5.0.0" 708 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 709 | 710 | ansi-regex@^5.0.1: 711 | version "5.0.1" 712 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 713 | 714 | ansi-styles@^3.1.0: 715 | version "3.2.0" 716 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" 717 | dependencies: 718 | color-convert "^1.9.0" 719 | 720 | ansi-styles@^3.2.1: 721 | version "3.2.1" 722 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 723 | dependencies: 724 | color-convert "^1.9.0" 725 | 726 | ansi-styles@^4.0.0: 727 | version "4.3.0" 728 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 729 | dependencies: 730 | color-convert "^2.0.1" 731 | 732 | ansi-styles@^4.1.0: 733 | version "4.2.1" 734 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" 735 | dependencies: 736 | "@types/color-name" "^1.1.1" 737 | color-convert "^2.0.1" 738 | 739 | ansi-styles@^5.0.0: 740 | version "5.2.0" 741 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" 742 | 743 | anymatch@^3.0.3, anymatch@~3.1.2: 744 | version "3.1.2" 745 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 746 | dependencies: 747 | normalize-path "^3.0.0" 748 | picomatch "^2.0.4" 749 | 750 | arg@^4.1.0: 751 | version "4.1.3" 752 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 753 | 754 | argparse@^1.0.7: 755 | version "1.0.10" 756 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 757 | dependencies: 758 | sprintf-js "~1.0.2" 759 | 760 | asap@^2.0.0: 761 | version "2.0.6" 762 | resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" 763 | 764 | asynckit@^0.4.0: 765 | version "0.4.0" 766 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 767 | 768 | axios@0.24.0: 769 | version "0.24.0" 770 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.24.0.tgz#804e6fa1e4b9c5288501dd9dff56a7a0940d20d6" 771 | dependencies: 772 | follow-redirects "^1.14.4" 773 | 774 | babel-jest@^27.4.6: 775 | version "27.4.6" 776 | resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.4.6.tgz#4d024e69e241cdf4f396e453a07100f44f7ce314" 777 | dependencies: 778 | "@jest/transform" "^27.4.6" 779 | "@jest/types" "^27.4.2" 780 | "@types/babel__core" "^7.1.14" 781 | babel-plugin-istanbul "^6.1.1" 782 | babel-preset-jest "^27.4.0" 783 | chalk "^4.0.0" 784 | graceful-fs "^4.2.4" 785 | slash "^3.0.0" 786 | 787 | babel-plugin-istanbul@^6.1.1: 788 | version "6.1.1" 789 | resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" 790 | dependencies: 791 | "@babel/helper-plugin-utils" "^7.0.0" 792 | "@istanbuljs/load-nyc-config" "^1.0.0" 793 | "@istanbuljs/schema" "^0.1.2" 794 | istanbul-lib-instrument "^5.0.4" 795 | test-exclude "^6.0.0" 796 | 797 | babel-plugin-jest-hoist@^27.4.0: 798 | version "27.4.0" 799 | resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.4.0.tgz#d7831fc0f93573788d80dee7e682482da4c730d6" 800 | dependencies: 801 | "@babel/template" "^7.3.3" 802 | "@babel/types" "^7.3.3" 803 | "@types/babel__core" "^7.0.0" 804 | "@types/babel__traverse" "^7.0.6" 805 | 806 | babel-preset-current-node-syntax@^1.0.0: 807 | version "1.0.1" 808 | resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" 809 | dependencies: 810 | "@babel/plugin-syntax-async-generators" "^7.8.4" 811 | "@babel/plugin-syntax-bigint" "^7.8.3" 812 | "@babel/plugin-syntax-class-properties" "^7.8.3" 813 | "@babel/plugin-syntax-import-meta" "^7.8.3" 814 | "@babel/plugin-syntax-json-strings" "^7.8.3" 815 | "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" 816 | "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" 817 | "@babel/plugin-syntax-numeric-separator" "^7.8.3" 818 | "@babel/plugin-syntax-object-rest-spread" "^7.8.3" 819 | "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" 820 | "@babel/plugin-syntax-optional-chaining" "^7.8.3" 821 | "@babel/plugin-syntax-top-level-await" "^7.8.3" 822 | 823 | babel-preset-jest@^27.4.0: 824 | version "27.4.0" 825 | resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.4.0.tgz#70d0e676a282ccb200fbabd7f415db5fdf393bca" 826 | dependencies: 827 | babel-plugin-jest-hoist "^27.4.0" 828 | babel-preset-current-node-syntax "^1.0.0" 829 | 830 | balanced-match@^1.0.0: 831 | version "1.0.0" 832 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 833 | 834 | binary-extensions@^2.0.0: 835 | version "2.2.0" 836 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 837 | 838 | boxen@^5.0.0: 839 | version "5.1.2" 840 | resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" 841 | dependencies: 842 | ansi-align "^3.0.0" 843 | camelcase "^6.2.0" 844 | chalk "^4.1.0" 845 | cli-boxes "^2.2.1" 846 | string-width "^4.2.2" 847 | type-fest "^0.20.2" 848 | widest-line "^3.1.0" 849 | wrap-ansi "^7.0.0" 850 | 851 | brace-expansion@^1.1.7: 852 | version "1.1.11" 853 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 854 | dependencies: 855 | balanced-match "^1.0.0" 856 | concat-map "0.0.1" 857 | 858 | braces@^3.0.1, braces@~3.0.2: 859 | version "3.0.2" 860 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 861 | dependencies: 862 | fill-range "^7.0.1" 863 | 864 | browser-process-hrtime@^1.0.0: 865 | version "1.0.0" 866 | resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" 867 | 868 | browserslist@^4.17.5: 869 | version "4.19.1" 870 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" 871 | dependencies: 872 | caniuse-lite "^1.0.30001286" 873 | electron-to-chromium "^1.4.17" 874 | escalade "^3.1.1" 875 | node-releases "^2.0.1" 876 | picocolors "^1.0.0" 877 | 878 | bs-logger@0.x: 879 | version "0.2.6" 880 | resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" 881 | dependencies: 882 | fast-json-stable-stringify "2.x" 883 | 884 | bser@^2.0.0: 885 | version "2.0.0" 886 | resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" 887 | dependencies: 888 | node-int64 "^0.4.0" 889 | 890 | buffer-from@^1.0.0: 891 | version "1.1.1" 892 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 893 | 894 | builtin-modules@^1.1.1: 895 | version "1.1.1" 896 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 897 | 898 | cacheable-request@^6.0.0: 899 | version "6.1.0" 900 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" 901 | dependencies: 902 | clone-response "^1.0.2" 903 | get-stream "^5.1.0" 904 | http-cache-semantics "^4.0.0" 905 | keyv "^3.0.0" 906 | lowercase-keys "^2.0.0" 907 | normalize-url "^4.1.0" 908 | responselike "^1.0.2" 909 | 910 | call-bind@^1.0.0: 911 | version "1.0.2" 912 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 913 | dependencies: 914 | function-bind "^1.1.1" 915 | get-intrinsic "^1.0.2" 916 | 917 | callsites@^3.0.0: 918 | version "3.1.0" 919 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 920 | 921 | camelcase@^5.3.1: 922 | version "5.3.1" 923 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 924 | 925 | camelcase@^6.2.0: 926 | version "6.3.0" 927 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 928 | 929 | caniuse-lite@^1.0.30001286: 930 | version "1.0.30001301" 931 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001301.tgz#ebc9086026534cab0dab99425d9c3b4425e5f450" 932 | 933 | chalk@^2.0.0: 934 | version "2.4.2" 935 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 936 | dependencies: 937 | ansi-styles "^3.2.1" 938 | escape-string-regexp "^1.0.5" 939 | supports-color "^5.3.0" 940 | 941 | chalk@^2.3.0: 942 | version "2.3.0" 943 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" 944 | dependencies: 945 | ansi-styles "^3.1.0" 946 | escape-string-regexp "^1.0.5" 947 | supports-color "^4.0.0" 948 | 949 | chalk@^4.0.0, chalk@^4.1.0: 950 | version "4.1.2" 951 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 952 | dependencies: 953 | ansi-styles "^4.1.0" 954 | supports-color "^7.1.0" 955 | 956 | char-regex@^1.0.2: 957 | version "1.0.2" 958 | resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" 959 | 960 | chokidar@^3.5.2: 961 | version "3.5.3" 962 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 963 | dependencies: 964 | anymatch "~3.1.2" 965 | braces "~3.0.2" 966 | glob-parent "~5.1.2" 967 | is-binary-path "~2.1.0" 968 | is-glob "~4.0.1" 969 | normalize-path "~3.0.0" 970 | readdirp "~3.6.0" 971 | optionalDependencies: 972 | fsevents "~2.3.2" 973 | 974 | ci-info@^2.0.0: 975 | version "2.0.0" 976 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" 977 | 978 | ci-info@^3.2.0: 979 | version "3.3.0" 980 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" 981 | 982 | cjs-module-lexer@^1.0.0: 983 | version "1.2.2" 984 | resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" 985 | 986 | cli-boxes@^2.2.1: 987 | version "2.2.1" 988 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" 989 | 990 | cliui@^7.0.2: 991 | version "7.0.4" 992 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 993 | dependencies: 994 | string-width "^4.2.0" 995 | strip-ansi "^6.0.0" 996 | wrap-ansi "^7.0.0" 997 | 998 | clone-response@^1.0.2: 999 | version "1.0.2" 1000 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" 1001 | dependencies: 1002 | mimic-response "^1.0.0" 1003 | 1004 | co@^4.6.0: 1005 | version "4.6.0" 1006 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 1007 | 1008 | collect-v8-coverage@^1.0.0: 1009 | version "1.0.1" 1010 | resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" 1011 | 1012 | color-convert@^1.9.0: 1013 | version "1.9.1" 1014 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" 1015 | dependencies: 1016 | color-name "^1.1.1" 1017 | 1018 | color-convert@^2.0.1: 1019 | version "2.0.1" 1020 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 1021 | dependencies: 1022 | color-name "~1.1.4" 1023 | 1024 | color-name@^1.1.1: 1025 | version "1.1.3" 1026 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 1027 | 1028 | color-name@~1.1.4: 1029 | version "1.1.4" 1030 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 1031 | 1032 | combined-stream@^1.0.8: 1033 | version "1.0.8" 1034 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 1035 | dependencies: 1036 | delayed-stream "~1.0.0" 1037 | 1038 | commander@^2.12.1: 1039 | version "2.20.3" 1040 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 1041 | 1042 | component-emitter@^1.3.0: 1043 | version "1.3.0" 1044 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" 1045 | 1046 | concat-map@0.0.1: 1047 | version "0.0.1" 1048 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 1049 | 1050 | configstore@^5.0.1: 1051 | version "5.0.1" 1052 | resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" 1053 | dependencies: 1054 | dot-prop "^5.2.0" 1055 | graceful-fs "^4.1.2" 1056 | make-dir "^3.0.0" 1057 | unique-string "^2.0.0" 1058 | write-file-atomic "^3.0.0" 1059 | xdg-basedir "^4.0.0" 1060 | 1061 | consola@^2.15.0: 1062 | version "2.15.3" 1063 | resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" 1064 | 1065 | convert-source-map@^1.4.0: 1066 | version "1.5.1" 1067 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" 1068 | 1069 | convert-source-map@^1.6.0, convert-source-map@^1.7.0: 1070 | version "1.8.0" 1071 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" 1072 | dependencies: 1073 | safe-buffer "~5.1.1" 1074 | 1075 | cookiejar@^2.1.3: 1076 | version "2.1.3" 1077 | resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" 1078 | 1079 | create-require@^1.1.0: 1080 | version "1.1.1" 1081 | resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" 1082 | 1083 | cross-spawn@^7.0.3: 1084 | version "7.0.3" 1085 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 1086 | dependencies: 1087 | path-key "^3.1.0" 1088 | shebang-command "^2.0.0" 1089 | which "^2.0.1" 1090 | 1091 | crypto-random-string@^2.0.0: 1092 | version "2.0.0" 1093 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" 1094 | 1095 | cssom@^0.4.4: 1096 | version "0.4.4" 1097 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" 1098 | 1099 | cssom@~0.3.6: 1100 | version "0.3.8" 1101 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" 1102 | 1103 | cssstyle@^2.3.0: 1104 | version "2.3.0" 1105 | resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" 1106 | dependencies: 1107 | cssom "~0.3.6" 1108 | 1109 | data-urls@^2.0.0: 1110 | version "2.0.0" 1111 | resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" 1112 | dependencies: 1113 | abab "^2.0.3" 1114 | whatwg-mimetype "^2.3.0" 1115 | whatwg-url "^8.0.0" 1116 | 1117 | debug@4, debug@^4.1.1: 1118 | version "4.1.1" 1119 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 1120 | dependencies: 1121 | ms "^2.1.1" 1122 | 1123 | debug@^3.2.7: 1124 | version "3.2.7" 1125 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 1126 | dependencies: 1127 | ms "^2.1.1" 1128 | 1129 | debug@^4.1.0, debug@^4.3.3: 1130 | version "4.3.3" 1131 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" 1132 | dependencies: 1133 | ms "2.1.2" 1134 | 1135 | decimal.js@^10.2.1: 1136 | version "10.3.1" 1137 | resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" 1138 | 1139 | decompress-response@^3.3.0: 1140 | version "3.3.0" 1141 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" 1142 | dependencies: 1143 | mimic-response "^1.0.0" 1144 | 1145 | dedent@^0.7.0: 1146 | version "0.7.0" 1147 | resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" 1148 | 1149 | deep-extend@^0.6.0: 1150 | version "0.6.0" 1151 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 1152 | 1153 | deep-is@~0.1.3: 1154 | version "0.1.3" 1155 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 1156 | 1157 | deepmerge@^4.2.2: 1158 | version "4.2.2" 1159 | resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" 1160 | 1161 | defer-to-connect@^1.0.1: 1162 | version "1.1.3" 1163 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" 1164 | 1165 | delayed-stream@~1.0.0: 1166 | version "1.0.0" 1167 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 1168 | 1169 | detect-newline@^3.0.0: 1170 | version "3.1.0" 1171 | resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" 1172 | 1173 | dezalgo@1.0.3: 1174 | version "1.0.3" 1175 | resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" 1176 | dependencies: 1177 | asap "^2.0.0" 1178 | wrappy "1" 1179 | 1180 | diff-sequences@^27.4.0: 1181 | version "27.4.0" 1182 | resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.4.0.tgz#d783920ad8d06ec718a060d00196dfef25b132a5" 1183 | 1184 | diff@^4.0.1: 1185 | version "4.0.2" 1186 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 1187 | 1188 | domexception@^2.0.1: 1189 | version "2.0.1" 1190 | resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" 1191 | dependencies: 1192 | webidl-conversions "^5.0.0" 1193 | 1194 | dot-prop@^5.2.0: 1195 | version "5.3.0" 1196 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" 1197 | dependencies: 1198 | is-obj "^2.0.0" 1199 | 1200 | duplexer3@^0.1.4: 1201 | version "0.1.4" 1202 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" 1203 | 1204 | electron-to-chromium@^1.4.17: 1205 | version "1.4.52" 1206 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.52.tgz#ce44c6d6cc449e7688a4356b8c261cfeafa26833" 1207 | 1208 | emittery@^0.8.1: 1209 | version "0.8.1" 1210 | resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" 1211 | 1212 | emoji-regex@^7.0.1: 1213 | version "7.0.3" 1214 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 1215 | 1216 | emoji-regex@^8.0.0: 1217 | version "8.0.0" 1218 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 1219 | 1220 | end-of-stream@^1.1.0: 1221 | version "1.4.4" 1222 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 1223 | dependencies: 1224 | once "^1.4.0" 1225 | 1226 | escalade@^3.1.1: 1227 | version "3.1.1" 1228 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 1229 | 1230 | escape-goat@^2.0.0: 1231 | version "2.1.1" 1232 | resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" 1233 | 1234 | escape-string-regexp@^1.0.5: 1235 | version "1.0.5" 1236 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1237 | 1238 | escape-string-regexp@^2.0.0: 1239 | version "2.0.0" 1240 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" 1241 | 1242 | escodegen@^2.0.0: 1243 | version "2.0.0" 1244 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" 1245 | dependencies: 1246 | esprima "^4.0.1" 1247 | estraverse "^5.2.0" 1248 | esutils "^2.0.2" 1249 | optionator "^0.8.1" 1250 | optionalDependencies: 1251 | source-map "~0.6.1" 1252 | 1253 | esprima@^4.0.0, esprima@^4.0.1: 1254 | version "4.0.1" 1255 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1256 | 1257 | estraverse@^5.2.0: 1258 | version "5.3.0" 1259 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 1260 | 1261 | esutils@^2.0.2: 1262 | version "2.0.2" 1263 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 1264 | 1265 | execa@^5.0.0: 1266 | version "5.1.1" 1267 | resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" 1268 | dependencies: 1269 | cross-spawn "^7.0.3" 1270 | get-stream "^6.0.0" 1271 | human-signals "^2.1.0" 1272 | is-stream "^2.0.0" 1273 | merge-stream "^2.0.0" 1274 | npm-run-path "^4.0.1" 1275 | onetime "^5.1.2" 1276 | signal-exit "^3.0.3" 1277 | strip-final-newline "^2.0.0" 1278 | 1279 | exit@^0.1.2: 1280 | version "0.1.2" 1281 | resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" 1282 | 1283 | expect@^27.4.6: 1284 | version "27.4.6" 1285 | resolved "https://registry.yarnpkg.com/expect/-/expect-27.4.6.tgz#f335e128b0335b6ceb4fcab67ece7cbd14c942e6" 1286 | dependencies: 1287 | "@jest/types" "^27.4.2" 1288 | jest-get-type "^27.4.0" 1289 | jest-matcher-utils "^27.4.6" 1290 | jest-message-util "^27.4.6" 1291 | 1292 | fast-json-stable-stringify@2.x: 1293 | version "2.1.0" 1294 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 1295 | 1296 | fast-json-stable-stringify@^2.0.0: 1297 | version "2.0.0" 1298 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 1299 | 1300 | fast-levenshtein@~2.0.4: 1301 | version "2.0.6" 1302 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1303 | 1304 | fast-safe-stringify@2.1.1, fast-safe-stringify@^2.1.1: 1305 | version "2.1.1" 1306 | resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" 1307 | 1308 | fb-watchman@^2.0.0: 1309 | version "2.0.0" 1310 | resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" 1311 | dependencies: 1312 | bser "^2.0.0" 1313 | 1314 | fill-range@^7.0.1: 1315 | version "7.0.1" 1316 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 1317 | dependencies: 1318 | to-regex-range "^5.0.1" 1319 | 1320 | find-up@^4.0.0, find-up@^4.1.0: 1321 | version "4.1.0" 1322 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 1323 | dependencies: 1324 | locate-path "^5.0.0" 1325 | path-exists "^4.0.0" 1326 | 1327 | follow-redirects@^1.14.4: 1328 | version "1.14.8" 1329 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" 1330 | 1331 | form-data@^3.0.0: 1332 | version "3.0.1" 1333 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" 1334 | dependencies: 1335 | asynckit "^0.4.0" 1336 | combined-stream "^1.0.8" 1337 | mime-types "^2.1.12" 1338 | 1339 | form-data@^4.0.0: 1340 | version "4.0.0" 1341 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" 1342 | dependencies: 1343 | asynckit "^0.4.0" 1344 | combined-stream "^1.0.8" 1345 | mime-types "^2.1.12" 1346 | 1347 | formidable@^2.0.1: 1348 | version "2.0.1" 1349 | resolved "https://registry.yarnpkg.com/formidable/-/formidable-2.0.1.tgz#4310bc7965d185536f9565184dee74fbb75557ff" 1350 | dependencies: 1351 | dezalgo "1.0.3" 1352 | hexoid "1.0.0" 1353 | once "1.4.0" 1354 | qs "6.9.3" 1355 | 1356 | fs.realpath@^1.0.0: 1357 | version "1.0.0" 1358 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1359 | 1360 | fsevents@^2.3.2, fsevents@~2.3.2: 1361 | version "2.3.2" 1362 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 1363 | 1364 | function-bind@^1.1.1: 1365 | version "1.1.1" 1366 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1367 | 1368 | gensync@^1.0.0-beta.2: 1369 | version "1.0.0-beta.2" 1370 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 1371 | 1372 | get-caller-file@^2.0.5: 1373 | version "2.0.5" 1374 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1375 | 1376 | get-intrinsic@^1.0.2: 1377 | version "1.1.1" 1378 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 1379 | dependencies: 1380 | function-bind "^1.1.1" 1381 | has "^1.0.3" 1382 | has-symbols "^1.0.1" 1383 | 1384 | get-package-type@^0.1.0: 1385 | version "0.1.0" 1386 | resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" 1387 | 1388 | get-stream@^4.1.0: 1389 | version "4.1.0" 1390 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" 1391 | dependencies: 1392 | pump "^3.0.0" 1393 | 1394 | get-stream@^5.1.0: 1395 | version "5.2.0" 1396 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" 1397 | dependencies: 1398 | pump "^3.0.0" 1399 | 1400 | get-stream@^6.0.0: 1401 | version "6.0.1" 1402 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" 1403 | 1404 | glob-parent@~5.1.2: 1405 | version "5.1.2" 1406 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 1407 | dependencies: 1408 | is-glob "^4.0.1" 1409 | 1410 | glob@^7.1.1, glob@^7.1.2: 1411 | version "7.1.2" 1412 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 1413 | dependencies: 1414 | fs.realpath "^1.0.0" 1415 | inflight "^1.0.4" 1416 | inherits "2" 1417 | minimatch "^3.0.4" 1418 | once "^1.3.0" 1419 | path-is-absolute "^1.0.0" 1420 | 1421 | glob@^7.1.3: 1422 | version "7.1.4" 1423 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" 1424 | dependencies: 1425 | fs.realpath "^1.0.0" 1426 | inflight "^1.0.4" 1427 | inherits "2" 1428 | minimatch "^3.0.4" 1429 | once "^1.3.0" 1430 | path-is-absolute "^1.0.0" 1431 | 1432 | glob@^7.1.4: 1433 | version "7.2.0" 1434 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 1435 | dependencies: 1436 | fs.realpath "^1.0.0" 1437 | inflight "^1.0.4" 1438 | inherits "2" 1439 | minimatch "^3.0.4" 1440 | once "^1.3.0" 1441 | path-is-absolute "^1.0.0" 1442 | 1443 | global-dirs@^3.0.0: 1444 | version "3.0.0" 1445 | resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" 1446 | dependencies: 1447 | ini "2.0.0" 1448 | 1449 | globals@^11.1.0: 1450 | version "11.12.0" 1451 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 1452 | 1453 | got@^9.6.0: 1454 | version "9.6.0" 1455 | resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" 1456 | dependencies: 1457 | "@sindresorhus/is" "^0.14.0" 1458 | "@szmarczak/http-timer" "^1.1.2" 1459 | cacheable-request "^6.0.0" 1460 | decompress-response "^3.3.0" 1461 | duplexer3 "^0.1.4" 1462 | get-stream "^4.1.0" 1463 | lowercase-keys "^1.0.1" 1464 | mimic-response "^1.0.1" 1465 | p-cancelable "^1.0.0" 1466 | to-readable-stream "^1.0.0" 1467 | url-parse-lax "^3.0.0" 1468 | 1469 | graceful-fs@^4.1.2: 1470 | version "4.1.15" 1471 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" 1472 | 1473 | graceful-fs@^4.2.4: 1474 | version "4.2.9" 1475 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" 1476 | 1477 | has-flag@^2.0.0: 1478 | version "2.0.0" 1479 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" 1480 | 1481 | has-flag@^3.0.0: 1482 | version "3.0.0" 1483 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1484 | 1485 | has-flag@^4.0.0: 1486 | version "4.0.0" 1487 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1488 | 1489 | has-symbols@^1.0.1: 1490 | version "1.0.2" 1491 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" 1492 | 1493 | has-yarn@^2.1.0: 1494 | version "2.1.0" 1495 | resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" 1496 | 1497 | has@^1.0.3: 1498 | version "1.0.3" 1499 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1500 | dependencies: 1501 | function-bind "^1.1.1" 1502 | 1503 | hexoid@1.0.0: 1504 | version "1.0.0" 1505 | resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" 1506 | 1507 | html-encoding-sniffer@^2.0.1: 1508 | version "2.0.1" 1509 | resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" 1510 | dependencies: 1511 | whatwg-encoding "^1.0.5" 1512 | 1513 | html-escaper@^2.0.0: 1514 | version "2.0.2" 1515 | resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" 1516 | 1517 | http-cache-semantics@^4.0.0: 1518 | version "4.1.0" 1519 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" 1520 | 1521 | http-proxy-agent@^4.0.1: 1522 | version "4.0.1" 1523 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" 1524 | dependencies: 1525 | "@tootallnate/once" "1" 1526 | agent-base "6" 1527 | debug "4" 1528 | 1529 | https-proxy-agent@^5.0.0: 1530 | version "5.0.0" 1531 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" 1532 | dependencies: 1533 | agent-base "6" 1534 | debug "4" 1535 | 1536 | human-signals@^2.1.0: 1537 | version "2.1.0" 1538 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" 1539 | 1540 | iconv-lite@0.4.24: 1541 | version "0.4.24" 1542 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1543 | dependencies: 1544 | safer-buffer ">= 2.1.2 < 3" 1545 | 1546 | ignore-by-default@^1.0.1: 1547 | version "1.0.1" 1548 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" 1549 | 1550 | import-lazy@^2.1.0: 1551 | version "2.1.0" 1552 | resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" 1553 | 1554 | import-local@^3.0.2: 1555 | version "3.1.0" 1556 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" 1557 | dependencies: 1558 | pkg-dir "^4.2.0" 1559 | resolve-cwd "^3.0.0" 1560 | 1561 | imurmurhash@^0.1.4: 1562 | version "0.1.4" 1563 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1564 | 1565 | inflight@^1.0.4: 1566 | version "1.0.6" 1567 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1568 | dependencies: 1569 | once "^1.3.0" 1570 | wrappy "1" 1571 | 1572 | inherits@2, inherits@^2.0.3: 1573 | version "2.0.3" 1574 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1575 | 1576 | ini@2.0.0: 1577 | version "2.0.0" 1578 | resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" 1579 | 1580 | ini@~1.3.0: 1581 | version "1.3.7" 1582 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" 1583 | 1584 | is-binary-path@~2.1.0: 1585 | version "2.1.0" 1586 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 1587 | dependencies: 1588 | binary-extensions "^2.0.0" 1589 | 1590 | is-ci@^2.0.0: 1591 | version "2.0.0" 1592 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" 1593 | dependencies: 1594 | ci-info "^2.0.0" 1595 | 1596 | is-core-module@^2.8.1: 1597 | version "2.8.1" 1598 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" 1599 | dependencies: 1600 | has "^1.0.3" 1601 | 1602 | is-extglob@^2.1.1: 1603 | version "2.1.1" 1604 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1605 | 1606 | is-fullwidth-code-point@^2.0.0: 1607 | version "2.0.0" 1608 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1609 | 1610 | is-fullwidth-code-point@^3.0.0: 1611 | version "3.0.0" 1612 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1613 | 1614 | is-generator-fn@^2.0.0: 1615 | version "2.1.0" 1616 | resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" 1617 | 1618 | is-glob@^4.0.1: 1619 | version "4.0.1" 1620 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 1621 | dependencies: 1622 | is-extglob "^2.1.1" 1623 | 1624 | is-glob@~4.0.1: 1625 | version "4.0.3" 1626 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1627 | dependencies: 1628 | is-extglob "^2.1.1" 1629 | 1630 | is-installed-globally@^0.4.0: 1631 | version "0.4.0" 1632 | resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" 1633 | dependencies: 1634 | global-dirs "^3.0.0" 1635 | is-path-inside "^3.0.2" 1636 | 1637 | is-npm@^5.0.0: 1638 | version "5.0.0" 1639 | resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" 1640 | 1641 | is-number@^7.0.0: 1642 | version "7.0.0" 1643 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1644 | 1645 | is-obj@^2.0.0: 1646 | version "2.0.0" 1647 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" 1648 | 1649 | is-path-inside@^3.0.2: 1650 | version "3.0.3" 1651 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" 1652 | 1653 | is-potential-custom-element-name@^1.0.1: 1654 | version "1.0.1" 1655 | resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" 1656 | 1657 | is-stream@^2.0.0: 1658 | version "2.0.1" 1659 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" 1660 | 1661 | is-typedarray@^1.0.0: 1662 | version "1.0.0" 1663 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1664 | 1665 | is-yarn-global@^0.3.0: 1666 | version "0.3.0" 1667 | resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" 1668 | 1669 | isexe@^2.0.0: 1670 | version "2.0.0" 1671 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1672 | 1673 | istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: 1674 | version "3.2.0" 1675 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" 1676 | 1677 | istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: 1678 | version "5.1.0" 1679 | resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" 1680 | dependencies: 1681 | "@babel/core" "^7.12.3" 1682 | "@babel/parser" "^7.14.7" 1683 | "@istanbuljs/schema" "^0.1.2" 1684 | istanbul-lib-coverage "^3.2.0" 1685 | semver "^6.3.0" 1686 | 1687 | istanbul-lib-report@^3.0.0: 1688 | version "3.0.0" 1689 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" 1690 | dependencies: 1691 | istanbul-lib-coverage "^3.0.0" 1692 | make-dir "^3.0.0" 1693 | supports-color "^7.1.0" 1694 | 1695 | istanbul-lib-source-maps@^4.0.0: 1696 | version "4.0.1" 1697 | resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" 1698 | dependencies: 1699 | debug "^4.1.1" 1700 | istanbul-lib-coverage "^3.0.0" 1701 | source-map "^0.6.1" 1702 | 1703 | istanbul-reports@^3.1.3: 1704 | version "3.1.3" 1705 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.3.tgz#4bcae3103b94518117930d51283690960b50d3c2" 1706 | dependencies: 1707 | html-escaper "^2.0.0" 1708 | istanbul-lib-report "^3.0.0" 1709 | 1710 | iterare@1.2.1: 1711 | version "1.2.1" 1712 | resolved "https://registry.yarnpkg.com/iterare/-/iterare-1.2.1.tgz#139c400ff7363690e33abffa33cbba8920f00042" 1713 | 1714 | jest-changed-files@^27.4.2: 1715 | version "27.4.2" 1716 | resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.4.2.tgz#da2547ea47c6e6a5f6ed336151bd2075736eb4a5" 1717 | dependencies: 1718 | "@jest/types" "^27.4.2" 1719 | execa "^5.0.0" 1720 | throat "^6.0.1" 1721 | 1722 | jest-circus@^27.4.6: 1723 | version "27.4.6" 1724 | resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.4.6.tgz#d3af34c0eb742a967b1919fbb351430727bcea6c" 1725 | dependencies: 1726 | "@jest/environment" "^27.4.6" 1727 | "@jest/test-result" "^27.4.6" 1728 | "@jest/types" "^27.4.2" 1729 | "@types/node" "*" 1730 | chalk "^4.0.0" 1731 | co "^4.6.0" 1732 | dedent "^0.7.0" 1733 | expect "^27.4.6" 1734 | is-generator-fn "^2.0.0" 1735 | jest-each "^27.4.6" 1736 | jest-matcher-utils "^27.4.6" 1737 | jest-message-util "^27.4.6" 1738 | jest-runtime "^27.4.6" 1739 | jest-snapshot "^27.4.6" 1740 | jest-util "^27.4.2" 1741 | pretty-format "^27.4.6" 1742 | slash "^3.0.0" 1743 | stack-utils "^2.0.3" 1744 | throat "^6.0.1" 1745 | 1746 | jest-cli@^27.4.7: 1747 | version "27.4.7" 1748 | resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.4.7.tgz#d00e759e55d77b3bcfea0715f527c394ca314e5a" 1749 | dependencies: 1750 | "@jest/core" "^27.4.7" 1751 | "@jest/test-result" "^27.4.6" 1752 | "@jest/types" "^27.4.2" 1753 | chalk "^4.0.0" 1754 | exit "^0.1.2" 1755 | graceful-fs "^4.2.4" 1756 | import-local "^3.0.2" 1757 | jest-config "^27.4.7" 1758 | jest-util "^27.4.2" 1759 | jest-validate "^27.4.6" 1760 | prompts "^2.0.1" 1761 | yargs "^16.2.0" 1762 | 1763 | jest-config@^27.4.7: 1764 | version "27.4.7" 1765 | resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.4.7.tgz#4f084b2acbd172c8b43aa4cdffe75d89378d3972" 1766 | dependencies: 1767 | "@babel/core" "^7.8.0" 1768 | "@jest/test-sequencer" "^27.4.6" 1769 | "@jest/types" "^27.4.2" 1770 | babel-jest "^27.4.6" 1771 | chalk "^4.0.0" 1772 | ci-info "^3.2.0" 1773 | deepmerge "^4.2.2" 1774 | glob "^7.1.1" 1775 | graceful-fs "^4.2.4" 1776 | jest-circus "^27.4.6" 1777 | jest-environment-jsdom "^27.4.6" 1778 | jest-environment-node "^27.4.6" 1779 | jest-get-type "^27.4.0" 1780 | jest-jasmine2 "^27.4.6" 1781 | jest-regex-util "^27.4.0" 1782 | jest-resolve "^27.4.6" 1783 | jest-runner "^27.4.6" 1784 | jest-util "^27.4.2" 1785 | jest-validate "^27.4.6" 1786 | micromatch "^4.0.4" 1787 | pretty-format "^27.4.6" 1788 | slash "^3.0.0" 1789 | 1790 | jest-diff@^27.0.0, jest-diff@^27.4.6: 1791 | version "27.4.6" 1792 | resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.4.6.tgz#93815774d2012a2cbb6cf23f84d48c7a2618f98d" 1793 | dependencies: 1794 | chalk "^4.0.0" 1795 | diff-sequences "^27.4.0" 1796 | jest-get-type "^27.4.0" 1797 | pretty-format "^27.4.6" 1798 | 1799 | jest-docblock@^27.4.0: 1800 | version "27.4.0" 1801 | resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.4.0.tgz#06c78035ca93cbbb84faf8fce64deae79a59f69f" 1802 | dependencies: 1803 | detect-newline "^3.0.0" 1804 | 1805 | jest-each@^27.4.6: 1806 | version "27.4.6" 1807 | resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.4.6.tgz#e7e8561be61d8cc6dbf04296688747ab186c40ff" 1808 | dependencies: 1809 | "@jest/types" "^27.4.2" 1810 | chalk "^4.0.0" 1811 | jest-get-type "^27.4.0" 1812 | jest-util "^27.4.2" 1813 | pretty-format "^27.4.6" 1814 | 1815 | jest-environment-jsdom@^27.4.6: 1816 | version "27.4.6" 1817 | resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.4.6.tgz#c23a394eb445b33621dfae9c09e4c8021dea7b36" 1818 | dependencies: 1819 | "@jest/environment" "^27.4.6" 1820 | "@jest/fake-timers" "^27.4.6" 1821 | "@jest/types" "^27.4.2" 1822 | "@types/node" "*" 1823 | jest-mock "^27.4.6" 1824 | jest-util "^27.4.2" 1825 | jsdom "^16.6.0" 1826 | 1827 | jest-environment-node@^27.4.6: 1828 | version "27.4.6" 1829 | resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.4.6.tgz#ee8cd4ef458a0ef09d087c8cd52ca5856df90242" 1830 | dependencies: 1831 | "@jest/environment" "^27.4.6" 1832 | "@jest/fake-timers" "^27.4.6" 1833 | "@jest/types" "^27.4.2" 1834 | "@types/node" "*" 1835 | jest-mock "^27.4.6" 1836 | jest-util "^27.4.2" 1837 | 1838 | jest-get-type@^27.4.0: 1839 | version "27.4.0" 1840 | resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.4.0.tgz#7503d2663fffa431638337b3998d39c5e928e9b5" 1841 | 1842 | jest-haste-map@^27.4.6: 1843 | version "27.4.6" 1844 | resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.4.6.tgz#c60b5233a34ca0520f325b7e2cc0a0140ad0862a" 1845 | dependencies: 1846 | "@jest/types" "^27.4.2" 1847 | "@types/graceful-fs" "^4.1.2" 1848 | "@types/node" "*" 1849 | anymatch "^3.0.3" 1850 | fb-watchman "^2.0.0" 1851 | graceful-fs "^4.2.4" 1852 | jest-regex-util "^27.4.0" 1853 | jest-serializer "^27.4.0" 1854 | jest-util "^27.4.2" 1855 | jest-worker "^27.4.6" 1856 | micromatch "^4.0.4" 1857 | walker "^1.0.7" 1858 | optionalDependencies: 1859 | fsevents "^2.3.2" 1860 | 1861 | jest-jasmine2@^27.4.6: 1862 | version "27.4.6" 1863 | resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.4.6.tgz#109e8bc036cb455950ae28a018f983f2abe50127" 1864 | dependencies: 1865 | "@jest/environment" "^27.4.6" 1866 | "@jest/source-map" "^27.4.0" 1867 | "@jest/test-result" "^27.4.6" 1868 | "@jest/types" "^27.4.2" 1869 | "@types/node" "*" 1870 | chalk "^4.0.0" 1871 | co "^4.6.0" 1872 | expect "^27.4.6" 1873 | is-generator-fn "^2.0.0" 1874 | jest-each "^27.4.6" 1875 | jest-matcher-utils "^27.4.6" 1876 | jest-message-util "^27.4.6" 1877 | jest-runtime "^27.4.6" 1878 | jest-snapshot "^27.4.6" 1879 | jest-util "^27.4.2" 1880 | pretty-format "^27.4.6" 1881 | throat "^6.0.1" 1882 | 1883 | jest-leak-detector@^27.4.6: 1884 | version "27.4.6" 1885 | resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.4.6.tgz#ed9bc3ce514b4c582637088d9faf58a33bd59bf4" 1886 | dependencies: 1887 | jest-get-type "^27.4.0" 1888 | pretty-format "^27.4.6" 1889 | 1890 | jest-matcher-utils@^27.4.6: 1891 | version "27.4.6" 1892 | resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.4.6.tgz#53ca7f7b58170638590e946f5363b988775509b8" 1893 | dependencies: 1894 | chalk "^4.0.0" 1895 | jest-diff "^27.4.6" 1896 | jest-get-type "^27.4.0" 1897 | pretty-format "^27.4.6" 1898 | 1899 | jest-message-util@^27.4.6: 1900 | version "27.4.6" 1901 | resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.4.6.tgz#9fdde41a33820ded3127465e1a5896061524da31" 1902 | dependencies: 1903 | "@babel/code-frame" "^7.12.13" 1904 | "@jest/types" "^27.4.2" 1905 | "@types/stack-utils" "^2.0.0" 1906 | chalk "^4.0.0" 1907 | graceful-fs "^4.2.4" 1908 | micromatch "^4.0.4" 1909 | pretty-format "^27.4.6" 1910 | slash "^3.0.0" 1911 | stack-utils "^2.0.3" 1912 | 1913 | jest-mock@^27.4.6: 1914 | version "27.4.6" 1915 | resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.4.6.tgz#77d1ba87fbd33ccb8ef1f061697e7341b7635195" 1916 | dependencies: 1917 | "@jest/types" "^27.4.2" 1918 | "@types/node" "*" 1919 | 1920 | jest-pnp-resolver@^1.2.2: 1921 | version "1.2.2" 1922 | resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" 1923 | 1924 | jest-regex-util@^27.4.0: 1925 | version "27.4.0" 1926 | resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.4.0.tgz#e4c45b52653128843d07ad94aec34393ea14fbca" 1927 | 1928 | jest-resolve-dependencies@^27.4.6: 1929 | version "27.4.6" 1930 | resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.6.tgz#fc50ee56a67d2c2183063f6a500cc4042b5e2327" 1931 | dependencies: 1932 | "@jest/types" "^27.4.2" 1933 | jest-regex-util "^27.4.0" 1934 | jest-snapshot "^27.4.6" 1935 | 1936 | jest-resolve@^27.4.6: 1937 | version "27.4.6" 1938 | resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.4.6.tgz#2ec3110655e86d5bfcfa992e404e22f96b0b5977" 1939 | dependencies: 1940 | "@jest/types" "^27.4.2" 1941 | chalk "^4.0.0" 1942 | graceful-fs "^4.2.4" 1943 | jest-haste-map "^27.4.6" 1944 | jest-pnp-resolver "^1.2.2" 1945 | jest-util "^27.4.2" 1946 | jest-validate "^27.4.6" 1947 | resolve "^1.20.0" 1948 | resolve.exports "^1.1.0" 1949 | slash "^3.0.0" 1950 | 1951 | jest-runner@^27.4.6: 1952 | version "27.4.6" 1953 | resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.4.6.tgz#1d390d276ec417e9b4d0d081783584cbc3e24773" 1954 | dependencies: 1955 | "@jest/console" "^27.4.6" 1956 | "@jest/environment" "^27.4.6" 1957 | "@jest/test-result" "^27.4.6" 1958 | "@jest/transform" "^27.4.6" 1959 | "@jest/types" "^27.4.2" 1960 | "@types/node" "*" 1961 | chalk "^4.0.0" 1962 | emittery "^0.8.1" 1963 | exit "^0.1.2" 1964 | graceful-fs "^4.2.4" 1965 | jest-docblock "^27.4.0" 1966 | jest-environment-jsdom "^27.4.6" 1967 | jest-environment-node "^27.4.6" 1968 | jest-haste-map "^27.4.6" 1969 | jest-leak-detector "^27.4.6" 1970 | jest-message-util "^27.4.6" 1971 | jest-resolve "^27.4.6" 1972 | jest-runtime "^27.4.6" 1973 | jest-util "^27.4.2" 1974 | jest-worker "^27.4.6" 1975 | source-map-support "^0.5.6" 1976 | throat "^6.0.1" 1977 | 1978 | jest-runtime@^27.4.6: 1979 | version "27.4.6" 1980 | resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.4.6.tgz#83ae923818e3ea04463b22f3597f017bb5a1cffa" 1981 | dependencies: 1982 | "@jest/environment" "^27.4.6" 1983 | "@jest/fake-timers" "^27.4.6" 1984 | "@jest/globals" "^27.4.6" 1985 | "@jest/source-map" "^27.4.0" 1986 | "@jest/test-result" "^27.4.6" 1987 | "@jest/transform" "^27.4.6" 1988 | "@jest/types" "^27.4.2" 1989 | chalk "^4.0.0" 1990 | cjs-module-lexer "^1.0.0" 1991 | collect-v8-coverage "^1.0.0" 1992 | execa "^5.0.0" 1993 | glob "^7.1.3" 1994 | graceful-fs "^4.2.4" 1995 | jest-haste-map "^27.4.6" 1996 | jest-message-util "^27.4.6" 1997 | jest-mock "^27.4.6" 1998 | jest-regex-util "^27.4.0" 1999 | jest-resolve "^27.4.6" 2000 | jest-snapshot "^27.4.6" 2001 | jest-util "^27.4.2" 2002 | slash "^3.0.0" 2003 | strip-bom "^4.0.0" 2004 | 2005 | jest-serializer@^27.4.0: 2006 | version "27.4.0" 2007 | resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.4.0.tgz#34866586e1cae2388b7d12ffa2c7819edef5958a" 2008 | dependencies: 2009 | "@types/node" "*" 2010 | graceful-fs "^4.2.4" 2011 | 2012 | jest-snapshot@^27.4.6: 2013 | version "27.4.6" 2014 | resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.4.6.tgz#e2a3b4fff8bdce3033f2373b2e525d8b6871f616" 2015 | dependencies: 2016 | "@babel/core" "^7.7.2" 2017 | "@babel/generator" "^7.7.2" 2018 | "@babel/plugin-syntax-typescript" "^7.7.2" 2019 | "@babel/traverse" "^7.7.2" 2020 | "@babel/types" "^7.0.0" 2021 | "@jest/transform" "^27.4.6" 2022 | "@jest/types" "^27.4.2" 2023 | "@types/babel__traverse" "^7.0.4" 2024 | "@types/prettier" "^2.1.5" 2025 | babel-preset-current-node-syntax "^1.0.0" 2026 | chalk "^4.0.0" 2027 | expect "^27.4.6" 2028 | graceful-fs "^4.2.4" 2029 | jest-diff "^27.4.6" 2030 | jest-get-type "^27.4.0" 2031 | jest-haste-map "^27.4.6" 2032 | jest-matcher-utils "^27.4.6" 2033 | jest-message-util "^27.4.6" 2034 | jest-util "^27.4.2" 2035 | natural-compare "^1.4.0" 2036 | pretty-format "^27.4.6" 2037 | semver "^7.3.2" 2038 | 2039 | jest-util@^27.0.0, jest-util@^27.4.2: 2040 | version "27.4.2" 2041 | resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.4.2.tgz#ed95b05b1adfd761e2cda47e0144c6a58e05a621" 2042 | dependencies: 2043 | "@jest/types" "^27.4.2" 2044 | "@types/node" "*" 2045 | chalk "^4.0.0" 2046 | ci-info "^3.2.0" 2047 | graceful-fs "^4.2.4" 2048 | picomatch "^2.2.3" 2049 | 2050 | jest-validate@^27.4.6: 2051 | version "27.4.6" 2052 | resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.4.6.tgz#efc000acc4697b6cf4fa68c7f3f324c92d0c4f1f" 2053 | dependencies: 2054 | "@jest/types" "^27.4.2" 2055 | camelcase "^6.2.0" 2056 | chalk "^4.0.0" 2057 | jest-get-type "^27.4.0" 2058 | leven "^3.1.0" 2059 | pretty-format "^27.4.6" 2060 | 2061 | jest-watcher@^27.4.6: 2062 | version "27.4.6" 2063 | resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.4.6.tgz#673679ebeffdd3f94338c24f399b85efc932272d" 2064 | dependencies: 2065 | "@jest/test-result" "^27.4.6" 2066 | "@jest/types" "^27.4.2" 2067 | "@types/node" "*" 2068 | ansi-escapes "^4.2.1" 2069 | chalk "^4.0.0" 2070 | jest-util "^27.4.2" 2071 | string-length "^4.0.1" 2072 | 2073 | jest-worker@^27.4.6: 2074 | version "27.4.6" 2075 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.4.6.tgz#5d2d93db419566cb680752ca0792780e71b3273e" 2076 | dependencies: 2077 | "@types/node" "*" 2078 | merge-stream "^2.0.0" 2079 | supports-color "^8.0.0" 2080 | 2081 | jest@^27.4.7: 2082 | version "27.4.7" 2083 | resolved "https://registry.yarnpkg.com/jest/-/jest-27.4.7.tgz#87f74b9026a1592f2da05b4d258e57505f28eca4" 2084 | dependencies: 2085 | "@jest/core" "^27.4.7" 2086 | import-local "^3.0.2" 2087 | jest-cli "^27.4.7" 2088 | 2089 | js-tokens@^4.0.0: 2090 | version "4.0.0" 2091 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 2092 | 2093 | js-yaml@^3.13.1: 2094 | version "3.14.0" 2095 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" 2096 | dependencies: 2097 | argparse "^1.0.7" 2098 | esprima "^4.0.0" 2099 | 2100 | jsdom@^16.6.0: 2101 | version "16.7.0" 2102 | resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" 2103 | dependencies: 2104 | abab "^2.0.5" 2105 | acorn "^8.2.4" 2106 | acorn-globals "^6.0.0" 2107 | cssom "^0.4.4" 2108 | cssstyle "^2.3.0" 2109 | data-urls "^2.0.0" 2110 | decimal.js "^10.2.1" 2111 | domexception "^2.0.1" 2112 | escodegen "^2.0.0" 2113 | form-data "^3.0.0" 2114 | html-encoding-sniffer "^2.0.1" 2115 | http-proxy-agent "^4.0.1" 2116 | https-proxy-agent "^5.0.0" 2117 | is-potential-custom-element-name "^1.0.1" 2118 | nwsapi "^2.2.0" 2119 | parse5 "6.0.1" 2120 | saxes "^5.0.1" 2121 | symbol-tree "^3.2.4" 2122 | tough-cookie "^4.0.0" 2123 | w3c-hr-time "^1.0.2" 2124 | w3c-xmlserializer "^2.0.0" 2125 | webidl-conversions "^6.1.0" 2126 | whatwg-encoding "^1.0.5" 2127 | whatwg-mimetype "^2.3.0" 2128 | whatwg-url "^8.5.0" 2129 | ws "^7.4.6" 2130 | xml-name-validator "^3.0.0" 2131 | 2132 | jsesc@^2.5.1: 2133 | version "2.5.2" 2134 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 2135 | 2136 | json-buffer@3.0.0: 2137 | version "3.0.0" 2138 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" 2139 | 2140 | json5@2.x, json5@^2.1.2: 2141 | version "2.2.0" 2142 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" 2143 | dependencies: 2144 | minimist "^1.2.5" 2145 | 2146 | json5@^1.0.1: 2147 | version "1.0.1" 2148 | resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" 2149 | dependencies: 2150 | minimist "^1.2.0" 2151 | 2152 | keyv@^3.0.0: 2153 | version "3.1.0" 2154 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" 2155 | dependencies: 2156 | json-buffer "3.0.0" 2157 | 2158 | kleur@^3.0.3: 2159 | version "3.0.3" 2160 | resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" 2161 | 2162 | latest-version@^5.1.0: 2163 | version "5.1.0" 2164 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" 2165 | dependencies: 2166 | package-json "^6.3.0" 2167 | 2168 | leven@^3.1.0: 2169 | version "3.1.0" 2170 | resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" 2171 | 2172 | levn@~0.3.0: 2173 | version "0.3.0" 2174 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 2175 | dependencies: 2176 | prelude-ls "~1.1.2" 2177 | type-check "~0.3.2" 2178 | 2179 | locate-path@^5.0.0: 2180 | version "5.0.0" 2181 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 2182 | dependencies: 2183 | p-locate "^4.1.0" 2184 | 2185 | lodash.memoize@4.x: 2186 | version "4.1.2" 2187 | resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" 2188 | 2189 | lodash@^4.7.0: 2190 | version "4.17.21" 2191 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 2192 | 2193 | lowercase-keys@^1.0.0: 2194 | version "1.0.0" 2195 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" 2196 | 2197 | lowercase-keys@^1.0.1: 2198 | version "1.0.1" 2199 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" 2200 | 2201 | lowercase-keys@^2.0.0: 2202 | version "2.0.0" 2203 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" 2204 | 2205 | lru-cache@^6.0.0: 2206 | version "6.0.0" 2207 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 2208 | dependencies: 2209 | yallist "^4.0.0" 2210 | 2211 | make-dir@^3.0.0: 2212 | version "3.1.0" 2213 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 2214 | dependencies: 2215 | semver "^6.0.0" 2216 | 2217 | make-error@1.x: 2218 | version "1.3.6" 2219 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 2220 | 2221 | make-error@^1.1.1: 2222 | version "1.3.0" 2223 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.0.tgz#52ad3a339ccf10ce62b4040b708fe707244b8b96" 2224 | 2225 | makeerror@1.0.12: 2226 | version "1.0.12" 2227 | resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" 2228 | dependencies: 2229 | tmpl "1.0.5" 2230 | 2231 | merge-stream@^2.0.0: 2232 | version "2.0.0" 2233 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 2234 | 2235 | methods@^1.1.2: 2236 | version "1.1.2" 2237 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 2238 | 2239 | micromatch@^4.0.4: 2240 | version "4.0.4" 2241 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" 2242 | dependencies: 2243 | braces "^3.0.1" 2244 | picomatch "^2.2.3" 2245 | 2246 | mime-db@~1.30.0: 2247 | version "1.30.0" 2248 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" 2249 | 2250 | mime-types@^2.1.12: 2251 | version "2.1.17" 2252 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" 2253 | dependencies: 2254 | mime-db "~1.30.0" 2255 | 2256 | mime@^2.5.0: 2257 | version "2.6.0" 2258 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" 2259 | 2260 | mimic-fn@^2.1.0: 2261 | version "2.1.0" 2262 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 2263 | 2264 | mimic-response@^1.0.0, mimic-response@^1.0.1: 2265 | version "1.0.1" 2266 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 2267 | 2268 | minimatch@^3.0.4: 2269 | version "3.0.4" 2270 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 2271 | dependencies: 2272 | brace-expansion "^1.1.7" 2273 | 2274 | minimist@^1.2.0, minimist@^1.2.5: 2275 | version "1.2.5" 2276 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 2277 | 2278 | mkdirp@^0.5.3: 2279 | version "0.5.5" 2280 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" 2281 | dependencies: 2282 | minimist "^1.2.5" 2283 | 2284 | ms@2.1.2: 2285 | version "2.1.2" 2286 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 2287 | 2288 | ms@^2.1.1: 2289 | version "2.1.1" 2290 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 2291 | 2292 | natural-compare@^1.4.0: 2293 | version "1.4.0" 2294 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 2295 | 2296 | "nestjs-dialogflow@file:../..": 2297 | version "3.1.0" 2298 | dependencies: 2299 | "@nestjs-plus/discovery" "^2.0.2" 2300 | 2301 | node-fetch@^2.6.1: 2302 | version "2.6.7" 2303 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" 2304 | dependencies: 2305 | whatwg-url "^5.0.0" 2306 | 2307 | node-int64@^0.4.0: 2308 | version "0.4.0" 2309 | resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" 2310 | 2311 | node-releases@^2.0.1: 2312 | version "2.0.1" 2313 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" 2314 | 2315 | nodemon@^2.0.15: 2316 | version "2.0.15" 2317 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.15.tgz#504516ce3b43d9dc9a955ccd9ec57550a31a8d4e" 2318 | dependencies: 2319 | chokidar "^3.5.2" 2320 | debug "^3.2.7" 2321 | ignore-by-default "^1.0.1" 2322 | minimatch "^3.0.4" 2323 | pstree.remy "^1.1.8" 2324 | semver "^5.7.1" 2325 | supports-color "^5.5.0" 2326 | touch "^3.1.0" 2327 | undefsafe "^2.0.5" 2328 | update-notifier "^5.1.0" 2329 | 2330 | nopt@~1.0.10: 2331 | version "1.0.10" 2332 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" 2333 | dependencies: 2334 | abbrev "1" 2335 | 2336 | normalize-path@^3.0.0, normalize-path@~3.0.0: 2337 | version "3.0.0" 2338 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 2339 | 2340 | normalize-url@^4.1.0: 2341 | version "4.5.0" 2342 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" 2343 | 2344 | npm-run-path@^4.0.1: 2345 | version "4.0.1" 2346 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 2347 | dependencies: 2348 | path-key "^3.0.0" 2349 | 2350 | nwsapi@^2.2.0: 2351 | version "2.2.0" 2352 | resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" 2353 | 2354 | object-hash@2.2.0: 2355 | version "2.2.0" 2356 | resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" 2357 | 2358 | object-inspect@^1.9.0: 2359 | version "1.12.0" 2360 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" 2361 | 2362 | once@1.4.0, once@^1.3.0, once@^1.3.1, once@^1.4.0: 2363 | version "1.4.0" 2364 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2365 | dependencies: 2366 | wrappy "1" 2367 | 2368 | onetime@^5.1.2: 2369 | version "5.1.2" 2370 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 2371 | dependencies: 2372 | mimic-fn "^2.1.0" 2373 | 2374 | optional@0.1.4: 2375 | version "0.1.4" 2376 | resolved "https://registry.yarnpkg.com/optional/-/optional-0.1.4.tgz#cdb1a9bedc737d2025f690ceeb50e049444fd5b3" 2377 | 2378 | optionator@^0.8.1: 2379 | version "0.8.2" 2380 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 2381 | dependencies: 2382 | deep-is "~0.1.3" 2383 | fast-levenshtein "~2.0.4" 2384 | levn "~0.3.0" 2385 | prelude-ls "~1.1.2" 2386 | type-check "~0.3.2" 2387 | wordwrap "~1.0.0" 2388 | 2389 | p-cancelable@^1.0.0: 2390 | version "1.1.0" 2391 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" 2392 | 2393 | p-limit@^2.2.0: 2394 | version "2.3.0" 2395 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 2396 | dependencies: 2397 | p-try "^2.0.0" 2398 | 2399 | p-locate@^4.1.0: 2400 | version "4.1.0" 2401 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 2402 | dependencies: 2403 | p-limit "^2.2.0" 2404 | 2405 | p-try@^2.0.0: 2406 | version "2.2.0" 2407 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 2408 | 2409 | package-json@^6.3.0: 2410 | version "6.5.0" 2411 | resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" 2412 | dependencies: 2413 | got "^9.6.0" 2414 | registry-auth-token "^4.0.0" 2415 | registry-url "^5.0.0" 2416 | semver "^6.2.0" 2417 | 2418 | parse5@6.0.1: 2419 | version "6.0.1" 2420 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" 2421 | 2422 | path-exists@^4.0.0: 2423 | version "4.0.0" 2424 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 2425 | 2426 | path-is-absolute@^1.0.0: 2427 | version "1.0.1" 2428 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2429 | 2430 | path-key@^3.0.0, path-key@^3.1.0: 2431 | version "3.1.1" 2432 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 2433 | 2434 | path-parse@^1.0.6: 2435 | version "1.0.6" 2436 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 2437 | 2438 | path-parse@^1.0.7: 2439 | version "1.0.7" 2440 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 2441 | 2442 | path-to-regexp@3.2.0: 2443 | version "3.2.0" 2444 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-3.2.0.tgz#fa7877ecbc495c601907562222453c43cc204a5f" 2445 | 2446 | picocolors@^1.0.0: 2447 | version "1.0.0" 2448 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 2449 | 2450 | picomatch@^2.0.4, picomatch@^2.2.3: 2451 | version "2.3.1" 2452 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 2453 | 2454 | picomatch@^2.2.1: 2455 | version "2.2.2" 2456 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 2457 | 2458 | pirates@^4.0.4: 2459 | version "4.0.5" 2460 | resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" 2461 | 2462 | pkg-dir@^4.2.0: 2463 | version "4.2.0" 2464 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 2465 | dependencies: 2466 | find-up "^4.0.0" 2467 | 2468 | prelude-ls@~1.1.2: 2469 | version "1.1.2" 2470 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 2471 | 2472 | prepend-http@^2.0.0: 2473 | version "2.0.0" 2474 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" 2475 | 2476 | prettier@^2.5.1: 2477 | version "2.5.1" 2478 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" 2479 | 2480 | pretty-format@^27.0.0, pretty-format@^27.4.6: 2481 | version "27.4.6" 2482 | resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.4.6.tgz#1b784d2f53c68db31797b2348fa39b49e31846b7" 2483 | dependencies: 2484 | ansi-regex "^5.0.1" 2485 | ansi-styles "^5.0.0" 2486 | react-is "^17.0.1" 2487 | 2488 | prompts@^2.0.1: 2489 | version "2.4.2" 2490 | resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" 2491 | dependencies: 2492 | kleur "^3.0.3" 2493 | sisteransi "^1.0.5" 2494 | 2495 | psl@^1.1.33: 2496 | version "1.8.0" 2497 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" 2498 | 2499 | pstree.remy@^1.1.8: 2500 | version "1.1.8" 2501 | resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" 2502 | 2503 | pump@^3.0.0: 2504 | version "3.0.0" 2505 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 2506 | dependencies: 2507 | end-of-stream "^1.1.0" 2508 | once "^1.3.1" 2509 | 2510 | punycode@^2.1.1: 2511 | version "2.1.1" 2512 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 2513 | 2514 | pupa@^2.1.1: 2515 | version "2.1.1" 2516 | resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" 2517 | dependencies: 2518 | escape-goat "^2.0.0" 2519 | 2520 | qs@6.9.3: 2521 | version "6.9.3" 2522 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.3.tgz#bfadcd296c2d549f1dffa560619132c977f5008e" 2523 | 2524 | qs@^6.10.1: 2525 | version "6.10.3" 2526 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" 2527 | dependencies: 2528 | side-channel "^1.0.4" 2529 | 2530 | rc@^1.2.8: 2531 | version "1.2.8" 2532 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 2533 | dependencies: 2534 | deep-extend "^0.6.0" 2535 | ini "~1.3.0" 2536 | minimist "^1.2.0" 2537 | strip-json-comments "~2.0.1" 2538 | 2539 | react-is@^17.0.1: 2540 | version "17.0.2" 2541 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" 2542 | 2543 | readable-stream@^3.6.0: 2544 | version "3.6.0" 2545 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 2546 | dependencies: 2547 | inherits "^2.0.3" 2548 | string_decoder "^1.1.1" 2549 | util-deprecate "^1.0.1" 2550 | 2551 | readdirp@~3.6.0: 2552 | version "3.6.0" 2553 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 2554 | dependencies: 2555 | picomatch "^2.2.1" 2556 | 2557 | reflect-metadata@^0.1.13: 2558 | version "0.1.13" 2559 | resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" 2560 | 2561 | registry-auth-token@^4.0.0: 2562 | version "4.2.0" 2563 | resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.0.tgz#1d37dffda72bbecd0f581e4715540213a65eb7da" 2564 | dependencies: 2565 | rc "^1.2.8" 2566 | 2567 | registry-url@^5.0.0: 2568 | version "5.1.0" 2569 | resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" 2570 | dependencies: 2571 | rc "^1.2.8" 2572 | 2573 | require-directory@^2.1.1: 2574 | version "2.1.1" 2575 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 2576 | 2577 | resolve-cwd@^3.0.0: 2578 | version "3.0.0" 2579 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" 2580 | dependencies: 2581 | resolve-from "^5.0.0" 2582 | 2583 | resolve-from@^5.0.0: 2584 | version "5.0.0" 2585 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 2586 | 2587 | resolve.exports@^1.1.0: 2588 | version "1.1.0" 2589 | resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" 2590 | 2591 | resolve@^1.20.0: 2592 | version "1.22.0" 2593 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" 2594 | dependencies: 2595 | is-core-module "^2.8.1" 2596 | path-parse "^1.0.7" 2597 | supports-preserve-symlinks-flag "^1.0.0" 2598 | 2599 | resolve@^1.3.2: 2600 | version "1.11.0" 2601 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232" 2602 | dependencies: 2603 | path-parse "^1.0.6" 2604 | 2605 | responselike@^1.0.2: 2606 | version "1.0.2" 2607 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" 2608 | dependencies: 2609 | lowercase-keys "^1.0.0" 2610 | 2611 | rimraf@^3.0.0: 2612 | version "3.0.2" 2613 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 2614 | dependencies: 2615 | glob "^7.1.3" 2616 | 2617 | rxjs@^7.5.2: 2618 | version "7.5.2" 2619 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.2.tgz#11e4a3a1dfad85dbf7fb6e33cbba17668497490b" 2620 | dependencies: 2621 | tslib "^2.1.0" 2622 | 2623 | safe-buffer@~5.1.1: 2624 | version "5.1.1" 2625 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" 2626 | 2627 | safe-buffer@~5.2.0: 2628 | version "5.2.1" 2629 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 2630 | 2631 | "safer-buffer@>= 2.1.2 < 3": 2632 | version "2.1.2" 2633 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2634 | 2635 | saxes@^5.0.1: 2636 | version "5.0.1" 2637 | resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" 2638 | dependencies: 2639 | xmlchars "^2.2.0" 2640 | 2641 | semver-diff@^3.1.1: 2642 | version "3.1.1" 2643 | resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" 2644 | dependencies: 2645 | semver "^6.3.0" 2646 | 2647 | semver@7.x, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: 2648 | version "7.3.5" 2649 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" 2650 | dependencies: 2651 | lru-cache "^6.0.0" 2652 | 2653 | semver@^5.3.0: 2654 | version "5.4.1" 2655 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" 2656 | 2657 | semver@^5.7.1: 2658 | version "5.7.1" 2659 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 2660 | 2661 | semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: 2662 | version "6.3.0" 2663 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 2664 | 2665 | shebang-command@^2.0.0: 2666 | version "2.0.0" 2667 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 2668 | dependencies: 2669 | shebang-regex "^3.0.0" 2670 | 2671 | shebang-regex@^3.0.0: 2672 | version "3.0.0" 2673 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 2674 | 2675 | side-channel@^1.0.4: 2676 | version "1.0.4" 2677 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 2678 | dependencies: 2679 | call-bind "^1.0.0" 2680 | get-intrinsic "^1.0.2" 2681 | object-inspect "^1.9.0" 2682 | 2683 | signal-exit@^3.0.2: 2684 | version "3.0.2" 2685 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 2686 | 2687 | signal-exit@^3.0.3: 2688 | version "3.0.6" 2689 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" 2690 | 2691 | sisteransi@^1.0.5: 2692 | version "1.0.5" 2693 | resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" 2694 | 2695 | slash@^3.0.0: 2696 | version "3.0.0" 2697 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 2698 | 2699 | snyk@^1.836.0: 2700 | version "1.836.0" 2701 | resolved "https://registry.yarnpkg.com/snyk/-/snyk-1.836.0.tgz#291d94f9eb7910f292f344eee5b9ca90c9e3c64f" 2702 | 2703 | source-map-support@^0.5.6: 2704 | version "0.5.21" 2705 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" 2706 | dependencies: 2707 | buffer-from "^1.0.0" 2708 | source-map "^0.6.0" 2709 | 2710 | source-map@^0.5.0: 2711 | version "0.5.7" 2712 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 2713 | 2714 | source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: 2715 | version "0.6.1" 2716 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 2717 | 2718 | source-map@^0.7.3: 2719 | version "0.7.3" 2720 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" 2721 | 2722 | sprintf-js@~1.0.2: 2723 | version "1.0.3" 2724 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2725 | 2726 | stack-utils@^2.0.3: 2727 | version "2.0.5" 2728 | resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" 2729 | dependencies: 2730 | escape-string-regexp "^2.0.0" 2731 | 2732 | string-length@^4.0.1: 2733 | version "4.0.2" 2734 | resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" 2735 | dependencies: 2736 | char-regex "^1.0.2" 2737 | strip-ansi "^6.0.0" 2738 | 2739 | string-width@^3.0.0: 2740 | version "3.1.0" 2741 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 2742 | dependencies: 2743 | emoji-regex "^7.0.1" 2744 | is-fullwidth-code-point "^2.0.0" 2745 | strip-ansi "^5.1.0" 2746 | 2747 | string-width@^4.0.0, string-width@^4.1.0: 2748 | version "4.2.0" 2749 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 2750 | dependencies: 2751 | emoji-regex "^8.0.0" 2752 | is-fullwidth-code-point "^3.0.0" 2753 | strip-ansi "^6.0.0" 2754 | 2755 | string-width@^4.2.0, string-width@^4.2.2: 2756 | version "4.2.3" 2757 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 2758 | dependencies: 2759 | emoji-regex "^8.0.0" 2760 | is-fullwidth-code-point "^3.0.0" 2761 | strip-ansi "^6.0.1" 2762 | 2763 | string_decoder@^1.1.1: 2764 | version "1.3.0" 2765 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 2766 | dependencies: 2767 | safe-buffer "~5.2.0" 2768 | 2769 | strip-ansi@^5.1.0: 2770 | version "5.2.0" 2771 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 2772 | dependencies: 2773 | ansi-regex "^4.1.0" 2774 | 2775 | strip-ansi@^6.0.0: 2776 | version "6.0.0" 2777 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 2778 | dependencies: 2779 | ansi-regex "^5.0.0" 2780 | 2781 | strip-ansi@^6.0.1: 2782 | version "6.0.1" 2783 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 2784 | dependencies: 2785 | ansi-regex "^5.0.1" 2786 | 2787 | strip-bom@^3.0.0: 2788 | version "3.0.0" 2789 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 2790 | 2791 | strip-bom@^4.0.0: 2792 | version "4.0.0" 2793 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" 2794 | 2795 | strip-final-newline@^2.0.0: 2796 | version "2.0.0" 2797 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 2798 | 2799 | strip-json-comments@~2.0.1: 2800 | version "2.0.1" 2801 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2802 | 2803 | superagent@^7.1.0: 2804 | version "7.1.1" 2805 | resolved "https://registry.yarnpkg.com/superagent/-/superagent-7.1.1.tgz#2ab187d38c3078c31c3771c0b751f10163a27136" 2806 | dependencies: 2807 | component-emitter "^1.3.0" 2808 | cookiejar "^2.1.3" 2809 | debug "^4.3.3" 2810 | fast-safe-stringify "^2.1.1" 2811 | form-data "^4.0.0" 2812 | formidable "^2.0.1" 2813 | methods "^1.1.2" 2814 | mime "^2.5.0" 2815 | qs "^6.10.1" 2816 | readable-stream "^3.6.0" 2817 | semver "^7.3.5" 2818 | 2819 | supertest@^6.2.2: 2820 | version "6.2.2" 2821 | resolved "https://registry.yarnpkg.com/supertest/-/supertest-6.2.2.tgz#04a5998fd3efaff187cb69f07a169755d655b001" 2822 | dependencies: 2823 | methods "^1.1.2" 2824 | superagent "^7.1.0" 2825 | 2826 | supports-color@^4.0.0: 2827 | version "4.5.0" 2828 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" 2829 | dependencies: 2830 | has-flag "^2.0.0" 2831 | 2832 | supports-color@^5.3.0, supports-color@^5.5.0: 2833 | version "5.5.0" 2834 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2835 | dependencies: 2836 | has-flag "^3.0.0" 2837 | 2838 | supports-color@^7.0.0: 2839 | version "7.2.0" 2840 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 2841 | dependencies: 2842 | has-flag "^4.0.0" 2843 | 2844 | supports-color@^7.1.0: 2845 | version "7.1.0" 2846 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" 2847 | dependencies: 2848 | has-flag "^4.0.0" 2849 | 2850 | supports-color@^8.0.0: 2851 | version "8.1.1" 2852 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 2853 | dependencies: 2854 | has-flag "^4.0.0" 2855 | 2856 | supports-hyperlinks@^2.0.0: 2857 | version "2.2.0" 2858 | resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" 2859 | dependencies: 2860 | has-flag "^4.0.0" 2861 | supports-color "^7.0.0" 2862 | 2863 | supports-preserve-symlinks-flag@^1.0.0: 2864 | version "1.0.0" 2865 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 2866 | 2867 | symbol-tree@^3.2.4: 2868 | version "3.2.4" 2869 | resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" 2870 | 2871 | terminal-link@^2.0.0: 2872 | version "2.1.1" 2873 | resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" 2874 | dependencies: 2875 | ansi-escapes "^4.2.1" 2876 | supports-hyperlinks "^2.0.0" 2877 | 2878 | test-exclude@^6.0.0: 2879 | version "6.0.0" 2880 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" 2881 | dependencies: 2882 | "@istanbuljs/schema" "^0.1.2" 2883 | glob "^7.1.4" 2884 | minimatch "^3.0.4" 2885 | 2886 | throat@^6.0.1: 2887 | version "6.0.1" 2888 | resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" 2889 | 2890 | tmpl@1.0.5: 2891 | version "1.0.5" 2892 | resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" 2893 | 2894 | to-fast-properties@^2.0.0: 2895 | version "2.0.0" 2896 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 2897 | 2898 | to-readable-stream@^1.0.0: 2899 | version "1.0.0" 2900 | resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" 2901 | 2902 | to-regex-range@^5.0.1: 2903 | version "5.0.1" 2904 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 2905 | dependencies: 2906 | is-number "^7.0.0" 2907 | 2908 | touch@^3.1.0: 2909 | version "3.1.0" 2910 | resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" 2911 | dependencies: 2912 | nopt "~1.0.10" 2913 | 2914 | tough-cookie@^4.0.0: 2915 | version "4.0.0" 2916 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" 2917 | dependencies: 2918 | psl "^1.1.33" 2919 | punycode "^2.1.1" 2920 | universalify "^0.1.2" 2921 | 2922 | tr46@^2.1.0: 2923 | version "2.1.0" 2924 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" 2925 | dependencies: 2926 | punycode "^2.1.1" 2927 | 2928 | tr46@~0.0.3: 2929 | version "0.0.3" 2930 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 2931 | 2932 | ts-jest@^27.1.3: 2933 | version "27.1.3" 2934 | resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.3.tgz#1f723e7e74027c4da92c0ffbd73287e8af2b2957" 2935 | dependencies: 2936 | bs-logger "0.x" 2937 | fast-json-stable-stringify "2.x" 2938 | jest-util "^27.0.0" 2939 | json5 "2.x" 2940 | lodash.memoize "4.x" 2941 | make-error "1.x" 2942 | semver "7.x" 2943 | yargs-parser "20.x" 2944 | 2945 | ts-node@^10.4.0: 2946 | version "10.4.0" 2947 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.4.0.tgz#680f88945885f4e6cf450e7f0d6223dd404895f7" 2948 | dependencies: 2949 | "@cspotcode/source-map-support" "0.7.0" 2950 | "@tsconfig/node10" "^1.0.7" 2951 | "@tsconfig/node12" "^1.0.7" 2952 | "@tsconfig/node14" "^1.0.0" 2953 | "@tsconfig/node16" "^1.0.2" 2954 | acorn "^8.4.1" 2955 | acorn-walk "^8.1.1" 2956 | arg "^4.1.0" 2957 | create-require "^1.1.0" 2958 | diff "^4.0.1" 2959 | make-error "^1.1.1" 2960 | yn "3.1.1" 2961 | 2962 | tsconfig-paths@^3.12.0: 2963 | version "3.12.0" 2964 | resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b" 2965 | dependencies: 2966 | "@types/json5" "^0.0.29" 2967 | json5 "^1.0.1" 2968 | minimist "^1.2.0" 2969 | strip-bom "^3.0.0" 2970 | 2971 | tslib@2.3.1, tslib@^2.1.0: 2972 | version "2.3.1" 2973 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" 2974 | 2975 | tslib@^1.13.0: 2976 | version "1.13.0" 2977 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" 2978 | 2979 | tslib@^1.8.1: 2980 | version "1.9.3" 2981 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" 2982 | 2983 | tslint@6.1.3: 2984 | version "6.1.3" 2985 | resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.3.tgz#5c23b2eccc32487d5523bd3a470e9aa31789d904" 2986 | dependencies: 2987 | "@babel/code-frame" "^7.0.0" 2988 | builtin-modules "^1.1.1" 2989 | chalk "^2.3.0" 2990 | commander "^2.12.1" 2991 | diff "^4.0.1" 2992 | glob "^7.1.1" 2993 | js-yaml "^3.13.1" 2994 | minimatch "^3.0.4" 2995 | mkdirp "^0.5.3" 2996 | resolve "^1.3.2" 2997 | semver "^5.3.0" 2998 | tslib "^1.13.0" 2999 | tsutils "^2.29.0" 3000 | 3001 | tsutils@^2.29.0: 3002 | version "2.29.0" 3003 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" 3004 | dependencies: 3005 | tslib "^1.8.1" 3006 | 3007 | type-check@~0.3.2: 3008 | version "0.3.2" 3009 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 3010 | dependencies: 3011 | prelude-ls "~1.1.2" 3012 | 3013 | type-detect@4.0.8: 3014 | version "4.0.8" 3015 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 3016 | 3017 | type-fest@^0.20.2: 3018 | version "0.20.2" 3019 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 3020 | 3021 | type-fest@^0.21.3: 3022 | version "0.21.3" 3023 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" 3024 | 3025 | typedarray-to-buffer@^3.1.5: 3026 | version "3.1.5" 3027 | resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" 3028 | dependencies: 3029 | is-typedarray "^1.0.0" 3030 | 3031 | typescript@^4.5.5: 3032 | version "4.5.5" 3033 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" 3034 | 3035 | undefsafe@^2.0.5: 3036 | version "2.0.5" 3037 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" 3038 | 3039 | unique-string@^2.0.0: 3040 | version "2.0.0" 3041 | resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" 3042 | dependencies: 3043 | crypto-random-string "^2.0.0" 3044 | 3045 | universalify@^0.1.2: 3046 | version "0.1.2" 3047 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 3048 | 3049 | update-notifier@^5.1.0: 3050 | version "5.1.0" 3051 | resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" 3052 | dependencies: 3053 | boxen "^5.0.0" 3054 | chalk "^4.1.0" 3055 | configstore "^5.0.1" 3056 | has-yarn "^2.1.0" 3057 | import-lazy "^2.1.0" 3058 | is-ci "^2.0.0" 3059 | is-installed-globally "^0.4.0" 3060 | is-npm "^5.0.0" 3061 | is-yarn-global "^0.3.0" 3062 | latest-version "^5.1.0" 3063 | pupa "^2.1.1" 3064 | semver "^7.3.4" 3065 | semver-diff "^3.1.1" 3066 | xdg-basedir "^4.0.0" 3067 | 3068 | url-parse-lax@^3.0.0: 3069 | version "3.0.0" 3070 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" 3071 | dependencies: 3072 | prepend-http "^2.0.0" 3073 | 3074 | util-deprecate@^1.0.1: 3075 | version "1.0.2" 3076 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 3077 | 3078 | uuid@8.3.2: 3079 | version "8.3.2" 3080 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" 3081 | 3082 | v8-to-istanbul@^8.1.0: 3083 | version "8.1.1" 3084 | resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" 3085 | dependencies: 3086 | "@types/istanbul-lib-coverage" "^2.0.1" 3087 | convert-source-map "^1.6.0" 3088 | source-map "^0.7.3" 3089 | 3090 | w3c-hr-time@^1.0.2: 3091 | version "1.0.2" 3092 | resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" 3093 | dependencies: 3094 | browser-process-hrtime "^1.0.0" 3095 | 3096 | w3c-xmlserializer@^2.0.0: 3097 | version "2.0.0" 3098 | resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" 3099 | dependencies: 3100 | xml-name-validator "^3.0.0" 3101 | 3102 | walker@^1.0.7: 3103 | version "1.0.8" 3104 | resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" 3105 | dependencies: 3106 | makeerror "1.0.12" 3107 | 3108 | webidl-conversions@^3.0.0: 3109 | version "3.0.1" 3110 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 3111 | 3112 | webidl-conversions@^5.0.0: 3113 | version "5.0.0" 3114 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" 3115 | 3116 | webidl-conversions@^6.1.0: 3117 | version "6.1.0" 3118 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" 3119 | 3120 | whatwg-encoding@^1.0.5: 3121 | version "1.0.5" 3122 | resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" 3123 | dependencies: 3124 | iconv-lite "0.4.24" 3125 | 3126 | whatwg-mimetype@^2.3.0: 3127 | version "2.3.0" 3128 | resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" 3129 | 3130 | whatwg-url@^5.0.0: 3131 | version "5.0.0" 3132 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 3133 | dependencies: 3134 | tr46 "~0.0.3" 3135 | webidl-conversions "^3.0.0" 3136 | 3137 | whatwg-url@^8.0.0, whatwg-url@^8.5.0: 3138 | version "8.7.0" 3139 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" 3140 | dependencies: 3141 | lodash "^4.7.0" 3142 | tr46 "^2.1.0" 3143 | webidl-conversions "^6.1.0" 3144 | 3145 | which@^2.0.1: 3146 | version "2.0.2" 3147 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 3148 | dependencies: 3149 | isexe "^2.0.0" 3150 | 3151 | widest-line@^3.1.0: 3152 | version "3.1.0" 3153 | resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" 3154 | dependencies: 3155 | string-width "^4.0.0" 3156 | 3157 | wordwrap@~1.0.0: 3158 | version "1.0.0" 3159 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 3160 | 3161 | wrap-ansi@^7.0.0: 3162 | version "7.0.0" 3163 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 3164 | dependencies: 3165 | ansi-styles "^4.0.0" 3166 | string-width "^4.1.0" 3167 | strip-ansi "^6.0.0" 3168 | 3169 | wrappy@1: 3170 | version "1.0.2" 3171 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 3172 | 3173 | write-file-atomic@^3.0.0: 3174 | version "3.0.3" 3175 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" 3176 | dependencies: 3177 | imurmurhash "^0.1.4" 3178 | is-typedarray "^1.0.0" 3179 | signal-exit "^3.0.2" 3180 | typedarray-to-buffer "^3.1.5" 3181 | 3182 | ws@^7.4.6: 3183 | version "7.5.6" 3184 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" 3185 | 3186 | xdg-basedir@^4.0.0: 3187 | version "4.0.0" 3188 | resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" 3189 | 3190 | xml-name-validator@^3.0.0: 3191 | version "3.0.0" 3192 | resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" 3193 | 3194 | xmlchars@^2.2.0: 3195 | version "2.2.0" 3196 | resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" 3197 | 3198 | y18n@^5.0.5: 3199 | version "5.0.8" 3200 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 3201 | 3202 | yallist@^4.0.0: 3203 | version "4.0.0" 3204 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 3205 | 3206 | yargs-parser@20.x, yargs-parser@^20.2.2: 3207 | version "20.2.9" 3208 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 3209 | 3210 | yargs@^16.2.0: 3211 | version "16.2.0" 3212 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 3213 | dependencies: 3214 | cliui "^7.0.2" 3215 | escalade "^3.1.1" 3216 | get-caller-file "^2.0.5" 3217 | require-directory "^2.1.1" 3218 | string-width "^4.2.0" 3219 | y18n "^5.0.5" 3220 | yargs-parser "^20.2.2" 3221 | 3222 | yn@3.1.1: 3223 | version "3.1.1" 3224 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 3225 | --------------------------------------------------------------------------------